* MiniJuvix #+begin_html LICENSE #+end_html #+begin_html CI status #+end_html #+begin_html #+end_html ** Description MiniJuvix is a programming language for writing efficient formally-verified [[https://anoma.network/blog/validity-predicates/][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 [[http://git-scm.com/][Git]] from the [[https://github.com/anoma/juvix.git][Github repository]]. Then, the program can be downloaded and installed with the following commands. You will need to have [[https://haskellstack.org][Stack]] installed. #+begin_src shell $ git clone https://github.com/heliaxdev/minijuvix.git $ cd minijuvix $ stack install #+end_src 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: #+begin_src shell $ stack test #+end_src ** 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: #+begin_src elisp (push "/path/to/minijuvix/minijuvix-mode/" load-path) (require 'minijuvix-mode) #+end_src Make sure that =minijuvix= is installed in your =PATH=. The MiniJuvix major mode will be activated automatically for =.mjuvix= files. *** Keybindings | Key | Function Name | Description | |-----------+------------------+-------------------------------------------------------| | =C-c C-l= | =minijuvix-load= | Runs 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=). #+begin_src shell eval "$(minijuvix --bash-completion-script minijuvix)" #+end_src *** Fish Run the following command in your shell: #+begin_src shell $ minijuvix --fish-completion-script minijuvix > ~/.config/fish/completions/minijuvix.fish #+end_src *** ZSH Run the following command in your shell: #+begin_src shell $ minijuvix --zsh-completion-script minijuvix > $DIR_IN_FPATH/_minijuvix #+end_src where =$DIR_IN_FPATH= is a directory that is present on the [[https://zsh.sourceforge.io/Doc/Release/Functions.html][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 [[https://discord.gg/nsGaCZzJ][Discord]]