
Pocketlang ist ein leichtes (~ 3000 Semikolons) und schnellem objektorientiertes, eingebettetes Skriptsprache in C. Es hat eine Python -Syntax mit Rubingeschmack, die innerhalb von 15 Minuten gelernt werden kann. Einschließlich des Compilers, der Bytecode VM und der Laufzeit ist es eine eigenständige Datei mit null externen Abhängigkeiten, genau wie es sich selbst beschreibend ist. Die Pocketlang VM kann sehr einfach in ein anderes Hosting -Programm eingebettet werden.
Wren Language und ihre wundervollen Buchdolmetscher wurden als Verweis verwendet, um diese Sprache zu schreiben.
# 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 Sie können Pocketlang auf Ihrem Browser probieren. Es handelt sich um eine WebAssembly -Erstellung der mit EMSCIPTEN zusammengestellten VM. Beachten Sie, dass einige Funktionen (Eingabe, Dateibehandlung, relativer Import usw.) in der WebAssembly -Version der Sprache deaktiviert, eingeschränkte Speicherzuweisungen haben und die STDOut -Anrufe möglicherweise langsamer sind.
Die Pocketlang -Dokumentation wird unter https://thakeenathees.github.io/pocketlang/ gehostet, die aus der docs -Zweigstelle erstellt wurde, die von einem kleinen Python -Skript bei docs/generate.py generiert wird. Beachten Sie, dass die Dokumentationen ab WIP sind und möglicherweise nicht auf dem neuesten Stand sind.
Pocketlang verwendet Nan-Boxen, was eine speichereffiziente Möglichkeit ist, dynamische Typen darzustellen und sich damit zu handhaben, viel schneller. Es unterstützt die Heckanrufoptimierung. Wenn eine Funktion einen Aufruf zurückgibt, kann der Callee den Stapelrahmen des Anrufers wiederverwenden. Dadurch optimiert der Speicher von O (n) zu O (1) und für den Schwanz rekursiv, sie verhindern vollständig Stackoverflows und dennoch ist sie schneller.
Alle folgenden Benchmarks wurden unter: Windows10 (64bit), ASUS N552VX, Intel Core i7-6700HQ 2,6 GHz mit 12 GB Sodimm-RAM ausgeführt. Und die Sprachversionen sind: Pocketlang (Pre-Alpha), Wren V0.3.0, Python v3.7.4, Ruby v2.7.2.

Die zum Ausführen von Benchmarks verwendeten Quelldateien finden Sie unter test/benchmarks/ Verzeichnis. Sie wurden mit einem kleinen Python -Skript im Testverzeichnis ausgeführt.
Es kann leicht ohne Abhängigkeiten oder zusätzliche Anforderungen aus der Quelle erstellt werden, mit Ausnahme eines C99 -kompatiblen Compilers. Es kann mit dem folgenden Befehl zusammengestellt werden.
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
Um die Datei für Windows mit mingw auszuführen, benötigen Sie das GNU make , das Sie von MSYS2 oder Cygwin erhalten können.
scriptsbuild.bat
Sie müssen das Skript nicht von einer Eingabeaufforderung für Visual Studio .NET -Entwickler ausführen. Es wird nach dem MSVS -Installationspfad gesucht und die Build -Umgebung eingerichtet.
src/include den Pfad.Visual Studio -Projektdateien können mit der Vorbereitung generiert werden. Weitere Informationen finden Sie in Skripts/Readme. Wenn Sie es nicht kompilieren konnten, melden Sie uns bitte, indem Sie ein Problem eröffnen.
Bob Nystrom. (2021) CRAFTINGINTINTERPREPTERS [Online] Verfügbar unter www.craftinginterpreters.com/ (Zugriff Januar 2021)
Mark W. Bailey, Nathan C. Weston (Juni 2001) Technischer Bericht. Leistungsvorteile der Schwanzreursionsentfernung in prozeduralen Sprachen [online] verfügbar unter http://cs.hamilton.edu/~mbailey/pubs/techreps/tr-2001-2.pdf
Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes -Verschlüsse in Lua [PDF] erhältlich unter https://www.cs.tUts.edu/~nr/cs257/archive/roberto-Tieralimschy/closures-drapt.pdf (Accessed March 202222) (Accessed March 2022))
Leonard Schütz. (2020) Dynamisches Tippen und Nan-Boxen [online] erhältlich unter https://leonardschuetz.ch/blog/nan-boxing/ (Zugriff Dezember 2020)
Bob Nystrom. (2011) Pratt-Parsers: Ausdruck Parsing einfach [online] durch http://journal.stuffwithstuff.com/2011/03/19/pratt-parser-expression-parsing-made-1y (Zugriff im Dezember 2020)