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.

Provision the Flyology Alire index

Version 0.1.0-dev is available from the Flyology Alire index.

Provision the index once. alr with flyology_json=0.1.0-dev resolves the reviewed origin without a downstream Git or path pin.

alr index --reset-community
alr index --add=git+https://github.com/flyology-ada/alire-index.git \
  --name=flyology --before=community
alr index --list
cd /path/to/your/application
alr with flyology_json=0.1.0-dev
alr build

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. The release workflow repeats the public-unit test action from the source archive and from a fresh indexed solve.

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. Bounded transition fixtures additionally run every split. The full-corpus quadratic planner refuses to start without an explicit work ceiling; the release review records its computed 82,539,090,222-unit requirement instead of launching a very large loop.

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

  • Version 0.1.0-dev is a development release; later versions may revise the experimental API.
  • 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.