Skip to content

Move to JSON.jl v1 (compatible, 0.8.5) - #131

Open
asinghvi17 wants to merge 6 commits into
mainfrom
as/json1-compat
Open

asinghvi17 wants to merge 6 commits into
mainfrom
as/json1-compat

Conversation

@asinghvi17

Copy link
Copy Markdown
Member

GeoJSON's JSON3/StructTypes dependency holds back the move to JSON.jl v1 and Parsers 3 (and so CSV). This migrates the backend compatibly as 0.8.5 with Julia 1.10+, JSON 1.12+ and StructUtils 2.10+, preserving public types and defaults.

Parsing is strict JSON apart from NaN/Inf and Infinity aliases: leading zeros, raw control characters and trailing content accepted by 0.8.4 now error; legacy -NaN/+Inf/nan/inf are also rejected. Property numbers keep their literal kind (7.0 stays a Float64), which can change Tables column types. Int64 ID corruption above 2^53 is fixed; leaked names/types output and direct JSON3 integration are removed.

Feature/property-heavy data is faster; coordinate-heavy reads are about 1.7–2× slower and writes about 1.5× slower until the follow-up PR. First-read checks cover String, SubString, bytes, IOBuffer, paths, codeunits and views; codeunits/views take 73/95 ms for a 1.74 MB fixture on Julia 1.13 and 141/69 ms on 1.10. Loading is about 285/227 ms on Julia 1.10/1.13 versus 180/144 ms in 0.8.4 (image about 21.95 MB vs 14.4 MB on 1.13).

Downstream smoke at 3749797 passed NaturalEarth, GeoDataFrames' GeoJSON driver, GeoIO's GeoJSON/GIS tests and GeometryOps' GeoJSON/NaturalEarth cases. Thanks to @simsurace (#127) and @phchavesmaia (#129).

asinghvi17-bot and others added 4 commits October 24, 2026 18:25
Generate golden bytes and Tables schemas from the v0.8.4 tag and cover public types, input forms, lazy access and numeric edges.

Harness: codex
Model: gpt-6.1-sol
Preserve public types, defaults and exact Int64 IDs. Use JSON 1.12 / StructUtils 2.10, strict coordinate arity, ordered spec-only output and a measured numeric kind check. Accept non-finite literals through public APIs without losing ordinary number kinds or admitting malformed JSON. Validate lazy collection types, properties and type discriminators; preserve full writer options for collection children. Gate non-finite retries by input bytes and isolate their compilation. Preserve original ordinary validation errors; validate CRS shapes and normalize overflowing float IDs. Normalize path, IO and AbstractString inputs to String without consuming caller-owned byte vectors. Copy non-Vector byte views to the precompiled Vector parser, preserving ownership and avoiding cold parser specializations. Restrict non-finite retries to unquoted value tokens. Keep the existing IO retry and iteration fixes.

Co-authored-by: simsurace <simsurace@gmx.net>
Co-authored-by: phchavesmaia <phchavesmaia@gmail.com>
Harness: codex
Model: gpt-6.1-sol
Include literal default calls, Float64 calls, every geometry kind with nested collections, nullable features, CRS, Tables schemas and lazy access. Include literal default byte-vector, SubString and IOBuffer reads alongside the String calls. Keep the exceptional non-finite reader outside the precompiled call graph.

Harness: codex
Model: gpt-6.1-sol
Keep nightly informative without blocking merges. Instantiate and pin JSON 1.12.0 / StructUtils 2.10.0 in the downgrade job, and assert their versions in the test process. Document the reader requirements and strict syntax with non-finite extensions; release details stay in the task report because the repo has no release-note convention.

Harness: codex
Model: gpt-6.1-sol
Treat failed isfile probes as non-files and cover byte-length boundaries, long components, slashes and SubStrings.

Harness: codex
Model: gpt-6.1-sol
Require the fixed PrecompileTools macros and Extents API used by GeoInterface. Restore runtime dependency declarations after floor resolution so promoted test extras do not fail Aqua.

Harness: codex
Model: gpt-6.1-sol

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants