Extension:Scribunto/es

La extensión Scribunto (latín: " escribirán/dejales escribir (en futuro)") permite el embebimiento de lenguas de escriptaje (scripting) en MediaWiki.

Actualmente la única lengua de escriptaje soportada es Lua. Los scripts de Scribunto Lua van en un espacio de nombres llamado Módulo.

Licencia
Esta extensión contiene el código de licencia GNU General Public License v2.0 o posterior (GPL-2.0 +), así como el código de licencia MIT License (MIT).

Compatibilidad con la versión PCRE
Se recomienda PCRE 8.33+. Puede ver la versión de PCRE utilizada por PHP al ver una página web de phpinfo, o desde la línea de comando con el siguiente comando:


 * Scribunto no funcionará con versiones de PCRE inferiores a 8.10.
 * PCRE 8.31 tiene errores con el patrón JIT al estudiar que rompe varios patrones cuando se usa con HHVM.
 * PCRE 8.32 tiene un bug que hará que rechace ciertos puntos de código que no son caracteres, lo que provocará errores en el módulo mw.html.

CentOS 6 y RHEL 6 están bloqueados en PCRE 7 y deben actualizarse.

Actualizar a 8.33 en un servidor con una versión anterior puede ser relativamente complicado. Consulte Updating to PCRE 8.33 or Higher para obtener más detalles.

PHP pcntl (LTS)
Las versiones de Scribunto para MediaWiki 1.25 a 1.28 requieren la extensión pcntl de PHP, que solo está disponible en plataformas Unix/Linux, si desea utilizar "LuaStandalone" (es decir, ejecutar en un proceso secundario separado). Este requisito se eliminó en Scribunto para MediaWiki 1.29.

Puede verificar si el soporte de pcntl está habilitado al ver una página web de phpinfo, o desde la línea de comando con el siguiente comando:

Extensión PHP mbstring
PHP necesita tener habilitada la extensión mbstring.

Puede verificar si el soporte de mbstring está habilitado al ver una página web de phpinfo, o desde la línea de comando con el siguiente comando:

Binarios incluidos
Scribunto viene con distribuciones binarias de Lua para Linux (x86 y x86-64), Mac OS X Lion y Windows (32 y 64 bits).

Scribunto debería funcionar para usted desde el primer momento si:


 * 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:

Binarios adicionales
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.

LuaJIT, although theoretically compatible, is not supported. The support was removed due to Spectre and bitrot concerns (T184156).

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
Hemos desarrollado una extensión PHP escrita en C llamada LuaSandbox. Se puede utilizar como una alternativa al binario independiente y proporcionará un rendimiento mejorado. Consulte para obtener detalles e instrucciones de instalación.

Si instaló inicialmente la extensión para usar el binario independiente de Lua, asegúrese de actualizar $ 1 con la siguiente configuración de configuración:

Configuración
Están disponibles las siguientes variables de configuración:
 * $wgScribuntoDefaultEngine : Seleccione el motor. Los valores válidos son las claves en $wgScribuntoEngineConf, que por defecto son 'luasandbox' o 'luastandalone'.
 * $wgScribuntoUseGeSHi : Cuando se instala, establezca esto en verdadero para usarlo al mostrar las páginas del módulo. (MediaWiki 1.30 o anterior).
 * $wgScribuntoUseCodeEditor : Cuando se instala, establezca esto en verdadero para usarlo al editar las páginas del módulo. (MediaWiki 1.30 o anterior).
 * $wgScribuntoEngineConf : Una matriz asociativa para la configuración del motor. Las claves son los valores válidos para $wgScribuntoDefaultEngine y los valores son matrices asociativas de datos de configuración. Cada matriz de configuración debe contener una clave 'class' que nombre la subclase ScribuntoEngineBase que se utilizará.

LuaStandalone
Las siguientes claves se utilizan en $wgScribuntoEngineConf por Scribunto_LuaStandaloneEngine. Generalmente, los configuraría como algo como


 * luaPath: Especifique la ruta a un intérprete de Lua.
 * errorFile:
 * Especifique la ruta a un archivo, que puede escribir el usuario del servidor web, donde se registrará el error y la salida de depuración del intérprete independiente.
 * La salida de error producida por el intérprete independiente no se registra de forma predeterminada. Configure el registro con:


 * memoryLimit: Especifique el límite de memoria en bytes para el intérprete independiente en Linux (se aplica mediante ulimit).
 * cpuLimit: Especifique el límite de tiempo de la CPU en segundos para el intérprete independiente en Linux (se aplica mediante ulimit).
 * allowEnvFuncs: Establezca true para permitir el uso de setfenv y getfenv en módulos.

LuaSandbox
Las siguientes claves se utilizan en $wgScribuntoEngineConf por Scribunto_LuaSandboxEngine. Generalmente, los configuraría como algo como


 * memoryLimit : Especificar el límite de memoria en bytes.
 * cpuLimit : Especifique el límite de tiempo de la CPU en segundos.
 * profilerPeriod : Especifique el tiempo entre sondeos en las secciones del generador de perfiles de Lua.
 * allowEnvFuncs : Establezca true para permitir el uso de setfenv y getfenv en módulos.

Uso
Los scripts van en un nuevo espacio de nombres llamado Módulo. Cada módulo tiene una colección de funciones, que se pueden llamar usando sintaxis de wikitexto como:

Aprendiendo Lua
Lua es un lenguaje de programación simple destinado a ser accesible para principiantes. Para un curso intensivo rápido sobre Lua, prueba Learn Lua in 15 Minutes.

La mejor introducción completa a Lua es el libro Programación en Lua. La primera edición (para Lua 5.0) está disponible en línea y es principalmente relevante para Lua 5.1, la versión utilizada por Scribunto:


 * Programación en Lua (desplácese hacia abajo más allá de los anuncios de libros para encontrar el texto)

El manual de referencia también es útil:

Entorno Lua
En Lua, el conjunto de todas las variables y funciones globales se denomina entorno.

Cada llamada de se ejecuta en un entorno separado. Las variables definidas en un no estarán disponibles en otro. Esta restricción era necesaria para mantener la flexibilidad en la implementación del analizador de wikitexto.

Consola de depuración



 * Véase también: 

Al editar un módulo Lua, debajo del formulario de edición, se puede encontrar una llamada "consola de depuración". En esta consola de depuración se puede ejecutar el código Lua sin tener que guardar o incluso crear el módulo Lua en cuestión.

Solución de problemas


Tenga en cuenta que se puede hacer clic en los mensajes rojos de y proporcionarán información más detallada.

Cuando se utiliza el motor LuaStandalone (este es el predeterminado), se pueden generar errores como "" si el intérprete Lua independiente no se puede ejecutar o se encuentra con varios errores de tiempo de ejecución. Para obtener más información, asigne una ruta de archivo a. La salida de error del intérprete se registrará en el archivo especificado, lo que debería resultar más útil para rastrear el problema. La información del registro de depuración incluye información de depuración, por lo que hay tanta información. Debería poder ignorar cualquier línea que comience con "TX" o "RX".

If you're setting up Scribunto and are using IIS/Windows, this appears to be solved by commenting out a particular line.

Cuando se usa el motor LuaStandalone (este es el predeterminado), el estado 2 sugiere errores de asignación de memoria, probablemente causados por configuraciones que asignan espacio de memoria inadecuado para PHP o Lua, o ambos. Asignar una ruta de archivo a $ 1 y examinar esa salida puede ser valioso para diagnosticar errores de asignación de memoria.

Aumente la asignación de PHP en su configuración de PHP; agregue la línea. Esta asignación de 200 MB suele ser suficiente (a partir de MediaWiki 1.24) pero se puede aumentar según sea necesario. Configure la asignación de memoria de Scribunto en LocalSettings.php como una línea: Finalmente, dependiendo de la configuración del servidor, algunas instalaciones pueden mejorarse agregando otra línea LocalSettings.php

Tenga en cuenta que los 3 límites de memoria se dan en unidades diferentes.

Lua error: Internal error: 2. on ARM architecture
If you're using an ARM architecture processor like on a RaspberryPi you'll face the error  due to wrong delivered binary format of the Lua interpreter.

check your Lua interpreter in /path/to/webdir/Scribunto/includes/engines/LuaStandalone/binaries/lua5_1_5_linux_32_generic

check the interpreter by using file lua the result should look like lua: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0 the installed default lua interpreter shows lua: ELF 32-bit LSB pie executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.9, look at the "Intel 80386" part what definitely is not correct.

check in  what version of lua is installed on your system. If you have lua5.1 installed you can either copy the interpreter to your lua5_1_5_linux_32_generic directory or set in you LocalSettings.php the

At present don't set  to /usr/bin/lua5.3 it'll lead to the 'Internal error 1'

Cuando se usa el motor LuaStandalone (este es el predeterminado), el estado 24 sugiere errores de límite de tiempo de la CPU, aunque en su lugar deberían generar un mensaje "El tiempo asignado para ejecutar scripts ha expirado". Sería útil archivar una tarea en Phabricator y participar en la determinación de por qué no se detecta la señal XCPU.

Cuando se utiliza el motor LuaStandalone (este es el predeterminado), se pueden generar errores en la línea de "$ 1" si no se puede ejecutar el intérprete Lua independiente. Por lo general, esto se debe a una de dos causas:


 * Los permisos del archivo ejecutable lua no incluyen Ejecutar. Configure los permisos como se describe en #Instalación.
 * El servidor no permite la ejecución de archivos desde el lugar donde está instalado el ejecutable, p. Ej. el sistema de archivos se monta con el flag 'noexec'. Esto ocurre a menudo con servidores alojados compartidos. Los remedios incluyen ajustar  para apuntar a un binario Lua 5.1 instalado en una ubicación ejecutable, o ajustar o convencer al host compartido para que ajuste la configuración que impide la ejecución.

Condición de error como: Excepción fatal de tipo MWException
Consulte los registros de MediaWiki, PHP o del servidor web para obtener más detalles sobre la excepción, o establezca temporalmente en verdadero.

versión `GLIBC_2.11 'no encontrada
Si lo anterior le da errores como "versión `GLIBC_2.11'no encontrada", significa que la versión de la biblioteca C estándar en su sistema es demasiado antigua para los binarios proporcionados con Scribunto. Debe actualizar su biblioteca C o usar una versión de Lua 5.1 compilada para la biblioteca C que tiene instalada. Para actualizar su biblioteca C, su mejor opción suele ser seguir las instrucciones de su distribución para actualizar los paquetes (o para actualizar a una nueva versión de la distribución, si corresponde).

Si copia los binarios de lua de Scribunto master (o desde $ 1), eso debería ser suficiente, si no puede o no desea actualizar su biblioteca C. Los binarios distribuidos se recompilaron recientemente con una versión anterior de glibc, por lo que el mínimo ahora es 2.3 en lugar 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.]]

Otras páginas

 * - 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.

Véase también

 * 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)