Skip to content

Releases: starkware-libs/cairo

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.

v2.14.1-dev.1

14 Dec 18:12

Choose a tag to compare

Cairo compiler.

v2.14.1-dev.0

25 Nov 13:30

Choose a tag to compare

Cairo compiler.

v2.14.0

24 Nov 13:47
5836976

Choose a tag to compare

Breaking Changes

  • starknet::secp256_trait::{recover_public_key, is_valid_signature} now check that r and s are in a bounded range.

Other changes

  • Added ByteSpan PartialEq + Debug for testing. #8564
  • Fixed doc of Product function. #8606
  • Made egcd algorithm more flexible to work for signed numbers as well. #8676

Optimizations

Compiler Runtime

  • Making casm-builder more efficient. #8573

Gas Usage

  • Adding support to felt add mul and sub in constant propogation. #8594
  • felt252_div constant propogation support. #8619
  • Added const-folding of enums. #8651
  • Made const-folding with middle snapshots work. #8652
  • Allowed const calculations of felt252 to u256 and u128. #8681
  • add support for specailizing functions with partial structs. #8664
  • partial specialization for enums arguments. #8678

Code Size

  • Optimized Felt252Span deserialization using less panic code. #8656
  • Removed unwraps and made them into ? for non-OS-fails. #8663
  • Minor code simplification of ecdsa. #8677

New Contributors

Full Changelog: v2.13.1...v2.14.0

v2.14.0-rc.0

19 Nov 10:10

Choose a tag to compare

Cairo compiler.

v2.13.1

28 Oct 14:56
4c71405

Choose a tag to compare

What's Changed

  • Made all maps that may have a large number of elements be hash-maps. #8579
  • Refactored and further tested storage of Result and Option. #8583
  • Updated inv-mod to be consistent with existing u256-inv-mod impl. #8584

Full Changelog: v2.13.0...v2.13.1