Skip to content

Releases: starkware-libs/cairo

v2.9.2

11 Dec 07:50
35b2992
Compare
Choose a tag to compare

What's Changed

  • Additional documentation in the corelib.
  • Circuit's u384 Serde.
  • More efficient array.get(0) by const folding.
  • Bug fixes and name changes for new cairo-execute feature.
    • Option for args to be provided as a file.
    • Fixed cases of dictionary usage.
  • Minor byte-array optimizations.
  • Fixed bug with bad types of const items.

Full Changelog: v2.9.1...v2.9.2

v2.9.1

29 Nov 10:21
3b10438
Compare
Choose a tag to compare

What's Changed

  • LS: Disable proc macro support by default by. #6768
  • LS: Fix corelib test diagnostic with proc macro server off by default. #6770

Full Changelog: v2.9.0...v2.9.1

v2.9.0

28 Nov 13:42
3c5a2f4
Compare
Choose a tag to compare

New Features

  • Global uses.
    • use a::b::* would bring the public context from a::b into the current context.
    • Not available for use on crates with edition v2023_01.
  • Basic closures:
    • let plus_1 = |x| x + 1;
      assert_eq!(plus_1(5), 6);
  • Formatter Improvements:
    • Sorting of module level items only sorts on subsequent mod statements or use statements.
    • Removal of extra unnecessary commas at the end of one line lists.
    • Addition of extra comma at the end of multi line lists.
    • Sort of internal nodes within use items.
    • Merging of subsequent use items.
    • Fix formatting precedence of for loop parts. #6371
    • Formatting long arrays with multiple elements per line.
  • Experimental feature - #[executable] attribute, to mark a function for execution generating proofs off-chain.
  • Experimental feature - Associated type bounds
    • requires experimental flag - associated_item_constraints
    • Example:
      • fn foo<T, S, +Iterator::<T>[Item: S]>(t: T) { ... } - will enforce Deref on T to be available and with associated type Item of type S.
  • const statements are now allowed within code blocks (not just as a module item).
  • use of consts and types are no allowed within code blocks.
  • Support format!("{:x}") notation for hexadecimal formatting by @remybar in #6297
  • Implement Zero for u384 by @enitrat in #6329
  • Add conescutive math operator diagnostic to the parser. #6392
  • Disabled inline macro expansion on parser errors. #6413
  • Added analyzer check for enums with starknet::Store with no default. #6459
  • Add missing TupleSplitTupleSize16 impl. in metaprogramming.cairo by @feltroidprime in #6500
  • Added Pow trait and implementations for base numeric types and usize. #6694
  • Added option to allow conflicting paths. #6743
  • Added option for renaming a storage variable path. #6758

Bug Fixes

  • Made non-copy variable not be forwarded in const folding. #6324
  • Allow defining const negative NonZero. #6425
  • Fixed self-ref type detection. #6455
  • Somewhat improved diagnostics location occuring from final solve. #6586
  • Solving current inference state prior to finding index traits. #6587
  • Fixed issue with consts defined out of order. #6625
  • Changed ap-change-only solver to be the linear solver. #6626
  • Treating all gas-vars as provided 0 if gas is disabled. #6688
  • Handling attributes on members and variants. #6738
  • Fixed issue with using a box of const as actual const. #6766

Optimizations

  • Match optimization now happens in more complex cases as well.
  • Additional cases of const-folding.
  • Optimized BitNot by BoundedInt. #6416
  • Enabled bounded-int abs optimization in i128 mul. #6417
  • Made signed int add and sub more efficient. #6465

Language Server Updates

  • Refresh project on cairo_project.toml change, register text document sync on server side. #6316
  • Fix duplicated and misplaced diagnostics. #6446
  • Add completions of struct members. #6567
  • Add "fill struct fields" code action. #6565
  • Limit module import completion to visible members. #6566
  • Add hovers for path segments. #6649
  • Support multi-root-workspaces. #6645

Other

New Contributors

Full Changelog: v2.8.5...v2.9.0

v2.8.5

18 Nov 08:34
aac3a51
Compare
Choose a tag to compare

Bug Fixes

  • Prevent crashes when using const as a statement. #6672
  • Somewhat improved diagnostics location occuring from final solve. #6586
  • Solving current inference state prior to finding index traits. #6589
  • Fixed issue with consts defined out of order. #6586

Full Changelog: v2.8.4...v2.8.5

v2.9.0-dev.0

20 Oct 14:18
Compare
Choose a tag to compare

Cairo compiler.

v2.8.4

07 Oct 11:16
f67829f
Compare
Choose a tag to compare

Bug Fixes

  • Fixed self-ref type detection. #6455

Full Changelog: v2.8.2...v2.8.4

v2.8.2

08 Sep 15:08
14b1d8c
Compare
Choose a tag to compare

Note that in order to match Scarb/compiler versions, we skip 2.8.1, which was captured by a Scarb hotfix. Up to urgent bug fixes, the compiler and Scarb are released together.

What's Changed

  • Added TryInto::<u384, {u256,u128}>. #6326
  • Properly printing panics in the cairo runner. #6333
  • Update Builtin costs. #6340
  • Implement Zero for u384. #6329
  • Enrich members caching - made accessing type members through Derefs faster . #6343

Bug Fixs

  • Made sierra generation external stack based, preventing stack overflow in extremely long functions cases. #6303
  • Made non-copy variable not be forwarded in const folding. Fixing const folding dict bug. #6324

Full Changelog: v2.8.0...v2.8.2

v2.8.0

27 Aug 11:36
9322175
Compare
Choose a tag to compare

New Features

  • Added finding unused imports. #6139 #6152
  • Using default implementations for PartialOrd::{gt,le,ge}. #6195
  • Improved diagnostics mappings. #6226 #6227 #6290
  • Added WideSquare trait. #6194
  • Made unreachable code diagnostics from errors into warnings. #6259
  • Don't report diagnostics for missing types. #6269
  • Added range operator support:
    • for x in 0..6_u8 { ... }
  • Added support for crate:: for path resolution. #6284
    • use crate::path::in::the_crate;

Bug Fixes

  • fixed loop capture of snapshoted variables. #5934
  • Dedupping parser diagnostics on file ids. #6212
  • Prevented panic on unexpected generic args for methods. #6217
  • Removed faulty diagnostic on inlining over generated functions. #6257
  • Updated sierra ap-change finding to be based on final lowering. #6258
  • Refactored Vec IndexView so it would be properly implemented. #6282
  • Removed entry-code running steps from resource calculations (on cairo-test's --print_resources). #6281

Language Server Updates

  • Faster reaction time to changes.
  • Allows getting the macro generated code pointed to by diagnostics. #6276
  • Add a command to inspect analyzed crates. #5987
  • Add support for getting struct members doc. #6145
  • Add notification on corelib mismatch. #6213
  • Look for unmanaged core in Scarb. #6248
  • Cancellation support. #6263
  • Fix hover on definition. #6255

New Contributors

Full Changelog: v2.7.1...v2.8.0

v2.7.1

13 Aug 11:31
964a02d
Compare
Choose a tag to compare

What's Changed

  • Bumped VM version. #6198
  • Added corelib version validation when loading db. #6204

Language Server Updates

  • Removed db panics - a lot less LS crashes.
  • Prevented diagnostics updates from happening in the same time - causing a smoother LS run.
  • Not adding use statements for items already in prelude.

New Features

  • Circuit's u96 now has Serde and TryInto.
  • WideMul::wide_mul can now be used as a method.

Full Changelog: v2.7.0...v2.7.1

v2.7.0

01 Aug 07:31
223ca99
Compare
Choose a tag to compare

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.
  • 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.
  • Added support for access to members of types implementing the Deref and DerefMut 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 to Call 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 and core::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, PartialEqandstarknet::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 for Option. #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 and Sqrt 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! and format! 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

Full Changelog: v2.6.4...v2.7.0