Skip to content
Eclipse OMR™ Cross platform components for building reliable, high performance language runtimes
C++ C Makefile Assembly TeX CMake Other
Branch: master
Clone or download

Latest commit

fjeremic Merge pull request #5257 from dchopra001/removeJNISnippet
Remove S390JNICallDataSnippet class
Latest commit 07bdece May 30, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Disable stale issue marker until upstream issue is resolved May 26, 2020
artwork Remove filename spaces Feb 7, 2018
buildenv Jenkins: Disable CreateExportList on aix Apr 24, 2020
cmake Merge pull request #5253 from dnakamura/target_functions May 28, 2020
compiler Merge pull request #5257 from dchopra001/removeJNISnippet May 30, 2020
ddr CMake: Add omr_add_library, omr_add_executable functions Apr 20, 2020
doc Merge pull request #4717 from wbh123456/alias_doc May 29, 2020
example Remove OMR_ENV_GCC Apr 23, 2020
fvtest Merge pull request #5184 from aviansie-ben/p10-basic-support May 28, 2020
gc Merge pull request #5216 from gza060625/cast May 27, 2020
include_core Merge pull request #5184 from aviansie-ben/p10-basic-support May 28, 2020
jitbuilder Merge pull request #5180 from dnakamura/warnings May 25, 2020
lib Correct SPDX license identifier Jan 5, 2018
nls Correct SPDX license identifier Jan 5, 2018
omr CMake: Make omr_add_library/executable process warning flags May 24, 2020
omr_glue_static_lib Correct SPDX license identifier Jan 5, 2018
omr_static_lib Correct SPDX license identifier Jan 5, 2018
omrmakefiles OSX libraries should have a version, set 1.0.0 May 27, 2020
omrsigcompat CMake: Make omr_add_library/executable process warning flags May 24, 2020
omrtrace CMake: Make omr_add_library/executable process warning flags May 24, 2020
perftest Correct SPDX license identifier Jan 5, 2018
port Merge pull request #5184 from aviansie-ben/p10-basic-support May 28, 2020
scripts Do not run distclean in builds Dec 5, 2019
third_party CMake: Add omr_add_library, omr_add_executable functions Apr 20, 2020
thread CMake: Make omr_add_library/executable process warning flags May 24, 2020
tools Add IBM i specific change to support the build. (#5084) Apr 23, 2020
util CMake: Make omr_add_library/executable process warning flags May 24, 2020
.appveyor.yml Fix sysinfo_test0 for Windows Mar 19, 2020
.gitattributes Clear out .gitattributes file Jun 22, 2018
.gitignore Generate libX.debuginfo instead of libX.so.dbg May 13, 2020
.travis.yml Remove Flex/Bison from AppVeyor and Travis Oct 28, 2019
CMakeLists.txt CMake: Exclude third party code from the `all` target May 12, 2020
CODEOWNERS Add knn-k as a code owner for ARM code generators Apr 28, 2020
CONTRIBUTING.md Add Git Crash Course Jan 30, 2020
GNUmakefile DDR on z/OS: Update makefiles May 23, 2019
INSTALL Correct SPDX license identifier Jan 5, 2018
LICENSE Correct SPDX license identifier Jan 5, 2018
Notice.html Fix line-ends May 4, 2018
OmrConfig.cmake Make OMR an installable library Sep 24, 2018
README.md Move build status lower in README.md Oct 10, 2019
about.html Fix line-ends May 4, 2018
asl-v20.text Fix line-ends May 4, 2018
azure-pipelines.cache Add Azure Pipelines build definitions for Windows, Linux, and macOS Mar 27, 2020
azure-pipelines.yml Fix marking of failed tests in Azure Pipelines Apr 9, 2020
config.guess Update config.guess and config.sub May 11, 2018
config.sub Update config.guess and config.sub May 11, 2018
configure Remove OMR_ENV_GCC Apr 23, 2020
configure.ac Remove OMR_ENV_GCC Apr 23, 2020
ddr_artifacts.mk Preparations for use of ddrgen Jan 12, 2018
epl-2.0.html Correct SPDX license identifier Jan 5, 2018
install-sh Correct SPDX license identifier Jan 5, 2018
longabout.html Remove non-ASCII characters Oct 2, 2019
omr.rc.in Correct SPDX license identifier Jan 5, 2018
run_configure.mk Update configure scripts for RISC-V in OMR (part1/misc) Dec 6, 2019

README.md

Eclipse OMR

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 heaps
  • compiler: 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 library
  • thread: A cross platform pthread-like threading library
  • util: general utilities useful for building cross platform runtimes
  • omrsigcompat: Signal handling compatibility library
  • omrtrace: Tracing library for communication with IBM Health Center monitoring tools
  • tool: Code generation tools for the build system
  • vm: APIs to manage per-interpreter and per-thread contexts
  • example: Demonstration code to show how a language runtime might consume some Eclipse OMR components
  • fvtest: A language-independent test framework so that Eclipse OMR components can be tested outside of a language runtime

Build Status

Build Status
Linux x86-64 Lint (Travis) Travis Overall Status
Windows x86 (Appveyor) Appveyor Status
Windows x86-64 Windows x86-64 Status
Linux x86 Build Status
Linux x86-64 Linux x86-64 Status
Linux x86-64 Compressed Pointers Build Status
Linux AArch64 (ARM 64-bit) Build-linux_aarch64 Status
Linux ARM 32-bit Build-linux_arm Status
OSX x86-64 Build Status
Linux Power 64-bit Build-linux_ppc-64_le_gcc Status
AIX Power 64-bit Build-aix_ppc-64 Status
Linux Z (s390x) 64-bit Build-linux_390-64 Status
z/OS (s390x) 64-bit Build-zOS_390-64 Status

What's the goal?

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

Who is using Eclipse OMR?

  • The most comprehensive consumer of the Eclipse OMR technology is the Eclipse OpenJ9 Virtual Machine: a high performance, scalable, enterprise class Java Virtual Machine implementation representing hundreds of person years of effort, built on top of the core technologies provided by Eclipse OMR.
  • The Ruby+OMR Technology Preview has used Eclipse OMR components to add a JIT compiler to the CRuby implementation, and to experiment with replacing the garbage collector in CRuby.
  • A SOM++ Smalltalk runtime has also been modified to use Eclipse OMR componentry.
  • An experimental version of CPython using Eclipse OMR components has also been created but is not yet available in the open. (Our focus has been dominated by getting this code out into the open!)

What's the licence?

License License

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.

How Do I Interact With the Community?

We operate under the Eclipse Code of Conduct to promote fairness, openness, and inclusion.

  • Join the Eclipse OMR community Slack workspace. You can join channels that interest you, ask questions, and receive answers from subject matter experts.
  • Join the Eclipse OMR developer community mailing list. The community primarily uses this list for project announcements and administrative discussions amongst committers. Questions are welcome here as well.
  • Ask a question or start a discussion via a GitHub issue.

Contributing

If you would like to contribute to OMR, check out the contributing guide for more information. We also have curated a set of beginner issues for newcommers to tackle.

How Do I Use it?

How to Build Standalone Eclipse OMR

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.

Basic configuration and compile

To build standalone Eclipse OMR, run the following commands from the root of the source tree. For more detailed instructions please read BuildingWithCMake.md.

# Create a build directory and cd into it
mkdir build
cd build

# Generate the build system using cmake
cmake ..

# Build (you can optionally compile in parallel by adding -j<N> to the make command)
make

# Run tests (note that no contribution should cause new test failures in testing).
# Use the `-V` option to see verbose output from the tests.
ctest [-V]

Building Eclipse OMR on Windows using Visual Studio

The following instructions below demonstrate the steps to build Eclipse OMR on Windows using Visual Studios. In the example Visual Studio 11 2012 Win64 is being used. You can easily switch this to the version of Visual Studio you would like to use.

# Create a build directory and cd into it
mkdir build
cd build

#generate the build system using cmake
cmake -G "Visual Studio 11 2012 Win64" ..

# Build
cmake --build .

# Run tests (note that no contribution should cause new test failures in "make test")
ctest

Where can I learn more?

Presentations about Eclipse OMR

Blog Posts about OMR technologies

(c) Copyright IBM Corp. 2016, 2019

You can’t perform that action at this time.