OMR for the Internet-of-Things
Open-sourced from IBM, “Eclipse OMR" is enterprise-class runtime technology that delivers high performance without sacrificing versatility or robustness.” Our goal is to enhance the capabilities of OMR for multi-language interoperability (particularly regarding performance and security, and effective exploitation of the parallelism provided by modern hardware) and resource constrained environments (the embedded computing market—including the Internet-of-Things and mobile computing).
Building the runtime technology for a new language to match the capabilities of existing mature languages typically requires tremendous, costly effort, as does building new runtime components from scratch, designed from the outset for reuse. Adding additional language support within an existing mature runtime environment will likely have hampered efficiency due to implementation trade-offs. As an alternative, IBM has reorganized the runtime components of an existing commercial JVM implementation (the IBM Developer’s Kit for Java) to separate the pure Java implementation (Eclipse OpenJ9) from the parts that provide key runtime capabilities. The resulting open-source Eclipse OMR project will provide a runtime technology platform consisting of core components as a toolbox for building language runtimes upon which many of IBM products run, including Websphere, Bluemix and QRadar.
With IBM focused on core functionality, the Centre for Advanced Studies–Atlantic (CAS–Atlantic) will play a key role in developing additional tools to contribute to the development of OMR. CAS–Atlantic will focus on two distinct, but related themes. The first is a port of the Python language to OMR, and then to use it as a testbed to study issues of multi-language interoperability, particularly regarding performance and security, and effective exploitation of the parallelism provided by modern hardware. The second theme is expanding OMR to better perform in resource constrained environments—the embedded computing market—including the Internet-of-Things (IoT) and mobile computing. Particular emphasis will be placed on realtime scheduling, and compilation efficiencies, automated memory management and garbage collection in these constrained environments.
CAS–Atlantic’s collaboration with IBM is engaging five faculty members and roughly 30 students, postdocs, and research assistants.
Themes and Subprojects
Theme 1. Python on OMR
1.1. Interpreter Integration
The goal is to port a Python runtime to OMR. The focus will be on demonstrating the reusability of OMR garbage collection (GC) and just-in-time (JIT) compilation components. Research will be specifically conducted into extending OMR in novel ways to better support Python (or vice-versa) and balancing fast start-up time for scripting applications against good performance for compute-intensive workloads.
1.2. High Performance Language Interoperability
The goal is advancing the state-of-the-art in language interoperability. The focus will be on designing and building a framework for Python-Java interoperability and then extending interoperability to a third language (e.g., Ruby). Research will be specifically conducted into high performance, transparent interoperability and extensibility for Python users and OMR extensions to facilitate interoperability.
1.3. Fast and Safe Execution of Unmanaged Extensions
The goal is to provide the ability to use existing unmanaged Python extension modules in order to achieve high performance, without introducing memory leaks and memory access errors, or requiring user source code changes. Research will be specifically conducted into creating sandboxed execution of Python extensions, requiring consistent experimental evaluation against a benchmark suite.
1.4. Effective Parallelism
The goal is to support multiprocessing in Python, exploiting modern multicore hardware. The focus will be on using the PGAS (parallel global address space) model to significantly simplify the implementation of parallel algorithms on distributed and shared memory computers. Research will be specifically conducted into enabling parallelism while dealing with Python's Global Interpreter Lock (GIL), and implementing distributed garbage collection efficiently.
Theme 2. OMR in Resource Constrained Environments
2.1. Embedded/Internet-of-Things/Mobile OMR
The goal is to port the current OMR environment to the 64-bit ARM platform. The focus will be on adapting the OMR technology to support a diverse resource constrained system while maintaining its general goals of providing a generic run-time environment with support for multiple runtime languages. Research will be specifically conducted into real-time scheduling, as well as automatic memory management techniques to minimize the overall memory footprint.
2.2. Ahead of Time Compiled Code Generation
The goal is to design and implement generic ahead-of-time (AOT) code-compilation support for OMR and then extend AOT to support a scripting language, such as Python. Current implementations of AOT will be analyzed in detail and research will be specifically conducted into deciding what should be stored in persistent memory to gain best advantage in terms of size and execution speed.
2.3. MicroJIT for OMR
The goal is to improve the performance of OMR in resource constrained environments through enhanced just-in-time (JIT) compilation. Starting from the existing IBM MicroJIT implementation, specific research will be conducted into utilizing MicroJIT for languages other than Java and for applying MicroJIT in embedded OMR.
2.4. Garbage Collection with Reference Counting
The goal is to improve automatic garbage collection in OMR, particularly for dynamic languages such as Python. A solution based upon reference counting is proposed and research will be specifically conducted into studying the known shortcomings of reference counting and then various optimizations to overcome said shortcomings will be implemented and evaluated.See Prospective Students for more information for research opportunities and publications for results.