Forgot to mention Scala 2.8.0 will probably also support explicit
trampolining.

--j

On Thu, Apr 2, 2009 at 11:56 AM, Jorge Ortiz <jorge.or...@gmail.com> wrote:

> On Thu, Apr 2, 2009 at 10:15 AM, Ola Bini <ola.b...@gmail.com> wrote:
>
>>
>> Bradford Cross wrote:
>> > What is the current state of the art for language implementers working
>> > around these issues (tail calls, continuations, etc)  in Clojure,
>> > Scala, JRuby, etc?
>> >
>> > I would imagine people are maintaining their own stacks?  stacks and
>> > hacks. :-)  Sounds like Dr Seuss...I will not hack upon your stack,
>> > i'll hack my stack to get you back.
>> >
>> > We have talked about the fact that certain programs are invalid
>> > without TCO because they will overflow the stack - true enough.
>> >
>> > Does anyone have any crude benchmarks re the perf overhead of doing
>> > these things in hand rolled stacks vs. at the byte code level.  I have
>> > to imagine it is massive for certian classes of programs.
>> No one is doing hand rolled stacks. Clojure does explicit trampolining -
>> but that is a very coarse and limited way of doing it. Scala removes
>> tail calls where it can be statically transformed into iteration, but
>> doesn't give any guarantees. Ruby has never had TCO's and JRuby uses the
>> Java stack too.
>>
>
> Scala 2.8.0 (due out later this year) will add a @tailrec annotation that
> produces a compile error if the annotated method can't be statically
> transformed into iteration when tail-called.
>
>  SISC is one of the few implementations that do full TCO. There are
>> basically a few variations on how to do it. CPS is common, trampolining
>> works too. You can also have your own bytecode engine with your own stack.
>>
>> The overhead of all of these approaches are pretty severe on the JVM
>> since the usage pattern is data driven and far away from how regular
>> Java code looks like. But the most severe problem with it is that all of
>> these approaches make it much hard to do calls into Java methods.
>>
>> Cheers
>>
>> >
>> > On Thu, Apr 2, 2009 at 9:59 AM, kirk <kirk.pepperd...@gmail.com
>> > <mailto:kirk.pepperd...@gmail.com>> wrote:
>> >
>> >
>> >     John Cowan wrote:
>> >     > On Thu, Apr 2, 2009 at 10:36 AM, kirk <kirk.pepperd...@gmail.com
>> >     <mailto:kirk.pepperd...@gmail.com>> wrote:
>> >     >
>> >     >> why do they have to be exposed? Isn't tail recursion and
>> >     implementation
>> >     >> detail? And an optimization at that?
>> >     >>
>> >     >
>> >     > No.
>> >     >
>> >     > Being able to rely on tail recursion is not an implementation
>> >     detail;
>> >     > Scheme programmers routinely write programs that tail-call
>> >     heavily and
>> >     > would blow up without it.  A state machine implementation where
>> >     state
>> >     > transition codelets, expressed as functions, are tail-called by
>> the
>> >     > dispatcher and tail-call it in turn is a classic example.
>>  "Lambda:
>> >     > the ultimate goto."
>> >     >
>> >     Understood, that said I think Patrick hit the nail on the head.
>> >     > And since Java exposes the call stack via Exception#fillInStack,
>> the
>> >     > *presence* of tail recursion is unfortunately not an
>> implementation
>> >     > detail either.
>> >     >
>> >     I would humbly disagree with this last statement.
>> >
>> >     Regards,
>> >     Kirk
>> >
>> >
>> >
>> >
>> >
>> > >
>>
>>
>> --
>>  Ola Bini (http://olabini.com)
>>  Ioke creator (http://ioke.org)
>>  JRuby Core Developer (http://jruby.org)
>>  Developer, ThoughtWorks Studios (http://studios.thoughtworks.com)
>>  Practical JRuby on Rails (http://apress.com/book/view/9781590598818)
>>
>>  "Yields falsehood when quined" yields falsehood when quined.
>>
>>
>>
>> >>
>>
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "JVM 
Languages" group.
To post to this group, send email to jvm-languages@googlegroups.com
To unsubscribe from this group, send email to 
jvm-languages+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/jvm-languages?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to