
Pocketlang es un lenguaje de secuencia de comandos ligero (~ 3000 y 3000) y de objeto rápido, integrado, que se puede escribir en C. tiene una sintaxis de pitón con sabor a rubí, que se puede aprender en 15 minutos. Incluyendo el compilador, Bytecode VM y Runtime, es un ejecutable independiente con cero dependencias externas al igual que su nombre auto descriptivo. La VM de PocketLang se puede integrar en otro programa de alojamiento muy fácilmente.
Wren Language y sus maravillosos intérpretes de fabricación de libros se utilizaron como referencia para escribir este idioma.
# Python like import statement.
from time import clock as now
# A recursive fibonacci function.
def fib ( n )
if n < 2 then return n end
return fib ( n - 1 ) + fib ( n - 2 )
end
# Prints all fibonacci from 0 to 10 exclusive.
for i in 0 .. 10
print ( "fib($i) = ${fib(i)}" )
end Puedes probar PocketLang en tu navegador. Es una construcción de websembly de la VM compilada usando Emscripten. Tenga en cuenta que en la versión de WebAssembly del idioma, algunas características (entrada, manejo de archivos, importación relativa, etc.) han deshabilitado, tiene asignaciones de memoria limitadas y las llamadas de Stdout pueden ser más lentas.
La documentación de Pocketlang está alojada en https://thakeenathees.github.io/pocketlang/ que está construida a partir de la rama docs generada por un pequeño script de Python en docs/generate.py . Tenga en cuenta que las documentos son WIP y podrían no estar actualizadas.
Pocketlang utiliza NAN-Boxing, que es una forma eficiente en memoria de representar tipos dinámicos y tratarlos es mucho más rápido. Admite la optimización de llamadas de cola. Cuando una función devuelve una llamada, la Callee puede reutilizar el marco de la pila de la persona que llama, esto optimizará la memoria de O (n) a o (1) y para la cola recursiva evitará completamente los flujos de stackover y, sin embargo, es más rápido.
Todos los puntos de referencia a continuación se ejecutaron en: Windows10 (64 bits), ASUS N552VX, Intel Core i7-6700HQ 2.6GHz con 12 GB SODIMM RAM. Y las versiones del idioma son: PocketLang (pre-alfa), Wren V0.3.0, Python V3.7.4, Ruby V2.7.2.

Los archivos de origen utilizados para ejecutar puntos de referencia se pueden encontrar en test/benchmarks/ Directory. Fueron ejecutados usando un pequeño script de Python en el directorio de prueba.
Se puede construir desde la fuente fácilmente sin ninguna dependencia, o requisitos adicionales, excepto un compilador compatible con C99. Se puede compilar con el siguiente comando.
gcc -o pocket cli/*.c src/core/*.c src/libs/*.c -Isrc/include -lm -ldl
cl /Fepocket cli/*.c src/core/*.c src/libs/*.c /Isrc/include && rm *.obj
make
Para ejecutar el archivo Make en Windows con mingw , necesita la herramienta GNU make que puede obtener de MSYS2 o CyGWIN.
scriptsbuild.bat
No tiene que ejecutar el script desde un símbolo del sistema Visual Studio .NET Developer, buscará la ruta de instalación de MSVS y configurará el entorno de compilación.
src/include para incluir ruta.Los archivos del proyecto Visual Studio se pueden generar con el Premgo, consulte Scripts/ReadMe para obtener más información. Si no pudo compilarlo, informarnos abriendo un problema.
Bob Nystrom. (2021) Craftinginterpreters [en línea] Disponible en www.craftinginterprets.com/ (consultado en enero de 2021)
Mark W. Bailey, Nathan C. Weston (junio de 2001) Informe técnico. Beneficios de rendimiento de la eliminación de la recursión de la cola en idiomas de procedimiento [en línea] Disponible en http://cs.hamilton.edu/~mbailey/pubs/techreps/tr-2001-2.pdf
Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Cierres en Lua [PDF] Disponible en https://www.cs.tufts.edu/~nr/cs257/archive/roberto-ierusalimschy/closures-draft.pdf (a la mano 2022)
Leonard Schütz. (2020) Tipeo dinámico y boxeo NAN [en línea] Disponible en https://leonardschuetz.ch/blog/nan-boxing/ (consultado en diciembre de 2020)
Bob Nystrom. (2011) PRATT analizadores: PARSIS de expresión hecho fácil [en línea] Avaliable en http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-carsing-made-easy/ (consultado en diciembre de 2020)