
Pocketlang عبارة عن لغة خفيفة الوزن (حوالي 3000 فاصلة فاصلة) وموجهة نحو الكائنات السريعة ، التي يتم تضمينها المكتوبة في C. لها بناء جملة بيثون بنكهة الياقوت ، والتي يمكن تعلمها في غضون 15 دقيقة. بما في ذلك المترجم و Bytecode 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 على متصفحك. إنه بناء webassembly من VM تم تجميعه باستخدام emscripten. لاحظ أنه في إصدار WebAssembly من اللغة ، فإن بعض الميزات (الإدخال ، معالجة الملفات ، الاستيراد النسبي ، إلخ) قد تم تعطيلها ، وقد تكون مخصصات ذاكرة محدودة ، وقد تكون مكالمات stdout أبطأ.
يتم استضافة وثائق PocketLang على https://theateenatheees.github.io/pocketlang/ التي تم تصميمها من فرع docs الذي تم إنشاؤه بواسطة نص Python صغير في docs/generate.py . لاحظ أن الوثائق WIP وقد لا تكون محدثة.
يستخدم PocketLang ملعب NAN وهو وسيلة فعالة للذاكرة لتمثيل الأنواع الديناميكية والتعامل معها أسرع بكثير. وهو يدعم تحسين المكالمة. عندما تقوم وظيفة بإرجاع مكالمة ، يمكن لـ Callee إعادة استخدام إطار مكدس المتصل ، فإن هذا سيؤدي إلى تحسين الذاكرة من O (n) إلى O (1) وللمرضات التي تمنع تدفقات Stackoverwows تمامًا ، ومع ذلك ، فهي أسرع.
تم تنفيذ جميع المعايير أدناه على: Windows10 (64bit) ، ASUS N552VX ، Intel Core I7-6700HQ 2.6GHz مع ذاكرة الوصول العشوائي 12GB SODIMM. والإصدارات اللغوية هي: 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 ، يمكنك الحصول على أداة make التي يمكنك الحصول عليها من MSYS2 أو Cygwin.
scriptsbuild.bat
ليس عليك تشغيل البرنامج النصي من موجه أوامر Visual Studio .NET Developer ، وسوف يبحث عن مسار تثبيت MSVS وإعداد بيئة الإنشاء.
src/include لتضمين المسار.يمكن إنشاء ملفات مشروع Visual Studio مع Premake ، راجع البرامج النصية/ReadMe لمزيد من المعلومات. إذا لم تكن قادرًا على تجميعها ، فيرجى إبلاغنا عن طريق فتح مشكلة.
Bob Nystrom. (2021) PrackInterpreters [عبر الإنترنت] متاح على www.craftinginterpreters.com/ (تم الوصول إليه في يناير 2021)
مارك دبليو بيلي ، ناثان سي ويستون (يونيو 2001) التقرير الفني. فوائد الأداء لإزالة عودة الذيل في اللغات الإجرائية [عبر الإنترنت] متاح على http://cs.hamilton.edu/~mbailey/pubs/techreps/tr-2001-2.pdf
Roberto Ierusalimschy ، Luiz Henrique de Figueiredo ، Waldemar Celes Flowures in Lua [pdf] متاح على https://www.cs.tufts.edu/~nr/cs257/archive/roberto-ieruschy/closurs-daft.pdf (تم الوصول إليه في مارس 2022)
Leonard Schütz. (2020) الكتابة الديناميكية والملاكمة NAN [عبر الإنترنت] متاح على https://leonardschuetz.ch/blog/nan-boxing/ (تم الوصول إليه في ديسمبر 2020)
Bob Nystrom. (2011) Pratt Parsers: أصبح التحليل السهل [عبر الإنترنت] Avaliable على http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/ (تم الوصول إليه في ديسمبر 2020)