The wire_vs_bast bench originated in alktty as the uncommitted curiosity probe that surfaced review #004's 400x read gap (the driver for the 0.3.0 compiled-forms release). It now lives here so alktype owns its perf story; the alktty-only async roundtrip group (tokio ChunkReader/ ChunkWriter over a duplex pipe) was dropped — that measures alktty's I/O stack, not this engine. The alktty copy is deleted. Groups: - read_chunk_stream / write_chunk_stream — the original ChunkHeader shape, byte-identical methodology, so numbers stay comparable with the historical series (400x → ~18x on read p64). - read_packet_stream (new) — SFTP-shaped byte-discriminator union (Read/Write variants, Write carries a length-prefixed bytes field): exercises CompositePlan::Union dispatch + variant walks + variable reads, the case ADR-011's framing argument was about. The alktype consumer pattern follows the documented FieldValue::Union contract; a pre-measurement parity check locks the pattern (variant walk size + disc size == packet size) so the stream loop can't drift silently. - validate_stream (new) — engine.validate_bytes per buffer (materialize + ValidationPlan walk), the read+validate-on-untrusted-stream shape alkcall cares about; closes the phase-7/8 bench deferral. - one-shots — engine_compile, sequential_reader_new, layout_build. criterion 0.7 dev-dep (default-features off). Benches don't affect the wasm gate (bench targets never compile under wasm32-unknown-unknown). Numbers (1024 chunks/iter, Xeon D-1521, shared box — ±10% noise): - read p64: hand 5.7 µs / alktype 104.8 µs (~18x; parity with the phase-2/8 record of 98-99 ns/chunk) - read p4k: hand 12.1 µs / alktype 107.5 µs - write p64: hand 14.0 µs / alktype 37.5 µs; p4k: 324/362 µs - packet read p64: hand 3.3 µs / alktype 622.6 µs (~189x — dominated by per-field String allocs + variant reader construction; the read_next (String, FieldValue) signature is pinned by the semver contract) - validate: header 458 ns/chunk, packet p64 2.23 µs, packet p4k 47 µs - one-shots: compile 615 µs (meta-schema dominated), reader_new 15.7 ns, layout_build 343 ns Verification: cargo test --release (566 tests green), clippy --all-targets -D warnings, wasm32-unknown-unknown build clean.
30 lines
914 B
TOML
30 lines
914 B
TOML
[package]
|
|
name = "alktype"
|
|
version = "0.3.0"
|
|
edition = "2021"
|
|
rust-version = "1.85"
|
|
license = "MIT OR Apache-2.0"
|
|
description = "Binary struct engine: takes a BAST (Binary Abstract Syntax Tree) document and produces an offset map, read/write functions, and validation"
|
|
repository = "https://git.alk.dev/alkdev/alktype"
|
|
readme = "README.md"
|
|
keywords = ["binary", "jsonschema", "wire-format", "serialization", "layout"]
|
|
categories = ["encoding", "data-structures", "parsing"]
|
|
exclude = [".opencode/", "docs/reviews/", "docs/research/", "docs/sdd_process.md", "Cargo.lock", "AGENTS.md"]
|
|
|
|
[lib]
|
|
name = "alktype"
|
|
|
|
[features]
|
|
default = []
|
|
|
|
[dependencies]
|
|
jsonschema = { version = "0.46", default-features = false }
|
|
serde_json = { version = "1", features = ["preserve_order"] }
|
|
|
|
[dev-dependencies]
|
|
serde_json = "1"
|
|
criterion = { version = "0.7", default-features = false }
|
|
|
|
[[bench]]
|
|
name = "wire_vs_bast"
|
|
harness = false |