Releases: ProvableHQ/leo
Releases · ProvableHQ/leo
v1.12.0
Announcements
- Leo v1.12.0 will be the last
testnet3compatible 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
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/registrystructure in the~/.aleofile system to store.aleofiles 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
This release contains:
SHA3hash functions.Keccakhash functions.- Constant declarations.
self.signerandself.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.signerisuser.self.callerisuser.
In program B:
self.signerisuser.self.callerisA.
Note what was previously self.caller is now self.signer.
v1.9.5
Update release.yml Signed-off-by: Collin Chin <16715212+collinc97@users.noreply.github.com>
v1.9.4
chore(leo): bump version for new release
v1.9.3
commit run scripts
v1.9.2
commit example files
v1.9.1
chore(leo): bump version for new release
v1.9.0
chore(leo): bump version for new release
v1.8.3
chore(leo): bump version for new release