Installation
The easiest way to install the Garble compiler is using cargo install
:
$ cargo install garble_lang --features="bin"
$ garble
Turing-Incomplete Programming Language for Multi-Party Computation with Garbled Circuits
Usage: garble <COMMAND>
Commands:
run Run the Garble program with the specified inputs
check Check the Garble program for any type errors
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
If you want to test the Garble compiler with some example programs, the easiest way to do so is to clone the Garble repository and use the programs found in garble_examples
:
$ git clone git@github.com:sine-fdn/garble-lang.git
$ cd garble-lang
$ garble run garble_examples/millionaires.garble.rs --function=main 10000000 10000
Richest::IsA
$ garble run garble_examples/millionaires.garble.rs --function=main 100 5000000
Richest::IsB
$ garble run garble_examples/millionaires.garble.rs --function=main 1000 1000
Richest::Tie
If a program cannot be compiled, Garble will report type errors and display the location of the error in the source code:
$ garble run garble_examples/error_examples/simple_type_error.garble.rs --function=main 0 true
Type error on line 2:5.
The operands have incompatible types; u32 vs bool:
| pub fn main(a: u32, b: bool) -> u32 {
2 > | a - b
> | ^^^^^
| }