Skip to content
Ferralk

Ferralk / Architecture

Architecture Decision Records

Decisions from the end-to-end design review of 2026-08-18 (see RFC for the full architecture).

ADRDecision
0001Independent port under the ferralk name (MIT, no drop-in claim)
0002Hybrid port strategy — mechanical matcher port, fresh walker
0003Two published crates (ferralk-glob, ferralk), no C ABI
0004MSRV = current stable minus two releases
0005Byte-based matching everywhere, WTF-8 on Windows
0006Git-normative ignore semantics (git check-ignore oracle)
0007JSONL differential corpus, oracle as dev-time tool
0008SIMD via memchr primitives (Ferroni playbook)
0009Own work-stealing scheduler (no WalkParallel, no rayon)
0010Portable-only 1.0; native backends macOS → Linux; Windows tier 2
0011POSIX-conservative walker defaults
0012Ferroni repository blueprint for tooling (reference point amended to the family baseline; standards onboarding removed 2026-09-25)
0013Dedicated glob matcher — no glob-to-regex translation
0014Own gitignore rule matching over ferralk-glob (engine half of 0006)
0015POSIX escape processing inside bracket classes
0016Shell grammar for star runs before extglobs
0017Caller-owned list API conventions
0018Dual MIT or Apache-2.0 license (supersedes the license clause of 0001)
0019Caret requirements in the published crates, exact pins everywhere else
0020** is recursive only as a whole path component (deliberate divergence from zlob)

Convention: Nygard-style ADRs, numbered sequentially, never rewritten once accepted — superseding decisions get a new ADR that links back.