Repository navigation
Swift-JSON 1.9.0
Adds bounded structural workflows to JSONInspection, one-call index selection to JSONTransform, and lowers the Apple deployment minimums to macOS 15 and iOS 18.
Ordered value batches. JSONInspectionBatch reads typed paths in one operation; snapshot ordinals and store positions have matching batch reads. Each batch has one cumulative ledger and returns its results atomically. optionalValues(at:) returns nil for an absent member or an index past the end and throws the same errors as values(at:) otherwise.
A read-only configured store. JSONStoreBuilder turns an immutable source into a JSONConfiguredStore after checked construction. Collections, ID fields, record paths and reference fields are declared explicitly. The store offers exact-ID lookup, ordered value reads and complete breadth-first follow(from:) with finite limits. Collections use string IDs (exact Unicode scalars) or integer IDs (exact mathematical value, so 7, 7.0 and 7e0 are one ID, exact beyond Double precision); IDs never convert between kinds. Failures are Equatable and name a typed phase and capacity. Positions are owner-bound and cannot be forged. There is no persistence or mutable store.
let profile = JSONStoreProfile(version: .v1, collectionsAt: [], collections: [
.init(name: "orders", recordsAt: [.key("orders")], idKey: "id", idKind: .integer,
referenceFields: [.init(key: "next", presence: .required, nullable: true)])
], references: .strict(marker: .v1))
let store = try JSONStoreBuilder(document: document, profile: profile).build().result
if let order = try store.lookup(collection: "orders", id: 7).result {
let linked = try store.values(at: store.follow(from: order).result).result
}Transform selection. Versioned Transform source definitions, compile reports and finite indexed selection scopes with owner-bound positions and an EOF completion witness. selectIndices(in:) runs a selection to the end and returns the ordinals, with the same completion statistics as the manual loop.
Platforms. The minimums move from macOS/iOS 27 to macOS 15 and iOS 18, matching Swift-MCP-Server-Core. Development still needs Swift 6.4 and the macOS 27 SDK (Xcode 27). JSONHTML's WebKit PDF backend requires macOS/iOS 26 and reports the existing backendUnavailable before that; before 27, the Markdown transfer type uses the system-declared net.daringfireball.markdown identifier. Linux and WASI are unchanged. The planned 1.8.1 patch with the same change was not released; it ships here.
Also included: composition accounting charges input per document and the completion report on the original ledger (PR #81). Integrated through PR #74 and PR #84; PR #85 prepares the version metadata and release notes.
The release is additive over 1.8.0; SwiftPM's API-break checker reports no public breaking change (one false positive on a package-only enum). Twelve libraries plus swift-json share one package version, with thirteen DocC catalogs. Swift tools/compiler 6.4+ and language mode 6 remain required. Root dependencies remain empty; Apache-2.0 and upstream notices are retained.
Release source: f2a0d12da7028edfbcb0cb307f19a921a3a12d03, tree 6b5438751352e0e424b133e79d40d32d6f8c8dd7. The annotated 1.9.0 tag points to this exact merge. The CI-qualified PR #85 head (fed6fb8) and the final commit have identical source trees.
Qualification
All hosted lanes passed on the release commit itself: Native: native, safety, docs, composition, Git-free archive reproduction and Linux ARM64/x86_64 behavior, safety and composition. They also passed on PR #85 (Native, Linux) and PR #84 (Native, Linux).
Debug and Release root behavior ran 14 bundles and 408 parameterized cases per configuration; JSONInspectionTests has 222 functions. DocC covers 1,743 of 1,743 authored public declarations across 13 catalogs. The Git-free reproduction rebuilt the 1,553-entry source archive byte-for-byte (5376b8a2…), and the attached source asset is that exact archive. A separate SwiftPM consumer with a macOS 15 / iOS 18 deployment target resolved exact: "1.9.0" to the release commit and passed an integer-ID store, optional-read and selectIndices witness in Debug and Release.
The platform floor is verified at compile time: every product and test builds at the macOS 15 floor, and all twelve libraries compile for arm64-apple-ios18.0. Not run: tests on macOS 15–26 or iOS 18 systems or simulators, the WASI lane on the release commit (it passed locally with Swift 6.4.2 on an earlier candidate commit), physical devices and controlled performance measurement.
The maintainer recorded an explicit exception for the 1.9.0 controlled-performance gate; it is not a pass. Navigation G4 remains HOLD, and earlier performance dispositions stay historical. No speed, throughput, allocation or RSS claim is made. Logical retained bytes are accounting quantities, distinct from RSS and caller work.
Assets: exact reproducible source, thirteen-catalog compiled DocC built by CI at the release commit, the DocC member manifest, the qualification receipt and SHA-256 checksums. Hosted documentation tracks main; use the attached DocC archive for the frozen reference. Full comparison.