QuickJS - um motor JavaScript leve desenvolvido pelo fundador do QEMU e FFmpeg

JavaScript

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:

  1. freegexp: uma biblioteca regex pequena e rápida que está em conformidade com a especificação JavaScript ES2019
  2. 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
  3. 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.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.