[LLVMdev] Google Summer of Code 2008
jon at ffconsultancy.com
Tue Mar 18 14:49:03 PDT 2008
On Tuesday 18 March 2008 20:17:52 Anton Korobeynikov wrote:
> Hello, Everyone
> LLVM recently was approved to take part in Google Summer of Code 2008.
> We welcome everyone to apply for this program.
> The list of ideas for (possible) projects is located at
> http://llvm.org/OpenProjects.html. Surely you can suggest any other
> project, if you feel, that it definitely can be useful.
Just some ideas to add to the mix:
One of the suggestions is to write a code-density optimizer for the ARM
backend. For an interesting alternative, try optimizing for power consumption
instead. If you want something super researchy, try doing this for one of the
clockless (asynchronous) ARM cores:
Another suggestion under "Miscellaneous Additions" was to write a new
front-end for Java/OCaml/Forth. IMHO, reimplementing Java or OCaml from
scratch is way too much work and a lot of that work is uninteresting baggage.
My personal dream is to implement a higher-level VM that bundles an existing
concurrent GC with an intermediate representation that exposes high-level
language-agnostic features like parametric polymorphism (generics),
first-class lexical closures (and maybe even pattern matching) and a backend
that type specializes to remove polymorphism (and the associated run-time
performance hit, as seen in OCaml) before LLVM code is generated. I would
like this for two reasons:
a) to provide the foundation for better technical computing environments on
Linux and Mac OS X (like F# for Windows). This could greatly improve the open
source tools that scientists and engineers use for technical computing.
b) to provide a CLR. This could make it much easier for industry to build and
sell software written in exotic languages for Linux and Mac OS X.
A tamer but related idea is to implement a Fortran 77 front-end for LLVM and
then get LAPACK into the LLVM benchmark suite. This could help LLVM to
improve and might provide a faster LAPACK library for the open source world.
FFTW is another hugely important numerical library that could be used for
benchmarking. Aside from simply getting FFTW to work using llvm-gcc, an
interesting project might be to rewrite the OCaml source code in FFTW to
generate codelets on-the-fly using LLVM or the CLang front-end. LLVM can
probably beat GCC here, not least because an LLVM-based implementation would
not be limited to a set of precompiled codelets. This could help the millions
of people who use FFTW.
On an unrelated note, LLVM has great potential for improving OCaml's FFI. At
the moment, OCaml programmers are expected to write stubs in C and statically
link them in with their OCaml code. A much better solution would be to use
LLVM to generate the equivalent of the C stubs at run-time. Calling OpenGL
directly from OCaml using LLVM without any existing OpenGL bindings would
make an excellent example. This project could really help the OCaml
Dr Jon D Harrop, Flying Frog Consultancy Ltd.
More information about the llvm-dev