Skip to content

CI: test each pull request once, trim Windows jobs; regenerate the single header for 5.0.2 - #2902

Open
lemire wants to merge 3 commits into
masterfrom
ci_speedup
Open

lemire wants to merge 3 commits into
masterfrom
ci_speedup

Conversation

@lemire

@lemire lemire commented Oct 1, 2026

Copy link
Copy Markdown
Member

Two commits, so that one CI run covers both before tagging 5.0.2.

1. CI: test each pull request once, cancel superseded runs, trim Windows jobs

  • Workflows that ran on every push and on every pull request (on: [push, pull_request]) now run on pushes to master and on pull requests. A branch of this repository with an open pull request was tested twice: v5.0.2 release candidate (regenerated single header) #2900 queued about 200 jobs, half of them duplicates. Every workflow can also be started by hand (workflow_dispatch).
  • Every workflow (except documentation.yml) gets a concurrency group: a new push to a pull request cancels its previous run. Pushes to master and scheduled runs get a group of their own and are never cancelled.
  • LoongArch64, Emscripten and Ubuntu 22.04 clang 13/14 now run on master only (or by hand).
  • Windows: 30 jobs down to 19. vs18-clang-ci-cxx20.yml was an exact copy of vs18-clang-ci.yml (same name, no C++20 flag); it is now a single ClangCL C++20 build. RelWithDebInfo jobs are dropped (no Windows job builds RelWithDebInfo anymore), as are a few redundant shared/static and NaN/Inf combinations.

Trade-off: pushing to a branch of this repository without a pull request no longer runs CI; open a pull request or use "Run workflow".

The GitHub organization is on the free plan (20 concurrent jobs, 5 on macOS, shared by all repositories), so the number of queued jobs is what makes CI slow.

2. Regenerate the single header for 5.0.2

#2901 was merged before #2900, but the single header in #2900 had been generated without it. This brings singleheader/ up to date with master (only the two lines removed by #2901 change).

lemire added 2 commits October 1, 2026 09:33
… jobs

- Workflows that ran on every push and every pull request now run on
  pushes to master and on pull requests only. A branch of this repository
  with an open pull request was tested twice. All of them can also be run
  by hand (workflow_dispatch).
- Add a concurrency group to every workflow: a new push to a pull request
  cancels its previous run. Pushes to master and scheduled runs are never
  cancelled.
- LoongArch64, Emscripten and Ubuntu 22.04 clang 13/14 now run on master
  only (or by hand).
- Windows: 30 jobs down to 19. vs18-clang-ci-cxx20.yml was an exact copy
  of vs18-clang-ci.yml (same name, no C++20 flag); it is now a single
  ClangCL C++20 build. RelWithDebInfo jobs are dropped, as are a few
  redundant shared/static and NaN/Inf combinations.
… comma_delimited

The json_sequence and comma_delimited stage-1 filters drop RS markers and
root-level commas by compacting structural_indexes in place. That left a stale
index in the slot past the compacted end, where stage 1 had stored the input
length, and the final batch copies that slot into the bookkeeping that
truncated_bytes() reads. Complete streams therefore reported spurious
truncated bytes: e.g. 2 for the comma-delimited input `1,2,3`, or 3 for the
json_sequence input `\x1e{"a":1}\n\x1e[2]\n`.

Restore the sentinel after compaction in both filters (shared by every kernel,
including fallback). Truncated tails are still reported: `{"a":1},{"b":`
yields 5. The extra store has no measurable cost (json_sequence and
comma_delimited parse_many throughput within noise on Apple M4 and on Xeon
Gold 6548N).

Update the iterate_many/parse_many docs and the document_stream headers: the
value is now meaningful in every format, under the same conditions as
before (iterate to the end, no document error). Add a regression test and
regenerate the single header.

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.

1 participant