
V8 Release 6.3 - stablemap
https://v8project.blogspot.com/2017/10/v8-release-63.html
======
ballenf
[https://bugs.chromium.org/p/v8/issues/detail?id=4698&q=tail%...](https://bugs.chromium.org/p/v8/issues/detail?id=4698&q=tail%20calls&colspec=ID%20Type%20Status%20Priority%20Owner%20Summary%20HW%20OS%20Component%20Stars)

Proper tail calls is the last ES6 feature not implemented by Chrome. Can
anyone shed more light on the backstory for the hold up? I've read the
challenges with debugging without a stack, but Safari's implementation of tail
calls seems pretty sound and was shipped about a year ago.

The last V8 blog post on the topic is almost 18 months old:

[https://v8project.blogspot.com/2016/04/es6-es7-and-
beyond.ht...](https://v8project.blogspot.com/2016/04/es6-es7-and-beyond.html)

The TC39 topic they site hasn't been touched in _two years_ :

[https://github.com/tc39/proposal-ptc-
syntax](https://github.com/tc39/proposal-ptc-syntax)

~~~
akmittal
In recent chrome Dev summit it was mentioned "The last missing part of ES6 all
browser vendors agree was a bad idea"

I think they are not shipping that anymore.

~~~
ballenf
I hadn't heard that. How disappointing and a step backward for the world's
most ubiquitous programming language. All very subjective, of course.

I guess Safari on desktop isn't considered a mainstream browser vendor
anymore? Or do they regret implementing it also?

The appeal of the explicit syntax makes sense, but the argument that proper
tail calls are hard to identify/create seems silly to me. Devs have any number
of ways to create memory leaks which have even harder to diagnose problems
than the stack overflow of an improper tail call. The stack without tail calls
overflows quite quickly unlike memory leaks which only a minority of users can
experience on certain code.

~~~
yayana
Given the example that one side of || is a tail call, it seems quite easy to
accidentally have overflows that only occur on specific data and call time
environments for situations like writing a bad binary heap traversal function.
Without tail calls, any traversal to some depth either does or doesn't trigger
a stack overflow.

But I find the need for step debugging to catch and unroll a virtual
equivalent to tail calls a better argument given that this is for a sandbox
for adversarial code with strong incentives to obscure bad behavior.

~~~
saurik
It is already trivial to break up logic and destroy the stack using async, if
for some reason we are to believe that the call stack is somehow a way for us
to somehow figure out we are being attacked. (Also, is it really surprising
that the right-hand side of a returned || expression is a tail call? That
seems extremely obvious :/. Regardless, the "syntactic tail call" proposal
seems like it fixes that issue.)

~~~
yayana
Features like async now have a few debugging options that can help users
identify origin and report malicious redirects, pop-unders etc that try to
obfuscate history and here comes a potential replacement.. So worrying about
debugging first isn't such a bad idea.

It's extremely obvious to think about tail calls when you know you are
supposed to be thinking about tail calls. The life cycle of JS Code doesn't
usually make anything obvious to people who inject the last edge conditions in
a function.

------
aagat
Would be nice to have
[https://bugs.chromium.org/p/v8/issues/detail?id=5866](https://bugs.chromium.org/p/v8/issues/detail?id=5866)
resolved so embedding/extending V8 would be a lot easier.

------
nopacience
This is the release many of us have been waiting for!

The performance enhancements will lead to better embedding and extending V8.
Chrome should probably implement proper tail calls. More now that even safari
has this feature implemented.

Great job and thanks you very much !

------
warent
Excited to see function parsing performance enhancements[1] and more ES stage
3 features being implemented!

[1]
[https://docs.google.com/document/d/1TqpdGeLmURL2gc18s6PwNeyZ...](https://docs.google.com/document/d/1TqpdGeLmURL2gc18s6PwNeyZOvayQJtJ16TCn0BEt48/edit#heading=h.un2pnqwbiw11)

------
c8g
someday v8 Release v8.0 :D

