
V8, Advanced JavaScript, and the Next Performance Frontier [video] - rbanffy
https://www.youtube.com/watch?v=EdFDJANJJLs
======
josephg
It was cool seeing a demo at the end made using Choo[1]. Choo is my favorite
in the current sea of react clones. I like it because its tiny (4k vs react's
~200k). Choo supports server-side rendering. And its made out of smaller
modules which are all independently useful (DOM generator, diff engine and
router).

Instead of using JSX files, choo uses ES6 tagged template literals. As a
result the code doesn't need a compilation step at all. But you can still
actually compile the templates if you want for better performance + a smaller
JS bundle in production.

Its great stuff. I'm a huge fan.

[1] [https://github.com/yoshuawuyts/choo](https://github.com/yoshuawuyts/choo)

~~~
Vinnl
That's stringly typed, right? That sounds like a huge downside to me compared
to the not-so-huge downside of JSX.

That said, I quite like hyperscript, especially in this form:
[https://github.com/ohanhi/hyperscript-
helpers](https://github.com/ohanhi/hyperscript-helpers)

~~~
josephg
Ugh, that is way harder to read than html`<h1>oh hai ${name}</h1>`. They both
work without compilation, and they can both compile to the same code anyway.
Maybe you can get used to hyper, but ES6 tagged template literals are much
easier on the eyes.

~~~
Vinnl
Maybe

> h1(`oh hai ${name}`)

is harder to read than

> html`<h1>oh hai ${name}</h1>`

for some people, but even then your editor can understand that that is a
function, can tell you when you've mistyped it, can autocomplete it for you,
and can give you hints on what arguments it takes (since it has TypeScript
definitions).

And as a bonus for me, I also find the former easier to read than the latter,
but that might just be getting used to it :)

~~~
idbehold
The "tag" part of a tagged template literal _is_ a function so maybe your
editor should be updated to recognize them.

~~~
qudat
html`<h1>oh hai ${name}` won't get any complaints from any linters by default,
while h('h1', `oh hai ${name}` would throw an error.

~~~
idbehold
Couldn't you say the same about JSX?

~~~
Vinnl
No, if you type

> <j1>oh hai {name}</h1>

your editor will complain :)

------
talawahdotnet
Demo showing how to debug node code using Chrome DevTools at 26:18[1]. Very
cool if you don't already have a full blown IDE with debugging built in. Or
even if you just want to inspect some random node library/code on the fly.

1\.
[https://youtu.be/EdFDJANJJLs?t=26m18s](https://youtu.be/EdFDJANJJLs?t=26m18s)

~~~
afarrell
I wish node also has a full-featured server-side debugger that worked in the
terminal.

When I'm writing server-side code and popping `debugger;` into my unit test, I
_really_ don't want to go to open up a chrone window and use my mouse to
fiddle with the sizes of the panes to make debugging in chrome work. It looks
like this protocol could eliminate the problem of waiting for the connection
to come through (it drops a lot of the time when you do it within unit tests),
which is great.

If I wanted to get started adding this to node.js, does anyone have any
suggestions for where I would start? Presumably by first getting a solid
mental model of V8's internals, but has anyone else worked on debuggers that
could give me some pointers?

~~~
mscdex
Have you seen this?: [https://github.com/nodejs/node-
inspect](https://github.com/nodejs/node-inspect)

------
franciscop
I couldn't but notice that you are using my library Picnic CSS with the demo
Github Repo Formatter (starting 32:50). Just wanted to say thank you to Seth
Thomson and Google, it is a honor!

------
arrty88
Does this make babel obsolete on the server side?

~~~
hzoo
You don't have to use Babel, but if you want to use newer/syntax not in
Node/v8 then yes. Always a tradeoff, but gave a talk at TC39 recently about
this, [https://github.com/hzoo/role-of-babel-in-
js](https://github.com/hzoo/role-of-babel-in-js),
[https://twitter.com/left_pad/status/867593358977499137](https://twitter.com/left_pad/status/867593358977499137).

[https://github.com/babel/babel-preset-env](https://github.com/babel/babel-
preset-env) with our `"node": "current"` option can help with this.

~~~
rattray
(for context, @hzoo is the primary maintainer of babel these days)

------
rawrmaan
TL;DW?

~~~
apaprocki
Basically Ignition + TurboFan:

[https://v8project.blogspot.com/2017/05/launching-ignition-
an...](https://v8project.blogspot.com/2017/05/launching-ignition-and-
turbofan.html)

with a (really) brief mention of Orinoco:

[https://v8project.blogspot.com/2016/04/jank-busters-part-
two...](https://v8project.blogspot.com/2016/04/jank-busters-part-two-
orinoco.html)

and Node + Chrome DevTools:

[https://medium.com/@paul_irish/debugging-node-js-
nightlies-w...](https://medium.com/@paul_irish/debugging-node-js-nightlies-
with-chrome-devtools-7c4a1b95ae27)

Octane benchmark retired because it benchmarks peak performance and doesn't
account for other factors (e.g. startup time, memory usage). Speedometer2
coming to browserbench.org soon, benchmarks a much wider range of real-world
frameworks.

------
sota0805
It is very great resource to know what V8 is and was.

------
ympostor
Sad he didn't expand on WebAssembly.

~~~
kentor
There is another talk on that:
[https://www.youtube.com/watch?v=6v4E6oksar](https://www.youtube.com/watch?v=6v4E6oksar)

~~~
Houshalter
Your link is broken.

~~~
marvdm
I think it's supposed to be this:
[https://www.youtube.com/watch?v=6v4E6oksar0](https://www.youtube.com/watch?v=6v4E6oksar0)

~~~
iso-8859-1
How did you fix that link?

~~~
zellyn
By adding a zero?

~~~
forgot-my-pw
It's also the first youtube result when you search WebAssembly ;)

