Skip to content

Releases: AleoHQ/leo

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.

v1.9.5

28 Sep 21:38
3c3543f
Compare
Choose a tag to compare
Update release.yml

Signed-off-by: Collin Chin <16715212+collinc97@users.noreply.github.com>

v1.9.4

08 Sep 17:46
Compare
Choose a tag to compare
chore(leo): bump version for new release

v1.9.3

15 Aug 21:27
Compare
Choose a tag to compare
commit run scripts

v1.9.2

08 Aug 18:32
Compare
Choose a tag to compare
commit example files

v1.9.1

24 Jul 18:09
Compare
Choose a tag to compare
chore(leo): bump version for new release

v1.9.0

20 Jul 01:57
Compare
Choose a tag to compare
chore(leo): bump version for new release

v1.8.3

06 Jul 04:43
Compare
Choose a tag to compare
chore(leo): bump version for new release