Welcome to Juvix!
In this workshop we will install the Juvix compiler and related tools, take a tour of the Juvix language, and explore some Juvix applications.
Please use one of the following options to install the Juvix compiler. Juvix is supported on Linux x86_64 and macOS x86_64 or aarch64 (M1/M2).
The Juvix compiler requires the LLVM/clang compiler to be available on your system PATH in order to build native binaries.
If you use the Homebrew package manager you can use our tap:
brew update
brew tap anoma/juvix
brew install juvix
To install for linux or macOS run the following in a terminal (as a non-root user):
curl --proto '=https' --tlsv1.2 -sSfL https://get.juvix.org | sh
There are also binaries for the Juvix compiler available to download
OS / Architecture |
---|
Linux x86_64 |
macOS x86_64 |
macOS aarch64 (M1/M2) |
We have set up a GitHub codespace with a pre-configured workspace, allowing you to seamlessly dive into the workshop without the hassle of any installations.
First install visual studio code from the Microsoft website https://code.visualstudio.com/download
In the extension tab search for juvix
and install the extension that features the Tara logo.
See the vscode-juvix repository for usage information.
To get started, clone the juvix-mode repository
git clone https://github.com/anoma/juvix-mode.git
And add the following lines to your Emacs configuration file:
(push "/path/to/juvix-mode/" load-path)
(require 'juvix-mode)
See the juvix-mode repository for usage information.
The full documentation for Juvix is available at https://docs.juvix.org
Try the workshop exercises in the Juvix project at exercises/Exercises.juvix
Compile and run the famous Hello World program:
juvix compile hello-world/HelloWorld.juvix && ./HelloWorld
One of the goals of Juvix is to be used as language to write applications for the Anoma protocol.
In anoma/ we will explore the structure of Anoma applications built using the Taiga execution model and use the taiga simulator to test them.
The Juvix compiler has a backend that targets the VampIR arithmetic circuit intermediate language. VampIR can then be used to generate zero-knowledge proofs that relate inputs and output of the program.
Not all Juvix programs can be compiled to VampIR. Future releases of Juvix will improve VampIR support.
See arithmetic-circuits/ for an example.