feat: pin core v2.6.2 - #8
Merged
Merged
Conversation
Move the vendored core pin from v2.6.1 (a99a019) to v2.6.2 (2c10dba), with CORE_VERSION / CORE_COMMIT in rayforce-sys/build.rs moved alongside. rayforce-q stays at 1eabaf4, which is still its tip; no tag newer than 2.1.1 exists. Nothing in the binding layer moves. include/rayforce.h and the Makefile are byte-identical between the two tags. Of the private headers bindgen reads, only src/lang/internal.h changes, adding ray_ipc_txlimit_fn, which is not in INTERNAL_FNS. No source file is added or removed outside test/, so stage_core, the Cargo.toml include globs and the link libraries are untouched. core/poll.h carries a bare _Atomic that the -D_Atomic(T)=T workaround does not rewrite, but it is not in bindgen's translation unit, and that field predates this tag anyway. The core changes five answers a caller can see. A slice now inherits its parent's HAS_NULLS hint: before, every gate that reads the bit took a window over a null-bearing vector for null-free, so an aggregate over a Value::slice folded the sentinel in as a value; is_null_at already asked the parent. The splayed save path derives the persisted bit from the payload rather than trusting the in-memory header, so a column holding a sentinel reloads with its nulls. nil? is element-wise over a vector or a list outside queries, answering a B8 vector where it used to answer false. The parser rejects a symbol, keyword, name or number glued to a quote, a colon or another name character, so ['a:1] and 0Na are parse errors rather than two tokens each. And load_parted no longer takes a calendar-impossible directory such as 2024.02.31 for a date partition, which it used to normalise silently into 2024.03.02; a root holding one falls back to symbol partitions. The rest does not reach this crate's surface: .log.write is refused inside an auto-journaled IPC eval, the per-connection transmit backlog becomes configurable through .ipc.txlimit with the old 256 MiB cap as its default, multicast frames a publication once for all subscribers, .mc.sub no longer requires a filter, and a script or a piped session stays alive until its pending timers are spent. The docs follow: README and installation.md name the new tag, the changelog records the deltas, and vector.md's null section says a slice inherits its parent's hint. The suite passes against the vendored pin, on the release flavour and on the debug flavour with RAY_DFD=1 armed, each with a v2.6.2 server built from its own staged core the way CI builds one. clippy is clean at -D warnings.
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.
Move the vendored core pin from v2.6.1 (a99a019) to v2.6.2 (2c10dba), with CORE_VERSION / CORE_COMMIT in rayforce-sys/build.rs moved alongside. rayforce-q stays at 1eabaf4, which is still its tip; no tag newer than 2.1.1 exists.
Nothing in the binding layer moves. include/rayforce.h and the Makefile are byte-identical between the two tags. Of the private headers bindgen reads, only src/lang/internal.h changes, adding ray_ipc_txlimit_fn, which is not in INTERNAL_FNS. No source file is added or removed outside test/, so stage_core, the Cargo.toml include globs and the link libraries are untouched. core/poll.h carries a bare _Atomic that the -D_Atomic(T)=T workaround does not rewrite, but it is not in bindgen's translation unit, and that field predates this tag anyway.
The core changes five answers a caller can see. A slice now inherits its parent's HAS_NULLS hint: before, every gate that reads the bit took a window over a null-bearing vector for null-free, so an aggregate over a Value::slice folded the sentinel in as a value; is_null_at already asked the parent. The splayed save path derives the persisted bit from the payload rather than trusting the in-memory header, so a column holding a sentinel reloads with its nulls. nil? is element-wise over a vector or a list outside queries, answering a B8 vector where it used to answer false. The parser rejects a symbol, keyword, name or number glued to a quote, a colon or another name character, so ['a:1] and 0Na are parse errors rather than two tokens each. And load_parted no longer takes a calendar-impossible directory such as 2024.02.31 for a date partition, which it used to normalise silently into 2024.03.02; a root holding one falls back to symbol partitions.
The rest does not reach this crate's surface: .log.write is refused inside an auto-journaled IPC eval, the per-connection transmit backlog becomes configurable through .ipc.txlimit with the old 256 MiB cap as its default, multicast frames a publication once for all subscribers, .mc.sub no longer requires a filter, and a script or a piped session stays alive until its pending timers are spent.
The docs follow: README and installation.md name the new tag, the changelog records the deltas, and vector.md's null section says a slice inherits its parent's hint.
The suite passes against the vendored pin, on the release flavour and on the debug flavour with RAY_DFD=1 armed, each with a v2.6.2 server built from its own staged core the way CI builds one. clippy is clean at -D warnings.