
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/目錄中找到用於運行基準測試的源文件。它們是使用測試目錄中使用一個小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年)