GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Página principal
  • Conteúdo destacado
  • Eventos atuais
  • Esplanada
  • Página aleatória
  • Portais
  • Páginas especiais
  • Informar um erro
  • Boas-vindas
  • Ajuda
  • Páginas de testes públicas
  • Portal comunitário
  • Mudanças recentes
  • Manutenção

This view

  • Original page
  • New address

GeezerVison is showing pt.wikipedia.org — V8 (JavaScript) – Wikipédia, a enciclopédia livre

V8
DesenvolvedorGoogle[1]
Lançamento inicial2 de setembro de 2008 (2008-09-02)
Repositório
  • chromium.googlesource.com/v8/v8 Editar isso no Wikidata
Escrito emC++[1]
PlataformaIA-32, x86-64, ARM (32 bits), AArch64, MIPS (32 bits), MIPS64, PowerPC, IBM ESA/390, z/Architecture
TipoMecanismo de JavaScript e WebAssembly
LicençaBSD de 3 cláusulas[2]
Websitev8.dev Edit this on Wikidata

O V8 é um mecanismo de JavaScript e WebAssembly de código aberto desenvolvido pela Google para o seu navegador Google Chrome.[1][3] É um software livre e de código aberto que faz parte do projeto Chromium. Além do uso em navegadores web, o V8 é utilizado em ambientes de execução fora do navegador, destacando-se o Node.js.[1] Outros ambientes de execução JavaScript do lado do servidor utilizam motores alternativos, como o Bun (que utiliza o JavaScriptCore) e o Hermes (utilizado pelo React Native).

História

A Google criou o V8 para o navegador Chrome, de modo que o lançamento inicial do motor coincidiu com o lançamento da primeira versão do Chrome em 2008.[3] O nome é uma referência ao motor V8, e seu desenvolvedor principal foi Lars Bak.[4] Por diversos anos, o Chrome manteve uma velocidade de execução de JavaScript superior à de seus concorrentes.[5][6][7]

O assembler do V8 baseia-se no montador da linguagem Strongtalk.[8] Em 7 de dezembro de 2010, foi lançada uma nova infraestrutura de compilação chamada Crankshaft, que trouxe melhorias substanciais de desempenho.[9] Na versão 41 do Chrome, em 2015, o projeto TurboFan foi introduzido para otimizar cargas de trabalho complexas, tais como asm.js.[10] Grande parte do desenvolvimento do V8 foi inspirada pela Java HotSpot Virtual Machine da Sun Microsystems, com os pipelines de execução mais recentes apresentando forte semelhança com os do HotSpot.

O suporte à linguagem WebAssembly foi introduzido em 2015.[11]

Em 2016, o interpretador Ignition foi adicionado ao V8 com o objetivo de reduzir o uso de memória em dispositivos Android com recursos limitados em comparação com o uso do TurboFan e Crankshaft.[12] O Ignition é uma máquina baseada em registradores.

Em 2017, o V8 passou a adotar um novo pipeline de compilação composto pelo Ignition (interpretador) e pelo TurboFan (compilador de otimização). A partir da versão 5.9 do V8, o Full-codegen e o Crankshaft foram descontinuados, pois a equipe de desenvolvimento concluiu que eles não conseguiam mais acompanhar a evolução de novos recursos da linguagem JavaScript.[13]

Em 2021, um novo compilador de linha de base chamado SparkPlug foi adicionado para complementar o TurboFan no fluxo de compilação em camadas.

Em 2023, foi introduzido o compilador Maglev, baseado em SSA, posicionado entre o Sparkplug e o TurboFan para otimizar trechos de código que não atingem a frequência de execução necessária para justificar a compilação mais custosa do TurboFan.[14]

Projeto

O V8 inicia o processamento gerando uma árvore de sintaxe abstrata com um analisador próprio.[15] Em seguida, o Ignition gera bytecode a partir dessa árvore.[16] O TurboFan compila esse bytecode em código de máquina nativo utilizando compilação Just-In-Time (JIT) antes de sua execução.[17] O código compilado é otimizado dinamicamente em tempo de execução com base no perfil de execução. As técnicas de otimização aplicadas incluem substituição em linha, elisão de propriedades caras e cache em linha. O gerencimento de memória utiliza um coletor de lixo incremental e geracional.[18]

Uso

O V8 pode compilar para as arquiteturas de instrução x86, ARM e MIPS, tanto nas edições de 32 bits quanto de 64 bits. Também foi adaptado para PowerPC, IBM ESA/390 e z/Architecture para uso em servidores.[19][20][21]

O motor pode ser integrado em navegadores ou em projetos independentes. Ele é empregado nos seguintes softwares:

  • Navegadores baseados em Chromium — Google Chrome, Brave, Opera, Vivaldi e Microsoft Edge.
  • Ambientes em nuvem, como o Google Apps Script[22]
  • Servidor de banco de dados Couchbase
  • Ambiente de execução Deno[23]
  • Framework de aplicações desktop Electron, usado por aplicativos como Visual Studio Code e Discord
  • Servidor de banco de dados MarkLogic
  • Framework móvel NativeScript[24]
  • Ambiente de execução Node.js[25]

Ver também

  • Blink
  • WebAssembly
  • Lista de motores JavaScript

Referências

  1. 1 2 3 4 «Documentation · V8». Google. Consultado em 3 de março de 2024 
  2. ↑ «v8/LICENSE.v8 at master». GitHub 
  3. 1 2 Lenssen, Philipp (1 de setembro de 2008). «Google on Google Chrome - comic book». Google Blogoscoped (em inglês). Consultado em 17 de agosto de 2010 
  4. ↑ «V8: an open source JavaScript engine». YouTube. Google. 15 de setembro de 2008. Consultado em 15 de março de 2024 
  5. ↑ «Big browser comparison test: Internet Explorer vs. Firefox, Opera, Safari and Chrome». PC Games Hardware. Computec Media AG. 3 de julho de 2009. Consultado em 28 de junho de 2010. Cópia arquivada em 2 de maio de 2012 
  6. ↑ Purdy, Kevin (11 de junho de 2009). «Lifehacker Speed Tests: Safari 4, Chrome 2». Lifehacker. Consultado em 8 de maio de 2021. Cópia arquivada em 14 de abril de 2021 
  7. ↑ «Mozilla asks, 'Are we fast yet?'». Wired. Consultado em 18 de janeiro de 2019. Cópia arquivada em 22 de junho de 2018 
  8. ↑ «V8 JavaScript Engine: License». Google Code. Consultado em 17 de agosto de 2010. Cópia arquivada em 22 de julho de 2010 
  9. ↑ «A New Crankshaft for V8». Chromium Blog. 7 de dezembro de 2010. Consultado em 22 de abril de 2011 
  10. ↑ «Revving up JavaScript performance with TurboFan». 7 de julho de 2015. Consultado em 5 de março de 2016 
  11. ↑ «Experimental support for WebAssembly in V8». v8.dev. Consultado em 12 de março de 2024 
  12. ↑ «BlinkOn 6 Day 1 Talk 2: Ignition - an interpreter for V8». YouTube. 26 de junho de 2016. Consultado em 2 de setembro de 2016. Cópia arquivada em 21 de dezembro de 2021 
  13. ↑ «Launching Ignition and TurboFan». 16 de maio de 2017. Consultado em 13 de julho de 2017 
  14. ↑ «Maglev - V8's Fastest Optimizing JIT». 5 de dezembro de 2023. Consultado em 26 de janeiro de 2024 
  15. ↑ Verwaest, Toon (25 de março de 2019). «Blazingly fast parsing, part 1: optimizing the scanner · V8». v8.dev. Consultado em 1 de junho de 2021. Cópia arquivada em 21 de abril de 2021 
  16. ↑ Hinkelmann, Franziska (19 de dezembro de 2017). «Understanding V8's Bytecode». Medium (em inglês). Consultado em 17 de outubro de 2019 
  17. ↑ «Firing up the Ignition interpreter · V8». v8.dev. Consultado em 30 de setembro de 2020 
  18. ↑ «A game changer for interactive performance». blog.chromium.org. 21 de novembro de 2011. Consultado em 6 de fevereiro de 2022 
  19. ↑ «PPC support for Google V8 goes mainstream». 30 de junho de 2015. Cópia arquivada em 12 de setembro de 2015 
  20. ↑ «GitHub - ibmruntimes/v8ppc: Port of Google V8 javascript engine to PowerPC®.». 21 de abril de 2019 – via GitHub 
  21. ↑ «Port of Google V8 JavaScript engine to z/OS. The Linux on Z port is maintained in the community: ibmruntimes/v8z». 2 de abril de 2019 – via GitHub 
  22. ↑ «V8 Runtime Overview | Apps Script». Google for Developers. Consultado em 26 de janeiro de 2025 
  23. ↑ «A secure JavaScript/TypeScript runtime built with V8, Rust, and Tokio: denoland/deno». 8 de julho de 2019 – via GitHub 
  24. ↑ «Overview - NativeScript Docs». docs.nativescript.org. Consultado em 8 de julho de 2019. Cópia arquivada em 28 de julho de 2020 
  25. ↑ Jolie O'Dell (10 de março de 2011). «Why Everyone Is Talking About Node». Mashable 

Ligações externas

  • (em inglês) «Página oficial» 
Obtida de "https://pt.wikipedia.org/w/index.php?title=V8_(JavaScript)&oldid=72789029"
Categorias:
  • JavaScript
  • Compiladores e interpretadores livres
Categorias ocultas:
  • Páginas usando Info/Software com parâmetros desconhecidos
  • !CS1 inglês-fontes em língua (en)
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.