Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
90 lines (66 sloc) 2.26 KB

Installation and Usage Instructions for the OmniVM

This file briefly describes how to compile and use the OmniVM.



  • GCC or Clang (Clang is used for development)
  • Ubuntu: libx11-dev, libxext-dev
  • Mac OS X: Xcode Developer Tools


In the standard case, calling ./configure ; make in the build directory should be sufficient to compile the rvm executable:

  $ cd vm/build
  $ ./configure
  $ make

Compilation for Debugging:

  $ cd vm/build
  $ ./configure --debug
  $ make


The OmniVM executable supports the following command-line interface:

  ./omnivm [options] <image-file> [app-params]
 [options]       optional command-line parameters as detailed below 
 <image-file>    a relative path to a Smalltalk image
 [app-params]    parameters given the application executed by the OmniVM

Command-line Parameters:

 -headless       initializes the OmniVM with a dummy display to avoid opening
                 an X11 session, useful for command-line applications or
 -min_heap_MB N  sets the lower limit for the overall heap size

Preparing a Smalltalk Image

The OmniVM has been developed with a Pharo 1.4 image. Prebuilt images can be downloaded from the Omni project page. To load the code into a fresh Pharo image evaluate the following expression in a workspace:

Gofer new
    squeaksource3: #Omni;
    package: #ConfigurationOfOmniVM;
(Smalltalk at: #ConfigurationOfOmniVM) loadPhD2013

The resulting image relies on the OmniVM to provide the semantics of the OMOP. To experiment on a standard interpreter, the RoarVM, or CogVM, an alternative implementation is available as well. It uses AST transformation and does not require the OmniVM. It can be loaded with:

"Lower performance, but does not require special VM support:"
Gofer new
    squeaksource3: #Omni;
    package: #ConfigurationOfOmni;
(Smalltalk at: #ConfigurationOfOmni) loadPhD2013