omr

Eclipse OMR™ Cross platform components for building reliable, high performance language runtimes

  • Owner: eclipse-omr/omr
  • Platform:
  • License:: Other
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

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

Main metrics

Overview
Name With Ownereclipse-omr/omr
Primary LanguageC++
Program languageMakefile (Language Count: 18)
Platform
License:Other
所有者活动
Created At2016-03-03 19:34:17
Pushed At2025-08-19 18:43:38
Last Commit At2025-08-19 14:43:38
Release Count6
Last Release Nameomr-0.6.0 (Posted on )
First Release Nameomr-0.1.0 (Posted on 2019-10-01 15:02:25)
用户参与
Stargazers Count1k
Watchers Count58
Fork Count405
Commits Count14.2k
Has Issues Enabled
Issues Count1689
Issue Open Count785
Pull Requests Count5482
Pull Requests Open Count141
Pull Requests Close Count579
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private