1
1
mirror of https://github.com/anoma/juvix.git synced 2024-12-11 08:25:46 +03:00
Juvix empowers developers to write code in a high-level, functional language, compile it to gas-efficient output VM instructions, and formally verify the safety of their contracts prior to deployment and execution.
Go to file
Jonathan Cubides cc4566f4a6
Add an option to specify the path where to put the HTML output (#179)
* Add --output-dir option for html generation

* minor

* Add html test for output-dir flag with (no) recursive gen
2022-06-20 18:12:45 +02:00
.github/workflows Upgrade to ghc-9.2.3 (#178) 2022-06-20 12:53:31 +02:00
app Add an option to specify the path where to put the HTML output (#179) 2022-06-20 18:12:45 +02:00
assets add integer and string literals 2022-03-15 12:37:33 +01:00
docs/org Fix links in documentation and update to new syntax (#163) 2022-06-15 10:19:55 +02:00
examples/milestone/ValidityPredicates Update validity predicate milestone example to 0.2 syntax (#167) 2022-06-15 13:04:14 +02:00
minic-runtime Support function closures with no environment in minic (#137) 2022-06-13 14:04:38 +02:00
minijuvix-mode Support implicit arguments (#144) 2022-06-13 14:25:22 +02:00
minijuvix-stdlib@eab18bdae0 Update stdlib to work with version 0.2 (#160) 2022-06-14 13:34:17 +02:00
src/MiniJuvix Add an option to specify the path where to put the HTML output (#179) 2022-06-20 18:12:45 +02:00
test Fix: Identifiers with a keyword prefix cannot be parsed (#171) 2022-06-16 10:13:13 +02:00
tests Add an option to specify the path where to put the HTML output (#179) 2022-06-20 18:12:45 +02:00
.github_changelog_generator v0.1.3 Update CHANGELOG 2022-05-05 18:37:06 +02:00
.gitignore Update validity predicate milestone example to 0.2 syntax (#167) 2022-06-15 13:04:14 +02:00
.gitmodules [ CI ] Add Haskell Github Action with Stack test and ormolu check 2022-04-04 15:55:15 +02:00
.hlint.yaml Monomorphization (#70) 2022-05-04 10:50:03 +02:00
.pre-commit-config.yaml Add CLI improvements and shell testing (#131) 2022-06-09 16:36:07 +02:00
.pre-commit-hooks.yaml Add initial documentation (#119) (#120) 2022-05-23 16:20:02 +02:00
book.toml Add initial documentation (#119) (#120) 2022-05-23 16:20:02 +02:00
hie.yaml Generic Errors and refactoring (#123) 2022-05-26 17:52:08 +02:00
LICENSE First commit, initial project template. 2021-09-26 18:59:51 +02:00
Makefile Add CLI improvements and shell testing (#131) 2022-06-09 16:36:07 +02:00
package.yaml Update validity predicate milestone example to 0.2 syntax (#167) 2022-06-15 13:04:14 +02:00
README.org Replace dead link with a link to the MiniJuvix book (#177) 2022-06-16 15:03:00 +01:00
stack.yaml Upgrade to ghc-9.2.3 (#178) 2022-06-20 12:53:31 +02:00

MiniJuvix

<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>

<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>

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.

Usage Example

In the following example a MiniJuvix file is compiled using the C backend. The result is compiled to WASM using Clang and then executed using wasmer.

NB: Set the WASI_SYSROOT_PATH environment variable to the root of the WASI sysroot. See Installing dependencies for instructions on how to install the sysroot.

cd tests/positive/MiniC/HelloWorld
minijuvix compile Input.mjuvix
wasmer Input.wasm

You should see the output: hello world!

The MiniJuvix Book

The MiniJuvix language and related tools are documented in the MiniJuvix book.

Community

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