0 Compartilhamentos 1135 Views

Enumerando e analisando mais de 40 implementações de JavaScript (que não são V8)

6 de outubro de 2021

V8 é o interpretador JavaScript, também chamado de máquina virtual Javascript, desenvolvido pela Google e utilizado em seu navegador Google Chrome. Com o peso de seus criadores e a quase onipresença do navegador, foi apenas uma questão de tempo para essa implementação do JavaScritp se tornar dominante no mercado.

Entretanto, um bom desenvolvedor sabe que não existe uma única solução para todos os problemas. Muitas vezes nem mesmo existe uma solução única para um problema bastante específica. Ter a mente aberta para um arsenal de possibilidades e cenários é fundamental para se encontrar respostas para desafios.

Phil Eaton é um desenvolvedor de Queens, Nova York, que está trabalhando em um IDE open source batizado de DataStation. Em um artigo publicado na internet, ele mostra que existem muito mais implementações de JavaScript do que imagina nossa vã filosofia e que não dependem do motor V8.

Com sua autorização, traduzimos e reproduzimos o artigo na íntegra:

“V8 é, tenho certeza, a implementação de JavaScript mais usada atualmente. Usado no Chrome, (e por extensão) Microsoft Edge, Node.js, etc. JavaScriptCore do Safari e SpiderMonkey do Firefox também são candidatos a implementações extremamente populares.

Mas o que mais existe? E se eu quiser incorporar JavaScript em um programa C, ou um programa Go, ou um programa Rust, ou um programa Java (e assim por diante)? Ou e se eu quiser executar JavaScript em um microcontrolador? Ou usá-lo como base para pesquisas linguísticas? Acontece que existem muitas implementações de alta qualidade por aí.

Esta postagem descreve várias delas e suas opções de implementação. Não vou cobrir V8, JavaScriptCore ou SpiderMonkey porque eles são enormes e escondem vários interpretadores e compiladores dentro deles. Além disso, você já sabe sobre eles.

Vou perder algumas implementações e errar alguns detalhes. Por favor, tweet ou me mande um email com suas correções! Eu estaria particularmente interessado em ouvir sobre pesquisa pura; e implementações comerciais de código fechado de JavaScript.

Apoiadas por empresas

Essas são implementações que fariam sentido para seus próprios aplicativos comerciais de produção.

Em JVM

Embarcáveis

  • Njs da Nginx
  • ChowJS: compilador AOT proprietário baseado em QuickJS para desenvolvedores de jogos
    • Suporte: tudo o que QuickJS faz presumivelmente (veja mais abaixo para QuickJS)
    • Linguagem de implementação: C presumivelmente
    • Runtime: interpretador de bytecode do QuickJS, mas também um compilador AOT
    • Parser: presumivelmente do QuickJS
    • Primeiro lançamento: 2021
    • Notas: O código não está disponível, portanto, uma análise exata desses pontos não é possível no momento.
  • Mujs da Artifex

Em sistemas embarcados

Outras

Não sei se devo colocar o ChakraCore da Microsoft nesta lista ou na próxima. Vou colocá-lo aqui, mas observe que, a partir deste ano de 2021, eles estão fazendo a transição para se tornar um projeto voltado para a comunidade.

Maduras, criadas pela comunidade

As implementações no topo da lista a seguir são mais confiáveis e comprovadas. Implementações em direção ao final nem tanto.

Se você deseja se envolver no desenvolvimento de linguagens, as implementaões mais abaixo na lista podem ser um ótimo lugar para começar, já que normalmente precisam trabalhar em documentação, teste e recursos de linguagem.

Esses últimos não são brinquedos, mas também são mais experimentais ou, no caso do AssemblyScript, não são JavaScript.

Implementações de pesquisa

Obrigado a @smarr por contribuir com eJS, Higgs e b9!

Notáveis abandonadas

Implementações notáveis para brincar

Ótimo para se inspirar se você nunca implementou uma linguagem antes.

  • js-to-c: um compilador de JavaScript para C, escrito em C
  • mjs: interpretador AST não apenas para ES5 ou mesmo ES3, mas também ES1
  • gojis: interpretador AST em Go
  • tojs: Bytecode VM in Rust
  • v2: Bytecode VM em Go
  • SparrowJS: interpretador AST em C ++
  • jsc: Meu próprio experimento compilando JavaScript para C ++ / libV8″

Publicado originalmente como “Enumerating and analyzing 40+ non-V8 JavaScript implementations” em 21 de setembro de 2021. Traduzido e republicado com autorização do autor.

Carregando...

Você pode se interessar

As melhores extensões gratuitas para Visual Studio 2022
Artigos
61 visualizações
Artigos
61 visualizações

As melhores extensões gratuitas para Visual Studio 2022

Carlos L. A. da Silva - 20 de janeiro de 2022

Comece o ano com a melhor ferramenta para complementar seu trabalho!

Conhecendo Svelte
Artigos
250 visualizações
Artigos
250 visualizações

Conhecendo Svelte

Carlos L. A. da Silva - 6 de janeiro de 2022

Svelte, React ou Vue? O especialista Josh Collinsworth disserta sobre a solução em seus mínimos detalhes.

Petrobras abre concurso com 757 vagas de nível superior
Artigos
307 visualizações
Artigos
307 visualizações

Petrobras abre concurso com 757 vagas de nível superior

Redação - 30 de dezembro de 2021

Há vagas para cientistas de dados, engenheiros e analistas de sistemas entre outras carreiras. As inscrições permanecerão abertas até o dia 05 de janeiro de 2022.

Mais publicações

A história da imagem mais antiga da internet
Artigos
344 visualizações
344 visualizações

A história da imagem mais antiga da internet

Carlos L. A. da Silva - 28 de dezembro de 2021
Coreia do Sul no mapa dos jogos
Artigos
344 visualizações
344 visualizações

Coreia do Sul no mapa dos jogos

Carlos L. A. da Silva - 22 de dezembro de 2021
Rust é o futuro da infraestrutura JavaScript
Artigos
638 visualizações
638 visualizações

Rust é o futuro da infraestrutura JavaScript

Carlos L. A. da Silva - 6 de dezembro de 2021
Influenciadores digitais que não existem
Artigos
623 visualizações
623 visualizações

Influenciadores digitais que não existem

Carlos L. A. da Silva - 2 de dezembro de 2021