jj/Cargo.toml

144 lines
4 KiB
TOML
Raw Normal View History

cargo-features = []
2022-04-01 06:44:28 +00:00
[workspace]
resolver = "2"
members = ["cli", "lib", "lib/gen-protos", "lib/proc-macros", "lib/testutils"]
feat(cargo): improve --release binary size Summary: On x86_64-linux, these options reduce the total number of bytes in the `jj` binary by 40 percent, from 16MiB to 9.8MiB, while having relatively minimal impact on build time, going from 58s to 1m15s. While `strip=debuginfo` is already the default, `codegen-units=1` is doing all the work here, and seems to have a rather miraculous effect despite not meaningfully hurting compile time too much for me at least. This actually will probably improve performance in some cases too, but it's likely hard to quantify. Ultimately, with or without this change, the dominant entity taking up most of the compile time for the whole project is `jj-lib` and `jj-cli` crates. A `--timings` report with Cargo indicates almost all dependencies (on my machine) compile within 30s whether or not this change is in play, so the remaining time is all on us. Various other changes, such as using `opt-level=z` or `lto=thin`, had no real visible effect. `lto=fat` was pretty successful, reducing total bytes by over 50% (7.8MiB), but at a nearly 2x link-time cost. It *might* be worth exploring if something like `lto=thin` could improve performance since it didn't meaningfully impact compile time or size any further, but that's TBD. Note: these numbers were performed with a wiped `target/` directory after each run, and so all dependencies were compiled from scratch, on my 12-core Ryzen 5600X. Signed-off-by: Austin Seipp <aseipp@pobox.com> Change-Id: Ioyoulrmtwxypsrwwwysyylvmqxzttkmn
2023-07-10 03:54:40 +00:00
[workspace.package]
2024-09-04 15:41:29 +00:00
version = "0.21.0"
license = "Apache-2.0"
rust-version = "1.76" # NOTE: remember to update CI, contributing.md, changelog.md, and flake.nix
edition = "2021"
readme = "README.md"
homepage = "https://github.com/martinvonz/jj"
repository = "https://github.com/martinvonz/jj"
documentation = "https://martinvonz.github.io/jj/"
categories = ["version-control", "development-tools"]
keywords = ["VCS", "DVCS", "SCM", "Git", "Mercurial"]
[workspace.dependencies]
cargo: bump the cargo-dependencies group with 3 updates Bumps the cargo-dependencies group with 3 updates: [anyhow](https://github.com/dtolnay/anyhow), [once_cell](https://github.com/matklad/once_cell) and [pretty_assertions](https://github.com/rust-pretty-assertions/rust-pretty-assertions). Updates `anyhow` from 1.0.88 to 1.0.89 - [Release notes](https://github.com/dtolnay/anyhow/releases) - [Commits](https://github.com/dtolnay/anyhow/compare/1.0.88...1.0.89) Updates `once_cell` from 1.19.0 to 1.20.0 - [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md) - [Commits](https://github.com/matklad/once_cell/compare/v1.19.0...v1.20.0) Updates `pretty_assertions` from 1.4.0 to 1.4.1 - [Release notes](https://github.com/rust-pretty-assertions/rust-pretty-assertions/releases) - [Changelog](https://github.com/rust-pretty-assertions/rust-pretty-assertions/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-pretty-assertions/rust-pretty-assertions/compare/v1.4.0...v1.4.1) --- updated-dependencies: - dependency-name: anyhow dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: once_cell dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo-dependencies - dependency-name: pretty_assertions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 15:45:40 +00:00
anyhow = "1.0.89"
assert_cmd = "2.0.8"
assert_matches = "1.5.0"
async-trait = "0.1.82"
backoff = "0.4.0"
blake2 = "0.10.6"
bstr = "1.10.0"
cargo: bump the cargo-dependencies group with 4 updates Bumps the cargo-dependencies group with 4 updates: [clap](https://github.com/clap-rs/clap), [clap_complete](https://github.com/clap-rs/clap), [rustix](https://github.com/bytecodealliance/rustix) and [serde_json](https://github.com/serde-rs/json). Updates `clap` from 4.5.16 to 4.5.17 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.16...clap_complete-v4.5.17) Updates `clap_complete` from 4.5.24 to 4.5.26 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.24...clap_complete-v4.5.26) Updates `rustix` from 0.38.35 to 0.38.36 - [Release notes](https://github.com/bytecodealliance/rustix/releases) - [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.35...v0.38.36) Updates `serde_json` from 1.0.127 to 1.0.128 - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](https://github.com/serde-rs/json/compare/1.0.127...1.0.128) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: clap_complete dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: rustix dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: serde_json dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
2024-09-05 15:47:06 +00:00
clap = { version = "4.5.17", features = [
"derive",
"deprecated",
"wrap_help",
"string",
] }
clap_complete = "4.5.28"
cargo: bump the cargo-dependencies group across 1 directory with 3 updates Bumps the cargo-dependencies group with 3 updates in the / directory: [clap](https://github.com/clap-rs/clap), [clap_complete](https://github.com/clap-rs/clap) and [clap_complete_nushell](https://github.com/clap-rs/clap). Updates `clap` from 4.5.10 to 4.5.11 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.10...clap_complete-v4.5.11) Updates `clap_complete` from 4.5.9 to 4.5.11 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.9...clap_complete-v4.5.11) Updates `clap_complete_nushell` from 4.5.2 to 4.5.3 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete_nushell-v4.5.2...clap_complete_nushell-v4.5.3) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: clap_complete dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: clap_complete_nushell dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
2024-07-25 21:13:10 +00:00
clap_complete_nushell = "4.5.3"
clap-markdown = "0.1.4"
clap_mangen = "0.2.10"
cargo: bump the cargo-dependencies group with 4 updates Bumps the cargo-dependencies group with 4 updates: [chrono](https://github.com/chronotope/chrono), [either](https://github.com/rayon-rs/either), [proc-macro2](https://github.com/dtolnay/proc-macro2) and [syn](https://github.com/dtolnay/syn). Updates `chrono` from 0.4.37 to 0.4.38 - [Release notes](https://github.com/chronotope/chrono/releases) - [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md) - [Commits](https://github.com/chronotope/chrono/compare/v0.4.37...v0.4.38) Updates `either` from 1.10.0 to 1.11.0 - [Commits](https://github.com/rayon-rs/either/compare/1.10.0...1.11.0) Updates `proc-macro2` from 1.0.79 to 1.0.80 - [Release notes](https://github.com/dtolnay/proc-macro2/releases) - [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.79...1.0.80) Updates `syn` from 2.0.58 to 2.0.59 - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/2.0.58...2.0.59) --- updated-dependencies: - dependency-name: chrono dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: either dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo-dependencies - dependency-name: proc-macro2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: syn dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
2024-04-15 15:48:30 +00:00
chrono = { version = "0.4.38", default-features = false, features = [
"std",
"clock",
] }
chrono-english = { version = "0.1.7" }
2024-08-29 10:49:32 +00:00
clru = "0.6.2"
config = { version = "0.13.4", default-features = false, features = ["toml"] }
criterion = "0.5.1"
crossterm = { version = "0.27", default-features = false }
digest = "0.10.7"
dirs = "5.0.1"
dunce = "1.0.5"
either = "1.13.0"
esl01-renderdag = "0.3.0"
futures = "0.3.30"
git2 = { version = "0.19.0", features = [
# Do *not* disable this feature even if you'd like dynamic linking. Instead,
# set the environment variable `LIBGIT2_NO_VENDOR=1` if dynamic linking must
# be used (this will override the Cargo feature), and allow static linking
# in other cases. Rationale: If neither the feature nor the environment
# variable are set, `git2` may still decide to vendor `libgit2` if it
# doesn't find a version of `libgit2` to link to dynamically. See also
# https://github.com/rust-lang/git2-rs/commit/3cef4119f
"vendored-libgit2"
] }
gix = { version = "0.66.0", default-features = false, features = [
"index",
"max-performance-safe",
"blob-diff",
] }
gix-filter = "0.13.0"
glob = "0.3.1"
hex = "0.4.3"
ignore = "0.4.23"
indexmap = "2.5.0"
indoc = "2.0.4"
insta = { version = "1.40.0", features = ["filters"] }
itertools = "0.13.0"
cargo: bump the cargo-dependencies group with 4 updates Bumps the cargo-dependencies group with 4 updates: [clap_complete](https://github.com/clap-rs/clap), [libc](https://github.com/rust-lang/libc), [syn](https://github.com/dtolnay/syn) and [tokio](https://github.com/tokio-rs/tokio). Updates `clap_complete` from 4.5.16 to 4.5.19 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.16...clap_complete-v4.5.19) Updates `libc` from 0.2.156 to 0.2.158 - [Release notes](https://github.com/rust-lang/libc/releases) - [Changelog](https://github.com/rust-lang/libc/blob/0.2.158/CHANGELOG.md) - [Commits](https://github.com/rust-lang/libc/compare/0.2.156...0.2.158) Updates `syn` from 2.0.74 to 2.0.75 - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/2.0.74...2.0.75) Updates `tokio` from 1.39.2 to 1.39.3 - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.39.2...tokio-1.39.3) --- updated-dependencies: - dependency-name: clap_complete dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: libc dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: syn dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: tokio dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
2024-08-19 15:51:05 +00:00
libc = { version = "0.2.158" }
maplit = "1.0.2"
minus = { version = "5.6.1", features = ["dynamic_output", "search"] }
num_cpus = "1.16.0"
once_cell = "1.19.0"
pest = "2.7.12"
pest_derive = "2.7.12"
pollster = "0.3.0"
cargo: bump the cargo-dependencies group with 3 updates Bumps the cargo-dependencies group with 3 updates: [anyhow](https://github.com/dtolnay/anyhow), [once_cell](https://github.com/matklad/once_cell) and [pretty_assertions](https://github.com/rust-pretty-assertions/rust-pretty-assertions). Updates `anyhow` from 1.0.88 to 1.0.89 - [Release notes](https://github.com/dtolnay/anyhow/releases) - [Commits](https://github.com/dtolnay/anyhow/compare/1.0.88...1.0.89) Updates `once_cell` from 1.19.0 to 1.20.0 - [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md) - [Commits](https://github.com/matklad/once_cell/compare/v1.19.0...v1.20.0) Updates `pretty_assertions` from 1.4.0 to 1.4.1 - [Release notes](https://github.com/rust-pretty-assertions/rust-pretty-assertions/releases) - [Changelog](https://github.com/rust-pretty-assertions/rust-pretty-assertions/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-pretty-assertions/rust-pretty-assertions/compare/v1.4.0...v1.4.1) --- updated-dependencies: - dependency-name: anyhow dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: once_cell dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo-dependencies - dependency-name: pretty_assertions dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 15:45:40 +00:00
pretty_assertions = "1.4.1"
proc-macro2 = "1.0.86"
cargo: bump the cargo-dependencies group with 7 updates Bumps the cargo-dependencies group with 7 updates: | Package | From | To | | --- | --- | --- | | [anyhow](https://github.com/dtolnay/anyhow) | `1.0.83` | `1.0.86` | | [libc](https://github.com/rust-lang/libc) | `0.2.153` | `0.2.155` | | [proc-macro2](https://github.com/dtolnay/proc-macro2) | `1.0.82` | `1.0.83` | | [prost](https://github.com/tokio-rs/prost) | `0.12.4` | `0.12.6` | | [prost-build](https://github.com/tokio-rs/prost) | `0.12.4` | `0.12.6` | | [syn](https://github.com/dtolnay/syn) | `2.0.64` | `2.0.65` | | [thiserror](https://github.com/dtolnay/thiserror) | `1.0.60` | `1.0.61` | Updates `anyhow` from 1.0.83 to 1.0.86 - [Release notes](https://github.com/dtolnay/anyhow/releases) - [Commits](https://github.com/dtolnay/anyhow/compare/1.0.83...1.0.86) Updates `libc` from 0.2.153 to 0.2.155 - [Release notes](https://github.com/rust-lang/libc/releases) - [Commits](https://github.com/rust-lang/libc/compare/0.2.153...0.2.155) Updates `proc-macro2` from 1.0.82 to 1.0.83 - [Release notes](https://github.com/dtolnay/proc-macro2/releases) - [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.82...1.0.83) Updates `prost` from 0.12.4 to 0.12.6 - [Release notes](https://github.com/tokio-rs/prost/releases) - [Commits](https://github.com/tokio-rs/prost/compare/v0.12.4...v0.12.6) Updates `prost-build` from 0.12.4 to 0.12.6 - [Release notes](https://github.com/tokio-rs/prost/releases) - [Commits](https://github.com/tokio-rs/prost/compare/v0.12.4...v0.12.6) Updates `syn` from 2.0.64 to 2.0.65 - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/2.0.64...2.0.65) Updates `thiserror` from 1.0.60 to 1.0.61 - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](https://github.com/dtolnay/thiserror/compare/1.0.60...1.0.61) --- updated-dependencies: - dependency-name: anyhow dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: libc dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: proc-macro2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: prost dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: prost-build dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: syn dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: thiserror dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
2024-05-20 15:46:17 +00:00
prost = "0.12.6"
prost-build = "0.12.6"
quote = "1.0.36"
rand = "0.8.5"
rand_chacha = "0.3.1"
rayon = "1.10.0"
cargo: bump the cargo-dependencies group with 5 updates Bumps the cargo-dependencies group with 5 updates: | Package | From | To | | --- | --- | --- | | [anyhow](https://github.com/dtolnay/anyhow) | `1.0.82` | `1.0.83` | | [proc-macro2](https://github.com/dtolnay/proc-macro2) | `1.0.81` | `1.0.82` | | [ref-cast](https://github.com/dtolnay/ref-cast) | `1.0.22` | `1.0.23` | | [syn](https://github.com/dtolnay/syn) | `2.0.60` | `2.0.61` | | [thiserror](https://github.com/dtolnay/thiserror) | `1.0.59` | `1.0.60` | Updates `anyhow` from 1.0.82 to 1.0.83 - [Release notes](https://github.com/dtolnay/anyhow/releases) - [Commits](https://github.com/dtolnay/anyhow/compare/1.0.82...1.0.83) Updates `proc-macro2` from 1.0.81 to 1.0.82 - [Release notes](https://github.com/dtolnay/proc-macro2/releases) - [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.81...1.0.82) Updates `ref-cast` from 1.0.22 to 1.0.23 - [Release notes](https://github.com/dtolnay/ref-cast/releases) - [Commits](https://github.com/dtolnay/ref-cast/compare/1.0.22...1.0.23) Updates `syn` from 2.0.60 to 2.0.61 - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/2.0.60...2.0.61) Updates `thiserror` from 1.0.59 to 1.0.60 - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](https://github.com/dtolnay/thiserror/compare/1.0.59...1.0.60) --- updated-dependencies: - dependency-name: anyhow dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: proc-macro2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: ref-cast dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: syn dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: thiserror dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
2024-05-07 16:10:00 +00:00
ref-cast = "1.0.23"
regex = "1.10.6"
rpassword = "7.3.1"
rustix = { version = "0.38.37", features = ["fs"] }
scm-record = "0.3.0"
serde = { version = "1.0", features = ["derive"] }
cargo: bump the cargo-dependencies group with 4 updates Bumps the cargo-dependencies group with 4 updates: [clap](https://github.com/clap-rs/clap), [clap_complete](https://github.com/clap-rs/clap), [rustix](https://github.com/bytecodealliance/rustix) and [serde_json](https://github.com/serde-rs/json). Updates `clap` from 4.5.16 to 4.5.17 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.16...clap_complete-v4.5.17) Updates `clap_complete` from 4.5.24 to 4.5.26 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.24...clap_complete-v4.5.26) Updates `rustix` from 0.38.35 to 0.38.36 - [Release notes](https://github.com/bytecodealliance/rustix/releases) - [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.35...v0.38.36) Updates `serde_json` from 1.0.127 to 1.0.128 - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](https://github.com/serde-rs/json/compare/1.0.127...1.0.128) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: clap_complete dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: rustix dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies - dependency-name: serde_json dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
2024-09-05 15:47:06 +00:00
serde_json = "1.0.128"
slab = "0.4.9"
smallvec = { version = "1.13.2", features = [
"const_generics",
"const_new",
"union",
] }
strsim = "0.11.1"
syn = "2.0.77"
tempfile = "3.12.0"
test-case = "3.3.1"
textwrap = "0.16.1"
thiserror = "1.0.63"
timeago = { version = "0.4.2", default-features = false }
tokio = { version = "1.40.0" }
toml_edit = { version = "0.19.15", features = ["serde"] }
tracing = "0.1.40"
tracing-chrome = "0.7.2"
tracing-subscriber = { version = "0.3.18", default-features = false, features = [
"std",
"ansi",
"env-filter",
"fmt",
] }
unicode-width = "0.1.13"
version_check = "0.9.5"
watchman_client = { version = "0.9.0" }
whoami = "1.5.2"
winreg = "0.52"
zstd = "0.12.4"
# put all inter-workspace libraries, i.e. those that use 'path = ...' here in
# their own (alphabetically sorted) block
2024-09-04 15:41:29 +00:00
jj-lib = { path = "lib", version = "0.21.0" }
jj-lib-proc-macros = { path = "lib/proc-macros", version = "0.21.0" }
testutils = { path = "lib/testutils" }
# Insta suggests compiling these packages in opt mode for faster testing.
# See https://docs.rs/insta/latest/insta/#optional-faster-runs.
[profile.dev.package]
insta.opt-level = 3
similar.opt-level = 3
feat(cargo): improve --release binary size Summary: On x86_64-linux, these options reduce the total number of bytes in the `jj` binary by 40 percent, from 16MiB to 9.8MiB, while having relatively minimal impact on build time, going from 58s to 1m15s. While `strip=debuginfo` is already the default, `codegen-units=1` is doing all the work here, and seems to have a rather miraculous effect despite not meaningfully hurting compile time too much for me at least. This actually will probably improve performance in some cases too, but it's likely hard to quantify. Ultimately, with or without this change, the dominant entity taking up most of the compile time for the whole project is `jj-lib` and `jj-cli` crates. A `--timings` report with Cargo indicates almost all dependencies (on my machine) compile within 30s whether or not this change is in play, so the remaining time is all on us. Various other changes, such as using `opt-level=z` or `lto=thin`, had no real visible effect. `lto=fat` was pretty successful, reducing total bytes by over 50% (7.8MiB), but at a nearly 2x link-time cost. It *might* be worth exploring if something like `lto=thin` could improve performance since it didn't meaningfully impact compile time or size any further, but that's TBD. Note: these numbers were performed with a wiped `target/` directory after each run, and so all dependencies were compiled from scratch, on my 12-core Ryzen 5600X. Signed-off-by: Austin Seipp <aseipp@pobox.com> Change-Id: Ioyoulrmtwxypsrwwwysyylvmqxzttkmn
2023-07-10 03:54:40 +00:00
[profile.release]
strip = "debuginfo"
codegen-units = 1