• Stars
    star
    436
  • Rank 96,245 (Top 2 %)
  • Language
    Haskell
  • License
    GNU General Publi...
  • Created over 6 years ago
  • Updated 28 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A language for intent-centric and declarative decentralised applications

Juvix

Tara the Juvix mascot

CI Status

The Juvix compiler CI

Nightly build, release and benchmark

Codebase
Open the Juvix Standard Lib in Github Codespace

Juvix is an open-source, constantly evolving functional programming language designed for writing privacy-preserving decentralized applications. Using Juvix, developers can write high-level programs which can be compiled to WASM directly, or through VampIR to circuits for private execution with Taiga on Anoma or Ethereum.

Getting Started

To get started with Juvix, head over to the documentation website to learn more about the language and its features. You can also find installation instructions and tutorials to help you get started with writing Juvix programs. You can download the latest release from the Juvix GitHub repository or use the web-based development environment, Juvix Github Codespace, which provides a pre-configured workspace ready to use with Juvix and the Haskell toolchain installed.

Language features

Juvix is designed with a focus on safety. The Juvix compiler runs several static analyses which guarantee the absence of runtime errors. Analyses performed include termination and type checking. As a result, functional programs, especially validity predicates, can be written with greater confidence in their correctness.

Some language features in Juvix include:

  • Haskell/Agda-like syntax with support for Unicode
  • Type inference
  • Parametric polymorphism
  • User defined inductive data types
  • Higher-order functions
  • Referential transparency

The Juvix module system allows developers to break down their programs into smaller, reusable modules that can be compiled separately and combined to create larger programs. These modules can be used to build libraries, which can then be documented using Juvix's built-in documentation generation tool, see for example, the Juvix standard library's website. For further details, please refer to the Juvix book which includes our latest updates.

Related projects

If you're interested in Juvix, you may also want to explore the following related projects:

Project Description
GEB Intermediate language for writing compilers and one of the Juvix backends.
VampIR Proof-system-agnostic language for writing arithmetic circuits and one of the GEB backends.
Taiga A framework for generalized shielded state transitions.

Resources

Here is a summary of resources to help you learn more about Juvix:

Documentation

Resource Description
Official website The official website of Juvix, where you can find documentation, changelog, tutorials, and community resources.
GitHub repository The official GitHub repository of Juvix, where you can find the source code and contribute to the project.

Community

Resource Description
Discord community The Juvix community on Discord is a space where you can connect with the developers behind Juvix and other members of the community who are passionate about privacy-preserving decentralized applications. It's a place where you can ask for help with using Juvix, discuss the latest features and updates, and get involved in the project.
Twitter The official Twitter account of Juvix, where you can stay up-to-date with the latest news and announcements.

Libraries

Resource Description
Standard library The Juvix standard library is a collection of pre-written functions and modules that come bundled with the Juvix programming language. It provides developers with a set of common and useful tools that they can use to build their Juvix programs without having to write everything from scratch.

IDE support

Resource Description
VSCode extension Support for the Juvix programming language with features such as syntax highlighting, error checking and many more directly in the VSCode editor.
Emacs Juvix mode A major mode for Emacs that provides support for writing Juvix programs.

Development environments

Resource Description
Juvix Standard Lib Codespace A web-based development environment for the Juvix standard library on GitHub. It provides a pre-configured workspace with the Juvix standard library installed and ready to use, so you can start using the library in your projects. Some examples of Juvix programs are also loaded in this environment.
Juvix Github Codespace This codespace provides a pre-configured workspace with Juvix and the Haskell toolchain installed. Everything is ready to use, so you can start developing/inspecting the Juvix compiler right away.

Installation

Resource Description
Homebrew Juvix formula A formula for Homebrew, a package manager for macOS and Linux, that allows you to easily install Juvix on your system.
Juvix Nightly builds Users can download and use these nightly builds to experiment with the latest changes to the Juvix Compiler. Nightly builds may contain new features, bug fixes, and other improvements to Juvix that are still in development and have not yet been released in an official version.

Contributing

If you're interested in contributing to Juvix, please see the contributing guidelines for more information. We welcome contributions of all kinds, from bug reports and feature requests to code contributions and documentation improvements.

License

Juvix is open-source software released under the GNU General Public License v3.0. See the LICENSE file for more information.

More Repositories

1

namada

Rust implementation of Namada, a Proof-of-Stake L1 for interchain asset-agnostic privacy
Rust
2,374
star
2

anoma-archive

Reference implementation of the Anoma protocols in Rust.
Rust
422
star
3

namada-testnets

Testnet configurations and coordination for the Namada network.
329
star
4

namada-trusted-setup-claimer

Sign arbitrary messages with keys obtained from Namada's trusted setup
Rust
322
star
5

vamp-ir

Vamp-IR is a proof-system-agnostic language for writing arithmetic circuits
Rust
152
star
6

taiga

A framework for generalized shielded state transitions
Rust
120
star
7

zkp-compiler-shootout

Evaluating & benchmarking ZKP compilation strategies.
Rust
118
star
8

masp

The multi-asset shielded pool (MASP) provides a unified privacy set for all assets on Namada.
Rust
83
star
9

ferveo

An implementation of a DKG protocol for front-running protection on Anoma.
Rust
77
star
10

namada-interface

TypeScript
73
star
11

whitepaper

TeX
57
star
12

namada-docs

MDX
47
star
13

namada-shielded-expedition

Python
41
star
14

geb

A Categorical View of Computation
Idris
28
star
15

typhon

Formalization of Typhon protocol
TLA
25
star
16

research

Early-stage research related to the Anoma protocols.
Idris
23
star
17

specs

Specifications for the Anoma protocols.
TeX
23
star
18

alucard

A common lisp DSL for writing zero knowledge circuits
Common Lisp
18
star
19

ethereum-bridge

A generalized fully trustless Ethereum bridge for sovereign chains.
Solidity
12
star
20

minijuvix

Haskell
11
star
21

juvix-stdlib

The Juvix standard library
Makefile
9
star
22

VampIR-Book

A book which can act as an introduction and documentation for VampIR
CSS
9
star
23

masp-mpc

MASP MPC code
Rust
8
star
24

namada-sdk-starter

Rust
6
star
25

juvix-nightly-builds

6
star
26

abstract-resource-machine-simulator

Makefile
6
star
27

anoma-alpha

An intent-centric, privacy-preserving protocol for decentralized counterparty discovery, solving, and multi-chain atomic settlement.
Rust
6
star
28

juvix-e2e-demo

Juvix compiler stack - Integration demo
Dockerfile
6
star
29

exhibit_plonkup

Rust
5
star
30

devtool

Rust
4
star
31

anoma-blog

JavaScript
4
star
32

verify-beacon

Rust
3
star
33

namada-whitepaper

Namada whitepaper
3
star
34

dev-utils

Shell
3
star
35

juvix-docs

Juvix Official Documentation
Makefile
3
star
36

devchain-container

Shell
2
star
37

intents-snippets

A repo to put code snippets related to intent research
Agda
2
star
38

typhon-sml

Typhon reference implementation in Standard ML
Standard ML
2
star
39

vscode-juvix

VSCode extension for Juvix
TypeScript
2
star
40

anoma-wasm-multitoken

Validity predicate and transactions for a variable supply multitoken account
Rust
2
star
41

wasm-workspace

Rust
2
star
42

anoma-blog-writing-guide

Comprehensive guide to writing blogposts for the anoma blog.
2
star
43

juvix-mode

The Juvix Emacs mode
Emacs Lisp
1
star
44

plonkup-hash

A collection of hash gadgets written for Plonkup
Rust
1
star
45

vscode-vampir

1
star
46

juvix-containers

Immutable container types for Juvix
Makefile
1
star
47

highlightjs-juvix

Juvix language grammars for highlightjs (low maintenance)
JavaScript
1
star
48

art-template

Anoma Research Topics Template
TeX
1
star
49

ART-2024-Khalniyazova-Goes-Resource-Machine-Specification

TeX
1
star
50

Isabelle-HPaxos

A formalization of HPaxos in Isabelle
Isabelle
1
star
51

juvix-quickcheck

Property-based testing for Juvix
Makefile
1
star
52

namada-light-sdk-starter

Namada light sdk starter kit
Dockerfile
1
star
53

ART-2023-Gureev-Cubides-Geb-Pipeline

TeX
1
star