Skip to content

anoma/juvix

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a8f4ab3 · May 5, 2022
May 5, 2022
May 5, 2022
Mar 15, 2022
May 4, 2022
Apr 11, 2022
Feb 28, 2022
May 4, 2022
May 5, 2022
May 5, 2022
May 5, 2022
May 5, 2022
May 4, 2022
Apr 4, 2022
May 4, 2022
Apr 4, 2022
Apr 5, 2022
May 5, 2022
Sep 26, 2021
May 5, 2022
May 5, 2022
Feb 15, 2022
May 5, 2022
May 4, 2022

Repository files navigation

MiniJuvix

LICENSE CI status

Description

MiniJuvix is a programming language for writing efficient formally-verified validity predicates, which can be deployed to various distributed ledgers. This is software released for experimentation and research purposes only. No warranty is provided or implied.

MiniJuvix addresses many issues that we have experienced while trying to write and deploy decentralized applications present in the ecosystem of smart-contracts:

  • the difficulty of adequate program verification,
  • the ceiling of compositional complexity,
  • the illegibility of execution costs, and
  • the lock-in to particular backends.

Quick Start

To install MiniJuvix, you can download its sources using Git from the Github repository. Then, the program can be downloaded and installed with the following commands. You will need to have Stack installed.

$ git clone https://github.com/heliaxdev/minijuvix.git
$ cd minijuvix
$ stack install

If the installation succeeds, you must be able to run the minijuvix command from any location. To get the complete list of commands, please run minijuvix --help.

  • To test everything works correctly, you can run the following command. You will need to have emscripten and wasmer installed.
$ stack test

Emacs mode

There is an Emacs mode available for MiniJuvix. Currently, it supports syntax highlighting for well-scoped modules.

To install it add the following lines to your Emacs configuration file:

(push "/path/to/minijuvix/minijuvix-mode/" load-path)
(require 'minijuvix-mode)

Make sure that minijuvix is installed in your PATH.

The MiniJuvix major mode will be activated automatically for .mjuvix files.

Keybindings

KeyFunction NameDescription
C-c C-lminijuvix-loadRuns the scoper and adds semantic syntax highlighting

CLI Auto-completion Scripts

The MiniJuvix CLI can generate auto-completion scripts. Follow the instructions below for your shell.

NB: You may need to restart your shell after installing the completion script.

Bash

Add the following line to your bash init script (for example ~/.bashrc).

eval "$(minijuvix --bash-completion-script minijuvix)"

Fish

Run the following command in your shell:

$ minijuvix --fish-completion-script minijuvix > ~/.config/fish/completions/minijuvix.fish

ZSH

Run the following command in your shell:

$ minijuvix --zsh-completion-script minijuvix > $DIR_IN_FPATH/_minijuvix

where $DIR_IN_FPATH is a directory that is present on the ZSH FPATH variable (which you can inspect by running echo $FPATH in the shell).

Community

We would love to hear what you think of MiniJuvix! Join us on Discord