Re:Tail Calls, Optimization, and ES6
by yror10 on Saturday May 24, 2014 @03:30PM
(#7794136)
If you write ruby and want TCO put this at the top of your .rb file:
[ Parent
| on HN ]
Why is it optional? What is the benefit of having it disabled by default if there is a decent implementation?
They disabled it for error reporting/debugging reasons. Because you don't need to create a new stack frame, you eliminate that information in the backtrace.
Re:Tail Calls, Optimization, and ES6
by steveklabnik on Saturday May 24, 2014 @04:50PM
(#7794381)
I've seen at least one paper that shows a way to fix this... hm.
A lot of people prefer having complete, explicit stacks for debugger use over having tail calls.
loops don't leave a stack trace either...
Re:Tail Calls, Optimization, and ES6
by damncabbage on Sunday May 25, 2014 @01:27AM
(#7795562)
And also apply this patch, if you're using MRI (the C implementation, and the most common Ruby runtime): https://gist.github.com/plexus/11201946