[LLVMdev] Google Summer of Code 2008

Jon Harrop 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:

  http://www.arm.com/products/CPUs/ARM996HS.html

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 
community.

-- 
Dr Jon D Harrop, Flying Frog Consultancy Ltd.
http://www.ffconsultancy.com/products/?e



More information about the llvm-dev mailing list