Giter Site home page Giter Site logo

smarr / omnivm Goto Github PK

View Code? Open in Web Editor NEW
5.0 3.0 2.0 195.83 MB

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

License: Eclipse Public License 1.0

OpenEdge ABL 0.28% Shell 6.10% Perl 0.04% Smalltalk 9.84% D 0.01% R 0.01% C# 12.91% C 59.55% C++ 6.35% Python 0.02% Assembly 0.45% JavaScript 0.06% Racket 0.01% Objective-C 4.39%

omnivm's Introduction

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: http://www.stefan-marr.de/research/omni/

Install and Use

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

Features

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 http://www.stefan-marr.de/downloads/marr-phd-2013-supporting-concurrency-abstractions-in-high-level-language-virtual-machines.pdf
[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. http://www.stefan-marr.de/downloads/tools12-smarr-dhondt-identifying-a-unifying-mechanism-for-the-implementation-of-concurrency-abstractions-on-multi-language-virtual-machines.pdf

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.

License

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:

http://www.eclipse.org/legal/epl-v10.html

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

Credits

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

omnivm's People

Contributors

davidungar avatar estebanlm avatar gurehamu avatar sig avatar smarr avatar wamerijc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.