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.)
127 lines
3.4 KiB
TOML
127 lines
3.4 KiB
TOML
[package]
|
|
name = "jj-cli"
|
|
description = "Jujutsu - an experimental version control system"
|
|
default-run = "jj"
|
|
autotests = false
|
|
|
|
version = { workspace = true }
|
|
edition = { workspace = true }
|
|
rust-version = { workspace = true }
|
|
license = { workspace = true }
|
|
homepage = { workspace = true }
|
|
repository = { workspace = true }
|
|
documentation = { workspace = true }
|
|
keywords = { workspace = true }
|
|
|
|
include = [
|
|
"/LICENSE",
|
|
"/build.rs",
|
|
"/examples/",
|
|
"/src/",
|
|
"/docs/**",
|
|
"/testing/",
|
|
"/tests/",
|
|
"!*.pending-snap",
|
|
"!*.snap*",
|
|
"/tests/cli-reference@.md.snap",
|
|
]
|
|
|
|
[[bin]]
|
|
name = "jj"
|
|
path = "src/main.rs"
|
|
|
|
[[bin]]
|
|
name = "fake-editor"
|
|
path = "testing/fake-editor.rs"
|
|
required-features = ["test-fakes"]
|
|
|
|
[[bin]]
|
|
name = "fake-diff-editor"
|
|
path = "testing/fake-diff-editor.rs"
|
|
required-features = ["test-fakes"]
|
|
|
|
[[bin]]
|
|
name = "fake-formatter"
|
|
path = "testing/fake-formatter.rs"
|
|
required-features = ["test-fakes"]
|
|
|
|
[[test]]
|
|
name = "runner"
|
|
|
|
[dependencies]
|
|
bstr = { workspace = true }
|
|
chrono = { workspace = true }
|
|
clap = { workspace = true }
|
|
clap-markdown = { workspace = true }
|
|
clap_complete = { workspace = true }
|
|
clap_complete_nushell = { workspace = true }
|
|
clap_mangen = { workspace = true }
|
|
criterion = { workspace = true, optional = true }
|
|
crossterm = { workspace = true }
|
|
dirs = { workspace = true }
|
|
dunce = { workspace = true }
|
|
futures = { workspace = true }
|
|
git2 = { workspace = true, optional = true }
|
|
gix = { workspace = true, optional = true }
|
|
glob = { workspace = true }
|
|
indexmap = { workspace = true }
|
|
indoc = { workspace = true }
|
|
itertools = { workspace = true }
|
|
jj-lib = { workspace = true }
|
|
maplit = { workspace = true }
|
|
once_cell = { workspace = true }
|
|
os_pipe = { workspace = true }
|
|
pest = { workspace = true }
|
|
pest_derive = { workspace = true }
|
|
pollster = { workspace = true }
|
|
rayon = { workspace = true }
|
|
regex = { workspace = true }
|
|
rpassword = { workspace = true }
|
|
sapling-renderdag = { workspace = true }
|
|
sapling-streampager = { workspace = true }
|
|
scm-record = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
slab = { workspace = true }
|
|
strsim = { workspace = true }
|
|
tempfile = { workspace = true }
|
|
textwrap = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
timeago = { workspace = true }
|
|
toml_edit = { workspace = true }
|
|
tracing = { workspace = true }
|
|
tracing-chrome = { workspace = true }
|
|
tracing-subscriber = { workspace = true }
|
|
unicode-width = { workspace = true }
|
|
whoami = { workspace = true }
|
|
|
|
[target.'cfg(unix)'.dependencies]
|
|
libc = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
assert_cmd = { workspace = true }
|
|
assert_matches = { workspace = true }
|
|
async-trait = { workspace = true }
|
|
insta = { workspace = true }
|
|
test-case = { workspace = true }
|
|
testutils = { workspace = true }
|
|
# https://github.com/rust-lang/cargo/issues/2911#issuecomment-1483256987
|
|
jj-cli = { path = ".", features = ["test-fakes"], default-features = false }
|
|
|
|
[features]
|
|
default = ["watchman", "git", "git2"]
|
|
bench = ["dep:criterion"]
|
|
git = ["jj-lib/git", "dep:gix"]
|
|
git2 = ["git", "jj-lib/git2", "dep:git2"]
|
|
test-fakes = ["jj-lib/testing"]
|
|
vendored-openssl = ["git2/vendored-openssl", "jj-lib/vendored-openssl"]
|
|
watchman = ["jj-lib/watchman"]
|
|
|
|
[package.metadata.binstall]
|
|
# The archive name is jj, not jj-cli. Also, `cargo binstall` gets
|
|
# confused by the `v` before versions in archive name.
|
|
pkg-url = "{ repo }/releases/download/v{ version }/jj-v{ version }-{ target }.{ archive-format }"
|
|
|
|
[lints]
|
|
workspace = true
|