Current support and evidence

Support claims below come from maintained public units, tests, corpora, assembly gates, and continuous integration. A manifest constraint alone is not compatibility evidence.

Do not add a release dependency yet

Version 0.1.0-dev is experimental, not yet released, and not yet indexed.

The Flyology Alire index does not yet provide a reviewed, no-pin release. Downstream crates must wait for the indexed milestone. The API may still change during final review.

The repository manifest declares GCC-based GNAT 13 through 16 as its intended compiler range. The executed matrix below is the compatibility evidence.

Use the implemented trusted surface

Public unitCurrent capability
Flyology_JSON.Parsing Incremental Step and batched Drain, provisional events, exact source coordinates, exact number fragments, explicit capacities, and static duplicate handling.
Flyology_JSON.Tokens Bounded collection of selected decoded strings, decoded names, or exact number lexemes into caller storage.
Signed_Integers and Unsigned_Integers Checked conversion of complete strict integer lexemes and deterministic base-ten integer rendering.
Flyology_JSON.Writing Allocation-free writer core with semantic streaming calls. The caller-defined destination owns whole-document staging and can choose its own allocation behavior.
Flyology_JSON.Profiles and Flyology_JSON.Errors Explicit versioned profile records and nonraising diagnostics with zero-based coordinates.

The parser and writer accept arbitrary-bound Stream_Element_Array values. Physical capacities and profiles are always application choices; the library provides no default capacity or profile.

Separate the build matrix from benchmark tooling

Evidence laneOperating systemsToolchain
Repository test action macOS 15 and Ubuntu 24.04 GNAT 13.2.2, 14.2.1, 15.3.1, and 16.1.0; GPRbuild 26.0.1
Benchmark adapters macOS 15 and Ubuntu 24.04 GNAT 16.1.0, GPRbuild 26.0.1, Rust 1.97.1, Node 24.19.0, and npm 11.17.0

The benchmark jobs have portable and native tracks. The benchmark jobs build maintained adapters for independent implementations. Their different parser and writer contracts make the results optimization evidence, not a claim of semantic equivalence.

Exercise lifecycle and bounded failure

The maintained test action builds and runs:

  • parser, UTF-8, number grammar, duplicate-index, and Unicode escape tests;
  • public foundation and parser tests;
  • private and public writer tests; and
  • an external public-unit consumer compilation.

Focused cases cover:

  • arbitrary Ada bounds, empty input, and chunk or fragment schedules;
  • exact depth and storage limits, reset, and abort;
  • destination exhaustion, commit or abort failure, and task interruption; and
  • exact offsets and transactional nonpublication.

Public-surface assembly gates require parser accessors and the batched path to inline without an indirect hot call. A separate gate requires the writer string-fragment path to inline. It rejects finalization, tasking, and allocation runtime calls in that probe. Installed no-pin consumer assembly evidence remains a release gate.

Treat corpora as evidence, not authority

The parser lane pins 314 selected JSONTestSuite fixtures and 80 selected JSON Schema Test Suite JSON files. The repository verifies exact fixture sets, licenses, byte digests, and aggregate manifests before execution.

All 394 fixtures run as one chunk, as one-byte chunks, and with deterministic randomized schedules. Malformed inputs must retain the monolithic error code and byte offset. The expensive every-single-split campaign has an explicit caller-supplied work ceiling and is not part of routine continuous integration.

The writer lane uses four project-owned event tapes and exact hexadecimal golden output. Each token runs whole, one octet at a time, at every single split, and through four deterministic randomized schedules. The public parser reparses the output under varied chunks. Node's built-in JSON parser provides an additional independent acceptance check.

Corpus labels and oracle agreement never replace the selected JSON profile or the JSON specification.

Keep future work out of current claims

  • The API remains experimental until the reviewed 0.1.0-dev index release.
  • Fresh downstream resolution without a Git or path pin remains a release gate.
  • The trusted package has no accounting or budget surface for untrusted consumer integration.
  • Binary64, decimal, and application-specific number conversions are not current public units.
  • Canonical JSON, a DOM, allocating conveniences, and Type IR, Wire, or OCI adapters are not current library features.
  • Ordinary_Compact is deterministic for the same calls, but it is not canonical JSON.