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

Por que eu decidi não migrar para o Windows 11 agora
Artigos
43 visualizações
Artigos
43 visualizações

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

Carlos L. A. da Silva - 19 de outubro de 2021

O novo sistema operacional da Microsoft está entre nós, mas talvez não seja uma boa ideia pular de cabeça.

Sir Clive Sinclair, o homem adiantado no tempo
Artigos
373 visualizações
Artigos
373 visualizações

Sir Clive Sinclair, o homem adiantado no tempo

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

O inglês Clive Marles Sinclair nasceu de uma família de engenheiros. Seu avô foi engenheiro, assim como o seu pai. Com um talento natural pela Matemática e um forte interesse em eletrônica, ele se tornaria uma página importante da popularização da computação em diversas partes do mundo, construindo um legado que se perpetuará por anos […]

A cibersegurança por trás das vacinas
Artigos
470 visualizações
Artigos
470 visualizações

A cibersegurança por trás das vacinas

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

Vacinas contra o coronavírus contam com aparato sofisticado de cibersegurança que bateu de frente com tentativa de ação de hackers.

Mais publicações

Top 25 comandos do Git
Artigos
607 visualizações
607 visualizações

Top 25 comandos do Git

Carlos L. A. da Silva - 28 de agosto de 2021
Dez anos de Kotlin: origens e futuro
Artigos
658 visualizações
658 visualizações

Dez anos de Kotlin: origens e futuro

Carlos L. A. da Silva - 20 de agosto de 2021
10 jogos que todo programador deveria conhecer
Artigos
1027 visualizações
1027 visualizações

10 jogos que todo programador deveria conhecer

Carlos L. A. da Silva - 1 de agosto de 2021