Skip to content
Switch branches/tags
Go to file
Cannot retrieve contributors at this time

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