- fuzz/ workspace (nightly-pinned via rust-toolchain.toml, excluded from the main workspace and the published package): chunk_header and envelope_frame targets per fuzzing.md \u00a77.1 - invariant logic in fuzz/shared (stable-toolchain crate): committed corpus replay as plain cargo test (quinn CI pattern, \u00a77.2 tier 3) - envelope target adds FrameError shape-partition asserts, exact consumption accounting, structural write_frame round-trip, serde key-contract, and a trailing-byte probe (prefix counts body only) - chunk_header target adds round-trip identity, TooLarge/short error shape, is_eof, 8-byte consumption, input-never-mutated - committed seed corpora: 245 deterministic seeds via fuzz/gen_fuzz_seeds.py (truncations, len=0/MAX+1/u32::MAX, channel 0, invalid UTF-8, deep nesting); grown corpora + artifacts gitignored - fuzz/run-detached.sh: \u00a77.6 detached runner (setsid+nohup+log, fork mode, rss/malloc limits) \u2014 campaigns never share fate with a session - fuzz/json.dict; README; research doc \u00a77.7 records step-1 status Verification: cargo fuzz build clean; stable side green (cargo test 682 passed, clippy -D warnings, fmt --check incl. fuzz/shared); corpus replay 245 seeds green; detached 10-min campaigns on both targets completed with zero crashes/OOMs/timeouts
38 lines
1.2 KiB
TOML
38 lines
1.2 KiB
TOML
[package]
|
|
name = "alkcall"
|
|
version = "0.8.0"
|
|
edition = "2021"
|
|
rust-version = "1.88"
|
|
license = "MIT OR Apache-2.0"
|
|
description = "Call + channels RPC: structured JSON operations, streaming subscriptions, service discovery, and N-channel multiplexing over one transport stream"
|
|
readme = "README.md"
|
|
repository = "https://git.alk.dev/alkdev/alkcall"
|
|
keywords = ["rpc", "json-rpc", "multiplexing", "wire-format", "alpn"]
|
|
categories = ["network-programming", "asynchronous", "encoding"]
|
|
exclude = [".opencode/", "AGENTS.md", "docs/reviews/", "docs/sdd_process.md", "fuzz/"]
|
|
|
|
[workspace]
|
|
members = ["."]
|
|
exclude = ["fuzz"]
|
|
|
|
[lib]
|
|
name = "alkcall"
|
|
|
|
[features]
|
|
default = []
|
|
gateway = []
|
|
|
|
[dependencies]
|
|
jsonschema = { version = "0.46", default-features = false }
|
|
tokio = { version = "1", features = ["rt", "sync", "time", "io-util", "macros"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
async-trait = "0.1"
|
|
tracing = "0.1"
|
|
thiserror = "2"
|
|
uuid = { version = "1", features = ["v4", "rng-getrandom"] }
|
|
getrandom = { version = "0.4", features = ["wasm_js"] }
|
|
futures = "0.3"
|
|
parking_lot = "0.12"
|
|
bytes = "1"
|
|
zeroize = { version = "1", features = ["alloc", "derive"] } |