V8 Release 6.3
v8project.blogspot.com
v8project.blogspot.com
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...
The TC39 topic they site hasn't been touched in two years:
I think they are not shipping that anymore.
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.
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.
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.
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 !
[1] https://docs.google.com/document/d/1TqpdGeLmURL2gc18s6PwNeyZ...