Repository navigation
Move to JSON.jl v1 (compatible, 0.8.5) - #131
Open
asinghvi17 wants to merge 6 commits into
Open
asinghvi17 wants to merge 6 commits into
asinghvi17 wants to merge 6 commits into
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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).