Skip to content

v2.1.0#263

Closed
singaraiona wants to merge 5 commits into
masterfrom
dev
Closed

v2.1.0#263
singaraiona wants to merge 5 commits into
masterfrom
dev

Conversation

@singaraiona

Copy link
Copy Markdown
Collaborator

No description provided.

…threads

Establish the dev -> master release process and remove the hand-maintained
version literal as a source of drift.

Release process (see RELEASE.md):
- The git tag is the single source of truth for the version. Open a PR
  dev -> master titled vX.Y.Z; version-guard.yml validates the title is a
  clean, unused, strictly-increasing semver before merge; on merge,
  release.yml creates the tag, builds Linux+macOS artifacts (make dist) and
  publishes a GitHub Release. No source file is bumped and nothing is pushed
  to protected master -- only a tag + release, which GITHUB_TOKEN can do.
- include/rayforce.h: version macros become #ifndef-guarded 0.0.0 fallbacks;
  the real value is injected at build via -D, derived from the tag or an
  explicit RAY_VERSION= override (Makefile), mirroring the existing
  GIT_COMMIT/BUILD_DATE injection. ray_version_string()/.sys.build follow.
- Makefile: derive-or-override version, inject it, add `dist` packaging.
- ci.yml: also run on dev so the integration branch stays green.

Test CPU cap:
- ray_pool_create's auto-default (n_workers==0) now honors RAYFORCE_CORES.
  The Makefile `test` target sets RAYFORCE_CORES=2 (TEST_CORES, overridable),
  so neither the in-process harness nor the ~30 servers it spawns via
  .sys.exec each create ncpu-1 threads on a many-core box (28 -> 3 threads
  per process here). Production (var unset) and explicit -c are unchanged.
A push to master only occurs via a merged PR, and the pull_request->master
run already tested that exact merge result before the merge. The post-merge
push run can't gate anything, so it was pure duplication. PRs into master
(the gating check for releases) and pushes/PRs on dev are unchanged.
Goes green only when all four CI matrix legs pass. Uses if: always() + an
explicit result check so a failed matrix leg fails (not skips) this job —
a skipped required check can be treated as passed, which would open the gate.
Branch protection on master should require ci-success + check-version instead
of the brittle per-matrix names. RELEASE.md updated accordingly.
… OP_FILTERED_GROUP)

Lift the `agg_v2_can_handle` selection blockade so WHERE-filtered
group-bys route through the v2 engine instead of legacy exec_group. When
g->selection is set, exec_group_v2 gathers the needed key + agg-input
columns at the surviving-row indices into a compact table (via
gather_by_idx, preserving type/nulls/SYM-domain) and runs the unmodified
strategies on it — studied ../duckdb's in-place SelectionVector approach,
but v2's dense-contiguous batch kernels make a single boundary gather the
right fit. This is the prerequisite to deleting the benchmark-tuned
OP_FILTERED_GROUP (not done here).

Also fixes a latent legacy bug surfaced by the differential: by-group
holistic median/top fill ignored a rowsel-carried selection (re-scanned
all rows). v2 was correct; legacy now honors group_rowsel_pass.

test(agg): replace the O(n^2) insertion-sort multiset comparator with
qsort. On high-card (~30k-group) shapes it dominated the suite
(diff_group_radix_2k_sum 345s -> 1s; full suite ~15min -> ~3.3min).
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