/ README.md
README.md
  1  <!--p align="center">
  2       <img width="1412" src="https://cdn.aleo.org/leo/banner.png">
  3  </p-->
  4  
  5  <h1 align="center">The Leo Programming Language</h1>
  6  
  7  <p align="center">
  8      <a href="https://crates.io/crates/leo-lang">
  9          <img src="https://img.shields.io/crates/v/leo-lang?style=flat-square"/>
 10      </a>
 11      <a href="https://circleci.com/gh/ProvableHQ/leo">
 12          <img src="https://circleci.com/gh/ProvableHQ/leo.svg?style=svg&circle-token=00960191919c40be0774e00ce8f7fa1fcaa20c00">
 13      </a>
 14      <a href="https://discord.gg/aleo">
 15          <img src="https://img.shields.io/discord/700454073459015690?logo=discord"/>
 16      </a>
 17      <a href="https://twitter.com/ProvableHQ">
 18          <img src="https://img.shields.io/twitter/follow/ProvableHQ?style=social"/>
 19      </a>
 20  </p>
 21  <div id="top"></div>
 22  Leo is an imperative, statically-typed programming language built for writing private applications.
 23  
 24  ## <a name='TableofContents'></a>Table of Contents
 25  
 26  * [🍎 Overview](#-overview)
 27  * [⚙️️ Build Guide](#-build-guide)
 28      * [🦀 Install Rust](#-install-rust)
 29      * [🐙 Build from Source Code](#-build-from-source-code)
 30      * [🦁 Update from Leo](#-update-from-leo)
 31      * [📦 Download using Cargo](#-download-using-cargo)
 32  * [🚀 Quick Start](#-quick-start)
 33  * [🧰 Troubleshooting](#-troubleshooting)
 34  * [📖 Documentation](#-documentation)
 35  * [🤝 Contributing](#-contributing)
 36  * [🛡️ License](#-license)
 37  
 38  
 39  ## 🍎 Overview
 40  
 41  Welcome to the Leo programming language.
 42  
 43  Leo provides a high-level language that abstracts low-level cryptographic concepts and makes it easy to 
 44  integrate private applications into your stack. Leo compiles to circuits making zero-knowledge proofs practical.
 45  
 46  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.
 47  Leo offers developers with tools to sanity check circuits including unit tests, integration tests, and console functions.
 48  
 49  Leo is one part of a greater ecosystem for building private applications on [Aleo](https://leo-lang.org/). 
 50  The language is currently in an alpha stage and is subject to breaking changes.
 51  
 52  ## ⚙️️ Build Guide 
 53  
 54  ### 🦀 Install Rust
 55  
 56  We recommend installing Rust using [rustup](https://www.rustup.rs/). You can install `rustup` as follows:
 57  
 58  - macOS or Linux:
 59    ```bash
 60    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
 61    ```
 62  
 63  - Windows (64-bit):  
 64    
 65    Download the [Windows 64-bit executable](https://win.rustup.rs/x86_64) and follow the on-screen instructions.
 66  
 67  - Windows (32-bit):  
 68    
 69    Download the [Windows 32-bit executable](https://win.rustup.rs/i686) and follow the on-screen instructions.
 70  
 71  ### 🐙 Simple build
 72  
 73  If you don't intend to work on the Leo compiler itself, you can install the latest Leo release with:
 74  
 75  ```bash
 76  cargo install leo-lang
 77  ```
 78  
 79  Now to use leo, in your terminal, run:
 80  ```bash
 81  leo
 82  ```
 83  
 84  ### 🐙 Build from Source Code
 85  
 86  If you'd like to install the latest unreleased top of tree Leo, you can buid from source code
 87  as follows:
 88  
 89  ```bash
 90  # Download the source code
 91  git clone https://github.com/ProvableHQ/leo
 92  cd leo
 93  
 94  # Install 'leo'
 95  cargo install --path .
 96  ```
 97  
 98  ### 🦁 Update from Leo
 99  
100  You can update Leo to the latest released version using the following command:
101  
102  ```bash
103  leo update
104  ```
105  
106  Note that if you were using a prerelease version of Leo, this will overwrite
107  that with the latest released version.
108  
109  Now to check the version of leo, in your terminal, run:
110  ```bash
111  leo --version
112  ```
113  
114  ## 🚀 Quick Start
115  
116  Use the Leo CLI to create a new project
117  
118  ```bash
119  # create a new `hello-world` Leo project
120  leo new helloworld
121  cd helloworld
122  
123  # build & setup & prove & verify
124  leo run main 0u32 1u32
125  ```
126  
127  The `leo new` command creates a new Leo project with a given name.
128  
129  The `leo run` command will compile the program into Aleo instructions and run it.
130  
131  Congratulations! You've just run your first Leo program.
132  
133  ## 🧰 Troubleshooting
134  If you are having trouble installing and using Leo, please check out our [guide](docs/troubleshooting.md).
135  
136  If the issue still persists, please [open an issue](https://github.com/ProvableHQ/leo/issues/new/choose).
137  
138  ## 📖 Documentation
139  
140  * [Leo ABNF Grammar](https://github.com/ProvableHQ/grammars/blob/master/leo.abnf)
141  * [Homepage](https://docs.leo-lang.org/)
142  
143  ## 🤝 Contributing
144   
145  Please see our guidelines in the [developer documentation](./CONTRIBUTING.md)
146  
147  ## 🛡️ License
148  [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](./LICENSE.md)
149  
150  <p align="right"><a href="#top">🔼 Back to top</a></p>