1
cargo-features = []
2
3
[workspace]
4
resolver = "3"
5
members = ["cli", "lib", "lib/gen-protos", "lib/proc-macros", "lib/testutils"]
6
7
[workspace.package]
8
version = "0.37.0"
9
license = "Apache-2.0"
10
rust-version = "1.89" # NOTE: remember to update CI, mise.toml, contributing.md, changelog.md, and install-and-setup.md
11
edition = "2024"
12
readme = "README.md"
13
homepage = "https://www.jj-vcs.dev/"
14
repository = "https://github.com/jj-vcs/jj"
15
documentation = "https://docs.jj-vcs.dev/"
16
categories = ["version-control", "development-tools"]
17
keywords = ["VCS", "DVCS", "SCM", "Git", "Mercurial"]
18
19
[workspace.dependencies]
20
assert_cmd = "2.1.2"
21
assert_matches = "1.5.0"
22
async-trait = "0.1.89"
23
blake2 = "0.10.6"
24
bstr = "1.12.1"
25
clap = { version = "4.5.54", features = [
26
"derive",
27
"deprecated",
28
"wrap_help",
29
"string",
30
] }
31
clap_complete = { version = "4.5.65", features = ["unstable-dynamic"] }
32
clap_complete_nushell = "4.5.10"
33
# Update clap-markdown manually since test_generate_md_cli_help snapshot
34
# will need regenerating.
35
clap-markdown = "=0.1.5"
36
clap_mangen = "0.2.25"
37
chrono = { version = "0.4.42", default-features = false, features = [
38
"std",
39
"clock",
40
"serde",
41
] }
42
clru = "0.6.2"
43
criterion = "0.8.1"
44
crossterm = { version = "0.29", default-features = false, features = ["windows"] }
45
datatest-stable = "0.3.3"
46
digest = "0.10.7"
47
dunce = "1.0.5"
48
either = "1.15.0"
49
erased-serde = "0.4.9"
50
etcetera = "0.11.0"
51
futures = "0.3.31"
52
gix = { version = "0.77.0", default-features = false, features = [
53
"attributes",
54
"blob-diff",
55
"index",
56
"max-performance-safe",
57
"zlib-rs",
58
] }
59
globset = "0.4.18"
60
hashbrown = { version = "0.16.1", default-features = false, features = ["inline-more"] }
61
ignore = "0.4.25"
62
indexmap = { version = "2.13.0", features = ["serde"] }
63
indoc = "2.0.7"
64
insta = { version = "1.46.0", features = ["filters"] }
65
interim = { version = "0.2.1", features = ["chrono_0_4"] }
66
itertools = "0.14.0"
67
jsonschema = { version = "0.38.1", default-features = false }
68
libc = { version = "0.2.180" }
69
maplit = "1.0.2"
70
nix = "0.30.1"
71
num_cpus = "1.17.0"
72
once_cell = "1.21.3"
73
pest = "2.8.5"
74
pest_derive = "2.8.5"
75
pollster = "0.4.0"
76
pretty_assertions = "1.4.1"
77
proc-macro2 = "1.0.104"
78
proptest = "1.9.0"
79
proptest-derive = "0.7.0"
80
proptest-state-machine = "0.6.0"
81
prost = "0.14.3"
82
prost-build = "0.14.3"
83
quote = "1.0.42"
84
rand = "0.9.2"
85
rand_chacha = "0.9.0"
86
rayon = "1.10.0"
87
ref-cast = "1.0.25"
88
regex = "1.12.2"
89
rpassword = "7.4.0"
90
rustix = { version = "1.1.3", features = ["fs"] }
91
same-file = "1.0.6"
92
sapling-renderdag = "0.1.0"
93
sapling-streampager = "0.11.2"
94
scm-record = "0.9.0"
95
serde = { version = "1.0", features = ["derive", "rc"] }
96
serde_json = "1.0.149"
97
shlex = "1.3.0"
98
slab = "0.4.11"
99
smallvec = { version = "1.15.1", features = [
100
"const_generics",
101
"const_new",
102
"serde",
103
"union",
104
] }
105
strsim = "0.11.1"
106
syn = "2.0.111"
107
rustversion = "1.0.22"
108
tempfile = "3.24.0"
109
test-case = "3.3.1"
110
textwrap = "0.16.2"
111
thiserror = "2.0.17"
112
timeago = { version = "0.5.0", default-features = false }
113
tokio = { version = "1.49.0", features = ["io-util"] }
114
toml = "0.9.8"
115
toml_edit = { version = "0.23.9", features = ["serde"] }
116
tracing = "0.1.44"
117
tracing-chrome = "0.7.2"
118
tracing-subscriber = { version = "0.3.22", default-features = false, features = [
119
"std",
120
"ansi",
121
"env-filter",
122
"fmt",
123
] }
124
unicode-width = "0.2.0"
125
version_check = "0.9.5"
126
watchman_client = { version = "0.9.0" }
127
whoami = "2.0.2"
128
winreg = "0.55"
129
130
# put all inter-workspace libraries, i.e. those that use 'path = ...' here in
131
# their own (alphabetically sorted) block
132
133
jj-lib = { path = "lib", version = "0.37.0", default-features = false }
134
jj-lib-proc-macros = { path = "lib/proc-macros", version = "0.37.0" }
135
testutils = { path = "lib/testutils" }
136
137
[workspace.lints.clippy]
138
borrow_as_ptr = "warn"
139
cast_lossless = "warn"
140
explicit_into_iter_loop = "warn"
141
explicit_iter_loop = "warn"
142
flat_map_option = "warn"
143
implicit_clone = "warn"
144
needless_for_each = "warn"
145
ptr_as_ptr = "warn"
146
ptr_cast_constness = "warn"
147
ref_as_ptr = "warn"
148
semicolon_if_nothing_returned = "warn"
149
uninlined_format_args = "warn"
150
unnecessary_literal_bound = "warn"
151
unused_trait_names = "warn"
152
use_self = "warn"
153
useless_conversion = "warn"
154
155
[workspace.lints.rust]
156
let_underscore_drop = "warn"
157
redundant_imports = "warn"
158
159
[profile.dev.package]
160
# Insta suggests compiling these packages in opt mode for faster testing.
161
# See https://docs.rs/insta/latest/insta/#optional-faster-runs.
162
insta.opt-level = 3
163
similar.opt-level = 3
164
# Proptest suggests compiling itself and its RNG in opt mode as well.
165
# See https://proptest-rs.github.io/proptest/proptest/tips-and-best-practices.html#setting-opt-level
166
proptest.opt-level = 3
167
proptest-state-machine.opt-level = 3
168
rand_chacha.opt-level = 3
169
170
[profile.release]
171
strip = "debuginfo"
172
codegen-units = 1
173