rsconstruct 0.9.130

Rust based fast build system
[package]
name = "rsconstruct"
version = "0.9.130"
edition = "2024"
authors = ["Mark Veltzer <mark.veltzer@gmail.com>"]
description = "Rust based fast build system"
license = "MIT"
repository = "https://github.com/veltzer/rsconstruct"

[dependencies]
clap = { version = "4.5", features = ["derive"] }
clap_complete = "4.5"
tera = "1.20"
sha2 = "0.10"
hex = "0.4"
serde = { version = "1.0", features = ["derive"] }
serde_json = { version = "1.0", features = ["preserve_order"] }
toml = "1"
toml_edit = "0.25"
anyhow = "1.0"
notify = "8"
ignore = "0.4"
tokio = { version = "1", features = ["rt-multi-thread", "process", "signal", "sync", "macros", "io-util", "time"] }
humansize = "2"
zspell = "0.5"
which = "8"
parking_lot = "0.12.5"
chrono = "0.4.43"
redb = "3"
indicatif = "0.18"
mlua = { version = "0.11", features = ["lua54", "send", "vendored", "serialize"] }
regex = "1"
glob = "0.3.3"
serde_norway = "0.9"
# Same slugifier as zola (its `slugify_paths`), so the zola mass generator
# predicts exactly the paths zola writes.
slug = "0.1"
zstd = "0.13"
lopdf = "0.45"
grass = { version = "0.13.4", default-features = false }
pulldown-cmark = { version = "0.13.3", default-features = false, features = ["html"] }
jsonschema = { version = "0.45.1", default-features = false, features = ["resolve-file"] }
# `default-features = false` drops tabled's `derive` feature, which is the
# only thing pulling in proc-macro-error2 — a crate that re-exports the
# private `proc_macro` extern, which future Rust rejects (rust#127909). We
# build tables through `Builder` and never use `#[derive(Tabled)]`, so the
# derive macro was dead weight. `std` is required for `Builder`/`Table`.
tabled = { version = "0.21.0", default-features = false, features = ["ansi", "std"] }
ureq = "3"
strum = { version = "0.28.0", features = ["derive"] }
inventory = "0.3.24"
libyaml-safer = "0.3"
xmlparser = "0.13"
minijinja = { version = "3.0.0", features = ["json", "urlencode"] }
minijinja-contrib = { version = "3.0.0", features = ["pycompat", "wordcount", "wordwrap", "rand"] }
jaq-core = "3.1.1"
jaq-std = "3.0.3"
jaq-json = "2.0.3"
protox = "0.10.0"
prost-build = "0.14.4"
prost-types = "0.14.4"
prost = "0.14.4"
fancy-regex = "0.19.2"
unicode-width = "0.2.2"
unicode-normalization = "0.1.25"
unicode-general-category = "1.1.0"
imbl = "7.0.2"

[target.'cfg(unix)'.dependencies]
libc = "0.2"

[dev-dependencies]
tempfile = "3.8"
serde_json = "1.0"
pastey = "0.2"

# Dev builds favour compile speed: line tables keep file:line in backtraces
# at a fraction of full debug info's link cost, and dependencies get light
# optimization once (they rarely change) so tests run faster.
[profile.dev]
debug = "line-tables-only"

[profile.dev.package."*"]
opt-level = 1

# Everyday release builds: thin LTO keeps most of the gain while using every
# core. The fully optimized binary is the dist profile below.
[profile.release]
strip = true
lto = "thin"

# What ships: CI's release job builds this (`cargo build --profile dist`).
# Fat LTO with one codegen unit is slow to build and only worth it here.
[profile.dist]
inherits = "release"
lto = true
codegen-units = 1

# Shipped-binary-equivalent build with debug symbols for profiling (samply/perf).
# Usage: `cargo build --profile profiling`; binary lands in target/profiling/.
[profile.profiling]
inherits = "dist"
strip = false
debug = true