Skip to content

Releases: starkware-libs/cairo

v2.16.1-rc.0

08 Mar 13:34

Choose a tag to compare

Cairo compiler.

v2.17.0-rc.0

17 Feb 10:21
9b4d089

Choose a tag to compare

Cairo compiler.

v2.16.0

17 Feb 09:21
6a43d7c

Choose a tag to compare

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 ClosureInGlobalScope diagnostics. #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::combine implementation. #9552
  • Replaced maps enumerating all statements with Vecs. #9545
  • Reduced many map actions by refactoring CostOps. #9536
  • Made ApplyApChange inplace. #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 self of 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

Full Changelog: v2.15.0...v2.16.0

v2.16.0-rc.0

11 Feb 12:13

Choose a tag to compare

Cairo compiler.

v2.12.4

02 Feb 12:11

Choose a tag to compare

Cairo compiler.

v2.14.1-dev.3

24 Dec 13:42

Choose a tag to compare

Cairo compiler.

v2.14.1-dev.2

24 Dec 12:09

Choose a tag to compare

Cairo compiler.

v2.15.0

19 Dec 10:35
5d7ea18

Choose a tag to compare

Major Changes

  • Added edition 2025_12, and support for (@a).b being 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 cfg on items of traits not drop visibility section. #8744
  • Allowed for caching coupons as well. #8792
  • Made TakeIterator's nth implementation 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 s check and improved failure in recover_public_key. #9142

Optimizations

Compiler Runtime

  • Make all functions debug info extraction parallel. #9102

Gas Usage

  • Added and use ec_neg_nz. #8721
  • Made Neg for signed ints not based on range checks. #8746
  • Added const for EcPoint including 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-execute default layout to all_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

Full Changelog: v2.14.0...v2.15.0

v2.15.0-rc.1

17 Dec 18:16
aedae16

Choose a tag to compare

Cairo compiler.

v2.15.0-rc.0

15 Dec 15:40

Choose a tag to compare

Cairo compiler.