Travis CI | Windows x86 | Windows x86-64 | Linux x86-64 | Power 64-bit Linux | Power 64-bit AIX | Linux on Z 64-bit |
---|---|---|---|---|---|---|
The Eclipse OMR project is a set of open source C and C++ components that can be used to build robust language runtimes that support many different hardware and operating system platforms.
Our current components are:
gc
: Garbage collection framework for managed heapscompiler
: Components for building compiler technology, such as JIT
compilers.jitbuilder
: An easy to use high level abstraction on top of the
compiler technology.port
: Platform porting librarythread
: A cross platform pthread-like threading libraryutil
: general utilities useful for building cross platform
runtimesomrsigcompat
: Signal handling compatibility libraryomrtrace
: Tracing library for communication with IBM Health Center
monitoring toolstool
: Code generation tools for the build systemvm
: APIs to manage per-interpreter and per-thread contextsexample
: Demonstration code to show how a language runtime might
consume some Eclipse OMR componentsfvtest
: A language-independent test framework so that Eclipse
OMR components can be tested outside of a language runtimeThe long term goal for the Eclipse OMR project is to foster an open ecosystem of language runtime developers to collaborate and collectively innovate with hardware platform designers, operating system developers, as well as tool and framework developers and to provide a robust runtime technology platform so that language implementers can much more quickly and easily create more fully featured languages to enrich the options available to programmers.
It is our community's fervent goal to be one of active contribution, improvement, and continual consumption.
We will be operating under the Eclipse Code of Conduct to promote fairness, openness, and inclusion.
All Eclipse OMR project materials are made available under the Eclipse Public License 2.0 and the Apache 2.0 license. You can choose which license you wish to follow. Please see our LICENSE file for more details.
There are some active contribution projects underway right now:
diag
: more diagnostic support for language runtimes to aid developers and usershcagent
: the core code for the IBM Health Center agent for interfacing to a runtimegc
: adding generational and other GC policiesJoin the Eclipse OMR developer community mailing list. The community typically uses this list for project announcements and administrative discussions amongst committers. Questions are welcome here as well.
Join the Eclipse OMR community Slack workspace. You can join channels that interest you, ask questions, and receive answers from subject matter experts.
Ask a question or start a discussion via a GitHub issue.
The best way to get an initial understanding of the Eclipse OMR technology is to look at a 'standalone' build, which hooks Eclipse OMR up to the its testing system only.
To build standalone Eclipse OMR, run the following commands from the top of the source tree. The top of the Eclipse OMR source tree is the directory that contains run_configure.mk.
# Generate autotools makefiles with SPEC-specific presets
make -f run_configure.mk SPEC=linux_x86-64 OMRGLUE=./example/glue
# Build
make
# Run tests (note that no contribution should cause new test failures in "make test")
make test
Run make -f run_configure.mk help
for a list of configure makefile targets.
Run make help
for a list of build targets.
A shell script interpreter, such as bash, is required to run configure.
Run ./configure --help
to see the full list of configure command-line
options.
To run configure using both SPEC
presets and custom options, pass the
EXTRA_CONFIGURE_ARGS
option to run_configure.mk
.
For example, to disable optimizations, run configure like this:
# Example configure
make -f run_configure.mk SPEC=linux_x86-64 OMRGLUE=./example/glue 'EXTRA_CONFIGURE_ARGS=--disable-optimized' clean all
To disable building fvtests, run configure like this:
# Example configure disabling fvtests
make -f run_configure.mk SPEC=linux_x86-64 OMRGLUE=./example/glue 'EXTRA_CONFIGURE_ARGS=--disable-fvtest' clean all
Note that the clean
target of run_configure.mk
deletes the header files and
makefiles generated by configure. Invoking the clean all
targets ensures that
the header files and makefiles are regenerated using the custom options.
The minimal invocation of configure is:
# Basic configure example
$ ./configure OMRGLUE=./example/glue
Mark Stoodley's talk at the JVM Languages Summit in August, 2015: A VM is a VM is a VM: The Secret Path to High Performance Multi-Language Runtimes
Daryl Maier's slides from Java One in October, 2015: Beyond the Coffee Cup: Leveraging Java Runtime Technologies for the Polyglot
Charlie Gracie's slides from Java One in October, 2015: What's in an Object? Java Garbage Collection for the Polyglot
Angela Lin, Robert Young, Craig Lehmann and Xiaoli Liang CASCON Workshop in November, 2015 Building Your Own Runtime
Charlie Gracie's talk from FOSDEM in February, 2016: Ruby and OMR: Experiments in utilizing OMR technologies in MRI
Charlie Gracie's slides from jFokus in February, 2016 A JVMs Journey into Polyglot Runtimes
Mark Stoodley's slides from EclipseCON in March, 2016 Eclipse OMR: a modern toolkit for building language runtimes
(c) Copyright IBM Corp. 2016, 2018