penberg/hornet
{ "createdAt": "2013-08-09T07:02:48Z", "defaultBranch": "master", "description": "Hornet, a JVM optimized for low-latency applications.", "fullName": "penberg/hornet", "homepage": "", "language": "C", "name": "hornet", "pushedAt": "2015-07-19T08:40:22Z", "stargazersCount": 53, "topics": [], "updatedAt": "2024-05-23T04:42:19Z", "url": "https://github.com/penberg/hornet"}Hornet
Section titled “Hornet”Hornet is an implementation of the Java virtual machine with emphasis on predictable execution for applications that have low-latency requirements. Planned features include pauseless garbage collection, ahead-of-time compilation, off-heap memory management, FFI, object layout control, and observability APIs for analyzing and optimizing low-latency applications.
Features
Section titled “Features”Hornet is in pre-alpha state so the features are still very much work-in-progress.
- MPS based incremental GC with very low pause times.
- Execution engines:
- Fast interpreter
- Baseline DynASM-based compiler
- Optimizing LLVM-based compiler
- OpenJDK classlib
- Supports Linux and Darwin
- Written in C++11
Design
Section titled “Design”- [Launcher]!(hornet.cc) is the
java-like front-end. - [Translator]!(java/translator.cc) is a bytecode translator that is shared by the fast interpreter and both compilers.
- [Fast interpreter]!(java/interp.cc) is a portable interpreter that translates bytecode into an internal format that is faster to interpret.
- [Baseline compiler]!(java/dynasm.cc) is based on Dynasm framework that is used by LuaJIT, for example.
- [Optimizing compiler]!(java/llvm.cc) is based on LLVM.
- [GC]!(mps/mps.c) is based on MPS.
Installation
Section titled “Installation”Prerequisites:
Fedora
$ yum install java-1.7.0-openjdk-develIf you want to enable the DynASM backend, install LuaJIT:
$ yum install luajitIf you want to enable the LLVM backend, install the library:
$ yum install llvm-devOS X
export JAVA_HOME=$(/usr/libexec/java_home)Build and install Hornet:
$ make installThe command installs an executable hornet to $HOME/bin.
Hornet works like java:
$ hornetusage: hornet [-options] class [args...]License
Section titled “License”Hornet is:
Copyright © 2013-2014 Pekka Enberg and contributors
Hornet is distributed under the 2-clause BSD license.
Memory Pool System is:
Copyright © 2001–2013 Ravenbrook Limited. All rights reserved.
MPS is distributed under the Sleepycat License.
