Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #487 +/- ##
==========================================
+ Coverage 91.75% 92.14% +0.39%
==========================================
Files 7 7
Lines 1794 1897 +103
==========================================
+ Hits 1646 1748 +102
- Misses 148 149 +1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
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.
Typed conversion errors currently identify the failed operation without locating the value in the input. Add
error_context=trueto the existing parsing entry points. A failing conversion then throws a qualifiedJSON.ParseErrorcontaining an RFC 6901 JSON Pointer, the value's starting byte, and the original exception and backtrace. For example, parsing{"counts":[1,"bad"]}into an integer-vector field identifies/counts/1at byte 14. Fixes #428.Tracking is opt-in and covers
parse,parse!, file/IO inputs and selectedLazyValues. Paths use input names, including renamed fields and escaped keys. Conversion hooks still receive their original exceptions and can recover; diagnostics never replay constructors, hooks or partial mutations. A scoped record and a structural walk on failure recover the path. Unrecoverable paths arenothing; unrelated nested inputs and handled exceptions cannot leave a misleading child path. Configuration and initial lexing errors before conversion keep their existing exception behavior.The default entry path keeps diagnostics out of inference as well as runtime execution. This preserves default native compilation and avoids compiling a second conversion tree for downstream types. No exports or dependencies are added. Enabled diagnostics have their own measured cost; enabled native compilation is not claimed.
Validation:
Matched default allocations stay unchanged or decrease in the measured fixtures. On Julia 1.13 the 35-field mutable string fixture's first use stays near baseline: 73.22 → 73.61 MiB allocated during compilation/parsing, 0.589 → 0.587 seconds. Root and minimum-runtime cases likewise retain near-baseline first-use allocation. These are cumulative allocations, not peak memory or a claimed speedup.
Diagnostics have a cost: that mutable fixture takes 315.24 MiB / 1.585 seconds on its first enabled call, then adds 176 bytes per successful call; enabled warm time is roughly 1.4–1.8× the default across the tested fixtures. Passing literal
falsealso adds first-use compiler work; omitting the keyword is the lowest-cost default path. Minimum-runtime IO timing varied in separate-process measurements (final matrix 2.146 → 2.485 μs). A shared-parser, same-process entry control measured 2.133 → 2.146 μs with identical allocations; it does not establish universal timing parity.All 12 hosted checks pass at
0940554234cd51a409a9c3afc1058f3944b37a17, including minimum/current/prerelease Julia, Linux x86, Windows, macOS, Parsers 2.8.8 compatibility, documentation and coverage.Co-authored by Codex