Abstract syntax tree (AST) for the Leo programming language


Keywords
cryptography, zero-knowledge, leo, programming-language, aleo, compiler, zksnarks
License
GPL-3.0

Documentation

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
git clone https://github.com/AleoHQ/leo
cd leo

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

Now to use leo, in your terminal, run:

leo

🚀 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

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

Thank you for helping make Leo better!
What do the emojis mean?🧐

d0cd
d0cd

💻 🚧 💬 👀
Collin Chin
Collin Chin

💻 📖 🚧 👀
Howard Wu
Howard Wu

🤔 🚧 🔬 👀
Alessandro Coglio
Alessandro Coglio

📖 🚧 💬 👀
Eric McCarthy
Eric McCarthy

📖 🚧 💬 👀
Raymond Chu
Raymond Chu

🤔 💻 🔬
ljedrz
ljedrz

🐛 💻 💬
aharshbe
aharshbe

🐛 💬
Mazdak Farrokhzad
Mazdak Farrokhzad

💻
Damir Shamanaev
Damir Shamanaev

💻
gluax
gluax

💻
0rphon
0rphon

💻
Max Bruce
Max Bruce

💻
Sergey Isaev
Sergey Isaev

💻
François Garillot
François Garillot

💻
Weikeng Chen
Weikeng Chen

🔬
sptg
sptg

🐛 💻
LouisWT
LouisWT

💻
yuliyu123
yuliyu123

💻
detailyang
detailyang

💻
Tom-OriginStorage
Tom-OriginStorage

💻
omahs
omahs

💻
Haruka
Haruka

🐛 💻
swift-mx
swift-mx

💻
Francisco Strambini
Francisco Strambini

💻
Daniel Gushchyan
Daniel Gushchyan

r4keta
r4keta

liolikus
liolikus

🖋
evgeny-garanin
Evgeny Garanin

NickoMenty
NickoMenty

eug33ne
eug33ne

Nininiao
Nininiao

CTurE1
CTurE1

colliseum2006
colliseum2006

boaaa
boaaa

HausenUA
HausenUA

TerrenceTepezano
TerrenceTepezano

Zabka0x94
Zabka0x94

DarronHanly1
DarronHanly1

penglang
FengXiaoYong

KassieSteinman
KassieSteinman

MaishaAzim
MaishaAzim

Moria-Bright
Moria Bright

Bradshow
Bradshow

SilvaHoffarth
SilvaHoffarth

Elaine1015
Elaine1015

vasylbelyi
vasylbelyi

EgorMajj
EgorMajj

RNS23
RNS23

VoinaOleksandr
VoinaOleksandr

alexprimak58
alexprimak58

Asimous22
Asimous22

Marik0023
Marik0023

JanSchluter
JanSchluter

AminaPerrigan
AminaPerrigan

Utah8O
Utah8O

ApoloniaResseguie
ApoloniaResseguie

NobukoCausley
NobukoCausley

ololo70
ololo70

evangelion4215
evangelion4215

boodovskiy
boodovskiy

BULVER777
BULVER777

Slashxdd
Kyrylo Budovskyi

sayber1717
sayber1717

BudiSwy
BudiSwy

romacll
romacll

habaroff18203
habaroff18203

LennyPro6
LennyPro6

n0d4
n0d4

grossbel12
grossbel12

Orliha
Orliha

darjin
darjin

🖋
romacll
romacll

aleoweb123
aleoweb123

arosboro
Andrew Rosborough

🖋
R-Demon
R-Demon

sryykov
sryykov

himera0482
himera0482

encipher88
encipher88

Likaenigma
Likaenigma

bartosian
bartosian

bendenizrecep
Recep Deniz

Saimon87
Saimon87

BannyNo
Big Ixela

Mistmorn0
Denys Riabets

chipqp
Dmytro Groma

VolodymyrRudoi
Volodymyr Rudoi

petrofalatyuk
Petro Falatiuk

eleven-pixel
ElsaChill

gsulaberidze
gsulaberidze

kegvorn
kegvorn

totoro_me
totoro_me

timchinskiyalex
timchinskiyalex

DimaSpys
DimaSpys

dimbirch
dimbirch

YuraPySHIT
YuraPySHIT

annabirch
annabirch

baxzban
baxzban

nnewera3
nnewera3

LabLinens
LabLinens

drimartist
drimartist

savarach
savarach

padjfromdota
padjfromdota

gglorymen
gglorymen

KrisMorisBoris
KrisMorisBoris

WebDuster
WebDuster

Tasham2008
Tasham2008

760AnaPY
760AnaPY

imshelest
imshelest

mirmalnir
mirmalnir

AnatoliMP
AnatoliMP

ihortym
ihortym

Vplmrchk
Vplmrchk

anrd04
anrd04

Gonruk
Gonruk

ur4ix
ur4ix

AllininanQ
AllininanQ

Juliaaa26
Juliaaa26

Hacker-web-Vi
Hacker-web-Vi

Mickey1245
Mickey1245

anastese
anastese

NastyaTR97
NastyaTR97

andriypaska
andriypaska

dendistar
dendistar

kartaviy223
kartaviy223

BluePEz
BluePEz

Ihorika2
Ihorika2

taraspaska
taraspaska

Ragnaros12q
Ragnaros12q

StasFreeman
StasFreeman

McTrick
McTrick

Dimaleron
Dimaleron

Boruto11dw
Boruto11dw

NOne790
NOne790

Golldirr
Golldirr

dmytriievp
dmytriievp

InfernoCyber55
InfernoCyber55

dexxeed
dexxeed

kumarman1
kumarman1

nika040
nika040

Collins44444444444444
Collins44444444444444

aavegotch
aavegotch

ssvitlyk
Sergiy Svitlyk

Mariia077
Mariia077

svitlykihor
svitlykihor

dmytrohayov
Dmytro Haiov

Annnnnnnnnnna
Annnnnnnnnnna

turchmanovich101
turchmanovich101

Zasmin12ve
Zasmin12ve

timfaden
timfaden

MerlinKlasnuy
MerlinKlasnuy

erikprimerov
erikprimerov

Andreewko
Andreewko

dxungngh
Daniel Nguyen

igorstrong
igorstrong

kramarmakarena
Kramar Maxim

boichka
Marina Boyko

YaakovHuang
YaakovHuang

viktoria3715
viktoria3715

Hello-World99bit
Hello-World99bit

Alan-Zarevskij
Alan-Zarevskij

Huliko
Huliko

tommy1qwerty
tommy1qwerty

sueinz
sueinz

Julia-path
Julia-path

web3tyan
Diana Shershun

mcnk020
mcnk020

Edgar0515
Edgar0515

Ju1issa
Ju1issa

MGavrilo
MGavrilo

YujiROO1
YujiROO1

yuriyMiller
yuriyMiller

tetianapvlnk
Tetiana Pavlenko

MGavrilo
MGavrilo

vizimnokh
vizimnokh

oleksvit
Oleksii Svitlyk

t3s1
t3s1

BloodBand
BloodBand

thereisnspoon
thereisnspoon

InfernoCyber55
InfernoCyber55

Pikkorio1
Pikkorio1

quertc
quertc

Yuriihrk
Yuriihrk

stsefa
stsefa

alanharper
Alan Harper

imanbtc
imanbtc

Oleksandr7744
Oleksandr7744

MarikJudo
MarikJudo

Piermanenta
Piermanenta

Karoliniio
Karoliniio

aixen1009
Olga Svitlyk

khanaya9845
khanaya9845

OlgaBurd
OlgaBurd

YaakovHunag920515
YaakovHunag920515

Songoku1691
Songoku1691

Timssse
Timssse

LLoyD1337
LLoyD1337

VeranOAS
VeranOAS

kirileshta
kirileshta

dimapr1
dimapr1

senol10
senol10

hoangsoncomputer
hoangsoncomputer

Timssse
Timssse

Erskine2022
Erskine2022

CTurE1
CTurE1

HoratioElise
HoratioElise

Add your contributions

This project follows the all-contributors specification. Contributions of any kind welcome!

🛡️ License

License: GPL v3