mirror of
https://github.com/storytold/lightcraft.git
synced 2026-10-25 10:37:11 -06:00
- The crate ports Apache-2.0-only Hugging Face transformers code: it is now `license = "Apache-2.0"`, and every ported file carries the modification notice Apache-2.0 §4(b) asks for. - Weights::open checks every tensor's byte range (and the header) against the file's length: a truncated or damaged download is an error at load, never a short read later; regression test with hostile offsets. - fetch/: the model download, only when asked for. An ordered mirror list (env LIGHTCRAFT_SAM3_MIRRORS, a mirrors file, DEFAULT_MIRRORS — empty until LightCraft's CDN exists, TODO for the maintainer), fallback to the next mirror, resume via Range, redirects, connect and stall timeouts, cancel, size caps, exact size + SHA-256 (pinned from tools/install-sam3.sh) before an atomic rename; damaged files are deleted, HTTP error bodies never written. - HTTP/1.1 client over std sockets + rustls with the RustCrypto provider (rustls-rustcrypto) and webpki-roots: no ring / aws-lc-rs, nothing compiled from C (no new `cc` users in the app's build graph). - Tests against a local TcpListener server (no internet): fallback, redirects, chunked bodies, resume, 416, hash mismatch, too much data, stalls, cancel. - *.safetensors are gitignored. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
29 lines
947 B
TOML
29 lines
947 B
TOML
[package]
|
|
name = "lightcraft-segment"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license = "Apache-2.0"
|
|
description = "LightCraft segmentation: SAM 3 (Segment Anything with Concepts) inference in pure Rust (L3)"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
log = { workspace = true }
|
|
|
|
# the model runs natively only (the web build has no AI masks)
|
|
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
|
candle-core = { workspace = true }
|
|
candle-nn = { workspace = true }
|
|
rustls = { version = "0.23", default-features = false, features = ["std", "tls12"] }
|
|
rustls-rustcrypto = "0.0.2-alpha"
|
|
webpki-roots = "1"
|
|
sha2 = { version = "0.10", default-features = false, features = ["std"] }
|
|
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
candle-core = { workspace = true, features = ["metal"] }
|
|
candle-nn = { workspace = true, features = ["metal"] }
|