ChakraCore

e o inicio de uma uma nova
era na comunidade Node.js

Mary Marchini

@mmarkini

Mary Marchini

Developers Team Leader @  Sthima

Node.js Collaborator

@mmarkini

http://mmarchini.me/

oss@mmarchini.me

https://github.com/mmarchini/

Node.js Diagnostics WG Member

O que é ChakraCore?

O que é Node.js?

8.8 Milhões

de instâncias rodando

3+ Bilhões

47k

Pacotes baixados semanalmente no npm

Estrelas no GitHub

1.500+

Contribuidores

4800

Pacotes publicados semanalmente

Oito

Arquiteturas suportadas

Como tudo começou...

2008

2008

V8

  • V8 não era um interpretador
    • Ele era um compilador
    • Sempre gerava código de máquina
    • Performance decente para uma linguagem dinâmica na época
  • Open-source
  • Embarcável 

2009

JSConfEU 2009 - Ryan Dahl apresenta Node.js pela primeira vez

2009

JSConfEU 2009 - Ryan Dahl apresenta Node.js pela primeira vez

I/O has to be done differently. We're doing it wrong

Ryan Dahl, JSConfEU 2009

Node.js

  • Javascript para servidor
  • Criado em cima do Google V8
  • Evented, non-blocking I/O. Parecido com EventMachine e Twisted
  • Sistema de módulos CommonJS
  • 8000 linhas de C/C++. 2000 linhas de Javascript. 14 contribuidores

Arquitetura Node.js (2009)

2009

Isaac Schlueter propôe um gerenciador de pacotes para o Node.js

2010

Node.js

  • Node.js 0.2.0
  • Surgem alguns pacotes
    • Express
    • Socket.io

2010

V8

Novo compilador: Crankshaft

2011

1.0 Released

2011

Adoção do Node.js

2012

Node.js

  • Node.js 0.8.0 (estável)
  • Mudança na liderança
    • Ryan Dahl -> Isaac
  • Node.js começa a focar no seu ecossistema

2013

Node.js

  • Ghost Blog Platform
  • MEAN Stack

2013

Adoção do Node.js

2014

Node.js

  • Surge um fork do Node.js

2014

2014

Adoção do Node.js

2015

2015

+

Node.js 4.0!

=

2015

Node.js 4.2.0 LTS

2015

V8 novo compilador: Turbofan

2016

V8 Lança um interpretador: Ignition

Otimizado para consumo de memória em dispositivos móveis

2016

2016

Por que?

2016

N-API

  • ABI (Application Binary Interface) Stable
  • VM neutral

N-API

Um módulo nativo (C++) pode ser utilizado:

  • Node.js v6.x
  • Node.js v8.x
  • Node.js v9.x
  • Node.js v10.x
  • ...
  • node-chakracore (v8.x, v9.x, ...)

Sem recompilar!

N-API

Principais Colaboradores

N-API Current Status

  • Saiu da versão experimental a alguns meses
    • Com exceção v6.x
  • WG está colaborando com criadores de módulos nativos para atualizar para N-API

Time-Travel Debugging

  • Salva um trace da execução do programa
  • Um trace é uma sequência de passos que o programa realizou durante a sua execução
  • Permite reproduzir esses passos posteriormente, sem efeitos colaterais e com a possibilidade de " voltar no tempo"

Time-Travel Debugging

Demo

Time-Travel Debugging Current Status

  • Apenas com node-chakracore + VS Code
    • Protocolo utilizado é aberto
    • Colaboração com V8 para trazer essa funcionalidade para o Node.js Core

ChakraCore vai substituir o V8?

Não é o objetivo

Existe "briga" entre as VMs?

Existe uma competitividade saudável

Também existe muita colaboração entre elas

Posso usar node-chakracore em produçao?

Use a seu próprio risco

Não deve ter problemas

Posso usar TTD em produção?

Não recomendado no momento, mas é um objetivo futuro

Overhead de memória ~10%

Overhead de processamento

@mmarkini

http://mmarchini.me/

oss@mmarchini.me

https://github.com/mmarchini/

www.sthima.com

Made with Slides.com