Extension:Scribunto/fr

L'extension Scribunto (latin : "ils l'écriront/le laisseront écrire (à l'avenir)") permet l'intégration de langages de script dans MediaWiki.

Actuellement, le seul langage de script pris en charge est Lua.

Licence
Cette extension comporte du code sous licence GNU General Public License v2.0 ou ultérieure (GPL-2.0+) ainsi que du code sous licence MIT (MIT).

Compatibilité des versions PCRE
PCRE 8.33+ est recommandé. Vous pouvez voir la version de PCRE utilisée par PHP en affichant une page web phpinfo, ou à partir de la ligne de commande avec la commande :


 * Scribunto ne fonctionne pas avec les versions de PCRE inférieures à 8.10.
 * PCRE 8.31 montre des bogues avec l'étude des modèles JIT qui échouent avec des modèles utilisant HHVM.
 * PCRE 8.32 comporte un bogue qui fait que certains points de code qui ne correspondent pas à des caractères sont rejetés, ce qui provoque des erreurs dans le module mw.html

CentOS 6 et RHEL 6 sont associés à PCRE 7 et doivent être mis à jour.

Mettre à jour vers la 8.33 peut s'avérer très compliqué avec un serveur ayant une version plus ancienne. Voir Mise à jour vers PCRE 8.33 ou supérieur pour les détails.

PHP pcntl (LTS)
Les versions de Scribunto pour MediaWiki 1.25 à 1.28 nécessitaient l'extension PHP pcntl, qui n'est disponible que sur les plateformes Unix/Linux, si vous voulez utiliser LuaStandalone (par exemple en exécutant dans un processus fils séparé). Cette contrainte a été supprimée dans Scribunto pour MediaWiki 1.29.

Vous pouvez vérifier si pcntl est pris en charge en affichant une page web phpinfo ou à partir de la ligne de commande en tapant :

PHP mbstring extension
PHP needs to have the mbstring extension enabled.

You can check whether mbstring support is enabled by viewing a phpinfo web page, or from the command line with the following command:

Bundled binaries
Scribunto comes bundled with Lua binary distributions for Linux (x86 and x86-64), Mac OS X Lion, and Windows (32- and 64-bit).

Scribunto should work for you out of the box if:
 * 1) Your web server is run on one of the above platforms.
 * 2) PHP's   function is not restricted
 * 3) Your web server is configured to allow the execution of binary files in the MediaWiki tree.
 * Execute permissions may need to be set; for example, in Linux use
 * If you are using SELinux in "Enforcing" mode on your server, you might need to set a proper context for the binaries. Example for RHEL/CentOS 7:

Additional binaries
Additional Lua binary distributions, which may be needed for your web server if its operating system is not in the list above, can be obtained from http://luabinaries.sourceforge.net/ or from your Linux distribution. Only binary files for Lua 5.1.x are supported. Once you've installed the appropriate binary file on your web server, configure the location of the file with:

Note that you should not add the above line unless you've confirmed that Scribunto's built-in binaries don't work for you.

Integrating extensions
For a more pleasant user interface, with syntax highlighting and a code editor with autoindent, install the following extensions:
 * Extension:WikiEditor
 * Extension:SyntaxHighlight
 * Extension:CodeEditor

(MediaWiki 1.30 or earlier)Then in your LocalSettings.php after all the extension registrations, add:

LuaSandbox
Nous avons développé une extension PHP écrite en C appelée LuaSandbox. Il peut être utilisé en tant qu'alternative au binaire isolé, en fournira de meilleures performances. Voir pour les détails et les instructions d'installation.

Si vous avez initialement installé  l'extension pour qu'elle utilise le binaire Lua séparé, vérifiez d'avoir mis à jour LocalSettings.php avec.

Configuration
Les variables de configuration suivantes sont disponibles :
 * $wgScribuntoDefaultEngine : Choisir le moteur Les valeurs valides sont les clés de $wgScribuntoEngineConf, qui par défaut sont 'luasandbox' ou 'luastandalone'.
 * $wgScribuntoUseGeSHi : Lorsque est installé, mettez ceci à   pour l'utiliser lors de l'affichage des pages du module.
 * $wgScribuntoUseCodeEditor : Lorsque est installé, mettez ceci à   pour l'utiliser lors de la modification des pages du module.
 * $wgScribuntoEngineConf : Tableau associatif pour la configuration du moteur. Les clés sont les valeurs valides pour $wgScribuntoDefaultEngine, et les valeurs sont les tableaux associatifs des paramètres de configuration. Chaque tableau de configuration doit contenir une clé 'class' qui nomme les sous-classes ScribuntoEngineBase à utiliser.

LuaStandalone
Les clés suivantes sont utilisées dans $wgScribuntoEngineConf pour Scribunto_LuaStandaloneEngine. En général, vous les initialiserez d'une manière similaire à :


 * luaPath: Spécifier le chemin vers un interpréteur Lua.
 * errorFile:
 * Indiquez le chemin vers un fichier, accessible en écriture par l'utilisateur du serveur web, où la sortie des erreurs et des informations de debogage seront journalisées.
 * Les sorties d'erreurs produites par l'interpréteur indépendant ne sont pas journalisées par défaut. Configurez la connexion avec :


 * memoryLimit: Indiquez la taille limite de la mémoire en octets pour l'interpréteur indépendant sous Linux (forcé en utilisant ulimit).
 * cpuLimit: Indiquez la valeur maximale du temps d'utilisation du CPU en secondes pour l'interpréteur indépendant sous Linux (forcé en utilisant ulimit)
 * allowEnvFuncs: Mettre à  pour autoriser l'utilisation de setfenv et getfenv dans les modules.

LuaSandbox
Les clés suivantes sont utilisées dans $wgScribuntoEngineConf pour Scribunto_LuaSandboxEngine. En général, vous les initialiserez d'une manière similaire à :


 * memoryLimit : Indiquez la limite de la mémoire en octets.
 * cpuLimit : Indiquez la limite du temps CPU en secondes.
 * profilerPeriod : Indiquez le temps entre chaque interrogation en secondes pour le profileur Lua.
 * allowEnvFuncs : Mettez à  pour permettre l'utilisation de setfenv et getfenv dans les modules.

Utilisation
Les scripts se placent dans un nouvel espace de noms appelé Module. Chaque module possède un ensemble de fonctions pouvant être appelées avec la syntaxe wikicode telle que :

Apprendre Lua
Lua est un langage simple de programmation créé dans le but d'être accessible aux débutants. Pour un cours Lua super rapide, essayez Apprendre Lua en 15 minutes.

La meilleure introduction détaillée sur Lua est le livre Programmer en Lua. La première édition (pour Lua 5.0) est disponible en ligne et convient pratiquement pour Lua 5.1 qui est la version utilisée par Scribunto :


 * Programmer en Lua (descendre pour passer les annonces du livre et accéder au texte)

Le manuel de référence est également utile :

Environnement Lua
En Lua, nous appelons environnement l'ensemble des variables et des fonctions globales.

Chaque appel de s'exécute dansn environnement séparé. Les variables définies dans un ne seront pas accessibles d'un autre. Cette restriction était nécessaire pour maintenir la flexibilité dans l'implémentation de l'analyseur de wikicode.

Console de débogage



 * Voir aussi : 

Lorsque vous modifiez un module Lua, une fenêtre de debogage apparaît sous le formulaire d'édition. Dans cette fenêtre de débogage, vous pouvez exécuter du code Lua sans avoir à sauvegarder ou même à créer le module Lua en question.

Dépannage


Remarquez que les messages rouges sont cliquables et fourniront des informations plus détaillées.

When using the LuaStandalone engine (this is the default), errors along the lines of "" may be generated if the standalone Lua interpreter cannot be executed or runs into various runtime errors. Pour obtenir davantage d'informations, définissez un chemin de fichier pour. The interpreter's error output will be logged to the specified file, which should prove more helpful in tracking down the issue. The information in the debug log includes debugging information, which is why there is so much of it. Vous devriez pouvoir ignorer les lignes commençant par TX ou RX.

When using the LuaStandalone engine (this is the default), status 2 suggests memory allocation errors, probably caused by settings that allocate inadequate memory space for PHP or Lua, or both. Assigning a file path to  and examining that output can be valuable in diagnosing memory allocation errors.

Augmentez l'allocation PHP dans votre configuration PHP; ajoutez la ligne. This allocation of 200MB is often sufficient (as of MediaWiki 1.24) but can be increased as required. Set Scribunto's memory allocation in LocalSettings.php as a line: Finally, depending on the server configuration, some installations may be helped by adding another LocalSettings.php line

Notez que les limites des trois mémoires sont données dans des unités différentes.

When using the LuaStandalone engine (this is the default), status 24 suggests CPU time limit errors, although those should be generating a "The time allocated for running scripts has expired" message instead. It would be useful to file a task in Phabricator and participate in determining why the XCPU signal isn't being caught.

When using the LuaStandalone engine (this is the default), errors along the lines of "" may be generated if the standalone Lua interpreter cannot be executed. Ceci est dû généralement à l'une des deux causes suivantes :


 * Le droit d'exécuter sur les fichiers Lua n'incluent pas l'exécution (Execute). Attribuez les droits tel que décrit dans la section Installation.
 * Le serveur n'autorise pas l'exécution des fichiers à partir de l'endroit où ils ont été installés parce que le système de fichiers est monté avec l'attribut 'noexec'. Ceci se produit souvent avec des serveurs hôtes partagés. Remedies include adjusting  to point to a Lua 5.1 binary installed in an executable location, or adjusting or convincing the shared host to adjust the setting preventing execution.

Condition d'erreur telle que : exception fatale de type MWException
Check the MediaWiki, PHP, or webserver logs for more details on the exception, or temporarily set to true.

Version 'GLIBC_2.11' non trouvée
If the above gives you errors such as "version `GLIBC_2.11' not found", it means the version of the standard C library on your system is too old for the binaries provided with Scribunto. You should upgrade your C library, or use a version of Lua 5.1 compiled for the C library you do have installed. To upgrade your C library, your best option is usually to follow your distribution's instructions for upgrading packages (or for upgrading to a new release of the distribution, if applicable).

Si vous copiez les binaires Lua à partir de la branche master de Scribunto (ou de 77905), cela devrait suffire, si vous ne pouvez pas (ou ne voulez pas) mettre à jour votre bibliothèque C. Les binaires distribués ont été récemment recompilés avec une ancienne version de glibc, donc le minimum maintenant est 2.3 au lieu de 2.11.

Lua errors in Scribunto files
Errors here include:
 * attempt to index field 'text' (a nil value)
 * Lua error in mw.html.lua at line 253: Invalid class given:

If you are getting errors such these when attempting to use modules imported from WMF wikis, most likely your version of Scribunto is out of date. Upgrade if possible; for advanced users, you might also try to identify the needed newer commits and cherry-pick them into your local installation.

preg_replace_callback: Compilation failed: unknown property name after \P or \p at offset 7

 * this usually indicates an incompatible version of PCRE; you’ll need to update to >= 8.10
 * @todo: link to instructions on how to upgrade

Lua error
If you copy templates from Wikipedia and then get big red "Lua error: x" messages where the Scribunto invocation (e.g. the template that uses ) should be, that probably means that you didn't import everything you needed. Make sure that you tick the "Include templates" box at w:Special:Export when you export.

When importing pages from another wiki, it is also possible for templates or modules in the imported data to overwrite existing templates or modules with the same title, which may break existing pages, templates, and modules that depend on the overwritten versions.

Blank screen
Make sure your extension version is applicable to your MediaWiki version.

Design documents

 * Linux.conf.au 2014 - Scribunto presentation.webm's presentation at linux.conf.au 2014 discussing the motivations, implementation challenges and results of deploying Scribunto and Lua.]]

Autres pages

 * - Wikimedia activity page describing deployment plan to Wikimedia sites
 * - The reference about the Lua language, as well as its standard libraries and common Scribunto modules supported on Wikimedia sites
 * - A list of known changes in Lua 5.2 that may cause code written in 5.1 to function unexpectedly
 * - Code for example extensions extending the Scribunto library.
 * - A list of known changes in Lua 5.2 that may cause code written in 5.1 to function unexpectedly
 * - Code for example extensions extending the Scribunto library.
 * - Code for example extensions extending the Scribunto library.

Voir aussi

 * General
 * - functionality for the Scribunto extension.
 * commons:Commons:Lua - there may be specific notes for using Lua modules on Wikimedia Commons, including additional Lua extensions installed (e.g. for local support of internationalization and for parsing or playing medias). Some general purpose modules may be reused in other wikis in various languages (except specific tunings for policies, namespaces or project/maintenance pages with dedicated names). If possible, modules that could be widely reused across wikis should be tested and internationalized on Commons.
 * wikipedia:Help:Lua - there may be specific notes for using Lua modules on (English) Wikipedia, including additional Lua extensions installed (including for integrating Wikidata and Wikimedia Commons contents, generating complex infoboxes and navigation boxes, or to facilitate the general administration/maintenance of the wiki contents under applicable policies). Some other localized Wikipedia editions (or other projects such Wiktionnary, Wikisource or Wikinews) may also have their own needs and Lua modules.
 * wikidata:Help:Lua - there may be specific notes for using Lua modules on Wikidata, including additional Lua extensions installed (e.g. for local support of internationalization and for database queries)
 * Extensions
 * - Provides basic Infobox functionality for the Scribunto extension.
 * - provides native support for the Scribunto extension for usage with
 * - provides a Scribunto Lua interface for the Variables extension
 * - Provides Wikibase (part of Wikidata project)