O fundador do QEMU e FFmpeg publicou o mecanismo JavaScript QuickJS

O matemático francês Fabrice Bellard, fundador dos projetos QEMU e FFmpeg, também criou a fórmula mais rápida para calcular o número Pi e desenvolveu o formato da imagem BPG, publicou a primeira versão do novo mecanismo JavaScript QuickJS. O motor é compacto e projetado para integração em outros sistemas. O código do projeto é escrito em C e distribuído sob a licença do MIT. Também está disponível uma versão do mecanismo, compilada em WebAssembly usando Emscripten e adequada para execução em navegadores.

Implementação de JavaScript suporta o Especificação ES2019, incluindo módulos, geradores assíncronos e proxies. Matemática não padrão é opcionalmente suportada extensões para JavaScript, como tipos BigInt e BigFloat, bem como sobrecarga do operador. O desempenho do QuickJS é significativo Ultrapassa análogos disponíveis, por exemplo, no teste
bench-v8 está à frente do motor XS 35% DukTape mais que dobrou JerryScriptName três vezes e MuJS sete vezes.

Além da biblioteca para incorporar o motor às aplicações, o projeto também oferece um interpretador qjs, que pode ser usado para executar código JavaScript a partir da linha de comando. Além disso, está disponível o compilador qjsc, capaz de gerar arquivos executáveis ​​​​de saída adequados para execução autônoma que não requerem dependências externas.

Características principais:

  • 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 montagem. O aplicativo compilado mais simples ocupa cerca de 190 KB;
  • Desempenho muito alto e tempo de inicialização curto. Passar em 56 mil testes de compatibilidade ECMAScript leva cerca de 100 segundos quando executado em um único núcleo de um PC desktop comum. 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 Apêndice B, que define componentes para compatibilidade com aplicativos web legados;
  • Aprovação completa em todos os testes do ECMAScript Test Suite;
  • Suporte para compilação de código Javascript em arquivos executáveis ​​sem dependências externas;
  • Um coletor de lixo baseado em contagem de referências sem limpeza cíclica, o que nos permitiu atingir um comportamento previsível e reduzir o consumo de memória;
  • Um conjunto de extensões para cálculos matemáticos em JavaScript;
  • Um shell para executar código no modo de linha de comando, com suporte para realce contextual de código;
  • Biblioteca padrão compacta com wrappers sobre a biblioteca C.

O projeto também está desenvolvendo três bibliotecas C envolvidas em QuickJS e adequadas para uso individual:

  • libregexp – implementação rápida de expressões regulares, totalmente compatível com a especificação Javascript ES 2019;
  • libunicode – uma biblioteca compacta para trabalhar com Unicode;
  • libbf - Implementação de operações de ponto flutuante de precisão arbitrária e funções transcendentais com arredondamento exato.

Fonte: opennet.ru

Adicionar um comentário