Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
80 lines (55 sloc) 2.06 KB

Getting Started with Unison

Unison is a simple, flexible, and potentially optimal software tool that performs register allocation and instruction scheduling in integration using combinatorial optimization.


Unison has the following dependencies: Haskell platform, Qt (version 4.x), Graphviz library, and Gecode (version 6.0.0). To get the first three dependencies in Debian-based distributions, just run:

apt-get install haskell-platform libqt4-dev libgraphviz-dev

The source of Gecode can be fetched with:



Just go to the src directory and run:

make build


Unison contains a test suite with a few functions where different targets and optimization goals are exercised. To execute the tests just run:

make test


The building process generates three binaries. The installation process consists in copying the binaries into the appropriate system directory. To install the binaries under the default directory usr/local just run:

make install

The installation directory is specified by the Makefile variable PREFIX. To install the binaries under an alternative directory $DIR just run:

make install PREFIX=$DIR


Unison can be run as a standalone tool but is only really useful as a complement to a full-fledged compiler such as LLVM. Our LLVM fork includes a Unison driver built on top of LLVM's llc code generator. To try it out, just clone the LLVM fork and follow the instructions in the file from any of the branches with a -unison suffix.


Roberto Castañeda Lozano []


Unison is licensed under the BSD3 license, see the file for details.

Further Reading

Check the Unison website.