Syncro uses program synthesis to automatically generate incremental update rules that can speed up programs by orders of magnitude.
Install Racket
Install Rosette 2
$ raco pkg install rosette
Install the graph
package
$ raco pkg install graph
Clone this repository and install it using raco
:
$ cd incremental $ ls README.md example info.rkt src direct-example incremental scratch $ raco pkg install
To use Syncro, you first write a program using the incremental language, which means your file must start with #lang incremental
. Once you have written such a program, it can be run by Racket directly. For example, to run the provided examples:
$ racket example/test/sketch.rkt
Each such program automatically supports various command line flags, which you can learn about through --help
:
$ racket example/test/sketch.rkt --help
basic
grammar (-g
option) only supports a small subset of the language that other grammars support.#:initialize
and algorithm
parts of the program do nothing. They are placeholders that will eventually be used in code generation.#:sketches
construct and SSA grammar (-g "(ssa n)"
option) do not play well together. The code will work but will likely be slow.