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
janmasrovira bd4ea3e54b
Support multiple modules in compilation (#100)
* translate MiniJuvix import statements to MicroJuvix include statements
2022-05-13 11:44:06 +02:00
.github/workflows Stricter stack builds and pedantic mode for CI (#78) 2022-05-05 15:21:04 +01:00
app 87 refactor warning related stuff (#91) 2022-05-06 11:48:07 +02:00
assets add integer and string literals 2022-03-15 12:37:33 +01:00
docs [docs] Add usage example and move emacs docs (#96) 2022-05-13 09:40:04 +02:00
examples/milestone/ValidityPredicates New target syntax and modular VP examples (#92) 2022-05-06 12:45:09 +02:00
minijuvix-mode [emacs] Add copy of agda-input to minijuvix-mode (#57) 2022-04-11 17:11:31 +02:00
minijuvix-stdlib@ad8392f76e [stdlib] update 2022-02-28 18:24:52 +01:00
notes Monomorphization (#70) 2022-05-04 10:50:03 +02:00
src/MiniJuvix Support multiple modules in compilation (#100) 2022-05-13 11:44:06 +02:00
test Support multiple modules in compilation (#100) 2022-05-13 11:44:06 +02:00
tests Support multiple modules in compilation (#100) 2022-05-13 11:44:06 +02:00
.github_changelog_generator v0.1.3 Update CHANGELOG 2022-05-05 18:37:06 +02:00
.gitignore New target syntax and modular VP examples (#92) 2022-05-06 12:45:09 +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 [ pre-commit ] Add support and hooks 2022-04-04 17:44:08 +02:00
.pre-commit-hooks.yaml [ CI ] New jobs: ormolu and hlint 2022-04-05 19:57:21 +02:00
CHANGELOG.org v0.1.3 Update CHANGELOG 2022-05-05 18:37:06 +02:00
hie.yaml [tests] setup basic testing 2022-02-15 14:12:53 +01:00
LICENSE First commit, initial project template. 2021-09-26 18:59:51 +02:00
Makefile Stricter stack builds and pedantic mode for CI (#78) 2022-05-05 15:21:04 +01:00
package.yaml 87 refactor warning related stuff (#91) 2022-05-06 11:48:07 +02:00
README.org [docs] Add usage example and move emacs docs (#96) 2022-05-13 09:40:04 +02:00
stack.yaml bump stackage version and remove allow-newer (#76) 2022-05-04 12:57:42 +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.

  • To test everything works correctly, you can run the following command. You will need to have emscripten and wasmer installed.
stack test

Usage Example

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

cd tests/positive/MiniC/HelloWorld
minijuvix minic Input.mjuvix | emcc -x c - -o out.wasm && wasmer out.wasm
hello world!

Other Documentation

Community

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