Welcome to the release notes for Scarb v2.20.0!
This release updates Scarb to Cairo v2.20.0 and focuses on more reliable package publishing, a faster proc macro server, and smoother integration for tools built on top of Scarb.
More Reliable Publishing and Registry Handling
Publishing packages is more robust in this release. When a registry's upload endpoint returned an empty or non-JSON body, Scarb previously tried to parse it as JSON and surfaced a confusing decoding error that hid the real HTTP status. Scarb now reports the actual response, making publishing failures much easier to diagnose.
Default registry patches for standard library builtins are now patched to the standard library source, keeping dependency resolution consistent for packages that rely on the corelib and its builtins.
Faster Proc Macro Server
The proc macro server now uses unbounded channels for its internal communication between the reader, worker, and writer threads. Previously, bounded channels made the pipeline effectively synchronous — busy workers could stall reading from stdin, and a full stdout could block the whole server. The new design decouples these stages for better throughput under load.
Smoother Tooling Integration
Scarb now exposes package extra data directly, so consumers no longer need to re-parse Scarb.toml to access it. This removes duplicated parsing logic in tools built on top of Scarb.
Cairo Version
This version of Scarb comes with Cairo v2.20.0.
What's Changed
- Bump Cairo by @integraledelebesgue in #3164
- Bump Cairo by @maciektr in #3168
- Expose
extradata to avoid consumer-side Scarb.toml re-parsing logic by @Arcticae in #3160 - Use unbounded channels for internal communication in proc-macro-server by @integraledelebesgue in #3183
- Fix confusing error when registry returns a non-JSON body by @hakiers in #3177
- Patch default registry patches for std builtins to std source by @maciektr in #3178
Full Changelog: v2.19.0...v2.20.0