
Pocketlang是一种轻巧(约3000个半殖民物),是用C的快速对象,可嵌入的脚本语言。它具有红宝石风味的Python语法,可以在15分钟内学习。包括编译器,字节码VM和运行时,它是一个独立的可执行文件,其外部依赖性为零,就像它的自描述性名称一样。 Pocketlang VM可以很容易地嵌入另一个托管程序中。
Wren语言及其出色的书制作口译员被用作写这种语言的参考。
# 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 您可以在浏览器上尝试PocketLang。这是使用Emscripten编制的VM的WebAssembly构建。请注意,在该语言的WebAssembly版本中,某些功能(输入,文件处理,相对导入等)已禁用,内存分配有限,并且STDOUT调用可能会较慢。
PocketLang文档位于https://thakeenathees.github.io/pocketlang/上,该文档是由docs/generate.py的一个小python脚本生成的docs分支构建的。请注意,文档是WIP,可能不是最新的。
PocketLang使用Nan-Boxing,这是表示动态类型的内存有效方法,并且与之打交道的速度更快。它支持尾部通话优化。当功能返回呼叫时,Callee可以重复使用呼叫者的堆栈框架,这将优化从O(n)到O(1)的内存,并且对于尾部递归,它将完全防止堆叠式流体,但它更快。
下面的所有基准测试均在以下操作上执行:Windows10(64位),ASUS N552VX,Intel Core i7-6700HQ 2.6GHz,带有12GB Sodimm RAM。语言版本为:Pocketlang(Pre-Alpha),Wren V0.3.0,Python v3.7.4,Ruby v2.7.2。

用于运行基准测试的源文件可以在test/benchmarks/ Directory上找到。它们是使用测试目录中使用一个小python脚本执行的。
它可以轻松地从源中构建,而无需任何依赖关系,或者除了C99兼容编译器外,还可以使用其他要求。可以使用以下命令进行编译。
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
要使用mingw在Windows上运行Make File,您需要GNU make工具,您可以从MSYS2或Cygwin获得。
scriptsbuild.bat
您不必从Visual Studio .NET开发人员命令提示符中运行脚本,它将搜索MSVS安装路径并设置构建环境。
src/include路径。可以通过预选者生成Visual Studio Project文件,有关更多信息,请参见脚本/读数。如果您无法编译它,请通过打开问题来向我们报告。
Bob Nystrom。(2021) CraftingInterpreters [在线]可在www.craftinginterpreters.com/上获得(2021年1月访问)
Mark W. Bailey,Nathan C. Weston(2001年6月)技术报告。在http://cs.hamilton.edu/~mbailey/pubs/techreps/techreps/tr-2001-2.pdf上,可以在http://cs.hamilton.edu/c.pdf上获得尾部递归的性能[在线] [在线] [在线]
Roberto ierusalimschy,Luiz Henrique de Figueiredo,Waldemar celles cles in lua [pdf] in https://www.cs.tufts.edu/~nr/cs257/cs257/archive/robarchive/roberto-roberto-roberto-ierusalimsalimsalimschy/closursursurs-closurs-closurs-draft.pdf(访问)
LeonardSchütz。(2020)动态打字和NAN拳击[在线],请访问https://leonardschuetz.ch/blog/nan-boxing/(2020年12月访问)
Bob Nystrom。(2011) Pratt Parsers:表达解析简易[在线]可以在http://journal.stuffwithstuff.com/2011/2011/03/11/pratt-pratt-parsers-parsers-parsers-parsers-parsising-parsing-parsing-parsing-made-made-easy/(访问12020年12月2020年)