Releases: software-mansion/scarb
v2.4.0-rc6
Warning
This version is not supported on Starknet! If you want to develop contracts deployable to current Starknet, please stick with Scarb v2.3.1
Welcome to the release notes for Scarb v2.4.0-rc6
!
This quick release is primarily a Cairo upgrade.
Cairo Version
This version of Scarb comes with Cairo v2.4.0-rc6
.
What's Changed
Full Changelog: v2.4.0-rc5...v2.4.0-rc6
v2.4.0-rc5
Warning
This version is not supported on Starknet! If you want to develop contracts deployable to current Starknet, please stick with Scarb v2.3.1
Welcome to the release notes for Scarb v2.4.0-rc5
!
This quick release is primarily a Cairo upgrade.
Cairo Version
This version of Scarb comes with Cairo v2.4.0-rc5
.
What's Changed
- Document and make private
SourceKind::can_lock_source_kind
by @mkaput in #930 - Add
ChildPathEx::read_to_string
by @mkaput in #933 - Bump
itertools
to 0.12.0 by @mkaput in #936 - Fill missing docs in resolver area and remove unnecessary method by @mkaput in #938
Full Changelog: v2.4.0-rc4...v2.4.0-rc5
v2.4.0-rc4
Warning
This version is not supported on Starknet! If you want to develop contracts deployable to current Starknet, please stick with Scarb v2.3.1
Welcome to the release notes for Scarb v2.4.0-rc4!
This quick release includes following small improvements.
Formatter emit
option
Since this release, when formatting your project with scarb fmt
you can use --emit stdout
argument. With this argument, Scarb will not make any changes to the files on your disk. Instead, full new content of formatted files will be printed to stdout, prepended with their path. Files that had already been in a correct format will not be emitted.
Environmental variables in scripts
Since this release, all environmental variables inherited by Scarb will be passed to package scripts runtime. This will allow you, to read external variables inside your scripts.
Cairo Version
This version of Scarb comes with Cairo v2.4.0-rc4
.
What's Changed
- Bump the non-critical group with 3 updates by @dependabot in #917
- Add
checksum
field toPackageLock
and add Builder pattern there by @mkaput in #909 - Store package checksum in
Summary
by @mkaput in #910 - Remove obsolete TODO comment by @mkaput in #911
- Store checksums for registry deps in Scarb.lock by @mkaput in #912
- Verify that package tarball compiles by @szymmis in #908
- feat: add workflow for typo by @xiaolou86 in #923
- Add snforge test collector by @piotmag769 in #886
- Remove
update_read_async
method and useupdate_read
instead by @mkaput in #924 - Upgrade
redb
to1.4.0
by @mkaput in #927 - Pass env variables to scripts shell by @maciektr in #926
- Fix link in
Testing Scarb projects
docs section by @tomek0123456789 in #928 - feat: add emit option by @Eikix in #863
- Update Cairo by @maciektr in #929
- Pull corelib from cargo cache for path/git builds by @maciektr in #918
- Update
vitepress
tov1.0.0-rc.30
and other website dependencies by @mkaput in #931
New Contributors
- @xiaolou86 made their first contribution in #923
- @piotmag769 made their first contribution in #886
- @Eikix made their first contribution in #863
Full Changelog: v2.4.0-rc3...v2.4.0-rc4
v2.4.0-rc3
Warning
This version is not supported on Starknet! If you want to develop contracts deployable to current Starknet, please stick with Scarb v2.3.1
Welcome to the release notes for Scarb v2.4.0-rc3
!
This quick release is primarily a Cairo upgrade.
Cairo Version
This version of Scarb comes with Cairo v2.4.0-rc3
.
What's Changed
- Introduce
RegistryClientCache
stub by @mkaput in #808 - Use constant
mtime
for packaged tarballs by @mkaput in #898 - Bump the non-critical group with 3 updates by @dependabot in #899
- Implement caching of records returned from registry clients by @mkaput in #809
- Set up machinery for testing HTTP interactions of HTTP registry by @mkaput in #818
- Detect target name duplicates across workspace by @maciektr in #900
- Add PackagesFilterLong without short clap arguments by @maciektr in #902
- Prepare
scarb-ui
release0.1.2
by @maciektr in #905 - Handle readme and license files in scarb package by @szymmis in #897
- Implement records caching on HttpRegistryClient level by @mkaput in #819
- Add
AsyncFileLockGuard
by @mkaput in #844 - Impl
Clone
forFilesystem
by @mkaput in #845 - Implement caching of downloaded tarballs by @mkaput in #846
- Cache index configs by @mkaput in #892
- Fix clippy errors after update by @maciektr in #913
- Move validation before usage in build-external glob selectors by @maciektr in #914
- Fix failing tests by adjusting stderr message assertions by @szymmis in #915
- Handle checksums in registry packages by @mkaput in #906
Full Changelog: v2.4.0-rc2...v2.4.0-rc3
v2.4.0-rc2
Warning
This version is not supported on Starknet! If you want to develop contracts deployable to current Starknet, please stick with Scarb v2.3.1
Welcome to the release notes for Scarb v2.4.0-rc2
!
This quick release is primarily a Cairo upgrade.
Cairo Version
This version of Scarb comes with Cairo v2.4.0-rc2
.
What's Changed
Full Changelog: v2.4.0-rc1...v2.4.0-rc2
v2.4.0-rc1
Warning
This version is not supported on Starknet! If you want to develop contracts deployable to current Starknet, please stick with Scarb v2.3.1
Welcome to the release notes for Scarb v2.4.0-rc1
! This quick release is primarily a Cairo upgrade.
Cairo Version
This version of Scarb comes with Cairo v2.4.0-rc1
.
What's Changed
- Add scheduled tests job by @maciektr in #864
- Fix cfg target spec in cargo toml by @maciektr in #868
- Add silent option to full tests action by @maciektr in #867
- Fix edition test: path match on windows by @maciektr in #872
- Fix: unify path_in_vcs format accross target os by @maciektr in #873
- Fix failing packaging tests on windows by @szymmis in #876
- Add note about symlinks tests on windows by @maciektr in #874
- Update Cairo revision by @maciektr in #877
- Disable fail-fast in full tests check job by @maciektr in #879
- Write edition to manifest on scarb new by @maciektr in #878
- Document edition field in manifest by @maciektr in #881
- Fix source path display on windows by @maciektr in #885
- Throw an error in
scarb package
with non-[lib]
packages by @tomek0123456789 in #856 - Prepare
scarb-metadata
release1.9.0
by @maciektr in #890 - Use latest edition for scarb new by @maciektr in #888
- Ignore tests failing as of #883 by @maciektr in #884
- Prepare release
2.4.0-rc1
by @maciektr in #891
New Contributors
- @tomek0123456789 made their first contribution in #856
Full Changelog: v2.3.0-rc1...v2.4.0-rc1
v2.4.0-rc0
Warning
This version is not supported on Starknet! If you want to develop contracts deployable to current Starknet, please stick with Scarb v2.3.1
Editions
Since this release, Scarb supports defining Cairo compiler edition for a package. The editions allow newer Cairo compiler versions to introduce opt-in features that may break existing code.
The edition can be defined with edition
key in [package]
section in Scarb manifest.
[package]
name = "hello_world"
version = "1.0.0"
edition = "2023_10"
Setting the edition key in [package]
will affect all targets in the package, including test suites etc.
scarb update
Since the introduction of lockfiles, Scarb will not automatically update all dependencies on each run. The update of locked versions can be requested with the scarb update
command. This will perform project resolution ignoring the existing lockfile, then write out a new Scarb.lock
with the new version information. Note that the Scarb.toml
manifest file will not be changed, and all version requirements from it will be preserved.
Cairo Version
This version of Scarb comes with Cairo v2.4.0-rc0
.
What's Changed
- Use FromStr for Lockfile by @maciektr in #810
- Bump the non-critical group with 1 update by @dependabot in #812
- Use requires_gas_counter helper by @maciektr in #814
- Stop lockfile e2e tests from overwriting existing example locks by @maciektr in #813
- Fix release branch naming in maintaining docs by @maciektr in #816
- Allow ignoring example project by name in test_for_each_example macro by @maciektr in #824
- Update Cairo and Scarb version after release by @maciektr in #821
- Add scarb update command by @maciektr in #822
- Make profile args take precedence over env by @szymmis in #825
- Initial implementation of
RegistrySource
by @mkaput in #790 - Initial implementation of
scarb publish
by @mkaput in #793 - Change wording around starknet-contract casm property docs by @maciektr in #826
- Add basic tests for local registry by @mkaput in #798
- Implement simple http server for testing HTTP registries by @mkaput in #799
- Set up
reqwest
HTTP client by @mkaput in #802 - Include
get_dep_component!
andget_dep_component_mut!
macros in thestarknet
package by @mkaput in #833 - Initial implementation of HTTP registry client by @mkaput in #803
- Docs: Use kebab-case for formatting options by @maciektr in #836
- Expand registry specification to registry URL when packaging by @mkaput in #805
- Add lockfile docs by @maciektr in #829
- Add scarb update docs by @maciektr in #830
- Bump the non-critical group with 6 updates by @dependabot in #839
- Remove available_gas args in favour of default by @maciektr in #840
- Major dependencies update by @mkaput in #806
- Impl
Clone
forUi
by @mkaput in #807 - Prepare
scarb-ui
release0.1.1
by @mkaput in #848 - Use rustls-tls with native roots on unix targets by @maciektr in #851
- Bump actions/setup-node from 3 to 4 by @dependabot in #853
- chore: minor optimisation by @shramee in #841
- Extends docs about Starknet Foundry by @cptartur in #831
- Update Cairo by @maciektr in #857
- Bump the non-critical group with 3 updates by @dependabot in #859
- Fix linux cfg in Cargo manifest by @maciektr in #861
- Add dry_run arg to nightly workflow by @maciektr in #852
- Support plugin suites by @maciektr in #860
- Remove redundant
cannot_choose_both_dev_and_release
test by @szymmis in #862 - Add test targets docs by @maciektr in #855
- Add package edition field by @maciektr in #858
- Prevent packaging with uncommited Git changes by @szymmis in #827
- Prepare release 2.4.0-rc0 by @maciektr in #865
- Update Sierra to 1.4.0 by @maciektr in #866
New Contributors
Full Changelog: v2.3.1...v2.4.0-rc0
v2.3.1
This release is focused solely on bugfixes in Scarb and Cairo. Check out merged PRs list for more detailed information.
Cairo Version
This version of Scarb comes with Cairo v2.3.1
.
What's Changed
- Use FromStr for Lockfile by @maciektr in #810
- Bump the non-critical group with 1 update by @dependabot in #812
- Use requires_gas_counter helper by @maciektr in #814
- Stop lockfile e2e tests from overwriting existing example locks by @maciektr in #813
- Fix release branch naming in maintaining docs by @maciektr in #816
- Allow ignoring example project by name in test_for_each_example macro by @maciektr in #824
- Make profile args take precedence over env by @szymmis in #825
- Include
get_dep_component!
andget_dep_component_mut!
macros in thestarknet
package by @mkaput in #833 - Docs: Use kebab-case for formatting options by @maciektr in #836
- Add lockfile docs by @maciektr in #829
Full Changelog: v2.3.0...v2.3.1
v2.3.0
Lockfiles
Lockfiles are a common mechanism that allows package manager to lock dependencies to concrete versions, ensuring reproducible builds.
When specifying project dependencies, you define version requirements. Usually, those requirements can accept multiple versions. For instance, specifying 1.2.3
would allow all versions >=1.2.3
and <2.0.0
. Similarly, the specification alexandria_math = { git = "https://github.com/keep-starknet-strange/alexandria.git", branch = "next" }
can be resolved to more than one commit hash. Up to this version, Scarb would always pull the latest commit from the branch next
, which may change between Scarb runs. This not recommended, as some regressions or incompatibilities may be introduced in the new commit. Additionally, for security reasons users should control what changes are pulled to their builds. Consequently, users often had to manually lock their dependency revisions, e.g. by specifying the commit hash from the dependency package repository in the manifest file.
Lockfiles automatically lock dependencies to a certain revisions, by writing resolved versions to a file beside the project manifest called Scarb.lock
. This file is then read before Scarb resolves dependencies, and locked versions are used by the resolver. If you change your dependencies specification in the manifest file, lockfile will change as well. Lockfiles contain exact specifications of all packages from full tree of dependencies (including dependencies of dependencies etc.). Scarb lockfiles can easily be reviewed by the user.
Lockfiles should be commited to version control systems, allowing for full tracking of concrete version changes.
Cairo Version
This version of Scarb comes with Cairo v2.3.0
.
What's Changed
- Update
fs4
to0.7.0
and move procmacros dependencies to workspace by @mkaput in #772 - Revert matching parsing errors in git db client contains method by @maciektr in #774
- Ensure git checkout returns existing revision by @maciektr in #775
- Upgrade Cairo to
734a28823
by @mkaput in #784 - Add
Filesystem::into_child
method for easier chaining by @mkaput in #782 - Upgrade Cairo to
9fab18dcc
by @mkaput in #785 - Extract
protected_run_if_not_ok!
macro by @mkaput in #787 - Add tracing instrumentation to package ops by @mkaput in #789
- Update Cairo to
0f0b3786e7
by @mkaput in #795 - Implement base data models for registry index by @mkaput in #767
- Implement
Checksum
andDigest
mechanisms by @mkaput in #783 - Bump semver from 1.0.19 to 1.0.20 by @dependabot in #797
- Bump the non-critical group with 5 updates by @dependabot in #796
- Allow specifying custom source patches by @szymmis in #791
- Fix
ops::package
leaving old path in createdFileLockGuard
by @mkaput in #792 - Add lockfile structure by @maciektr in #777
- Generate lock files by @maciektr in #778
- Resolve with locked versions by @maciektr in #779
- Implement lockfile tests by @maciektr in #780
- Omit std source packages from lockfile by @maciektr in #800
- Generate lockfiles for examples by @maciektr in #781
- Bump rustix from 0.38.13 to 0.38.19 by @dependabot in #804
New Contributors
- @Utilitycoder made their first contribution in #728
Full Changelog: v2.3.0-rc1...v2.3.0
v2.3.0-rc1
Tests compilation is fast again
We have identified several performance regressions in changes related to tests compilation, and we fixed them in this release.
scarb-ui
on crates.io
The scarb-ui
crate has been published to crates.io: https://crates.io/crates/scarb-ui. We do not commit yet to its stability, and expect this crate to be <1.0 for a long time. All breaking changes will cause a major release (i.e. 0.1.0
to 0.2.0
etc.)
Started work on Scarb packages registry and Scarb.lock
This release contains the first changes to Scarb to support package registries and Scarb lockfile. The newly added scarb package
command is unfinished and undocumented yet, and we do not recommend relying on this. You are welcome to experiment with it though 😊
Cairo Version
This version of Scarb comes with Cairo v2.3.0-rc0
.
What's Changed
- Add integration test example by @maciektr in #725
- Document package tarballs by @mkaput in #646
- Scaffold
scarb package
command, implementing--list
arg by @mkaput in #657 - Create actual .tar.zst archive by @mkaput in #675
- DepBuilder DSL by @mkaput in #726
- Bump actions/checkout from 3 to 4 by @dependabot in #729
- Allow passing packages filter with env var by @maciektr in #721
- Build packages filter by @maciektr in #722
- Bump the non-critical group with 3 updates by @dependabot in #731
- Use packages filter env var in cairo-test by @maciektr in #723
- Add more packages filter tests by @maciektr in #727
- Fix GitSource db contains rev parse by @maciektr in #742
- Clippy add dbg macro rule by @maciektr in #747
- Write actual git revision for git source ids by @maciektr in #743
- Remove
indoc
dependency fromscarb-ui
by @mkaput in #749 - Bump postcss from 8.4.27 to 8.4.31 in /website by @dependabot in #754
- Remove dead code in
scarb-ui
by @mkaput in #750 - Fix Clippy
rust_2018_idioms
inscarb-ui
by @mkaput in #751 - Document entirety of
scarb-ui
by @mkaput in #752 - Ignore version pre-release part in nightlies by @szymmis in #756
- Prepare
scarb-ui
release0.1.0
by @mkaput in #753 - Use BufWriter for JSON serialized output files by @maciektr in #761
- Add tracing span for test compilation by @maciektr in #759
- Parse precise part from pretty url by @maciektr in #762
- Fix Clippy 1.73 issues by @mkaput in #764
- Implement normalization of manifests for publishing by @mkaput in #710
- Compile only tests with --test flag by @maciektr in #765
- Implement package source files collection by @mkaput in #732
- Ignore pre-release semver part in bound version test by @szymmis in #766
- Check archive filenames by @mkaput in #697
- Do not include Scarb.lock in packages by @mkaput in #733
- Support
.scarbignore
files when packaging by @mkaput in #746 - Move large struct
DetailedTomlDependency
into aBox
and useCow
to avoid cloning it by @mkaput in #748 - Document wildcards in build-external-contract by @Utilitycoder in #728
- Add
registry
field to dependency schema by @mkaput in #757 - Replace several TODO comments with
todo!
calls in packaging logic by @mkaput in #758 - Fix package op issues on Windows by @mkaput in #768
- Bump the non-critical group with 6 updates by @dependabot in #770
- Prepare release
2.3.0-rc1
by @mkaput in #771
New Contributors
- @Utilitycoder made their first contribution in #728
Full Changelog: v2.3.0-rc0...v2.3.0-rc1