Matemático francês Fabrice Bellard, que fundou os projetos QEMU e FFmpeg e também criou a fórmula mais rápida para calcular o número Pi e desenvolveu o formato de imagem BPG.
Fabrice Bellard é mais conhecido como o desenvolvedor líder do QEMU (um emulador que emula várias arquiteturas de hardware) e Tiny C Compiler (tcc), um compilador C muito pequeno, mas abrangente, originalmente escrito para vencer o “International Ofuscated C Code Contest”.
Agora recentemente compartilhou com o público a primeira versão de seu novo trabalho que está em JavaScript e este é um novo mecanismo chamado JavaScript QuickJS.
Sobre JavaScript QuickJS
O mecanismo QuickJS JavaScript é compacto e projetado para ser incorporado a outros sistemas. O código do projeto Ele é escrito em C e distribuído sob a licença do MIT. Também está disponível uma construção de mecanismo compilada em WebAssembly usando Emscripten e adequada para execução em navegadores.
A implementação de JavaScript suporta a especificação ES2019, incluindo módulos, geradores assíncronos e proxies.
No mecanismo QuickJS JavaScript extensões matemáticas não padrão opcionais para JavaScript são suportadas, como os tipos BigInt e BigFloat, bem como a sobrecarga do operador.
Em desempenho, QuickJS supera significativamente os análogos disponíveisPor exemplo, no teste de bancada v8, o mecanismo XS está 35% à frente, DukTape mais que dobrou, JerryScript três vezes e MuJS sete vezes.
Além da biblioteca para incorporar o mecanismo ao aplicativo, o projeto também oferece o intérprete qjs, que pode ser usado para executar o código JavaScript na linha de comando.
Além disso, o compilador qjsc está disponível e é capaz de gerar arquivos executáveis que podem ser executados separadamente e que estes não requerem dependências externas.
Dos principais recursos do mecanismo QuickJS JavaScript os seguintes pontos se destacam:
- Compacto e fácil de integrar em outros projetos. O código inclui apenas alguns arquivos C que não requerem dependências externas para serem compilados. Um aplicativo compilado simples leva cerca de 190 Kb
- Desempenho muito alto e tempos de inicialização rápidos. Passar em 56 mil testes de compatibilidade ECMAScript leva aproximadamente 100 segundos ao executar um desktop normal em um kernel. A inicialização do tempo de execução leva menos de 300 microssegundos
- Suporte quase total para a especificação ES2019 e suporte total para o aplicativo "B", que define os componentes para compatibilidade com aplicativos da web mais antigos
- Conclua a passagem de todos os testes do ECMAScript Test Suite
- Suporte para compilar código Javascript em arquivos executáveis sem dependências externas
- O coletor de lixo depende da contagem de referência sem limpeza cíclica, permitindo comportamento previsível e consumo de memória reduzido
- Um conjunto de extensões para cálculos matemáticos na linguagem JavaScript
- Um shell para executar o código no modo de linha de comando, que oferece suporte ao realce de código contextual
- Biblioteca compacta padrão sobre biblioteca C
Além disso, Por outro lado, o projeto também está desenvolvendo três bibliotecas C partes relacionadas envolvidas no QuickJS e adequadas para uso individual:
- freegexp: uma biblioteca regex pequena e rápida que está em conformidade com a especificação JavaScript ES2019
- libunicódigo: uma pequena biblioteca Unicode que suporta conversão de caso, normalização Unicode, solicitações de script Unicode, consultas de categoria geral Unicode e todas as propriedades binárias Unicode
- libbf: Esta também é uma pequena biblioteca que implementa operações de ponto flutuante IEEE 754 e funções transcendentais com arredondamento exato. É mantido como um projeto separado.
Como obter o SavaScript QuickJS?
O download do código-fonte para compilação pode ser feito em o seguinte link. Após a instalação, um Makefile é fornecido para compilar o mecanismo no Linux ou Mac OS / X.
No mesmo link você pode consultar a documentação QuickJS Para maiores informações. Ele também fornece informações de benchmark que mostram o desempenho do QuickJS com o motor V8 do Google e uma comparação entre ele e outras ferramentas na mesma categoria.