Hi all, I am pleased to announce Jato, a project to build a free software optimizing JIT compiler for Java with virtual machine enhancements to support debugging and profiling with existing Java tools. The compiler is still in the early stages so this announcement is directed at interested JIT compiler hackers in hopes to attract contributors. I am also interested any any feedback you might have. 1. What's Jato? Jato is an optimizing Just-in-time (JIT) compiler for Java. It uses JamVM as host virtual machine and is written in C. The target platform is IA-32 machine architecture on GNU/Linux. 2. What's the license? Jato is distributed under the GNU GPL version 2. 3. What's done so far? Jato converts roughly 80% of bytecode instructions including load and store, arithmetic, type conversion, operand stack management, and control transfer instructions to graph-based intermediate representation. The missing 20% are object creation and manipulation, method invocation (invokestatic is currently being worked on) and return instructions, and exception handling. Also included is the beginnings of a Monoburg-based instruction selector and simple JIT trampolines for executing compiled code. The compiler is missing register allocator and doesn't do code optimizations yet. 4. What's wrong with existing free software virtual machines? They're not sufficient replacements for proprietary virtual machines. We have free virtual machines that have ahead-of-time compiler, an optimizing JIT compiler written in Java, JIT compiler with naive code generation. There's also many interpreter-only virtual machines. Unfortunately, none of them can be used as replacement for modern Java development which includes: - Support for existing Java tools (IDEs, profilers) - Hot code replacement - Fast execution of run-time generated bytecode 5. What's the plan for 0.1? Short-term goals for Jato are: - Conversion of bytecode instructions to IR - Complete BURS grammar for IA-32 - Linear scan register allocator - JIT-only execution 6. What about 1.0? In the long term, Jato wants to have: - Mixed interpreter/JIT - Single static assignment form (SSA) with code optimizations - Debugging & Profiling (JPDA) - Hot code replacement - Support for dynamically typed languages (JSR-292) 7. Can I help? Yes! The compiler is in its early stages so there's plenty of work for everyone interested. 8. Where can I find more info? Jato home page is at <http://jatovm.sf.net/>. You can reach me via email at <penberg at cs dot helsinki dot fi>. Pekka