🦁 The Leo Programming Language. A Programming Language for Formally Verified, Zero-Knowledge Applications
Go to file
d0cd bcdb1f57d2
Merge pull request #28443 from ProvableHQ/feat/analyzers
[Fix] Introduce `StaticAnalysis` pass and add checks on usage of async code for safety.
2024-11-18 08:13:30 -08:00
.cargo Fix 2024-05-30 11:35:15 -07:00
.circleci More cleanup 2024-11-01 14:54:54 -07:00
.github Fix codecov job 2024-11-01 15:59:24 -07:00
.resources chore(leo): bump version for new release 2024-09-19 08:00:35 +08:00
compiler Fix and pass tests 2024-11-14 15:19:41 -08:00
docs Update MSRV in all the other crates to match. 2024-11-04 13:24:00 -08:00
errors Fix and regen some expectations 2024-11-14 07:23:34 -08:00
examples@b75bb77851 Update README 2024-10-09 14:01:23 -07:00
leo Address comments in review 2024-11-08 13:32:11 -08:00
tests Regen expectations 2024-11-14 16:11:30 -08:00
utils Merge pull request #28434 from ProvableHQ/long-ids 2024-11-06 18:43:44 -08:00
.codecov.yml Adds configuration files for tooling 2020-06-07 22:53:45 -07:00
.gitattributes state the input files should be cloned with lf 2022-04-28 12:56:08 -07:00
.gitignore Implement Leo Account (#2513) 2023-08-07 16:01:33 -07:00
.gitmodules Remove examples and add it back in as a submodule 2024-10-07 16:25:58 -07:00
.rustfmt.toml Update rustfmt.toml to latest nightly and apply changes 2024-10-01 18:19:39 -07:00
.rusty-hook.toml Update fmt and pre-commit config 2023-03-26 23:16:19 -07:00
build.rs Update LicenseHeader and Cargo metadata 2024-09-04 11:48:02 -07:00
Cargo.lock Merge branch 'mainnet' into ci/integration-tests-to-circle-ci 2024-11-01 09:35:37 -07:00
Cargo.toml Merge branch 'mainnet' into ci/integration-tests-to-circle-ci 2024-11-01 09:35:37 -07:00
CONTRIBUTING.md Update LicenseHeader and Cargo metadata 2024-09-04 11:48:02 -07:00
CONTRIBUTORS.md Update LicenseHeader and Cargo metadata 2024-09-04 11:48:02 -07:00
DEVELOPMENT.md Adds DEVELOPMENT.md 2021-02-24 20:28:27 -08:00
LICENSE.md Adds LICENSE.md 2021-02-10 22:23:45 -08:00
README.md Fix broken links 2024-10-23 22:16:52 -07:00
rust-toolchain Set MSRV 2024-10-22 13:14:23 -07:00
SECURITY.md Cleanup out dated docs 2022-08-18 15:45:30 -07:00

The Leo Programming Language

Leo is a functional, statically-typed programming language built for writing private applications.

Table of Contents

🍎 Overview

Welcome to the Leo programming language.

Leo provides a high-level language that abstracts low-level cryptographic concepts and makes it easy to integrate private applications into your stack. Leo compiles to circuits making zero-knowledge proofs practical.

The syntax of Leo is influenced by traditional programming languages like JavaScript, Scala, and Rust, with a strong emphasis on readability and ease-of-use. Leo offers developers with tools to sanity check circuits including unit tests, integration tests, and console functions.

Leo is one part of a greater ecosystem for building private applications on Aleo. The language is currently in an alpha stage and is subject to breaking changes.

⚙️ Build Guide

🦀 Install Rust

We recommend installing Rust using rustup. You can install rustup as follows:

  • macOS or Linux:

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    
  • Windows (64-bit):

    Download the Windows 64-bit executable and follow the on-screen instructions.

  • Windows (32-bit):

    Download the Windows 32-bit executable and follow the on-screen instructions.

🐙 Build from Source Code

We recommend installing Leo by building from the source code as follows:

# Download the source code and initialize the submodules
git clone --recurse-submodules https://github.com/ProvableHQ/leo
cd leo

# Install 'leo'
$ cargo install --path .

Now to use leo, in your terminal, run:

leo

🦁 Update from Leo

You can update Leo to the latest version using the following command:

leo update

Now to check the version of leo, in your terminal, run:

leo --version

🚀 Quick Start

Use the Leo CLI to create a new project

# create a new `hello-world` Leo project
leo new helloworld
cd helloworld

# build & setup & prove & verify
leo run main 0u32 1u32

The leo new command creates a new Leo project with a given name.

The leo run command will compile the program into Aleo instructions and run it.

Congratulations! You've just run your first Leo program.

🧰 Troubleshooting

If you are having trouble installing and using Leo, please check out our guide.

If the issue still persists, please open an issue.

📖 Documentation

🤝 Contributing

Please see our guidelines in the developer documentation

❤️ Contributors

View all Leo contributors here.

🛡️ License

License: GPL v3

🔼 Back to top