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
ChakraCore e o início de uma nova era na comunidade Node.js
By Mary Marchini
ChakraCore e o início de uma nova era na comunidade Node.js
- 480