#2959: Merge in LambdaVM (Haskell to Java/JVM bytecode translator)
---------------------------------+------------------------------------------
    Reporter:  kgardas           |        Owner:              
        Type:  feature request   |       Status:  new         
    Priority:  normal            |    Milestone:  _|_         
   Component:  Compiler          |      Version:  6.11        
    Keywords:                    |   Difficulty:  Unknown     
          Os:  Unknown/Multiple  |     Testcase:              
Architecture:  Unknown/Multiple  |      Failure:  None/Unknown
---------------------------------+------------------------------------------

Comment(by balliet):

 Hi, I'm the author of LambdaVM. I was recently pointed here by a potential
 LambdaVM user, I had no idea a ticket existed for it. Apologies for not
 posting sooner.

 I'd agree with Simon M that LambdaVM is really in no state to be merged
 into the GHC tree right now. Aside from me not having time right now to
 update it for GHC HEAD, and maintain it, there are a few other issues:

  * At the time I was writing LambdaVM I was more or less using the
 LambdaVM tree as my GHC playground. There are lots of patches that aren't
 directly related to LambdaVM. Some of them probably should probably be
 dumped, and others merged separately from LambdaVM. This all needs to be
 sorted out.

  * I made lots of deep changes to the compiler that might sit well with
 everyone. For example, plumbing sub-word size types (Word8#, etc) though
 the whole compiler, to better support interfacing with existing java code.
 I split the unlifted kind into ptr and non-ptr subkinds, to support some
 level of polymorphism with unlifted types (java object types are foreign
 imported unlifted types). The unboxed array types are parametrized over
 their element type (for example UArray# Word#), since int[] and byte[] are
 very different in the JVM. Finding a happy medium between proper JVM
 support and over complicating the rest of the compiler will probably take
 some work.

  * I'm not happy at all with how the JVM backend is invoked. Right now it
 is setup as a separate "way", which was convenient because I could have a
 native and JVM compiler in one binary, but I think I'm really abusing the
 "way" system with this. We'd have to figure out a story for cross
 compilers (which is more or less what LambdaVM is). I hate to have to do
 what gcc does, and require a totally separate binary for each target. It
 seems that with all the DynFlags plumbing that is already in place
 supporting multiple targets in one binary (at least in the front end at
 least) should be possible.

 And that is just the stuff I could remember off the top of my head (which
 hasn't been in it for a while).

 While I wouldn't hold your breath waiting for this all to come together, I
 wouldn't give up on it yet. I still have to finish my thesis (which is the
 reason LambdaVM exists) one of these days (hopefully soon, the school
 isn't going to be happy with me if I don't get on that...) and when that
 happens I'll certainly update LambdaVM to GHC HEAD. After the thesis is
 behind me I can think about trying to merge it. So stay tuned.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/2959#comment:5>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to