1
1
mirror of https://github.com/anoma/juvix.git synced 2024-12-15 18:13:56 +03:00
juvix/README.org

81 lines
2.6 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
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=.
** Usage Example
In the following example a MiniJuvix file is compiled using the C backend. The
result is compiled to WASM using [[https://llvm.org][Clang]] and then executed using [[https://wasmer.io][wasmer]].
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.
#+begin_src shell
cd tests/positive/MiniC/HelloWorld
minijuvix compile Input.mjuvix
wasmer Input.wasm
#+end_src
You should see the output: =hello world!=
** Other Documentation
[[docs/developer-tooling.org][Developer Tooling]]
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]]