We weren't really using `chrono` for anything other than getting the current time and formatting it for logs. Unfortunately, this doesn't quite get us to a point where `chrono` can be removed. From what I can tell, we're still bringing it via [`tracing-subscriber`](https://docs.rs/tracing-subscriber/latest/tracing_subscriber/) and [`quick-junit`](https://docs.rs/quick-junit/latest/quick_junit/). `tracing-subscriber` does have an [issue open about Jiff](https://github.com/tokio-rs/tracing/discussions/3128), but there's no movement on it. Normally I'd suggest holding off on this since it doesn't get us all of the way there and it would be better to avoid bringing in two datetime libraries, but we are, it appears, already there. In particular, `env_logger` brings in Jiff. So this PR doesn't really make anything worse, but it does bring us closer to an all-Jiff world.
341 lines
12 KiB
TOML
341 lines
12 KiB
TOML
[workspace]
|
|
members = ["crates/*"]
|
|
resolver = "2"
|
|
|
|
[workspace.package]
|
|
edition = "2021"
|
|
rust-version = "1.84"
|
|
homepage = "https://docs.astral.sh/ruff"
|
|
documentation = "https://docs.astral.sh/ruff"
|
|
repository = "https://github.com/astral-sh/ruff"
|
|
authors = ["Charlie Marsh <charlie.r.marsh@gmail.com>"]
|
|
license = "MIT"
|
|
|
|
[workspace.dependencies]
|
|
ruff = { path = "crates/ruff" }
|
|
ruff_annotate_snippets = { path = "crates/ruff_annotate_snippets" }
|
|
ruff_cache = { path = "crates/ruff_cache" }
|
|
ruff_db = { path = "crates/ruff_db", default-features = false }
|
|
ruff_diagnostics = { path = "crates/ruff_diagnostics" }
|
|
ruff_formatter = { path = "crates/ruff_formatter" }
|
|
ruff_graph = { path = "crates/ruff_graph" }
|
|
ruff_index = { path = "crates/ruff_index" }
|
|
ruff_linter = { path = "crates/ruff_linter" }
|
|
ruff_macros = { path = "crates/ruff_macros" }
|
|
ruff_notebook = { path = "crates/ruff_notebook" }
|
|
ruff_python_ast = { path = "crates/ruff_python_ast" }
|
|
ruff_python_codegen = { path = "crates/ruff_python_codegen" }
|
|
ruff_python_formatter = { path = "crates/ruff_python_formatter" }
|
|
ruff_python_index = { path = "crates/ruff_python_index" }
|
|
ruff_python_literal = { path = "crates/ruff_python_literal" }
|
|
ruff_python_parser = { path = "crates/ruff_python_parser" }
|
|
ruff_python_semantic = { path = "crates/ruff_python_semantic" }
|
|
ruff_python_stdlib = { path = "crates/ruff_python_stdlib" }
|
|
ruff_python_trivia = { path = "crates/ruff_python_trivia" }
|
|
ruff_server = { path = "crates/ruff_server" }
|
|
ruff_source_file = { path = "crates/ruff_source_file" }
|
|
ruff_text_size = { path = "crates/ruff_text_size" }
|
|
red_knot_vendored = { path = "crates/red_knot_vendored" }
|
|
ruff_workspace = { path = "crates/ruff_workspace" }
|
|
|
|
red_knot_ide = { path = "crates/red_knot_ide" }
|
|
red_knot_project = { path = "crates/red_knot_project", default-features = false }
|
|
red_knot_python_semantic = { path = "crates/red_knot_python_semantic" }
|
|
red_knot_server = { path = "crates/red_knot_server" }
|
|
red_knot_test = { path = "crates/red_knot_test" }
|
|
|
|
aho-corasick = { version = "1.1.3" }
|
|
anstream = { version = "0.6.18" }
|
|
anstyle = { version = "1.0.10" }
|
|
anyhow = { version = "1.0.80" }
|
|
assert_fs = { version = "1.1.0" }
|
|
argfile = { version = "0.2.0" }
|
|
bincode = { version = "1.3.3" }
|
|
bitflags = { version = "2.5.0" }
|
|
bstr = { version = "1.9.1" }
|
|
cachedir = { version = "0.3.1" }
|
|
camino = { version = "1.1.7" }
|
|
clap = { version = "4.5.3", features = ["derive"] }
|
|
clap_complete_command = { version = "0.6.0" }
|
|
clearscreen = { version = "4.0.0" }
|
|
codspeed-criterion-compat = { version = "2.6.0", default-features = false }
|
|
colored = { version = "3.0.0" }
|
|
console_error_panic_hook = { version = "0.1.7" }
|
|
console_log = { version = "1.0.0" }
|
|
countme = { version = "3.0.1" }
|
|
compact_str = "0.9.0"
|
|
criterion = { version = "0.5.1", default-features = false }
|
|
crossbeam = { version = "0.8.4" }
|
|
dashmap = { version = "6.0.1" }
|
|
dir-test = { version = "0.4.0" }
|
|
dunce = { version = "1.0.5" }
|
|
drop_bomb = { version = "0.1.5" }
|
|
env_logger = { version = "0.11.0" }
|
|
etcetera = { version = "0.10.0" }
|
|
fern = { version = "0.7.0" }
|
|
filetime = { version = "0.2.23" }
|
|
getrandom = { version = "0.3.1" }
|
|
glob = { version = "0.3.1" }
|
|
globset = { version = "0.4.14" }
|
|
globwalk = { version = "0.9.1" }
|
|
hashbrown = { version = "0.15.0", default-features = false, features = [
|
|
"raw-entry",
|
|
"equivalent",
|
|
"inline-more",
|
|
] }
|
|
ignore = { version = "0.4.22" }
|
|
imara-diff = { version = "0.1.5" }
|
|
imperative = { version = "1.0.4" }
|
|
indexmap = { version = "2.6.0" }
|
|
indicatif = { version = "0.17.8" }
|
|
indoc = { version = "2.0.4" }
|
|
insta = { version = "1.35.1" }
|
|
insta-cmd = { version = "0.6.0" }
|
|
is-macro = { version = "0.3.5" }
|
|
is-wsl = { version = "0.4.0" }
|
|
itertools = { version = "0.14.0" }
|
|
jiff = { version = "0.2.0" }
|
|
js-sys = { version = "0.3.69" }
|
|
jod-thread = { version = "0.1.2" }
|
|
libc = { version = "0.2.153" }
|
|
libcst = { version = "1.1.0", default-features = false }
|
|
log = { version = "0.4.17" }
|
|
lsp-server = { version = "0.7.6" }
|
|
lsp-types = { git = "https://github.com/astral-sh/lsp-types.git", rev = "3512a9f", features = [
|
|
"proposed",
|
|
] }
|
|
matchit = { version = "0.8.1" }
|
|
memchr = { version = "2.7.1" }
|
|
mimalloc = { version = "0.1.39" }
|
|
natord = { version = "1.0.9" }
|
|
notify = { version = "8.0.0" }
|
|
ordermap = { version = "0.5.0" }
|
|
path-absolutize = { version = "3.1.1" }
|
|
path-slash = { version = "0.2.1" }
|
|
pathdiff = { version = "0.2.1" }
|
|
pep440_rs = { version = "0.7.1" }
|
|
pretty_assertions = "1.3.0"
|
|
proc-macro2 = { version = "1.0.79" }
|
|
pyproject-toml = { version = "0.13.4" }
|
|
quick-junit = { version = "0.5.0" }
|
|
quote = { version = "1.0.23" }
|
|
rand = { version = "0.9.0" }
|
|
rayon = { version = "1.10.0" }
|
|
regex = { version = "1.10.2" }
|
|
rustc-hash = { version = "2.0.0" }
|
|
# When updating salsa, make sure to also update the revision in `fuzz/Cargo.toml`
|
|
salsa = { git = "https://github.com/salsa-rs/salsa.git", rev = "87bf6b6c2d5f6479741271da73bd9d30c2580c26" }
|
|
schemars = { version = "0.8.16" }
|
|
seahash = { version = "4.1.0" }
|
|
serde = { version = "1.0.197", features = ["derive"] }
|
|
serde-wasm-bindgen = { version = "0.6.4" }
|
|
serde_json = { version = "1.0.113" }
|
|
serde_test = { version = "1.0.152" }
|
|
serde_with = { version = "3.6.0", default-features = false, features = [
|
|
"macros",
|
|
] }
|
|
shellexpand = { version = "3.0.0" }
|
|
similar = { version = "2.4.0", features = ["inline"] }
|
|
smallvec = { version = "1.13.2" }
|
|
snapbox = { version = "0.6.0", features = [
|
|
"diff",
|
|
"term-svg",
|
|
"cmd",
|
|
"examples",
|
|
] }
|
|
static_assertions = "1.1.0"
|
|
strum = { version = "0.27.0", features = ["strum_macros"] }
|
|
strum_macros = { version = "0.27.0" }
|
|
syn = { version = "2.0.55" }
|
|
tempfile = { version = "3.9.0" }
|
|
test-case = { version = "3.3.1" }
|
|
thiserror = { version = "2.0.0" }
|
|
tikv-jemallocator = { version = "0.6.0" }
|
|
toml = { version = "0.8.11" }
|
|
tracing = { version = "0.1.40" }
|
|
tracing-flame = { version = "0.2.0" }
|
|
tracing-indicatif = { version = "0.3.6" }
|
|
tracing-log = { version = "0.2.0" }
|
|
tracing-subscriber = { version = "0.3.18", default-features = false, features = [
|
|
"env-filter",
|
|
"fmt",
|
|
] }
|
|
tracing-tree = { version = "0.4.0" }
|
|
tryfn = { version = "0.2.1" }
|
|
typed-arena = { version = "2.0.2" }
|
|
unic-ucd-category = { version = "0.9" }
|
|
unicode-ident = { version = "1.0.12" }
|
|
unicode-width = { version = "0.2.0" }
|
|
unicode_names2 = { version = "1.2.2" }
|
|
unicode-normalization = { version = "0.1.23" }
|
|
url = { version = "2.5.0" }
|
|
uuid = { version = "1.6.1", features = [
|
|
"v4",
|
|
"fast-rng",
|
|
"macro-diagnostics",
|
|
"js",
|
|
] }
|
|
walkdir = { version = "2.3.2" }
|
|
wasm-bindgen = { version = "0.2.92" }
|
|
wasm-bindgen-test = { version = "0.3.42" }
|
|
wild = { version = "2" }
|
|
zip = { version = "0.6.6", default-features = false }
|
|
|
|
[workspace.metadata.cargo-shear]
|
|
ignored = ["getrandom"]
|
|
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "warn"
|
|
unreachable_pub = "warn"
|
|
unexpected_cfgs = { level = "warn", check-cfg = [
|
|
"cfg(fuzzing)",
|
|
"cfg(codspeed)",
|
|
] }
|
|
|
|
[workspace.lints.clippy]
|
|
pedantic = { level = "warn", priority = -2 }
|
|
# Allowed pedantic lints
|
|
char_lit_as_u8 = "allow"
|
|
collapsible_else_if = "allow"
|
|
collapsible_if = "allow"
|
|
implicit_hasher = "allow"
|
|
map_unwrap_or = "allow"
|
|
match_same_arms = "allow"
|
|
missing_errors_doc = "allow"
|
|
missing_panics_doc = "allow"
|
|
module_name_repetitions = "allow"
|
|
must_use_candidate = "allow"
|
|
similar_names = "allow"
|
|
single_match_else = "allow"
|
|
too_many_lines = "allow"
|
|
needless_continue = "allow" # An explicit continue can be more readable, especially if the alternative is an empty block.
|
|
# Without the hashes we run into a `rustfmt` bug in some snapshot tests, see #13250
|
|
needless_raw_string_hashes = "allow"
|
|
# Disallowed restriction lints
|
|
print_stdout = "warn"
|
|
print_stderr = "warn"
|
|
dbg_macro = "warn"
|
|
empty_drop = "warn"
|
|
empty_structs_with_brackets = "warn"
|
|
exit = "warn"
|
|
get_unwrap = "warn"
|
|
rc_buffer = "warn"
|
|
rc_mutex = "warn"
|
|
rest_pat_in_fully_bound_structs = "warn"
|
|
# nursery rules
|
|
redundant_clone = "warn"
|
|
debug_assert_with_mut_call = "warn"
|
|
unused_peekable = "warn"
|
|
|
|
# Diagnostics are not actionable: Enable once https://github.com/rust-lang/rust-clippy/issues/13774 is resolved.
|
|
large_stack_arrays = "allow"
|
|
|
|
[profile.release]
|
|
# Note that we set these explicitly, and these values
|
|
# were chosen based on a trade-off between compile times
|
|
# and runtime performance[1].
|
|
#
|
|
# [1]: https://github.com/astral-sh/ruff/pull/9031
|
|
lto = "thin"
|
|
codegen-units = 16
|
|
|
|
# Some crates don't change as much but benefit more from
|
|
# more expensive optimization passes, so we selectively
|
|
# decrease codegen-units in some cases.
|
|
[profile.release.package.ruff_python_parser]
|
|
codegen-units = 1
|
|
[profile.release.package.ruff_python_ast]
|
|
codegen-units = 1
|
|
|
|
[profile.dev.package.insta]
|
|
opt-level = 3
|
|
|
|
[profile.dev.package.similar]
|
|
opt-level = 3
|
|
|
|
# Reduce complexity of a parser function that would trigger a locals limit in a wasm tool.
|
|
# https://github.com/bytecodealliance/wasm-tools/blob/b5c3d98e40590512a3b12470ef358d5c7b983b15/crates/wasmparser/src/limits.rs#L29
|
|
[profile.dev.package.ruff_python_parser]
|
|
opt-level = 1
|
|
|
|
# Use the `--profile profiling` flag to show symbols in release mode.
|
|
# e.g. `cargo build --profile profiling`
|
|
[profile.profiling]
|
|
inherits = "release"
|
|
debug = 1
|
|
|
|
# The profile that 'cargo dist' will build with.
|
|
[profile.dist]
|
|
inherits = "release"
|
|
|
|
# Config for 'dist'
|
|
[workspace.metadata.dist]
|
|
# The preferred dist version to use in CI (Cargo.toml SemVer syntax)
|
|
cargo-dist-version = "0.28.4-prerelease.1"
|
|
# CI backends to support
|
|
ci = "github"
|
|
# The installers to generate for each app
|
|
installers = ["shell", "powershell"]
|
|
# The archive format to use for windows builds (defaults .zip)
|
|
windows-archive = ".zip"
|
|
# The archive format to use for non-windows builds (defaults .tar.xz)
|
|
unix-archive = ".tar.gz"
|
|
# Target platforms to build apps for (Rust target-triple syntax)
|
|
targets = [
|
|
"aarch64-apple-darwin",
|
|
"aarch64-pc-windows-msvc",
|
|
"aarch64-unknown-linux-gnu",
|
|
"aarch64-unknown-linux-musl",
|
|
"arm-unknown-linux-musleabihf",
|
|
"armv7-unknown-linux-gnueabihf",
|
|
"armv7-unknown-linux-musleabihf",
|
|
"i686-pc-windows-msvc",
|
|
"i686-unknown-linux-gnu",
|
|
"i686-unknown-linux-musl",
|
|
"powerpc64-unknown-linux-gnu",
|
|
"powerpc64le-unknown-linux-gnu",
|
|
"s390x-unknown-linux-gnu",
|
|
"x86_64-apple-darwin",
|
|
"x86_64-pc-windows-msvc",
|
|
"x86_64-unknown-linux-gnu",
|
|
"x86_64-unknown-linux-musl",
|
|
]
|
|
# Whether to auto-include files like READMEs, LICENSEs, and CHANGELOGs (default true)
|
|
auto-includes = false
|
|
# Whether dist should create a Github Release or use an existing draft
|
|
create-release = true
|
|
# Which actions to run on pull requests
|
|
pr-run-mode = "skip"
|
|
# Whether CI should trigger releases with dispatches instead of tag pushes
|
|
dispatch-releases = true
|
|
# Which phase dist should use to create the GitHub release
|
|
github-release = "announce"
|
|
# Whether CI should include auto-generated code to build local artifacts
|
|
build-local-artifacts = false
|
|
# Local artifacts jobs to run in CI
|
|
local-artifacts-jobs = ["./build-binaries", "./build-docker"]
|
|
# Publish jobs to run in CI
|
|
publish-jobs = ["./publish-pypi", "./publish-wasm"]
|
|
# Post-announce jobs to run in CI
|
|
post-announce-jobs = [
|
|
"./notify-dependents",
|
|
"./publish-docs",
|
|
"./publish-playground",
|
|
]
|
|
# Custom permissions for GitHub Jobs
|
|
github-custom-job-permissions = { "build-docker" = { packages = "write", contents = "read" }, "publish-wasm" = { contents = "read", id-token = "write", packages = "write" } }
|
|
# Whether to install an updater program
|
|
install-updater = false
|
|
# Path that installers should place binaries in
|
|
install-path = ["$XDG_BIN_HOME/", "$XDG_DATA_HOME/../bin", "~/.local/bin"]
|
|
|
|
[workspace.metadata.dist.github-custom-runners]
|
|
global = "depot-ubuntu-latest-4"
|
|
|
|
[workspace.metadata.dist.github-action-commits]
|
|
"actions/checkout" = "11bd71901bbe5b1630ceea73d27597364c9af683" # v4
|
|
"actions/upload-artifact" = "ea165f8d65b6e75b540449e92b4886f43607fa02" # v4.6.2
|
|
"actions/download-artifact" = "95815c38cf2ff2164869cbab79da8d1f422bc89e" # v4.2.1
|
|
"actions/attest-build-provenance" = "c074443f1aee8d4aeeae555aebba3282517141b2" #v2.2.3
|