-
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathCargo.toml
More file actions
72 lines (66 loc) · 2.85 KB
/
Copy pathCargo.toml
File metadata and controls
72 lines (66 loc) · 2.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
[workspace]
resolver = "2"
members = ["crates/*", "examples/*", "benches/*"]
exclude = ["examples/java-jni-demo"]
# Bare `cargo build`/`test`/`clippy` (no `--workspace`) stay scoped to the
# shipped crates + examples; the compile-time benchmark fixture/harness under
# `benches/*` are built on demand (`cargo run -p compile-bench-runner`) so a
# deliberately macro-heavy fixture does not tax every local build.
default-members = ["crates/*", "examples/*"]
[workspace.package]
version = "0.4.0"
edition = "2024"
license = "Apache-2.0"
repository = "https://github.com/dev-five-git/vespera"
readme = "README.md"
# Release profile tuned for the shipped artifacts (JNI cdylibs, server
# binaries): FAT LTO + single codegen unit deliberately trade much
# longer release-build time for maximum cross-crate inlining on the
# runtime-critical paths (wire parse/serialize, dispatch, JNI
# callbacks). Runtime performance of the shipped artifact is
# prioritized over build time by project policy.
#
# `strip = "debuginfo"` shrinks the artifact without touching the
# exported JNI dynamic symbols (they live in `.dynsym`, not the
# stripped debug/local symbol table).
#
# NEVER switch the panic strategy away from unwinding here — the JNI
# bridge relies on `catch_unwind` to convert handler panics into `500`
# wire responses; aborting would take down the host JVM instead.
[profile.release]
lto = "fat"
codegen-units = 1
strip = "debuginfo"
# Benchmarks must measure under the SAME codegen as the shipped release
# artifacts (fat LTO + single codegen unit); otherwise the absolute
# numbers reflect the default `bench` profile (no LTO, 16 codegen units)
# instead of production. Build time is intentionally traded for
# representative measurements.
[profile.bench]
lto = "fat"
codegen-units = 1
[workspace.dependencies]
vespera_core = { path = "crates/vespera_core", version = "0.4.0" }
vespera_macro = { path = "crates/vespera_macro", version = "0.4.0" }
vespera_inprocess = { path = "crates/vespera_inprocess", version = "0.4.0" }
vespera_jni = { path = "crates/vespera_jni", version = "0.4.0" }
# Runtime validator backend. Held behind the `validation` feature on
# the `vespera` crate; users never name it directly — the proc-macro
# emits paths via `::vespera::__validation::garde::...`.
garde = { version = "0.23", default-features = false, features = ["email", "url", "pattern"] }
[workspace.lints.clippy]
all = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
# cherry-picked nursery lints
collection_is_never_read = "warn"
option_if_let_else = "warn"
redundant_pub_crate = "warn"
use_self = "warn"
# noisy pedantic lints to allow
module_name_repetitions = "allow"
must_use_candidate = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
doc_markdown = "allow"
[workspace.lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tarpaulin_include)'] }