# vyre-std — the vyre standard library
**Status:** shipping, workspace member, published alongside `vyre` and
`vyre-conform`.
**Layer:** L2 — compositional helpers built from `vyre` core primitives.
**Scope:** GPU-native pattern matching (DFA assembly pipeline) and
arithmetic helpers.
---
## What ships today
### Pattern compilation — full GPU DFA assembly pipeline
```text
regex_to_nfa → Nfa → nfa_to_dfa → Dfa → dfa_minimize → Dfa → dfa_pack → PackedDfa
```
One-line API — patterns in, GPU-ready bytes out:
```rust
use vyre_std::pattern::{dfa_assemble, AssembleOptions, Pattern};
let packed = dfa_assemble(
&[
Pattern::Literal(b"GET /api"),
Pattern::Literal(b"POST /api"),
Pattern::Regex("PUT /api/v[0-9]+"),
],
AssembleOptions::default(),
)?;
// `packed.bytes` is ready for a backend-specific dispatcher to upload.
```
Individual stages are also exposed for callers who need finer control:
- [`pattern::regex_to_nfa`] — Thompson construction. Supports literal,
concat, `|`, `*`, `+`, `?`, `[abc]` (with ranges and negation), escape.
- [`pattern::nfa_to_dfa`] — subset construction with dead-state pruning.
- [`pattern::dfa_minimize`] — Hopcroft's partition refinement. Idempotent.
- [`pattern::dfa_pack`] — transition-table compression. Two formats:
- `Dense` — fastest scan, 256 × 4 bytes per state.
- `EquivClass` — byte-equivalence compression for narrow alphabets.
- [`pattern::dfa_assemble`] — composite entry: patterns → `PackedDfa`.
- [`pattern::cache`] — content-addressed compilation cache so the second
compile of a pattern set is a file read.
### Arithmetic helpers — ~80 compositional Cat A ops
Every helper is a pure composition of core primitives; the conform gate
proves byte-identical agreement with the CPU reference:
- `saturating_{add,sub,mul}_{u8,u16,u32,u64,i8,i16,i32,i64}` — 24 ops.
- `wrapping_{add,sub,mul}_{u8,u16,u32,u64,i8,i16,i32,i64}` — 24 ops.
- `min_*`, `max_*`, `clamp_*`, `midpoint_*`, `abs_diff_*` — unsigned
variants, 16+ ops.
- `div_ceil_*`, `div_floor_*`, `div_round_*` — unsigned variants, 6 ops.
- `lerp_f32`, `lerp_f64` — linear interpolation.
### Aho-Corasick DFA build
Literal-pattern-set construction (trie + failure links + output chain)
lives at `pattern::aho_corasick_build`. The CPU reference and WGSL kernel
agree byte-for-byte; the conform gate maintains five GOLDEN samples and
twenty KAT vectors as regression anchors.
---
## Compositional discipline
Every `std::` op is Category A. That means:
- It lowers to the same IR nodes a hand-optimizer would write.
- It introduces no new hardware intrinsic — those live in `vyre` core.
- The conform gate verifies the lowered output is byte-identical to the
hand-written composition on every witness.
Ops that require a hardware intrinsic belong in core (`vyre`), not here.
## Design gates for new `std::` ops
A PR adding a new `std::` op must:
1. Reference a coordination note or issue describing the composition.
2. Declare `category = "A"` and a non-empty `composition_of` list
naming the core primitives it builds from.
3. Pass conform-certify at L1 minimum.
4. Add a KAT vector set and an adversarial witness set.
## Related
- [`vyre`] — the core IR, primitives, and lowering contract.
- [`vyre-conform`] — the immune system that verifies this crate.
- [`vyre-spec`] — frozen data contracts shared across all three crates.
- [`LEGENDARY_PLAN.md`] — the build-out roadmap this crate follows.