0 Compartilhamentos 722 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

Rust é o futuro da infraestrutura JavaScript
Artigos
49 visualizações
Artigos
49 visualizações

Rust é o futuro da infraestrutura JavaScript

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

Lee Robinson explica como e por que o Rust está penetrando em cenários antes dominados pelo JavaScript.

Influenciadores digitais que não existem
Artigos
111 visualizações
Artigos
111 visualizações

Influenciadores digitais que não existem

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

Na era da pós-verdade, influenciadores que não são reais estão ganhando espaço para uma multidão que quer ser influenciada

Pais criam aplicativo de código aberto melhor que o da escola, mas a polícia é acionada
Artigos
251 visualizações
Artigos
251 visualizações

Pais criam aplicativo de código aberto melhor que o da escola, mas a polícia é acionada

Carlos L. A. da Silva - 23 de novembro de 2021

Aplicativo oficial do sistema educacional da capital Suécia era ruim demais, mas a lei é a lei...

Mais publicações

10 recursos HTML5 úteis que você pode não estar usando
Artigos
496 visualizações
496 visualizações

10 recursos HTML5 úteis que você pode não estar usando

Carlos L. A. da Silva - 6 de novembro de 2021
O Metaverso está vindo?
Artigos
559 visualizações
559 visualizações

O Metaverso está vindo?

Carlos L. A. da Silva - 1 de novembro de 2021
Por que eu decidi não migrar para o Windows 11 agora
Artigos
660 visualizações
660 visualizações

Por que eu decidi não migrar para o Windows 11 agora

Carlos L. A. da Silva - 19 de outubro de 2021
Sir Clive Sinclair, o homem adiantado no tempo
Artigos
946 visualizações
946 visualizações

Sir Clive Sinclair, o homem adiantado no tempo

Carlos L. A. da Silva - 18 de setembro de 2021