Status
Current Release
The latest release is version 0.3. As of this release, everything
should work as advertised on the supported platforms. Please post
to the discussion
group if you have any problems.
Download Avian 0.3
Recent changes:
- Add optional support for optimizing tail calls such that the
caller's stack frame is replaced with the callee's. This convention
ensures proper tail recursion, suitable for languages such as
Scheme.
- Add optional support for first-class,
reentrant continuations.
See the API
documentation for details.
- Add support for native 64-bit Windows and OS X builds.
- Support building with the Microsoft Visual C++ compiler on
Windows.
- Add support for scalar SSE instructions to the JIT compiler,
making floating point code up to five times faster on machines which
support SSE2.
- Support intrinsics in the JIT compiler, which convert
performance-sensitive calls to methods such as Math.sqrt into
optimized, inline code.
- Use atomic operations instead of mutexes where appropriate in
the VM. This avoids expensive system calls due to mutex contention
and is especially valuable for multithreaded programs which make
heavy use of the JNI.
- Support runtime-visible annotations.
- Support both blocking and non-blocking NIO sockets.
- Add preliminary support for building with GNU Classpath. This
feature is still under development.
Future Releases
The next major release will be 1.0. This is the remaining criterium
for that release:
- Adapt Avian to support a more complete class library, such as
GNU Classpath or IcedTea. This will give us a much larger body of
software to test against.
Post-1.0 Ideas
- Rework memory allocation in garbage collector to improve
performance in low memory situations
(see here
for details)
- Experiment with optimizations and extensions to better support
languages other than Java
- Support additional architectures such as ARM, Sparc, and MIPS
Non-goals
Avian is not a complete Java implementation, nor is it intended to
be. Thus, less-used Java features will only be added if they are
easily maintainable and do not add significant overhead to
applications which don't use them.
In particular, Avian does no bytecode verification in the VM and no
security checks in the class library. Applications which run
untrusted bytecode must therefore do their own verification and
sanitation.