Cairo v2.20.0

Release

Version
v2.20.0
Repository
starkware-libs/cairo

Release notes

What's Changed

Highlights

• Tuple element access via t.0 syntax. Tuple elements can now be accessed positionally with dot notation (t.0, t.1, …), including nested access, assignments, ref arguments, and access through snapshots. #10111 #10153

• #[panic_with] is deprecated. Using the attribute without opting in via #[feature("deprecated-panic-with")] now emits a warning; prefer plain calculations (now supported in const context) or explicit .expect(...) calls. As part of this, the generated wrapper functions were removed from the corelib — see the breaking change under Corelib below. #10096

• Faster incremental recompilation. Syntax node ids are now kept stable across reparses and plugin-generated files are cached, restoring salsa early cutoff so a structure-preserving edit no longer re-walks the rest of the file — noticeably speeding up the language server. #10105 #10164

Features

• Support tuple element access via t.0 syntax. #10111 #10153

• Deprecated the #[panic_with] attribute; opt in with #[feature("deprecated-panic-with")] to silence the warning. #10096

• Warn (E2201) when an extern type or function is declared outside the core library; suppress with #[allow(extern_outside_corelib)]. #10147

• Support struct-update (..base) syntax in const expressions. #10136

• Evaluate !, &, |, and ^ on bool operands in const contexts. #10212

• Populate MacroPluginMetadata::allowed_features so macro plugins can honor #[feature(...)]. #10094

Bug Fixes

• Reject types that are (or transitively contain) a phantom type when used as values, in signatures, or as array elements, including nested and cyclic cases (E2019), instead of silently compiling or hitting an ICE. #10120 #10169 #10171 #10175

• Disable Felt252Dict construction for illegal value types. #10118

• Emit a diagnostic (E2075) for glob (*) use items in statement position instead of silently accepting them. #10148

• Reject #[default] on a struct member instead of silently ignoring it. #10228

• Fixed derive(Hash)/derive(Serde) codegen for enums, and sanitized the generated hash/serde implementations. #10080 #10117

• Emit derive member bounds for associated-type-path members. #10176

• Validate the quotient in const DivRem to avoid a signed MIN/-1 ICE. #10140

• Substitute the result of generic const function calls with the concrete call-site types. #10143

• Include captured_types in the closure occurs-check. #10086

• Don't ICE on a Deref impl with the wrong number of associated types. #10183

• Don't ICE when an impl provides an associated item of the wrong kind. #10206

• Report every invalid associated-item constraint, not just the first. #10207

• Don't ICE on a wrong generic-argument count reached through a local use alias. #10211

• Report a glob name collision of non-visible items as not-visible rather than ambiguous. #10209

• Apply feature/visibility gating to glob re-exports of generic items. #10217

• Enforce the fixed-size-array size cap on the type form. #10218

• Attribute format!/print! bracket errors to the right macro. #10222

• writeln!(f) with no format string now writes a newline. #10182

• Apply full type-based diagnostics to all parts of a function signature. #10170

• Removed an extra diagnostic emitted for type mismatches on missing. #10121

• Fixed punctuation/newline of bare crate-root diagnostics. #10087

• Skipped-token diagnostic now spans the token, not its leading comment. #10088

• Validate the literal in a negative const generic argument, and anchor literal-validation diagnostics at the token text. #10091 #10103

• Treat //// as a regular comment, not a doc comment. #10107

• Make macro a valid recovery terminal and tree token. #10149

• Stop block recovery at a following control-flow statement. #10227

• Dedup panic_destruct calls for a variable at a shared panic location. #10205

• Normalize storage_base_address_from_felt252 const folding. #10210

• Prune usage after change promotion in loop usage finalization. #10201

• Name…

Full release on GitHub ↗

Release Polkadot SDK

Polkadot stable2606-3

This release contains the changes from polkadot-stable2606-2 to polkadot-stable2606-3. ℹ️ Please note: this is a patch release for the latest stable version stable2606. If your nodes...

Release Agave (Solana validator)

Agave (Solana validator) Release v4.5.0-alpha.2

This is a pre-release for testing only. Do not deploy to mainnet, testnet, or any production host. https://github.com/anza-xyz/agave/blob/master/CHANGELOG.md#edge-channel What's...

Release Hardhat

Hardhat v3.19.0

This release expands our support for the upcoming Amsterdam hardfork, including: EIP-7976, EIP-7981, EIP-7997, EIP-8024 and EIP-8037. In particular, EIP-8037's separation of execution...

Release Geth

Geth Protein Sludge Pack (v1.17.8)

This is a security-focused release, fixing several DoS risk issues ❤️‍🩹 . Note most of the the fixes related to bugs which only become possible after the activation of the Amsterdam...