This site is obsolete. Please visit https://tigress.wtf.



Binary distributions of Tigress are available for 3 platforms: Linux x86/64, Darwin x86/64, and Linux ArmV7 (Raspberry Pi 3). Always download the latest (unstable) version since that's the most stable one. 😑

The FAQ explains why we don't post the Tigress source code on this website. We are happy to share the code with you if you are a researcher at a university or a research lab and we have done so many times in the past. Send us email to request the decryption key. If you are a student, please ask your professor/advisor to make the request for you.

Keep in mind that in order for the source to make any sense you will have to be fluent in both OCaml and CIL. Generally speaking, it is much easier to understand what Tigress does by examining input/output-pairs (remember, Tigress is C source to source, so this is easy to do) than to try to read the Tigress source code.

We are happy to consider feature requests that fit in with the Tigress architecture and philosophy.

Tigress is free to use for research purposes but if you want to use Tigress in a commercial setting you may need a license from the University of Arizona. Send us email and we will put you in touch with the university's licensing department.

 

Tigress Version 2 (Purple Nurple)

Version Mac OS X Linux Source Release Notes
Unstable x86/64 x86/64
ArmV7 (experimental)
Source Release notes
2.2 x86/64 x86/64
ArmV7 (experimental)
Release notes
2.1 x86/64 x86/64
ArmV7 (experimental)
Release notes
2.0 x86/64 x86/64 Release notes

 

Tigress Version 1 (Orange is the New Hack)

Version Mac OS X Linux Source Release Notes
1.3 x86/64 x86/64 Release notes
1.2 x86/64 x86/64 Release notes
1.1 x86/64 x86/64 Release notes
1.0 x86/64 x86/64

 

Tigress Version 0 (White Byte)

Version Mac OS X Linux Source Release Notes
0.9 x86/64 x86/64
 

Installation

  1. Make sure you have the following installed:
    • gcc (or a drop-in replacement such as clang)
    • perl
    • bash
  2. Unpack:
    unzip tigress-ARCH-x86_64-VERSION.zip
    
  3. Move the tigress-VERSION where you want it, for example
    mv tigress-VERSION /home/bob/bin
    
  4. Set the TIGRESS_HOME environment variable to the directory in which the tigress binary resides, and add this directory to your path. I.e., if your shell is csh, do
    setenv TIGRESS_HOME /home/bob/bin/tigress-VERSION
    setenv PATH "$PATH":/home/bob/bin/tigress-VERSION
    rehash
    
    and if your shell is bash do
    export TIGRESS_HOME=/home/bob/bin/tigress-VERSION  
    export PATH=$PATH:/home/bob/bin/tigress-VERSION
    
  5. Try it out!
    • Like this on Linux:
      cd /home/bob/bin/tigress-VERSION/
      tigress --Environment=x86_64:Linux:Gcc:4.6 --Transform=Virtualize --Functions=main --out=result.c test2.c
      gcc -o result result.c
      ./result
      
    • And like this on MacOS:
      cd /home/bob/bin/tigress-VERSION/
      tigress --Environment=x86_64:Darwin:Clang:5.1 --Transform=Virtualize --Functions=main --out=result.c test2.c
      gcc -o result result.c
      ./result
      
    This should construct a trivial interpreter from test2.c in result.c
  6. Some useful commands:
    tigress --help : Show this message
    tigress --install : Show how to install Tigress
    tigress --test : Show how to run tests to ensure proper installation
    tigress --options : Show complete list of options to tigress
    tigress --license : Display the tigress license
    tigress --bibtex : See how to cite us
    tigress --apple : How to get past some Darwin issues
    tigress --version : Show the current Tigress version
  7. Tigress comes with a suite of simple test cases that you can run to ensure proper installation on your platform:
    > cd $TIGRESS_HOME
    > unzip simple-tests.zip
    > cd simple
    > make
    
    Please report if any tests fail on your system.
 

Issues

Tigress is currently only compiled for 64-bit Darwin and Linux. We would like to provide Tigress on more platforms, but, in order to do this, we need access to compilers for such systems. It would be great if someone could please donate/give us access to 32-bit Linux and 32- and 64-bit Windows systems (with cygwin, gcc, and ocaml installed)!

 

Installation from Source

  1. Make sure you have the following installed:
    • gcc (or a drop-in replacement such as clang)
    • OCaml 3.12.1
    • perl
    • bash
    • openssl
    • gawk
    • gsed
  2. Decrypt:
       > openssl enc -d -aes-256-cbc -pass pass:PASSPHRASE -in tigress-src-unstable.zip.aes -out tigress-src-unstable.zip
    
    The PASSPHRASE should have been sent to you in a separate email.
  3. Unpack:
    unzip tigress-src-unstable.zip
    
    If your awk/sed is not called gawk/gsed, edit tigress/distribution/exec/makefile.
  4. To build, type:
     
    cd tigress
    make unpackCIL
    make config
    make tigress_full
    
  5. The binaries should be built in the bin directory. Set
    setenv TIGRESS_HOME /PATH_TO/tigress/bin/tigress-unstable
    setenv PATH /PATH_TO/tigress/bin/tigress-unstable:$PATH
    rehash
    
    or
    export TIGRESS_HOME=/PATH_TO/tigress/bin/tigress-unstable
    export PATH=$PATH:/PATH_TO/tigress/bin/tigress-unstable