1
1
mirror of https://github.com/anoma/juvix.git synced 2024-09-20 13:07:20 +03:00
juvix/README.org

120 lines
3.7 KiB
Org Mode
Raw Normal View History

2022-03-28 18:32:09 +03:00
* MiniJuvix
#+begin_html
<a href="https://github.com/heliaxdev/minijuvix/blob/main/LICENSE">
<img alt="LICENSE" src="https://img.shields.io/badge/license-GPL--3.0--only-blue.svg" />
</a>
#+end_html
#+begin_html
<a href="https://github.com/heliaxdev/MiniJuvix/actions/workflows/ci.yml">
<img alt="CI status" src="https://github.com/heliaxdev/MiniJuvix/actions/workflows/ci.yml/badge.svg" />
</a>
#+end_html
2022-04-08 14:35:04 +03:00
#+begin_html
<a href="https://github.com/heliaxdev/minijuvix/tags">
<img alt="" src="https://img.shields.io/github/v/release/heliaxdev/minijuvix?include_prereleases" />
</a>
#+end_html
2022-03-25 20:10:17 +03:00
** Description
2022-04-08 14:35:04 +03:00
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.
2022-03-25 20:10:17 +03:00
MiniJuvix addresses many issues that we have experienced while trying to
2022-04-08 14:35:04 +03:00
write and deploy decentralized applications present in the ecosystem of
2022-03-25 20:10:17 +03:00
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
2022-04-08 14:35:04 +03:00
will need to have [[https://haskellstack.org][Stack]] installed.
2022-03-25 20:10:17 +03:00
#+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
2022-04-01 12:17:11 +03:00
| 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).
2022-03-25 20:10:17 +03:00
** Community
We would love to hear what you think of MiniJuvix! Join us on
[[https://discord.gg/nsGaCZzJ][Discord]]