<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.luasandbox.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'reference.luasandbox.differences.php',
    1 => 'Diferen&ccedil;as do Lua Padr&atilde;o',
    2 => 'Diferen&ccedil;as do Lua Padr&atilde;o',
  ),
  'up' => 
  array (
    0 => 'book.luasandbox.php',
    1 => 'LuaSandbox',
  ),
  'prev' => 
  array (
    0 => 'luasandbox.installation.php',
    1 => 'Instala&ccedil;&atilde;o',
  ),
  'next' => 
  array (
    0 => 'luasandbox.examples.php',
    1 => 'Exemplos',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    'path' => 'reference/luasandbox/differences.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="reference.luasandbox.differences" class="chapter">
 <h1 class="title">Diferenças do Lua Padrão</h1>


 <p class="simpara">
  O LuaSandbox fornece um ambiente isolado (caixa de areia) que difere em alguns aspectos do Lua 5.1 padrão.
 </p>

 <div class="simplesect" id="reference.luasandbox.differences.unavailable">
  <h3 class="title">Recursos que não estão disponíveis</h3>
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     <code class="literal">dofile()</code>, <code class="literal">loadfile()</code> e o pacote <code class="literal">io</code>, pois eles permitem acesso direto ao sistema de arquivos. Se necessário, o acesso ao sistema de arquivos deve ser feito por meio de funções de retorno PHP.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     O pacote <code class="literal">package</code>, incluindo <code class="literal">require()</code> e <code class="literal">module()</code>, pois depende muito do acesso direto ao sistema de arquivos. Uma reescrita Lua pura, como a usada na extensão MediaWiki Scribunto, pode ser usada em vez disso.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <code class="literal">load()</code> e <code class="literal">loadstring()</code>, para permitir análise estática do código Lua.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <code class="literal">print()</code>, já que ele envia para a saída padrão. Se necessário, a saída deve ser feita via funções de retorno PHP.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     A maior parte do pacote <code class="literal">os</code>, pois permite a manipulação do processo e a execução de outros processos.
    </span>
    <ul class="itemizedlist">
     <li class="listitem">
      <span class="simpara">
       <code class="literal">os.clock()</code>, <code class="literal">os.date()</code>, <code class="literal">os.difftime()</code> e <code class="literal">os.time()</code> permanecem disponíveis.
      </span>
     </li>
    </ul>
   </li>
   <li class="listitem">
    <span class="simpara">
     A maior parte do pacote <code class="literal">debug</code>, pois permite a manipulação do estado Lua e metadados de maneiras que podem quebrar o isolamento.
    </span>
    <ul class="itemizedlist">
     <li class="listitem">
      <span class="simpara">
       <code class="literal">debug.traceback()</code> permanece disponível.
       </span>
     </li>
    </ul>
   </li>
   <li class="listitem">
    <span class="simpara">
     <code class="literal">string.dump()</code>, pois pode expor dados internos.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <code class="literal">collectgarbage()</code>, <code class="literal">gcinfo()</code> e o pacote <code class="literal">coroutine</code> não foram revisados ​​quanto à segurança.
    </span>
   </li>
  </ul>
 </div>

 <div class="simplesect" id="reference.luasandbox.differences.modified">
  <h3 class="title">Recursos que foram modificados</h3>
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     <code class="literal">pcall()</code> e <code class="literal">xpcall()</code> não conseguem capturar certos erros, particularmente erros de tempo limite.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <code class="literal">tostring()</code> não inclui endereços de ponteiros.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <code class="literal">string.match()</code> foi corrigido para limitar a profundidade da recursão e verificar periodicamente se há um tempo limite.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <code class="literal">math.random()</code> e <code class="literal">math.randomseed()</code> foram substituídos por versões que não compartilham estado com <code class="literal">rand()</code> do PHP.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Os metamétodos <code class="literal">__pairs</code> e <code class="literal">__ipairs</code> do Lua 5.2 são suportados por <code class="literal">pairs()</code> e <code class="literal">ipairs()</code>.
    </span>
   </li>
  </ul>
 </div>

</div>
<?php manual_footer($setup); ?>