Provision 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 unit | Current 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 lane | Operating systems | Toolchain |
|---|---|---|
| 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_Compactis deterministic for the same calls, but it is not canonical JSON.