Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

OmniVM - The RoarVM with support for the Ownership-based Metaobject Protocol

The Ownership-based Metaobject Protocol (OMOP) is a unifying substrate for the implementation of concurrent programming abstractions. Similar to other metaobject protocols, it allows developers to change the language's behavior to provide different concurrent programming models. The OmniVM is a SmalltalkVM and a fork of the RoarVM.

An overview of the research related to the OMOP can be found at:

Install and Use

Please see the file for installation instructions. In addition to the OmniVM, you will need the corresponding Smalltalk code, which is listed there as well.


The OmniVM is compatible with the RoarVM, the Squeak interpreter, and the CogVM. It provides merely additional support for the ownership-based metaobject protocol that facilitates the implementation of concurrent programming abstractions.

Technical Overview

The implementation details of the OmniVM are currently documented in:

[1] Supporting Concurrency Abstractions in High-level Language Virtual
Machines. Stefan Marr, PhD Dissertation. Software Languages Lab, Vrije Universiteit Brussel, Belgium, VUB Press, January 2013. ISBN: 978-90-5718-256-3
[2] Identifying A Unifying Mechanism for the Implementation of Concurrency
Abstractions on Multi-Language Virtual Machines. Stefan Marr and Theo D'Hondt, 50th International Conference on Objects, Models, Components, Patterns. TOOLS 2012, Volume 7304 of Lecture Notes in Computer Science, page 171-186. Springer, May 2012.

The OmniVM is a simple bytecode interpreter that provides supports an ownership-based metaobject protocol. Currently there are two implementations in this repository. The first one checks in every bytecode whether it's operation needs to be reified by invoking an intercession handler of the metaobject protocol, and the second implementation uses an extended bytecode set, where the bytecodes for the enforced mode always reify the operations. Please see the omop/... branches and the PhD dissertation for details.


Copyright (c) 2012 - 2013 Stefan Marr and others. All rights reserved. The OmniVM and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at:

All parts directly taken over from the RoarVM or the original Squeak source code are licensed under their original licenses.


The OmniVM is based on the RoarVM and we would like to acknowledge the work of the RoarVM developer for providing this platform.


A RoarVM fork with support for the Ownership-based Metaobject Protocol (OMOP) to facilitate the implementation of concurrent programming abstractions.







No releases published


No packages published