
Pocketlang est un langage de script léger (~ 3000 semimicolons) et à l'objet rapide et intégré à l'objet écrit en C. Il a une syntaxe Python à saveur de rubis, qui peut être apprise dans les 15 minutes. Comprenant le compilateur, ByteCode VM et Runtime, c'est un exécutable autonome avec des dépendances externes nulles tout comme son nom d'auto-descriptif. La machine virtuelle Pocketlang peut être intégrée très facilement dans un autre programme d'hébergement.
La langue Wren et leur merveilleux livre d'artisanat ont été utilisés comme référence pour écrire cette langue.
# 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 Vous pouvez essayer PocketLang sur votre navigateur. Il s'agit d'une version WebAssembly de la machine virtuelle compilée à l'aide d'Emscripten. Notez que dans la version WebAssembly de la langue, certaines fonctionnalités (entrée, gestion de fichiers, importation relative, etc.) ont désactivé, a des allocations de mémoire limitées et les appels stdout peuvent être plus lents.
La documentation de PocketLang est hébergée sur https://thakeenathees.github.io/pocketlang/ qui est construite à partir de la branche docs générée par un petit script python sur docs/generate.py . Notez que les documentations sont WIP et pourraient ne pas être à jour.
PocketLang utilise Nan-Boxing, ce qui est un moyen efficace de la mémoire de représenter les types dynamiques et de les traiter est beaucoup plus rapide. Il prend en charge l'optimisation des appels de queue. Lorsqu'une fonction renvoie un appel, la Callee peut réutiliser le cadre de pile de l'appelant, cela optimisera la mémoire de O (n) à O (1) et pour la queue récursive, cela empêchera complètement les flux de ronctionnement et pourtant c'est plus rapide.
Tous les repères ci-dessous ont été exécutés sur: Windows10 (64bit), ASUS N552VX, Intel Core i7-6700HQ 2,6 GHz avec RAM sodimm 12 Go. Et les versions linguistiques sont: PocketLang (pré-alpha), Wren v0.3.0, Python v3.7.4, Ruby v2.7.2.

Les fichiers source utilisés pour exécuter des repères peuvent être trouvés sur test/benchmarks/ Directory. Ils ont été exécutés à l'aide d'un petit script Python dans le répertoire de test.
Il peut être construit à partir de la source facilement sans dépendances, ni exigences supplémentaires, à l'exception d'un compilateur compatible C99. Il peut être compilé avec la commande suivante.
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
Pour exécuter le fichier de fabrication sur Windows avec mingw , vous avez besoin de l'outil GNU make que vous pouvez obtenir à partir de MSYS2 ou Cygwin.
scriptsbuild.bat
Vous n'avez pas à exécuter le script à partir d'une invite de commande de développeur Visual Studio .NET, il recherchera le chemin d'installation MSVS et configurera l'environnement de construction.
src/include pour inclure le chemin.Les fichiers de projet Visual Studio peuvent être générés avec le Premake, voir Scripts / Readme pour plus d'informations. Si vous n'avez pas pu le compiler, veuillez nous signaler en ouvrant un problème.
Bob Nystrom. (2021) CraftingInterpreters [en ligne] disponible sur www.craftinginterpreters.com/ (consulté janvier 2021)
Mark W. Bailey, Nathan C. Weston (juin 2001) Rapport technique. Avantages de performance de la suppression de la récursivité de la queue dans les langues procédurales [en ligne] disponibles sur http://cs.hamilton.edu/~mbailey/pubs/techreps/tr-2001-2.pdf
Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Fermeures à Lua [PDF] disponible sur https://www.cs.tufts.edu/~nr/cs257/archive/roberto-ierusalimschy/closures-draft.pdf (consulté March 2022)
Leonard Schütz. (2020) Dynamic Typing and Nan Boxing [en ligne] Disponible sur https://leonardschuetz.ch/blog/nan-boxing/ (consulté en décembre 2020)
Bob Nystrom. (2011) Pratt Parsers: l'expression l'analyse de l'expression a rendu facile [en ligne] Avaliable sur http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/ (consulté en décembre 2020)