Skip to content

eregon/mozart-graal

master
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?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
lib
 
 
opi
 
 
 
 
vm
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
oz
 
 

Mozart-Graal

Build Status

An implementation of the Oz programming language on top of Truffle and Graal.

The bootcompiler and Oz libraries are imported from Mozart 2.

Interesting Points

  • A master thesis was made with this project to optimize performance. It details many static and dynamic optimizations.

  • Tail calls are optimized and compiled as loops, see TailCallCatcherNode. Self-recursion is optimized further in SelfTailCallCatcherNode.

  • There is a Truffle AST serializer in OzSerializer using Kryo able to serialize Oz code.

  • The project uses the Coroutine patch for HotSpot to be able to create many lightweight threads.

  • The parser, typer, and some optimizations are written in Scala (bootcompiler/) and the AST produced by Scala is then translated to a Truffle AST in Translator.

Current Status

Early stage but the Panel and Browser are working.

The Panel On Mozart-Graal

Dependencies

  • Java 8
  • Maven 3
  • C/C++ toolchain (build-essential) for building Graal
  • Python 2.7 (for mx)
  • Ruby >= 2.2.0 (for the launcher)

Build instructions

mkdir mozart-dev
cd mozart-dev
git clone https://github.com/eregon/mozart-graal.git
cd mozart-graal
rake

It takes around 5 min to build everything.

Run with

./oz

Graal

Graal is not built by default to save time. To build it, run

rake build:graal

On recent Linux, you need to do part of the build manually, see Building JVMCI.

IDE: IntelliJ IDEA

IntelliJ IDEA configuration are checked in the repository and should work out of the box. Import mozart-dev as a project.