<?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 => 'fr',
  ),
  'this' => 
  array (
    0 => 'reference.luasandbox.differences.php',
    1 => 'Diff&eacute;rences avec Lua standard',
    2 => 'Diff&eacute;rences avec Lua standard',
  ),
  'up' => 
  array (
    0 => 'book.luasandbox.php',
    1 => 'LuaSandbox',
  ),
  'prev' => 
  array (
    0 => 'luasandbox.installation.php',
    1 => 'Installation',
  ),
  'next' => 
  array (
    0 => 'luasandbox.examples.php',
    1 => 'Exemples',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    '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">Différences avec Lua standard</h1>

 <p class="simpara">
  LuaSandbox fournit un environnement sécurisé qui diffère de certaines manières de Lua 5.1 standard.
 </p>

 <div class="simplesect" id="reference.luasandbox.differences.unavailable">
  <h3 class="title">Fonctionnalités non disponibles</h3>
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     Les packages <code class="literal">dofile()</code>, <code class="literal">loadfile()</code>, et <code class="literal">io</code>, car ils permettent un accès direct au système de fichiers. Si nécessaire, l&#039;accès au système de fichiers doit être effectué via des fonctions de rappel PHP.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Le package <code class="literal">package</code>, y compris <code class="literal">require()</code> et <code class="literal">module()</code>, car il dépend fortement de l&#039;accès direct au système de fichiers. Une réécriture pure Lua telle que celle utilisée dans l&#039;extension MediaWiki Scribunto peut être utilisée à la place.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <code class="literal">load()</code> et <code class="literal">loadstring()</code>, pour permettre l&#039;analyse statique du code Lua.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <code class="literal">print()</code>, depuis qu&#039;il écrit sur la sortie standard. Si nécessaire, la sortie doit être effectuée via des fonctions de rappel PHP.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     La plupart du package <code class="literal">os</code>, car il permet la manipulation du processus et l&#039;exécution d&#039;autres processus.
    </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>, et <code class="literal">os.time()</code> restent disponibles.
      </span>
     </li>
    </ul>
   </li>
   <li class="listitem">
    <span class="simpara">
     La plupart du package <code class="literal">debug</code>, car il permet la manipulation de l&#039;état Lua et des métadonnées de manière à pouvoir casser l&#039;isolation.
    </span>
    <ul class="itemizedlist">
     <li class="listitem">
      <span class="simpara">
       <code class="literal">debug.traceback()</code> reste disponible.
       </span>
     </li>
    </ul>
   </li>
   <li class="listitem">
    <span class="simpara">
     <code class="literal">string.dump()</code>, car il peut exposer des données internes.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Le package <code class="literal">collectgarbage()</code>, <code class="literal">gcinfo()</code>, et <code class="literal">coroutine</code> n&#039;ont pas été examinés pour la sécurité.
    </span>
   </li>
  </ul>
 </div>

 <div class="simplesect" id="reference.luasandbox.differences.modified">
  <h3 class="title">Features that have been modified</h3>
  <ul class="itemizedlist">
   <li class="listitem">
    <span class="simpara">
     <code class="literal">pcall()</code> et <code class="literal">xpcall()</code> ne peuvent pas attraper certaines erreurs, en particulier les erreurs de délai d&#039;attente.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <code class="literal">tostring()</code> n&#039;inclut pas les adresses de pointeur.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <code class="literal">string.match()</code> a été patché pour limiter la profondeur de récursion et pour vérifier périodiquement un délai d&#039;attente.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     <code class="literal">math.random()</code> et <code class="literal">math.randomseed()</code> sont remplacés par des versions qui ne partagent pas l&#039;état avec <code class="literal">rand()</code> de PHP.
    </span>
   </li>
   <li class="listitem">
    <span class="simpara">
     Les méta méthodes de Lua 5.2 <code class="literal">__pairs</code> et <code class="literal">__ipairs</code> sont supportées par <code class="literal">pairs()</code> et <code class="literal">ipairs()</code>.
    </span>
   </li>
  </ul>
 </div>

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