Skip to content

Replace custom json-compat job with standalone JSON 0.20 CI workflow - #119

Merged
davidanthoff merged 1 commit into
mainfrom
json-020-ci
Sep 2, 2026
Merged

Replace custom json-compat job with standalone JSON 0.20 CI workflow#119
davidanthoff merged 1 commit into
mainfrom
json-020-ci

Conversation

@davidanthoff

Copy link
Copy Markdown
Member

#118 added a hand-rolled json-compat job to juliaci.yml, which is meant to stay a pure driver of the testitem-workflow template. This PR removes that job and replaces it with a standalone workflow that gives strictly broader coverage.

What the new Julia CI (JSON 0.20) workflow does

  • Forces JSON = "0.20" in [compat] before building (.ci/force_json_020.jl, Julia-1.0-compatible line-based rewrite), then asserts the manifest actually resolved JSON 0.20.x (.ci/verify_json_020.jl) so a silent fallback fails loudly.
  • Runs the test items across the full Julia version/platform matrix (same julia-compute-test-matrix flags as the main workflow, so down to Julia 1.0 on Linux/Windows/macOS).
  • Is deliberately composed from the individual julia-actions/* actions rather than a second template invocation, which would drag along duplicate lint/docs/TagBot jobs. It only triggers on push/PR.

Why JSON 0.20

The VS Code extension uses JSON 0.20 on every Julia version because it is the last JSON version without non-stdlib dependencies (Parsers becomes a dependency at 0.21). A plain resolve never picks it — Julia ≤ 1.8 resolves JSON 0.21, Julia ≥ 1.9 resolves JSON 1.x — so 0.20 was previously untested despite being the compat lower bound.

Resulting coverage

JSON Julia Covered by
1.x (newest) ≥ 1.9 main workflow (resolver picks newest)
0.21 1.0–1.8 main workflow (JSON 1.x needs Julia ≥ 1.9)
0.20 all, 1.0 → release + rc new workflow

The removed job only tested JSON 0.21/1.7 on the latest Julia.

Verified locally: with the compat rewrite applied, the resolver picks JSON 0.20.1 on Julia 1.12 and the full test suite passes (607/607).

🤖 Generated with Claude Code

juliaci.yml goes back to being a pure driver of the testitem-workflow
template. Old-JSON testing moves to a standalone workflow that forces
JSON 0.20 -- the last JSON version without non-stdlib dependencies,
which the VS Code extension uses on every Julia version -- and runs the
test items across the full Julia version/platform matrix, down to
Julia 1.0. On Julia <= 1.8 the main workflow already covers JSON 0.21
(JSON 1.x needs Julia >= 1.9), and on Julia >= 1.9 it covers JSON 1.x,
so the new workflow closes the remaining gap: JSON 0.20 everywhere.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@davidanthoff

Copy link
Copy Markdown
Member Author

This moves the JSON 0.20 tests out of the regular CI workflow. I might later add support for this kind of thing to testitem-workflow, but for now this should do.

And this also changes what actually gets tested, namely it runs all tests from Julia 1.0 to the latest with JSON 0.20. While that is a lot of extra tests, I do think it is important to do that as that needs to work for the VS Code extension at the end of the day...

@davidanthoff
davidanthoff merged commit 760a2bd into main Sep 2, 2026
158 checks passed
@davidanthoff
davidanthoff deleted the json-020-ci branch September 2, 2026 01:04
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.

1 participant