O matemático francês Fabrice Bellard, que fundou na sua época os projetos QEMU, FFmpeg, BPG, QuickJS, TinyGL e TinyCC, publicou um novo motor JavaScript para sistemas embarcados — Micro QuickJS, capaz de compilar e executar programas JavaScript, consumindo apenas 10 KB de RAM. Juntamente com a biblioteca em C, o motor ocupa cerca de 100 KB de memória permanente. É possível compilar JavaScript em bytecode e executar o bytecode separadamente. O código do projeto é escrito na linguagem C e distribuído sob a licença MIT.
O motor suporta um subconjunto da linguagem JavaScript, próximo à especificação ECMAScript 5 (ES2019), mas impõe requisitos mais rígidos ao código e não permite o uso de algumas construções JavaScript ineficientes ou propensas a erros. Por exemplo, variáveis globais devem ser necessariamente declaradas com a palavra-chave 'var', o uso de 'with' é proibido, arrays não podem ter lacunas, não é possível inicializar ao declarar na forma 'new Number(1)', e não é possível acessar variáveis locais a partir do eval.
O desempenho do Micro QuickJS é comparável ao do motor QuickJS, desenvolvido por Fabrice desde 2019. O Micro QuickJS utiliza parte do código do QuickJS, mas a arquitetura difere em muitos aspectos e é projetada para um consumo mínimo de memória. Por exemplo, o Micro QuickJS emprega um coletor de lixo por rastreamento, enquanto o QuickJS utiliza contagem de referências. As sobrecargas do coletor de lixo consistem em apenas alguns bits para cada bloco de memória alocado. Para alocação de memória, utiliza um alocador próprio, independente da função de biblioteca malloc().
Outras diferenças em relação ao QuickJS: não utiliza pilhas; representação interna distinta de objetos; armazenamento de strings em codificação UTF-8; geração da biblioteca padrão durante a compilação e armazenamento na memória permanente, criando na RAM apenas alguns objetos; parser semelhante ao QuickJS, mas que não utiliza recursão; combinação em uma única passagem da geração de bytecode e otimização (o QuickJS possui várias passagens para otimização). máquina virtualO matemático francês Fabrice Bellard, que fundou na sua época os projetos QEMU, FFmpeg, BPG, QuickJS, TinyGL e TinyCC, publicou um novo motor JavaScript para sistemas embarcados - Micro QuickJS.
Fonte: opennet.ru
