Haskell/JDK/tail-calls etc. (please vote on bug No. 6804517)

Hello, from time to time request for Haskell running on top of Java's VM pops on the haskell related mailing list and then usually dies off when someone mentions that JDK does not have proper support for tail-calls. I think haskell community might do something with this fact or at least attempt to do something with it. I think the proper request for enhancement is here: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6804517 if you agree with it (as it's proposed on the rfe's mentioned blog article[1]), then please either join or if you are already a member of SDN then just login and vote for this bug. That's something we can do for free and will take just few minutes yet perhaps push a little bit more weight behind this bug (err, just 4 votes now, why's that?). Thanks, Karel [1]: http://blogs.sun.com/jrose/entry/tail_calls_in_the_vm

from time to time request for Haskell running on top of Java's VM pops on the haskell related mailing list and then usually dies off when someone mentions that JDK does not have proper support for tail-calls.
would it help? For eager evaluation, certainly (I understand that Clojure and Scala are suffering from this), but for Haskell? J.W.

On 20/09/2010, at 6:36 AM, Johannes Waldmann
from time to time request for Haskell running on top of Java's VM pops on the haskell related mailing list and then usually dies off when someone mentions that JDK does not have proper support for tail-calls.
would it help? For eager evaluation, certainly (I understand that Clojure and Scala are suffering from this), but for Haskell?
Via strictness analysis won't Haskell do as much work as possible eagerly to improve performance?
J.W.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On Sun, Sep 19, 2010 at 3:51 PM, Karel Gardas
Hello,
from time to time request for Haskell running on top of Java's VM pops on the haskell related mailing list and then usually dies off when someone mentions that JDK does not have proper support for tail-calls. I think haskell community might do something with this fact or at least attempt to do something with it. I think the proper request for enhancement is here: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6804517
if you agree with it (as it's proposed on the rfe's mentioned blog article[1]), then please either join or if you are already a member of SDN then just login and vote for this bug. That's something we can do for free and will take just few minutes yet perhaps push a little bit more weight behind this bug (err, just 4 votes now, why's that?).
Even if tail recursion is not properly supported, I've never really understood why this is an *total* impediment to getting it working on the JVM. I mean, yes it sucks, but there are ways to do it anyway (trampolining for one). They are usually _slow_ methods (which trampoline is), but if it's the difference between being able to run on the JVM and not, you would think that someone would think running on JVM slowly is better than not running on it at all... Maybe that's not the case though, maybe it would actually be bad for Haskell's rep to run slowly on JVM compared to other languages. Steve

On Sun, Sep 19, 2010 at 5:15 PM, Stephen Sinclair
On Sun, Sep 19, 2010 at 3:51 PM, Karel Gardas
wrote: Hello,
from time to time request for Haskell running on top of Java's VM pops on the haskell related mailing list and then usually dies off when someone mentions that JDK does not have proper support for tail-calls. I think haskell community might do something with this fact or at least attempt to do something with it. I think the proper request for enhancement is here: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6804517
if you agree with it (as it's proposed on the rfe's mentioned blog article[1]), then please either join or if you are already a member of SDN then just login and vote for this bug. That's something we can do for free and will take just few minutes yet perhaps push a little bit more weight behind this bug (err, just 4 votes now, why's that?).
Even if tail recursion is not properly supported, I've never really understood why this is an *total* impediment to getting it working on the JVM. I mean, yes it sucks, but there are ways to do it anyway (trampolining for one). They are usually _slow_ methods (which trampoline is), but if it's the difference between being able to run on the JVM and not, you would think that someone would think running on JVM slowly is better than not running on it at all...
Maybe that's not the case though, maybe it would actually be bad for Haskell's rep to run slowly on JVM compared to other languages.
I don't think the biggest hurdles to running Haskell on the JVM are related to tail call [1]. Lazy evaluation mostly gets rid of the need, but having it has been shown to be beneficial [2]. There have been successful attempts to get Haskell on the JVM [3]. The big problems, as I understand them, are maintenance and type interaction at the source to source level (Haskell <--> Java). Rewriting GHC's RTS to work on the JVM is a big engineering effort and maintaining the JVM RTS and compiler backend is a task that the Simons have said they don't want to take on. They have said that they would accept those changes in GHC if someone else was willing and able to maintain that part of the compiler [4]. The source to source interactions between Java and Haskell have been solved in packages like jvm-bridge [5], but I'm not sure if that approach would work for a Haskell to JVM compiler. I think the lack of tail call hurts the effort but is not a show stopper by any means. In fact, I don't believe there are any show stoppers at the technical level and if GHC ever gets a proper volunteer to maintain the JVM support then I think it would be all green lights. As SPJ points out in [1], Scala gets by without the JVM supporting "proper" tail call. I hope that helps! Jason [1] http://www.mail-archive.com/haskell-cafe@haskell.org/msg47997.html [2] http://cgi.cse.unsw.edu.au/~dons/blog/2008/05/16#fast [3] http://www.cs.rit.edu/~bja8464/lambdavm/ [5] http://haskell.org/haskellwiki/GHC:FAQ#Why_isn.27t_GHC_available_for_.NET_or... [5] http://semantic.org/jvm-bridge/

Compiling haskell for the JVM has been done before, several times. Sometimes even inside GHC. See for instance http://portal.acm.org/citation.cfm?id=968549 http://www.springerlink.com/content/w81yd3fljbrevuje/ http://wwwmail-archive.com/haskell@haskell.org/msg06673.html Regards, Malcolm Even if tail recursion is not properly supported, I've never really understood why this is an *total* impediment to getting it working on the JVM. I mean, yes it sucks, but there are ways to do it anyway (trampolining for one). They are usually _slow_ methods (which trampoline is), but if it's the difference between being able to run on the JVM and not, you would think that someone would think running on JVM slowly is better than not running on it at all... Maybe that's not the case though, maybe it would actually be bad for Haskell's rep to run slowly on JVM compared to other languages.
participants (6)
-
Jason Dagit
-
Johannes Waldmann
-
Karel Gardas
-
malcolm.wallace
-
Stephen Sinclair
-
Tom Davies