
O Pocketlang é um idioma de script incorporado e semicolons leve (~ 3000 e semicolons) e orientado a objetos escritos em C. Possui uma sintaxe de python com sabor de rubi, que pode ser aprendido em 15 minutos. Incluindo o compilador, o bytecode VM e o tempo de execução, é um executável independente com zero dependências externas, assim como seu nome autônomo. A VM Pocketlang pode ser incorporada em outro programa de hospedagem com muita facilidade.
Wren Language e seus maravilhosos intérpretes de criação de livros foram usados como referência para escrever esse idioma.
# 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 Você pode experimentar o PocketLang no seu navegador. É uma criação de WebAssembly da VM compilada usando o EMSCRIPTEN. Observe que, na versão WebAssembly do idioma, alguns recursos (entrada, manipulação de arquivos, importação relativa etc.) têm desativado, possuem alocações de memória limitadas e as chamadas STDOUT podem ser mais lentas.
A documentação do PocketLang está hospedada em https://thakeenathees.github.io/pocketlang/, que é construída a partir da filial docs gerada por um pequeno script python em docs/generate.py . Observe que as documentações são WIP e podem não estar atualizadas.
O PocketLang usa o NAN-boxing, que é uma maneira eficiente de memória de representar tipos dinâmicos e lidar com eles é muito mais rápido. Ele suporta otimização de chamadas de cauda. Quando uma função retorna uma chamada, o Callee pode reutilizar o quadro da pilha do chamador, isso otimizará a memória de O (n) a O (1) e, para a cauda, recursiva, ele impedirá completamente os fluxos de StackOver e, no entanto, é mais rápido.
Todos os benchmarks abaixo foram executados em: Windows10 (64 bits), ASUS N552VX, Intel Core i7-6700HQ 2,6 GHz com 12 GB de SODIMM RAM. E as versões do idioma são: Pocketlang (pré-alfa), Wren v0.3.0, Python v3.7.4, Ruby v2.7.2.

Os arquivos de origem usados para executar benchmarks podem ser encontrados no test/benchmarks/ Diretório. Eles foram executados usando um pequeno script Python no diretório de teste.
Ele pode ser construído a partir da fonte facilmente sem dependências ou requisitos adicionais, exceto para um compilador compatível com C99. Pode ser compilado com o seguinte comando.
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
Para executar o arquivo Make no Windows com mingw , você precisa da ferramenta GNU make , que você pode obter do MSYS2 ou Cygwin.
scriptsbuild.bat
Você não precisa executar o script de um prompt de comando do Visual Studio .NET Developer, ele procurará o caminho de instalação do MSVS e configurará o ambiente de construção.
src/include para incluir o caminho.Os arquivos do Projeto Visual Studio podem ser gerados com o PREMAKE, consulte Scripts/ReadMe para obter mais informações. Se você não conseguiu compilá -lo, denuncie -nos abrindo um problema.
Bob Nystrom. (2021) CraftingInterprepers [Online] Disponível em www.craftinginterprepers.com/ (acessado em janeiro de 2021)
Mark W. Bailey, Nathan C. Weston (junho de 2001) Relatório Técnico. Benefícios de desempenho da remoção de recursão de cauda em idiomas processuais [Online] Disponível em http://cs.hamilton.edu/~mbailey/pubs/techreps/tr-2001-2.pdf
Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Closures in Lua [pdf] Available at https://www.cs.tufts.edu/~nr/cs257/archive/roberto-ierusalimschy/closures-draft.pdf (Accessed March 2022)
Leonard Schütz. (2020) Dynamic Typing e Nan Boxing [Online] disponíveis em https://leonardschuetz.ch/blog/nan-boxing/ (acessado em dezembro de 2020)
Bob Nystrom. (2011) Parsers Pratt: A análise de expressão facilitou [on-line] disponível em http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-deasy/ (acessado em dezembro de 2020)