Releases: starkware-libs/cairo
Releases · starkware-libs/cairo
v2.16.1-rc.0
Cairo compiler.
v2.17.0-rc.0
Cairo compiler.
v2.16.0
Major Changes
-
Added placeholder error codes for all diagnostics. #9302
-
Contextualized paths for shorter and more readable diagnostics. #9265
Diagnostic messages now show shorter, context-aware paths making errors easier to understand.
- Created a dataflow analysis framework and migrated backward analysis. #9533
Bug Fixes
- Removed intermediate names from event generated code. #9638
- Made formatter keep
;when it causes ambiguity. #9592 - Fixed mishandling of
Self::in impl-const-items. #9562 - Fixed const-impl-item type-diagnostics span. #9561
- Avoided duplicate
ClosureInGlobalScopediagnostics. #9349 - Fixed substorage diagnostic formatting. #9242
- Made internal version dependency fully-fixed. #9313
- Fixed full path for functions in a generic impl. #9267
Optimizations
Compiler Runtime
- Made casm builder build algorithm linear. #9489
- Improved stack-tracking algorithm. #9491
- Vastly reduced the number of clones for building a Sierra program. #9467
- Simplified
GasInfo::combineimplementation. #9552 - Replaced maps enumerating all statements with Vecs. #9545
- Reduced many map actions by refactoring CostOps. #9536
- Made
ApplyApChangeinplace. #9448 - Simplified decompression by using bit alignment of encoding. #9607
- Removed many interim vectors for extern fn processing. #9569
- Made const-folding VarInfo cloning shallow by rc. #9304
Gas Usage
- Optimized sha256 padding code. #9360
- Used iterator and BoundedInt for generating keccak input. #9425
- Reboxing now works recursively and applies optimization at deconstruct statement. #9338
Other Changes
- Added cost-token for blake. #9506
- Allow immediate consumption of
ref selfof temporaries. #9565 - Made single variant matches not create branch align. #9618
- Improved Sierra debug info serde. #9525
- Updated salsa version to 0.25.2. #9280
- Extensive documentation improvements across the reference docs.
New Contributors
- @andrewbig655 made their first contribution in #9163
- @BigTennEd223 made their first contribution in #9169
- @0xlupin made their first contribution in #9193
- @grumi54 made their first contribution in #9178
- @PixelPil0t1 made their first contribution in #9200
- @boqishan made their first contribution in #9212
- @santamasa made their first contribution in #9213
- @lmorett1 made their first contribution in #9238
- @cmende made their first contribution in #9251
- @Aleksandr1732 made their first contribution in #9281
- @esorense made their first contribution in #9286
- @skinnypete65 made their first contribution in #9310
- @JayeTurn made their first contribution in #9325
- @cwhitak3r made their first contribution in #9371
- @MrEeeeet111 made their first contribution in #9502
- @LarryArnault45 made their first contribution in #9546
- @alizfara112 made their first contribution in #9568
- @Evelina331 made their first contribution in #9591
- @MidSage0614 made their first contribution in #9616
Full Changelog: v2.15.0...v2.16.0
v2.16.0-rc.0
Cairo compiler.
v2.12.4
Cairo compiler.
v2.14.1-dev.3
Cairo compiler.
v2.14.1-dev.2
Cairo compiler.
v2.15.0
Major Changes
- Added edition 2025_12, and support for
(@a).bbeing non-snap. #8853- If edition enabled - member access of a structs - returns the already desnapped value of the member.
struct A {
a: Array<felt252>,
b: felt252,
}
// on V2025_12:
fn v2025_12(a: @A) {
let _: @Array<felt252> = @a.a;
let _: @Array<felt252> = @(@a).a;
let _: @@Array<felt252> = @@(@a).a;
let _: felt252 = a.b;
let _: @felt252 = @a.b;
let _: @felt252 = @(@a).b;
let _: @@felt252 = @@(@a).b;
}
// prior to V2025_12:
fn old(a: @A) {
let _: @Array<felt252> = a.a;
let _: @@Array<felt252> = (@a).a;
let _: @felt252 = a.b;
let _: @@felt252 = (@a).b;
}
- Made
_a valid placeholder for types. #9066
// Now compiles.
let x: [_; 3] = [1, 4, 7_felt252];
Bug Fixes
- Made sure
cfgon items of traits not drop visibility section. #8744 - Allowed for caching coupons as well. #8792
- Made
TakeIterator'snthimplementation more exact. #8849 - Const-eval logical operators must evaluate rhs on non-early return by @phrwlk in #8898
- Decide the number of snapshots by the last member of the deref chain. #8971
- Preventing handling bad-paths for plugin-macros. #9068
- Handled placeholders that weren't met during expansion as the expected empty repeatition. #9082
- Refactored
scheck and improved failure inrecover_public_key. #9142
Optimizations
Compiler Runtime
- Make all functions debug info extraction parallel. #9102
Gas Usage
- Added and use
ec_neg_nz. #8721 - Made
Negfor signed ints not based on range checks. #8746 - Added const for
EcPointincluding non-zero. #8750 - Allow shallow specialization of recursive functions. #8717
- (optimization): automatically detecting reboxing of struct member and applying struct_box_deconstruct libfunc. #8768
- (optimization): Reboxing also applied on Box of snapshots. #8954
- (optimization): Reboxing now also works on whole var reboxing. #8994
- canonicalize specilize args to always use SpecializationArg::Struct/Enum. #9021
- added specialization for recursive functions. #8881
- added specialization for tuples and fixed size arrays. #9087
Code Size
Other Changes
- Added const-folding for
bounded_int_trim_*functions. #8747 - Improve negative impl inference. #8748
- Added unglueing logic for
>=after generic args. #8789 - Made generated embeddable wrappers points to the embeddable attrs. #8791
- Enforce only type or const generic parameters for negative impls. #8793
- Removed non-OS panics from
is_eth_signature_valid. #8934 - Change
cairo-executedefault layout toall_cairo_stwo. #8961 - Override mapping from generated function name to attribute. #8958
- Improved var-based inference diagnostics locations. #9006
- Added support for size of fixed array to be impl-const. #9033
- Added basic sierra-support for
get_execution_info_v3_syscall. #8946
New Contributors
- @efcking made their first contribution in #8716
- @weifangc made their first contribution in #8751
- @justinbay made their first contribution in #8738
- @0xwitty made their first contribution in #8812
- @hexcow made their first contribution in #8813
- @maradini77 made their first contribution in #8814
- @prestoalvarez made their first contribution in #8830
- @liuyueyangxmu made their first contribution in #8833
- @0xbryer made their first contribution in #8839
- @barajeel made their first contribution in #8842
- @annwag made their first contribution in #8843
- @fragchain made their first contribution in #8846
- @defitricks made their first contribution in #8854
- @brawncode made their first contribution in #8869
- @lipperhey made their first contribution in #8871
- @operagxsasha made their first contribution in #8879
- @bobtajson made their first contribution in #8873
- @tn0vak made their first contribution in #8882
- @JoshMa-mq made their first contribution in #8892
- @ursulabauer made their first contribution in #8902
- @Elena343-ai made their first contribution in #8908
- @Maximilian199603 made their first contribution in #8912
- @jcastil0 made their first contribution in #8910
- @fr0mano made their first contribution in #8918
- @meship-starkware made their first contribution in #8931
- @0xcharry made their first contribution in #8939
- @Ocheretovich made their first contribution in #8950
- @strmfos made their first contribution in #8952
- @xiaolinny made their first contribution in #8959
- @0xgordy made their first contribution in #8990
- @bravesasha made their first contribution in #9015
- @changgesi made their first contribution in #9017
- @defiberrys made their first contribution in #9036
- @atorrers made their first contribution in #9078
- @Radovenchyk made their first contribution in #9079
- @AaronAjose made their first contribution in #9077
- @MoNyAvA made their first contribution in #9100
- @atakoraka made their first contribution in #9107
- @IrshadKohl51 made their first contribution in #9109
- @isagi-y22 made their first contribution in #9110
- @zkpepe made their first contribution in #9139
Full Changelog: v2.14.0...v2.15.0
v2.15.0-rc.1
Cairo compiler.
v2.15.0-rc.0
Cairo compiler.