3 ms·
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
by akmittal 9y ago
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.
- naasking 9y agoWhy is it a bad idea?
- ballenf 9y agoI 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 9y agoGiven 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 9y agoIt 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 9y agoFeatures 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.
- akmittal 9y agoHere is the link https://youtu.be/1-g1rvkORQ8?t=19m11s https://youtu.be/1-g1rvkORQ8?t=19m11s