v2.7.0
This is the Cairo version associated with Starknet 0.13.2. Contracts written with 2.7.0 are not declarable on Starknet until the upgrade.
Major Updates
- Trait and Impl items (types, constants, and impls):
- Example usage for types would be
Iterator::Item
. - Example usage for constants would be
NumericBounds::MAX
(does not exist just yet). - Example usage for impls would be
IntoIterator::Iterator
.
- Example usage for types would be
- SHA256 support.
- Modulus Circuit Support - allows for efficient calculations of large modular computations without branches.
- Storage path and pointer concepts.
- Instead of only being able to access storage in contract and component context -
StoragePath
StoragePointer
are supplied, allowing for functions out of this scope to access these, as well as allowing for recursive definitions of maps and other structures.
- Instead of only being able to access storage in contract and component context -
- Added support for access to members of types implementing the
Deref
andDerefMut
traits.
New Features
- Fixed sized array support for
.span()
allowing accessing it efficiently as if it was an array. - Add flag to enable gas to cairo-test. #5288
- Added option to print used resources for tests. #5266
- Added fmt for signed int. #5308
- feat: Default impls for signed integer types by @milancermak in #5312
- Added
compiler_error!
inline macro for external plugin development. #5357 - Add
Copy
trait toCall
by @delaaxe in #5372 - Added handling testing option for get-block-hash. #5368
- Add
phantom
attribute - making a type unconstructible. #5381 - Added implementation for
/
and%
for signed integers. - feat: checked math traits by @enitrat in #5410
- Made all generated code have a mapped originating code - basically all diagnostics no longer points to generated files. #5497
- feat: result ok and err methods by @enitrat in #5565
- Added multi-pop for span. #5588
- feat: saturating traits by @enitrat in #5621
- Updated
Index
traits and deprecated the old ones. #5674 - Added
core::iter::Iterator
andcore::iter::IntoIterator
traits. - Added
*Assign
ops and Depracated*Eq
ops. #5679 - feat: add PartialOrdSnap impl by @tdelabro in #5723
- feat: impl Into for Span/Array pair by @tdelabro in #5650
- Added automatic support for tuples up to size 10 of
Copy
,Drop
,Clone
Destruct
,Default
, 'Debug,
Serde,
PartialEqand
starknet::Store`. - Made list of allowed derives explicit. #5804
- Added keccak on byte-array. #5877
- For loops full support - on any type implementing
IntoIterator
trait. - Require destruct instead of drop for unwrapping. #5902
- Added
Default
forOption
. #5920 - Allow for implicit impls for impl impl items. #5915
- Add 2024_07 edition. #5923
- Vastly reducing the amount of items in the prelude.
- Not auto adding
pub
for starknet storage members.
- Better diagnostics for types missing
::
in expression context. #5926 - Vastly reduce diagnostics that are less useful when others appear. #5930
- Add compiler flag to disable
non-always
inlining by @javra in #5911 - Faster tests when not in
profiling
mode. #6014 - Added
WideMul
andSqrt
traits. #6017 - Added diagnostics for conflicting storage members.
- Added
core::num::traits::Bounded
. #6063
Bug Fixes
- Added destructors in cycle detectors. #5335
- Testing throws an error upon redeployment of the same contract. #5365
- Preventing box values from being const-folded. #5416
- Fixed extra gas reduction panic. #5437
- Fixed loop inside loop issue. #5441
- Avoid panics in
print!
andformat!
macros when missing parens. #5470 - Made feedback set algorithm not ignore the nodes post cycle. #5539
- Fix formatting of comments following an indented block. by @gilbens-starkware in #5878
- Fixing formatting of long unsplittable words. #5906
- Fixed issue #5967 . #5968
- Added storage
Vec
. #5974 - Filtering duplicated diagnostics. #6001
- Added support for tuple auto implementations for up to size 15. #6013
- Fixed generic parameters cycle detection. #6094
Deprecations
- Deprecation warning for
consteval_int!
. #6019 - Deprecation warning for most direct integer libfuncs (use the relevant trait instead).
- Updated
Index
traits and deprecated the old ones. #5674 - Added
*Assign
ops and Depracated*Eq
ops. #5679 - Added
core::integer::BoundedInt
trait. #6064
Language Server Updates
- Code action for unused variable. #5214
- Show rust doc when hovering over things. #5225
- Catch query panics when refreshing diagnostics. #5469
- Fix hover definition lookup logic. #5603
- Added cairo icon to ensure all .cairo extensions are recognisable by @Utilitycoder in #5665
- Implement hover definition for variables & params. #5806
- Show path to item definition parent item in hovers. #5819
- Provide trait/impl/struct/enum context for item hovers. #5821
- Run Cairo formatter over item signatures in hover. #5822
- Added documentation for inline macros.
New Contributors
- @barabanovro made their first contribution in #5157
- @jujube made their first contribution in #5369
- @tcoratger made their first contribution in #5517
- @cario-dev made their first contribution in #5554
- @Utilitycoder made their first contribution in #5665
- @seay404 made their first contribution in #5696
- @AtomicInnovation321 made their first contribution in #5707
- @lido333 made their first contribution in #5726
- @healthyyyoung made their first contribution in #5781
- @dependabot made their first contribution in #5794
- @petersssong made their first contribution in #5818
- @jjjike2021 made their first contribution in #5881
- @dan-starkware made their first contribution in #5985
Full Changelog: v2.6.4...v2.7.0