Overview
This document tracks the version history of Leo, including new features, bug fixes, and breaking changes.Leo follows semantic versioning. The current stable version is 3.4.0.
Version 3.4.0 (Current)
Highlights
- Rowan-based parser for improved error recovery and IDE support
- Enhanced type checking for complex expressions
- Improved code generation optimizations
- Better error messages with more context
Parser Improvements
Rowan Integration- Migrated to rowan-based parser for better error handling
- Improved syntax error recovery
- Better support for IDE features (autocomplete, go-to-definition)
- Preserved whitespace and comments in parse tree
- More descriptive parser errors with context
- Better suggestions for common mistakes
- Improved error spans pointing to exact locations
Language Features
Type System- Enhanced type inference in complex expressions
- Better handling of composite types
- Improved const evaluation
- Complete ChaCha random number generation support
- Mapping operations in finalizers
- Block height access in finalizers
Compiler
Optimizations- Dead code elimination improvements
- Better constant folding
- Reduced circuit complexity for common patterns
- Improved register allocation
- More efficient Aleo instruction generation
- Reduced redundant operations
- Better handling of complex control flow
Tooling
Leo CLI- Improved
leo buildperformance - Better
leo runoutput formatting - Enhanced
leo testframework leo fmtimprovements
- Faster compilation times
- Better error reporting
- Improved documentation
- More example programs
Bug Fixes
- Fixed type checking edge cases in tuple destructuring
- Resolved issues with nested struct access
- Corrected mapping operation behavior in finalizers
- Fixed parser issues with complex expressions
- Resolved integer literal parsing edge cases
Breaking Changes
None in this release.Version 3.3.x
Version 3.3.0
Language Features- Introduction of finalizer functions
- Mapping support for on-chain storage
- Enhanced record types
- Loop unrolling improvements
- Better type checking for finalizers
- Improved error messages
- Finalizer syntax changes
- Record syntax updates
Version 3.2.x
Version 3.2.0
Language Features- Vector type support
- Optional type introduction
- Future type for deferred computation
- Enhanced optimization passes
- Better dead code elimination
- Improved static analysis
leo disassemblecommand- Better test framework
- Improved CLI error handling
Version 3.1.x
Version 3.1.0
Language Features- Tuple destructuring
- Enhanced array operations
- Improved string handling
- Faster compilation
- Better error recovery
- Improved type inference
- Fixed array indexing edge cases
- Resolved struct field access issues
- Corrected type casting behavior
Version 3.0.x
Version 3.0.0
Major Release This was a major rewrite with significant breaking changes. Language Features- Complete syntax overhaul
- Records for private state
- Mappings for public state
- Finalizers for on-chain execution
- New type system
- Complete rewrite in Rust
- Multi-pass architecture
- Better optimization
- Improved error messages
- Syntax changes throughout
- New program structure
- Record and mapping introduction
- Function signature changes
Version 2.x (Legacy)
Version 2.0.0
Historical Release Early version of Leo with basic functionality. Features- Basic type system
- Simple function definitions
- Circuit compilation
Migration Guides
Migrating to 3.4.x from 3.3.x
No breaking changes. Simply update:Migrating to 3.x from 2.x
Major syntax changes required. Key updates: Program StructureDeprecation Notices
Planned for Future Versions
The following features are under consideration for deprecation:- Legacy syntax compatibility mode (if added)
- Certain error codes may be consolidated
Upcoming Features
Roadmap
Language- Enhanced generic support
- Trait system
- More built-in functions
- Improved string handling
- Incremental compilation
- Better optimization passes
- Parallel compilation
- Enhanced error recovery
- Integrated debugger
- Profiler for circuit complexity
- Package manager improvements
- Better IDE integration
- Hash functions (Poseidon, SHA-256)
- Signature verification utilities
- Merkle tree operations
- More cryptographic primitives
Roadmap items are subject to change based on community feedback and priorities.
Release Schedule
Leo follows a regular release schedule:- Major versions (X.0.0): As needed for breaking changes
- Minor versions (3.X.0): Monthly with new features
- Patch versions (3.4.X): As needed for bug fixes
Version Support
| Version | Status | Support Until |
|---|---|---|
| 3.4.x | Current | Ongoing |
| 3.3.x | Maintenance | 6 months after 3.4.0 |
| 3.2.x | End of Life | No longer supported |
| 3.1.x | End of Life | No longer supported |
| 3.0.x | End of Life | No longer supported |
| 2.x | End of Life | No longer supported |
How to Update
Using Leo CLI
Using Cargo
Verify Version
Staying Informed
Release Announcements
Stay up to date with Leo releases:- GitHub Releases: https://github.com/ProvableHQ/leo/releases
- Discord: Aleo Discord #announcements
- Twitter: @ProvableHQ
Security Updates
Critical security updates are announced via:- GitHub Security Advisories
- Discord security channel
- Direct email to maintainers
Contributing to Releases
Help shape future Leo versions:- Feature Requests: Open issues on GitHub
- Bug Reports: File detailed bug reports
- Pull Requests: Contribute code improvements
- Testing: Test beta releases and provide feedback
Release Notes Archive
For detailed release notes of all versions, see:- GitHub Releases: https://github.com/ProvableHQ/leo/releases
- CHANGELOG.md: In the Leo repository
Version History Summary
Version dates are illustrative. Check GitHub releases for actual release dates.
Related Resources
GitHub Releases
Official release notes
Contributing
Help build Leo
Troubleshooting
Common issues and solutions
Installation
Install the latest version