mirror of
https://github.com/martinvonz/jj.git
synced 2025-05-05 15:32:49 +00:00
This uses `zlib-rs`, a native Rust library that is comparable in performance to `zlib-ng`. Since there’s no complicated C build and gitoxide only has one hashing backend now, this lets us drop our `packaging` feature without adding any awkward build requirements. `zlib-rs` is generally faster at decompression than `zlib-ng`, and faster at compression on levels 6 and 9; see <https://trifectatech.org/blog/zlib-rs-is-faster-than-c/> for details. I couldn’t get reliable‐looking benchmark results out of my temperamental laptop; `hyperfine` seemed to think that some random `jj` workloads I tested might be slightly slower than with `zlib-ng`, but it wasn’t unambiguously distinguishable from noise, so I’d like to see measurements from others. It’s certainly a lot faster than the previous default, and I think it’s likely that `zlib-rs` will continue to get faster and that it’s more than worth avoiding the headaches of a native library with a CMake build dependency. (Though on the other hand, if distributions move in the direction of shipping `zlib-ng` by default, maybe there will be more motivation to make `libz-ng-sys` support system libraries.)
154 lines
4.4 KiB
TOML
154 lines
4.4 KiB
TOML
cargo-features = []
|
|
|
|
[workspace]
|
|
resolver = "3"
|
|
members = ["cli", "lib", "lib/gen-protos", "lib/proc-macros", "lib/testutils"]
|
|
|
|
[workspace.package]
|
|
version = "0.28.2"
|
|
license = "Apache-2.0"
|
|
rust-version = "1.84" # NOTE: remember to update CI, contributing.md, changelog.md, and install-and-setup.md
|
|
edition = "2021"
|
|
readme = "README.md"
|
|
homepage = "https://github.com/jj-vcs/jj"
|
|
repository = "https://github.com/jj-vcs/jj"
|
|
documentation = "https://jj-vcs.github.io/jj/"
|
|
categories = ["version-control", "development-tools"]
|
|
keywords = ["VCS", "DVCS", "SCM", "Git", "Mercurial"]
|
|
|
|
[workspace.dependencies]
|
|
assert_cmd = "2.0.8"
|
|
assert_matches = "1.5.0"
|
|
async-trait = "0.1.88"
|
|
blake2 = "0.10.6"
|
|
bstr = "1.11.3"
|
|
clap = { version = "4.5.35", features = [
|
|
"derive",
|
|
"deprecated",
|
|
"wrap_help",
|
|
"string",
|
|
] }
|
|
clap_complete = { version = "4.5.47", features = ["unstable-dynamic"] }
|
|
clap_complete_nushell = "4.5.5"
|
|
clap-markdown = "0.1.4"
|
|
clap_mangen = "0.2.25"
|
|
chrono = { version = "0.4.40", default-features = false, features = [
|
|
"std",
|
|
"clock",
|
|
] }
|
|
clru = "0.6.2"
|
|
criterion = "0.5.1"
|
|
crossterm = { version = "0.28", default-features = false, features = ["windows"] }
|
|
digest = "0.10.7"
|
|
dirs = "6.0.0"
|
|
dunce = "1.0.5"
|
|
either = "1.15.0"
|
|
futures = "0.3.31"
|
|
git2 = { version = "0.20.1", 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.71.0", default-features = false, features = [
|
|
"attributes",
|
|
"blob-diff",
|
|
"index",
|
|
"max-performance-safe",
|
|
"zlib-rs",
|
|
] }
|
|
glob = "0.3.2"
|
|
hashbrown = { version = "0.15.2", default-features = false, features = ["inline-more"] }
|
|
hex = "0.4.3"
|
|
ignore = "0.4.23"
|
|
indexmap = { version = "2.9.0", features = ["serde"] }
|
|
indoc = "2.0.6"
|
|
insta = { version = "1.42.2", features = ["filters"] }
|
|
interim = { version = "0.2.1", features = ["chrono_0_4"] }
|
|
itertools = "0.13.0"
|
|
libc = { version = "0.2.171" }
|
|
maplit = "1.0.2"
|
|
num_cpus = "1.16.0"
|
|
once_cell = "1.21.3"
|
|
os_pipe = "1.2.1"
|
|
pest = "2.8.0"
|
|
pest_derive = "2.8.0"
|
|
pollster = "0.4.0"
|
|
pretty_assertions = "1.4.1"
|
|
proc-macro2 = "1.0.94"
|
|
prost = "0.13.5"
|
|
prost-build = "0.13.5"
|
|
quote = "1.0.40"
|
|
rand = "0.8.5"
|
|
rand_chacha = "0.3.1"
|
|
rayon = "1.10.0"
|
|
ref-cast = "1.0.24"
|
|
regex = "1.11.1"
|
|
rpassword = "7.3.1"
|
|
rustix = { version = "1.0.5", features = ["fs"] }
|
|
same-file = "1.0.6"
|
|
sapling-renderdag = "0.1.0"
|
|
sapling-streampager = "0.11.0"
|
|
scm-record = "0.8.0"
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0.140"
|
|
slab = "0.4.9"
|
|
smallvec = { version = "1.14.0", features = [
|
|
"const_generics",
|
|
"const_new",
|
|
"union",
|
|
] }
|
|
strsim = "0.11.1"
|
|
syn = "2.0.100"
|
|
tempfile = "3.19.1"
|
|
test-case = "3.3.1"
|
|
textwrap = "0.16.2"
|
|
thiserror = "2.0.12"
|
|
timeago = { version = "0.4.2", default-features = false }
|
|
tokio = { version = "1.44.2" }
|
|
toml_edit = { version = "0.22.24", features = ["serde"] }
|
|
tracing = "0.1.41"
|
|
tracing-chrome = "0.7.2"
|
|
tracing-subscriber = { version = "0.3.19", default-features = false, features = [
|
|
"std",
|
|
"ansi",
|
|
"env-filter",
|
|
"fmt",
|
|
] }
|
|
unicode-width = "0.2.0"
|
|
version_check = "0.9.5"
|
|
watchman_client = { version = "0.9.0" }
|
|
whoami = "1.6.0"
|
|
winreg = "0.52"
|
|
|
|
# put all inter-workspace libraries, i.e. those that use 'path = ...' here in
|
|
# their own (alphabetically sorted) block
|
|
|
|
jj-lib = { path = "lib", version = "0.28.2", default-features = false }
|
|
jj-lib-proc-macros = { path = "lib/proc-macros", version = "0.28.2" }
|
|
testutils = { path = "lib/testutils" }
|
|
|
|
[workspace.lints.clippy]
|
|
explicit_iter_loop = "warn"
|
|
flat_map_option = "warn"
|
|
implicit_clone = "warn"
|
|
needless_for_each = "warn"
|
|
semicolon_if_nothing_returned = "warn"
|
|
uninlined_format_args = "warn"
|
|
unused_trait_names = "warn"
|
|
useless_conversion = "warn"
|
|
|
|
# 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
|
|
|
|
[profile.release]
|
|
strip = "debuginfo"
|
|
codegen-units = 1
|