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
2022-05-13 10:40:04 +03:00
git clone https://github.com/heliaxdev/minijuvix.git
cd minijuvix
stack install
2022-03-25 20:10:17 +03:00
#+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= .
2022-05-13 10:40:04 +03:00
** Usage Example
2022-04-01 12:15:32 +03:00
2022-05-16 18:17:28 +03:00
In the following example a MiniJuvix file is compiled using the C backend. The
2022-05-19 10:48:23 +03:00
result is compiled to WASM using [[https://llvm.org ][Clang ]] and then executed using [[https://wasmer.io ][wasmer ]].
2022-06-15 11:19:55 +03:00
NB: Set the =WASI_SYSROOT_PATH= environment variable to the root of the WASI
sysroot. See [[https://heliaxdev.github.io/minijuvix/getting-started/dependencies.html ][Installing dependencies ]] for instructions on how to install the
sysroot.
2022-04-04 19:30:38 +03:00
#+begin_src shell
2022-05-13 10:40:04 +03:00
cd tests/positive/MiniC/HelloWorld
2022-06-14 11:42:13 +03:00
minijuvix compile Input.mjuvix
wasmer Input.wasm
2022-04-04 19:30:38 +03:00
#+end_src
2022-06-14 11:42:13 +03:00
You should see the output: =hello world!=
2022-04-04 19:30:38 +03:00
2022-05-13 10:40:04 +03:00
** Other Documentation
2022-04-04 19:30:38 +03:00
2022-05-13 10:40:04 +03:00
[[docs/developer-tooling.org ][Developer Tooling ]]
2022-04-04 19:30:38 +03:00
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 ]]