build(cargo): Update Rust toolchain to 1.90.0#4457
Merged
Conversation
8863436 to
c45806c
Compare
in order to allow workspace members to easily copy their values, rather than copying the actual values manually between files. Prepare for a future update of the Rust edition this way by defining the edition in one central location.
and don't copy the actual license value manually between crates.
rather than manually defining the value per crate. There is no apparent advantage in having different parts of the code use different rust editions. It only makes the code inconsistent, which is not a goal worth striving for.
at least for those workspace members that are versioned in lockstep.
from edition 2018 in order to use a single unified Rust edition across the entire workspace. Apparently the migration does not involve changes to the actual code.
from edition 2018 in order to use a single unified Rust edition across the entire workspace. Apparently the migration does not involve changes to the actual code.
which has contained nothing but comments for two years now. The initial "workaround" has by now become the proper solution and the original issue (see <zellij-org#2711>) has never been heard of since. The real motivation for this change is the simple fact that this version of prost-build pulled in a pretty old version of the `which` crate which doesn't appear to build with Rust 1.89 (latest stable as of now).
which is the latest stable toolchain as of writing this and has support for the 2024 Rust edition, unlike the previously used 1.84.
in cases where a functions return type has an actual lifetime that depends on a non `'static` argument.
which is the latest stable toolchain as of writing this. Compared to 1.89.0 this changes the default linker and should, hence, cut down iteration times during development significantly.
for the tagged release assets. Previously the rust version was unconditionally overwritten to be `stable` regardless of what `rust-toolchain.toml` configured.
5c2690e to
356a457
Compare
to list of unreleased changes.
since it no longer resides directly in the `package` object.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replace the previously used (and now EOL) Rust toolchain 1.84.0 with the currently stable 1.90.0. The versions in between didn't bring any radically new changes that affect our code as far as I could tell. However, there has been a significant improvement in development iteration times. See more on that below.
Apart from that, I took the time to deduplicate some of our cargo manifest keys, including crate licenses and rust versions. This change is made in a spirit similar to #4085, where I did pretty much the same with our crate dependencies. During this migration I noticed that the
plugin-managerandsession-managerwere still using the 2018 Rust edition. I updated both crates to use Rust edition 2021 like the rest of the codebase does. Finally, this removes an obsolete build script that had been introduced during the migration frommakerstocargo xtaskto handle protobuf compilation for the WASM plugins.Development Performance Improvements
Rust 1.90.0 brings in a very nice change: The default linker on Linux GNU is now lld. I ran a little benchmark to verify this. First I did a
cargo clean && cargo xtask buildto make sure all dependencies were built already. Then I wrote a script calledbench.shwith the following content:Tested on the HEAD commit of this branch this was the result:
Whereas with Rust 1.89.0 (commit fec4e69), this is what I got:
So in essence, iteration times should be significantly faster now. Similar improvements can be seen when using
cargo qorcargo xtask build --quick-run. Yay!