Skip to content

Releases: starkware-libs/cairo

v2.4.3

04 Jan 11:59
6f359c1
Compare
Choose a tag to compare

What's Changed

  • Update cairo-vm version to be "0.8.4-rc.0" specifically .#4731

Full Changelog: v2.4.2...v2.4.3

v2.4.2

31 Dec 08:22
fdd5763
Compare
Choose a tag to compare

What's Changed

  • LS Memory usage improvements - reloading the entire backend in the background periodically to reduce the memory footprint.

Full Changelog: v2.4.1...v2.4.2

v2.5.0-dev.0

26 Dec 13:15
cdbfa0a
Compare
Choose a tag to compare

Internal release for internal development purposes only.

v2.4.1

21 Dec 09:12
34923c1
Compare
Choose a tag to compare

Bug Fix

  • Made generated storage variable modules have a non-friendly name, preventing colisions on module names. #4632

Full Changelog: v2.4.0...v2.4.1

v2.4.0

06 Dec 10:22
a4de08f
Compare
Choose a tag to compare

This is the Cairo version associated with Starknet 0.13.0. Contracts written with 2.4.0 are not declarable on Starknet until the upgrade.

Major Updates

  • Added basic byte array formatting:
    • Added core::fmt::Formatter for creating a ByteArray constructively.
    • Added core::fmt::Display and core::fmt::Debug as traits describing how to write a value based on a format string.
    • Added derive for Debug for easy implementation of core::fmt::Debug.
    • Inline macros write! and writeln! - adds to a formatter: write!(f, "format_string({})", value).
    • Inline macro format! - creates a byte array: format!("format_string({})", value).
    • Inline macros print! and println! - prints a format string to stdout for debug: print!("format_string({})", value).
    • Inline macro panic! - panics with a formatted byte array: panic!("format_string({})", value).
    • Inline macro assert! - asserts condition:
      • Panic with the format string if the condition is false: assert!(cond, "format_string({})", value).
      • Panic with the condition as a bytearray if the condition is false: assert!(cond).
    • In test plugin only Inline macro assert_eq! - asserts equality condition: assert_eq!(a, b, "Extra description {}, param");
  • Contracts with sierra versions 1.4.0 and up calculate gas usage in a more efficient way.
  • Removed need for available_gas in tests not testing specific gas usage - Now using a default large value. (#4172)
    • If testing not using dynamic gas - add #[available_gas(static)] instead.
  • Added Cairo Editions, allowing introducing opt-in for features that make break existing code.
    • Currently 2 editions exist: 2023_01 (default) and 2023_10.
  • Added prelude (control for which code is in the context for all cairo code).
    • Previously - all the corelib base module was in the context of all cairo code.
    • Now - it is according to edition configured per crate:
      • 2023_01 - The prelude includes all the top level of the corelib as of the state of the corelib at release 2.3.1.
      • 2023_10 - A much smaller subset.
    • Users are encouraged to update their packages to the newest edition.
  • Updated ExecutionInfo to be an extended version.

Bug Fixes

  • Added support for bool and non copy nullable. #4340
  • Raise diagnostic on impl inference cycle. #4367
  • Made ap-changes be calculated without LP. #4250
    • Fixes various inconsistent annotations code.
    • Uses an algorithm similar to the new gas usage calculation - available only for 1.4.0 sierra declared classes.
  • Handlng zero sized locals. #4414
  • Added indirect impl support for inference. #4420
  • Remove redundant gas assertions. #4464

Optimizations

  • Removing extra store temps happening before store locals. #4173
  • Added cast for signed integers. #3623
  • Changed bytes31 casts to use libfunc upcast. #4098
  • Accessing a member of a struct does not cause all the struct to be stored. #4263
  • Avoid storing zero sized objects on the stack. #4290
  • Adding Zero-Sized handling in the Sierra-to-casm compiler for better stack merging capabilities, and more efficient casm.
  • Using efficient invmod implementation where possible. #4402

New Features

  • Added libfunc for efficient u256 inv_mod_n. #3603
  • Added Nullable deref_or method by @enitrat in #4037
  • Added Option unwrap_or and unwrap_default by @Eikix in #4203
  • Added append_array to Array. #4260
  • Added match_nullable_snapshot. #4253
  • Testing #[should_panic(expected: 'error')] supported - no need for wrapping ( ) in the case of a single var.
  • Testing #[should_panic(expected: "error")] supported - for testing panicking with byte array.
  • Add verify_signature function for secp curves. #4120
  • Zero and One traits by @enitrat in #4254
  • Support match on felt252 continuous from 0 and on values. #4284
  • Skip attributes with no related item, getting better diagnostics for later code. #4296
  • Added plugin suites. #4349
  • Better compiler performance by avoiding data copies. #4244
  • Caching compiler parser actions. #4247
  • Allocate arguments before return values, generating more easily read Sierra code. #4258
  • Move literal values validation to parser. #4295
  • Made inline macro plugins point to the inner syntax, Improving diagnostics. #4345
  • Improved Trait Mismatch diagnostic message. #4374

Others

New Contributors

Full Changelog: v2.3.1...v2.4.0

v2.4.0-rc6

26 Nov 15:28
9cffa62
Compare
Choose a tag to compare

What's Changed

  • Bug fix in inv-mod Sierra-to-casm implementaion.

Full Changelog: v2.4.0-rc5...v2.4.0-rc6

v2.4.0-rc5

26 Nov 09:05
8e0db19
Compare
Choose a tag to compare

What's Changed

  • Added additional validations for sierra compilation regarding gas costing.

Full Changelog: v2.4.0-rc4...v2.4.0-rc5

v2.4.0-rc4

23 Nov 15:45
46b323d
Compare
Choose a tag to compare

What's Changed

  • Handling expressions in write macros. #4445
  • Add support for editions to Language Server. #4450
  • Remove redundant gas assertions. #4464

Full Changelog: v2.4.0-rc3...v2.4.0-rc4

v2.1.2

21 Nov 11:15
de67906
Compare
Choose a tag to compare

What's Changed

  • Minor bug fix.

Full Changelog: v2.1.1...v2.1.2

v2.4.0-rc3

19 Nov 16:43
e45cb9b
Compare
Choose a tag to compare

What's Changed

  • Using efficient invmod implementation where possible. #4402
  • Add edition to corelib's Scarb.toml. #4404
  • Handlng zero sized locals. #4414
  • Added indirect impl support for inference. #4420

Full Changelog: v2.4.0-rc2...v2.4.0-rc3