[Haskell-cafe] GSOC idea: Haskell JVM bytecode library
Alexandru Scvortov
scvalex at gmail.com
Fri Mar 26 16:01:57 EDT 2010
Hi,
I've got an idea for a Summer of Code project and I'd really appreciate some
feedback on it. If people generally find it interesting, I'll go into more
detail.
GSoC: Haskell JVM bytecode library
==================================
What
----
I'm thinking of writing a library for analyzing/generating/manipulating JVM
bytecode. To be clear, this library would allow one to load and work with JVM
classfiles; it wouldn't be a compiler, interpretor or a GHC backend.
Motivation
----------
Over the past 20 or so years, the JVM has become a very popular platform.
It's used in industry, on the web, and on mobile devices.
The main programming language used is Java, but recently, quite a few new ones
have turned up (including some functional ones): Scala, Clojure, Jython,
Rhino, etc. All the languages compile to a single, universal, and very well
documented format, namely classfiles.
The problem with classfiles is that they're blackboxes. Once written, they
can't be modified and they can only be read by the JVM. It's quite a shame,
really, since we could do all sorts of interesting things with them.
Possible uses
-------------
If we had a well-documented and reliable way of working with classfiles, we
could:
* perform static analysis to identify bottle-necks, common errors, etc.
* do further optimization pases over the binary; maybe, we could optimize
for size more aggressively (UPX does this for win32 exes, why shouldn't it be
done for classfiles?)
* generate interfaces for the libraries directly from the binaries
* visualize the structure of complex programs
* modify existing programs to route-around errors
* generate JVM code directly from Haskell programs
* etc.
This project aims to provide exactly this -- an easy way of working with JVM
bytecode.
Previous work
-------------
Quite a few similar projects have existed in the past, most of them are
mentioned on this page:
http://www.haskell.org/haskellwiki/GHC:FAQ#Why_isn.27t_GHC_available_for_.NET_or_on_the_JVM.3F
None of them have tried exactly this (some were more ambitious, some never
bothered with providing a library), and most of them are undocumented and
unmaintained.
References
----------
JVM Spec:
http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html
Cheers,
Alex
More information about the Haskell-Cafe
mailing list