Files
diodeinc__pcb/Cargo.toml
T
2026-09-05 15:02:19 +00:00

206 lines
7.4 KiB
TOML

[workspace]
members = ["crates/*"]
resolver = "2"
[workspace.package]
version = "0.4.50"
edition = "2024"
repository = "https://github.com/diodeinc/pcb"
homepage = "https://github.com/diodeinc/pcb"
authors = ["Diode Computers, Inc. <founders@diode.computer>"]
[workspace.dependencies]
glam = "0.33.6"
starlark = { git = "https://github.com/diodeinc/starlark-rust", rev = "c3d776bcd0bf074b00fc059d7700b82ab8dcc010", default-features = false }
starlark_map = { git = "https://github.com/diodeinc/starlark-rust", rev = "c3d776bcd0bf074b00fc059d7700b82ab8dcc010", default-features = false }
starlark_syntax = { git = "https://github.com/diodeinc/starlark-rust", rev = "c3d776bcd0bf074b00fc059d7700b82ab8dcc010", default-features = false }
allocative = { git = "https://github.com/diodeinc/starlark-rust", rev = "c3d776bcd0bf074b00fc059d7700b82ab8dcc010", default-features = false }
pagable = { git = "https://github.com/diodeinc/starlark-rust", rev = "c3d776bcd0bf074b00fc059d7700b82ab8dcc010", default-features = false }
ruff_python_formatter = { git = "https://github.com/astral-sh/ruff", tag = "0.16.5" }
ruff_formatter = { git = "https://github.com/astral-sh/ruff", tag = "0.16.5" }
mimalloc = "0.1"
similar = "3.2"
ipc2581 = { path = "crates/ipc2581", version = "0.3.3" }
pcb-intern = { path = "crates/pcb-intern", version = "0.1.0" }
gerberx2 = { path = "crates/gerberx2", version = "0.1.2" }
pcb-ir = { path = "crates/pcb-ir", version = "0.3.82" }
pcb-command-runner = { path = "crates/pcb-command-runner" }
pcb-eda = { path = "crates/pcb-eda" }
pcb-component-gen = { path = "crates/pcb-component-gen" }
pcb-layout = { path = "crates/pcb-layout" }
pcb-sch = { path = "crates/pcb-sch" }
pcb-canonical = { path = "crates/pcb-canonical" }
pcb-zen = { path = "crates/pcb-zen" }
pcb-zen-core = { path = "crates/pcb-zen-core" }
pcb-ui = { path = "crates/pcb-ui" }
pcb-kicad = { path = "crates/pcb-kicad" }
pcb-kicad-sch = { path = "crates/pcb-kicad-sch" }
pcb-sexpr = { path = "crates/pcb-sexpr", features = ["serde"] }
pcb-starlark-lsp = { path = "crates/pcb-starlark-lsp" }
pcb-fmt = { path = "crates/pcb-fmt" }
pcb-test-utils = { path = "crates/pcb-test-utils" }
pcb-sim = { path = "crates/pcb-sim" }
pcb-diode-api = { path = "crates/pcb-diode-api" }
pcb-diode-uri = { path = "crates/pcb-diode-uri" }
pcb-native-dialog = { path = "crates/pcb-native-dialog" }
pcb-ipc2581-tools = { path = "crates/pcb-ipc2581-tools", default-features = false }
pcb-docgen = { path = "crates/pcb-docgen" }
anyhow = "1.0"
anstream = "1.0"
atomicwrites = "0.4"
arboard = { version = "3.6", default-features = false }
ariadne = { version = "0.6", features = ["auto-color"] }
chrono = { version = "0.4", features = ["serde"] }
clap = { version = "4.6.6", features = ["derive", "wrap_help"] }
colored = "3"
derive_more = { version = "2.1.1", features = ["full"] }
dirs = "6"
dupe = { git = "https://github.com/diodeinc/starlark-rust", rev = "c3d776bcd0bf074b00fc059d7700b82ab8dcc010" }
duct = "1.1.1"
env_logger = "0.11"
indicatif = "0.18"
inquire = "0.9"
itertools = "0.15"
heck = "0.5.0"
hex = "0.4"
httpmock = "0.8"
libm = { version = "0.2.16", default-features = false }
log = "0.4.34"
minijinja = "2.24"
notify = "8.2"
open = "5.4.2"
path-slash = "0.2.1"
termtree = "1"
regex = "1.12.4"
natord = "1.0.9"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
tempfile = "3.27.0"
thiserror = "2.0.20"
tiny_http = "0.12.0"
toml = "1"
toml_edit = "0.25"
uuid = { version = "1.26", features = ["v4", "v5", "js"] }
walkdir = "2.5"
deunicode = "1.6"
insta = { version = "1.48", features = ["yaml", "filters", "json"] }
assert_cmd = "2.2"
assert_fs = "1.1"
base64 = "0.23.1"
console_error_panic_hook = "0.1"
console_log = "1.0.0"
crossterm = "0.29"
ctrlc = { version = "3.5", features = ["termination"] }
ratatui = "0.30"
ratatui-image = { version = "11.0", default-features = false, features = ["crossterm"] }
image = { version = "0.25", default-features = false, features = ["png", "jpeg", "webp"] }
csv = "1.4"
derivative = "2.2"
fixedbitset = "0.5"
# Enable the JS backend for boostvoronoi -> cpp_map -> rand 0.9, which uses
# getrandom 0.3. Moving this to 0.4 would leave that WASM dependency unconfigured.
getrandom = { version = "0.3.4", features = ["wasm_js"] }
globset = "0.4.20"
lsp-server = "0.10.0"
lsp-types = "0.97.0"
maplit = "1.0.2"
md-5 = "0.11"
os_pipe = "1.2.3"
paste = "1.0"
pathdiff = "0.2"
percent-encoding = "2.3"
petgraph = "0.8"
rayon = "1.12"
reqwest = { version = "0.13", default-features = false, features = ["blocking", "http2", "json", "multipart", "rustls", "system-proxy"] }
ureq = { version = "3.4", default-features = false, features = ["rustls"] }
rand = "0.10"
js-sys = "0.3"
serde-wasm-bindgen = "0.6"
serde-value = "0.7"
self-replace = "1.5"
serial_test = "4.0"
smallvec = "1.15"
strip-ansi-escapes = "0.2"
supports-hyperlinks = "3"
tar = { version = "0.4", default-features = false }
ruzstd = "0.9"
terminal_size = "0.4.4"
terminal_hyperlink = "0.1"
uppsala = "0.9.0"
termimad = "0.35.2"
# regex-fancy (pure Rust, and fancy-regex is already in the tree via pagable)
# rather than regex-onig, which compiles Oniguruma from C via onig_sys.
syntect = { version = "5", default-features = false, features = ["default-syntaxes", "default-themes", "regex-fancy"] }
textwrap = "0.16"
unicode-width = "0.2.2"
urlencoding = "2.1"
wasm-bindgen = "0.2.127"
zip = { version = "8", default-features = false, features = ["deflate"] }
fslock = "0.2"
rust_decimal = { version = "1.42", features = ["serde", "serde-with-str"] }
rust_decimal_macros = "1.40"
comfy-table = { version = "8", features = ["custom_styling"] }
url = "2.5"
ignore = "0.4.33"
i_overlay = "8.1"
boostvoronoi = "0.12.1"
sha2 = "0.11"
semver = { version = "1.0", features = ["serde"] }
kurbo = "0.13"
resvg = { version = "0.48", default-features = false }
zstd = "0.13"
jiff = "0.2"
# The Starlark fork requires exactly 1.8.2 for its hashing integration.
blake3 = "1.8"
rusqlite = { version = "0.40.2", features = ["bundled"] }
r2d2 = "0.8"
r2d2_sqlite = "0.35"
unicode-normalization = "0.1"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
tracing-chrome = "0.7"
# rectify: STEP tessellation (foxtrot), raster grids, and FFT numerics
triangulate = { git = "https://github.com/diodeinc/foxtrot.git", rev = "5e5aa2fb924e4e595b116e4867ad09be5f58e76a" }
ndarray = "0.17"
rustfft = "6.4"
num-complex = "0.4"
# The profile that release CI uses for published binaries.
# The geometry stack burns most of the test suite's wall clock in pcb-ir's
# solver loops and the polygon-boolean crates under them. Optimizing these
# packages in dev keeps everything else debuggable while the tests that
# exercise panel geometry run several times faster.
[profile.dev.package.pcb-ir]
opt-level = 2
[profile.dev.package.i_overlay]
opt-level = 2
[profile.dev.package.i_float]
opt-level = 2
[profile.dev.package.i_shape]
opt-level = 2
[profile.dev.package.i_tree]
opt-level = 2
[profile.dev.package.i_key_sort]
opt-level = 2
[profile.dev.package.ipc2581]
opt-level = 2
# Test binaries are short-lived and do not need the full debug information that
# made this workspace's integration-test artifacts hundreds of megabytes each.
[profile.test]
debug = 0
[profile.dist]
inherits = "release"
lto = "fat" # Maximum link-time optimization
codegen-units = 1 # Better optimization
strip = "symbols" # Strip symbols from published binaries
panic = "abort" # Published binaries should not carry unwinding machinery.