BREP_kernel 0.4.0

A boundary representation (BREP) geometry kernel for building CAD applications.
Documentation
[package]
name = "BREP_kernel"
version = "0.4.0"
edition = "2021"
license-file = "LICENSE.md"
description = "A boundary representation (BREP) geometry kernel for building CAD applications."
repository = "https://github.com/mmiscool/NURBS_BREP_kernel"
readme = "README.md"
keywords = ["cad", "brep", "geometry", "nurbs", "kernel"]
categories = ["mathematics", "graphics", "algorithms"]
# Allowlist, not exclude: the crate dir carries ~140 MB of test fixtures and
# boolean-fuzz corpora that must never ship in the package (crates.io caps
# packages at 10 MiB). benches/kernel.rs stays because [[bench]] declares it.
include = [
    "src/**/*.rs",
    "/Cargo.toml",
    "/README.md",
    "/LICENSE.md",
    "/benches/kernel.rs",
]

[lib]
# Published package is BREP_kernel; the lib name is the idiomatic lowercase
# `brep_kernel` — the symbol every `use brep_kernel::` (BREP_render, benches,
# examples) and the wasm-pack artifact names key off.
name = "brep_kernel"
crate-type = ["cdylib", "rlib"]

[profile.release]
opt-level = 3           # aggressive opts: loop unrolling + vectorization
lto = "fat"             # full cross-crate Link-Time Optimization
codegen-units = 1       # single codegen unit lets LLVM optimize globally
panic = "abort"         # drop unwinding code (wasm can't unwind anyway) — smaller/faster
overflow-checks = false # no arithmetic overflow checks in hot paths

[dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["preserve_order"] }
slotmap = "1"
rustc-hash = "2"
wasm-bindgen = "0.2"
console_error_panic_hook = "0.1"
web-time = "1"
spade = "=2.15.1"
rayon = { version = "1", optional = true }
wasm-bindgen-rayon = { version = "1", optional = true }

[features]
# `parallel` turns the per-face tessellation loop into a rayon par_iter. It
# works on native (rayon's own pool) and on wasm built with atomics. The
# DEFAULT build enables neither feature, so the shipped wasm is byte-identical
# to before. `wasm-threads` additionally pulls in wasm-bindgen-rayon so the
# browser can spin up a shared-memory thread pool (requires an atomics build +
# COOP/COEP headers — see build:rust-kernel:threads).
parallel = ["dep:rayon"]
wasm-threads = ["parallel", "dep:wasm-bindgen-rayon"]

[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }

[[bench]]
name = "kernel"
harness = false