Leo is a functional, statically-typed programming language built for writing private applications.
## Table of Contents
* [π Overview](#-overview)
* [βοΈοΈ Build Guide](#-build-guide)
* [π¦ Install Rust](#-install-rust)
* [π Build from Source Code](#-build-from-source-code)
* [π Quick Start](#-quick-start)
* [π§° Troubleshooting](#-troubleshooting)
* [π Documentation](#-documentation)
* [π€ Contributing](#-contributing)
* [β€οΈ Contributors](#-contributors)
* [π‘οΈ License](#-license)
## π 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](https://aleo.org/).
The language is currently in an alpha stage and is subject to breaking changes.
## βοΈοΈ Build Guide
### π¦ 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.
### π Build from Source Code
We recommend installing Leo by building from the source code as follows:
```bash
# Download the source code
git clone https://github.com/AleoHQ/leo
cd leo
# Install 'leo'
$ cargo install --path .
```
Now to use leo, in your terminal, run:
```bash
leo
```
## π Quick Start
Use the Leo CLI to create a new project
```bash
# create a new `hello-world` Leo project
leo new helloworld
cd helloworld
# build & setup & prove & verify
leo run
```
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](docs/troubleshooting.md).
If the issue still persists, please [open an issue](https://github.com/AleoHQ/leo/issues/new/choose).
## π Documentation
* [Hello World - Next Steps](https://developer.aleo.org/leo/hello)
* [Leo Language Documentation](https://developer.aleo.org/leo/language)
* [Leo ABNF Grammar](https://github.com/AleoHQ/grammars/blob/master/leo.abnf)
* [Homepage](https://developer.aleo.org/overview/)
## π€ Contributing
Please see our guidelines in the [developer documentation](./CONTRIBUTING.md)
## β€οΈ Contributors
Thank you for helping make Leo better!
[What do the emojis mean?π§](https://allcontributors.org/docs/en/emoji-key)
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
## π‘οΈ License
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](./LICENSE.md)