2020-12-19 05:58:27 +03:00
< p align = "center" >
2021-03-07 23:31:40 +03:00
< img width = "1412" src = "https://cdn.aleo.org/leo/banner.png" >
2020-12-19 05:58:27 +03:00
< / p >
2020-08-19 11:27:47 +03:00
< h1 align = "center" > The Leo Programming Language< / h1 >
2020-06-16 22:55:59 +03:00
2020-08-19 11:09:14 +03:00
< p align = "center" >
< a href = "https://github.com/AleoHQ/leo/actions" > < img src = "https://github.com/AleoHQ/leo/workflows/CI/badge.svg" > < / a >
< a href = "https://codecov.io/gh/AleoHQ/leo" > < img src = "https://codecov.io/gh/AleoHQ/leo/branch/master/graph/badge.svg?token=S6MWO60SYL" / > < / a >
2021-04-28 05:37:41 +03:00
< a href = "https://discord.gg/5v2ynrw2ds" > < img src = "https://img.shields.io/discord/700454073459015690?logo=discord" / > < / a >
2020-08-19 11:09:14 +03:00
< / p >
2020-06-23 02:01:54 +03:00
2020-08-18 03:21:10 +03:00
Leo is a functional, statically-typed programming language built for writing private applications.
2020-06-30 04:37:52 +03:00
2020-08-18 03:21:10 +03:00
## <a name='TableofContents'></a>Table of Contents
* [1. Overview ](#1-overview )
* [2. Build Guide ](#2-build-guide )
* [2.1 Install Rust ](#21-install-rust )
* [2.2a Build from Crates.io ](#22a-build-from-cratesio )
* [2.2b Build from Source Code ](#22b-build-from-source-code )
* [3. Quick Start ](#3-quick-start )
2020-08-18 22:15:14 +03:00
* [4. Documentation ](#4-documentation )
2020-08-18 06:21:24 +03:00
* [5. Contributing ](#5-contributing )
* [6. License ](#6-license )
2020-04-24 03:43:58 +03:00
2020-08-18 03:21:10 +03:00
## 1. Overview
2021-02-25 07:06:04 +03:00
2020-08-18 03:21:10 +03:00
Welcome to the Leo programming language.
2020-04-24 03:43:58 +03:00
2020-08-19 11:34:50 +03:00
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.
2020-04-24 03:43:58 +03:00
2020-08-19 11:34:50 +03:00
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.
2020-08-18 22:15:14 +03:00
Leo is one part of a greater ecosystem for building private applications on [Aleo ](https://aleo.org/ ). If your goal is to build a user experience
on the web that is both truly personal and truly private, then we recommend downloading the [Aleo Studio IDE ](https://aleo.studio/ )
2020-08-19 21:50:33 +03:00
and checking out the [Aleo Package Manager ](https://aleo.pm/ ).
2020-04-24 03:43:58 +03:00
2020-08-18 06:21:24 +03:00
## 2. Build Guide
2020-05-21 21:03:43 +03:00
2020-08-18 03:21:10 +03:00
### 2.1 Install Rust
We recommend installing Rust using [rustup ](https://www.rustup.rs/ ). You can install `rustup` as follows:
- macOS or Linux:
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
- Windows (64-bit):
Download the [Windows 64-bit executable ](https://win.rustup.rs/x86_64 ) and follow the on-screen instructions.
- Windows (32-bit):
Download the [Windows 32-bit executable ](https://win.rustup.rs/i686 ) and follow the on-screen instructions.
### 2.2a Build from Crates.io
We recommend installing Leo this way. In your terminal, run:
```bash
2020-08-21 14:41:13 +03:00
cargo install leo-lang
2020-08-18 03:21:10 +03:00
```
Now to use Leo, in your terminal, run:
```bash
leo
```
### 2.2b Build from Source Code
2020-08-18 06:21:24 +03:00
Alternatively, you can install Leo by building from the source code as follows:
2020-05-21 21:03:43 +03:00
2020-08-18 03:21:10 +03:00
```bash
# Download the source code
git clone https://github.com/AleoHQ/leo
cd leo
# Build in release mode
$ cargo build --release
```
2020-09-04 03:23:31 +03:00
This will generate an executable under the `./target/release` directory. To run Leo, run the following command:
2020-08-18 03:21:10 +03:00
```bash
./target/release/leo
```
2020-08-18 06:21:24 +03:00
## 3. Quick Start
2020-08-18 03:21:10 +03:00
Use the Leo CLI to create a new project
```bash
2021-04-21 00:29:10 +03:00
# create a new `hello-world` Leo project
leo new hello-world
cd hello-world
2020-08-18 06:21:24 +03:00
# build & setup & prove & verify
leo run
2020-08-18 03:21:10 +03:00
```
2020-08-18 06:21:24 +03:00
The `leo new` command creates a new Leo project with a given name.
The `leo run` command will compile the main program, generate keys for a trusted setup, fetch inputs, generate a proof and verify it.
Congratulations! You've just run your first Leo program.
2020-08-18 22:15:14 +03:00
## 4. Documentation
2020-08-18 06:21:24 +03:00
2020-08-18 22:38:16 +03:00
* [Hello World - Next Steps ](https://developer.aleo.org/developer/getting_started/hello_world )
2020-08-18 22:15:14 +03:00
* [Leo Language Documentation ](https://developer.aleo.org/developer/language/layout )
2021-04-21 00:29:10 +03:00
* [Leo ABNF Grammar ](./grammar/README.md )
2020-08-18 22:15:14 +03:00
* [Leo CLI Documentation ](https://developer.aleo.org/developer/cli/new )
* [Homepage ](https://developer.aleo.org/developer/getting_started/overview )
2020-08-18 06:21:24 +03:00
## 5. Contributing
2020-08-18 10:08:08 +03:00
Please see our guidelines in the [developer documentation ](https://developer.aleo.org/developer/additional_material/contributing )
2020-08-18 03:21:10 +03:00
2020-08-18 06:21:24 +03:00
Thank you for helping make Leo better!
2020-08-18 03:21:10 +03:00
2020-08-18 06:21:24 +03:00
## 6. License
2020-08-19 11:09:14 +03:00
[![License: GPL v3 ](https://img.shields.io/badge/License-GPLv3-blue.svg )](./LICENSE.md)