
Pocketlang เป็นน้ำหนักเบา (~ 3000 semicolons) และวัตถุที่มุ่งเน้นวัตถุอย่างรวดเร็วภาษาสคริปต์ที่ฝังได้เขียนใน C. มันมีไวยากรณ์ Python ปรุงรสทับทิมซึ่งสามารถเรียนรู้ได้ภายใน 15 นาที รวมถึงคอมไพเลอร์, Bytecode VM และ Runtime มันเป็นแบบสแตนด์อโลนที่มีการพึ่งพาภายนอกเป็นศูนย์เช่นเดียวกับชื่ออธิบายตัวเอง Pocketlang VM สามารถฝังในโปรแกรมโฮสติ้งอื่นได้อย่างง่ายดายมาก
ภาษานกกระจิบและล่ามหนังสือที่ยอดเยี่ยมของพวกเขาใช้เป็นข้อมูลอ้างอิงเพื่อเขียนภาษานี้
# 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 คุณสามารถลองพ็อกเก็ตแลงบนเบราว์เซอร์ของคุณ มันเป็น webAssembly build ของ VM ที่รวบรวมโดยใช้ emscripten โปรดทราบว่าในภาษา WebAssembly ของภาษาคุณสมบัติบางอย่าง (อินพุตการจัดการไฟล์การนำเข้าสัมพัทธ์ ฯลฯ ) มีการปิดใช้งานมีการจัดสรรหน่วยความจำที่ จำกัด และการโทร STDOUT อาจช้าลง
เอกสารพ็อกเก็ตแลงจัดขึ้นที่ https://thakeenathees.github.io/pocketlang/ ซึ่งสร้างขึ้นจากสาขา docs ที่สร้างขึ้นโดยสคริปต์ Python เล็ก ๆ ที่ docs/generate.py โปรดทราบว่าเอกสารเป็น WIP และอาจไม่ทันสมัย
Pocketlang ใช้ NAN-boxing ซึ่งเป็นวิธีที่มีประสิทธิภาพหน่วยความจำในการแสดงประเภทไดนามิกและการจัดการกับพวกเขานั้นเร็วกว่ามาก รองรับการเพิ่มประสิทธิภาพการโทรหาง เมื่อฟังก์ชั่นส่งคืนการโทร Callee สามารถใช้เฟรมสแต็กของผู้โทรกลับมาได้อีกครั้งสิ่งนี้จะเพิ่มประสิทธิภาพหน่วยความจำจาก O (n) เป็น O (1) และสำหรับการเรียกซ้ำหางมันจะป้องกันไม่ให้ stackoverflows และเร็วขึ้น
เกณฑ์มาตรฐานทั้งหมดด้านล่างดำเนินการเมื่อ: 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
ในการเรียกใช้ไฟล์ Make บน Windows ด้วย mingw คุณต้องใช้เครื่องมือ GNU make ซึ่งคุณสามารถรับได้จาก MSYS2 หรือ Cygwin
scriptsbuild.bat
คุณไม่จำเป็นต้องเรียกใช้สคริปต์จากพรอมต์คำสั่ง Visual Studio .NET ของนักพัฒนามันจะค้นหาเส้นทางการติดตั้ง MSVS และตั้งค่าสภาพแวดล้อมการสร้าง
src/include เพื่อรวมเส้นทางไฟล์ Project Visual Studio สามารถสร้างขึ้นได้ด้วย premake ดูสคริปต์/readme สำหรับข้อมูลเพิ่มเติม หากคุณไม่สามารถรวบรวมได้โปรดรายงานเราโดยการเปิดปัญหา
Bob Nystrom. (2021) CraftingInterinterpreters [ออนไลน์] มีให้ที่ www.craftinginterpreters.com/ (เข้าถึงเดือนมกราคม 2021)
Mark W. Bailey, Nathan C. Weston (มิถุนายน 2001) รายงานทางเทคนิค ประโยชน์ด้านประสิทธิภาพของการกำจัดการเรียกซ้ำหางในภาษาขั้นตอน [ออนไลน์] มีให้ที่ http://cs.hamilton.edu/~mbailey/pubs/techreps/tr-2001-2.pdf
Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes ปิดใน Lua [pdf] มีให้ที่ https://www.cs.tufts.edu/~nr/cs257/archive/roberto-ierusalimschy/Closures-draft.pdf
Leonard Schütz. (2020) การพิมพ์แบบไดนามิกและการชกมวยนัน [ออนไลน์] มีให้ที่ https://leonardschuetz.ch/blog/nan-boxing/ (เข้าถึงธันวาคม 2020)
Bob Nystrom. (2011) Pratt Parsers: การแยกวิเคราะห์การแสดงออกทำให้ง่าย [ออนไลน์] สามารถใช้งานได้ที่ http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/ (เข้าถึงธันวาคม 2020)