Skip to content

Releases: ProvableHQ/leo

v2.4.1

17 Dec 21:33
Compare
Choose a tag to compare

Announcements

Check out our new workshop and try out the Leo debugger!

What's Changed

New Contributors

Full Changelog: v2.4.0...v2.4.1

v2.4.0

03 Dec 20:55
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.3.1...v2.4.0

v2.3.1

20 Nov 00:15
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v2.3.0...v2.3.1

v2.3.0

19 Sep 00:36
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.2.0...v2.3.0

v2.2.0

04 Sep 22:26
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v2.1.0...v2.2.0

v2.1.0

07 Aug 05:19
Compare
Choose a tag to compare
chore(leo): bump version for new release

v2.0.0

v1.12.0

13 May 21:13
ccea68a
Compare
Choose a tag to compare

Announcements

  • Leo v1.12.0 will be the last testnet3 compatible version of Leo.

Language

Remove deprecation warning for leo build
Add opcode support for self.address, network.id and hello.aleo
Fix conditional execution in finalize
Fix external struct usability

CLI

Compatibility Notes

Internal Changes

Other

v1.11.0

30 Mar 01:32
Compare
Choose a tag to compare

Enhanced Dependency System

The latest update dramatically simplifies the development of Leo projects with enhanced support for external calls to both on-chain and local programs.

  • Breaking Change: Now use import foo.aleo instead of import foo.leo, and attach the dependency using the CLI.
  • New .aleo/registry structure in the ~/.aleo file system to store .aleo files from the Aleo network.
  • Ability to automatically retrieve network dependencies and build complicated nested dependency structures.
// Pull credits.aleo as a dependency
leo add -n credits

// Add a local dependency named foo.aleo at path ../foo
leo add -l ../foo foo

// Attach dependencies in the Leo file
import credits.aleo
import foo.aleo

Reading External Mappings

Leo allows users to read external mappings.

let val:u32 = Mapping::get(token.aleo/account, 0u32);
let val_2:u32 = Mapping::get_or_use(token.aleo/account, 0u32, 0u32);

Relaxed Shadowing

Local mapping, struct, record and function names can now overlap with external objects.

let bar: hello.aleo/foo = bye.aleo/foo(foo {a: 1u32, b: 1u32});

v1.10.0

20 Oct 04:23
Compare
Choose a tag to compare

This release contains:

  • SHA3 hash functions.
  • Keccak hash functions.
  • Constant declarations.
  • self.signer and self.caller.
  • compatibility updates with snarkVM 0.16.1.

SHA3 and Keccak

Leo supports 235, 384, and 512 bit variants for SHA3 and Keccak.

let a: address = SHA3_256::hash_to_address(input);
let b: u8 = SHA3_384::hash_to_u8(input);
let c: field = SHA3_512::hash_to_field(input);
let d: group = Keccak256::hash_to_group(input);
let e: i8 = Keccak384::hash_to_i8(input);
let d: u16 = Keccak512::hash_to_u16(input);

Constant Declarations

Leo allows users to declare global and local constants.

const START: u8 = 0u8;

self.signer and self.caller

Leo supports:

  • self.signer, which is the user that originated the program call.
  • self.caller, which is the user or program that called the current function.

Suppose that a user calls program A which calls program B.
In program A:

  • self.signer is user.
  • self.caller is user.

In program B:

  • self.signer is user.
  • self.caller is A.

Note what was previously self.caller is now self.signer.