Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ To move the pin, move both:

```sh
git -C rayforce-sys/vendor/rayforce fetch --tags
git -C rayforce-sys/vendor/rayforce checkout v2.6.1
git -C rayforce-sys/vendor/rayforce checkout v2.6.2
git add rayforce-sys/vendor/rayforce

git -C rayforce-sys/vendor/rayforce rev-parse --short=7 HEAD # CORE_COMMIT
Expand Down
23 changes: 22 additions & 1 deletion docs/docs/content/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ All notable changes to `rayforce` are documented here. This project adheres to

### Changed

- **The vendored core is v2.6.1 and `rayforce-q` is `1eabaf4`** (from v2.5.8 and
- **The vendored core is v2.6.2 and `rayforce-q` is `1eabaf4`** (from v2.5.8 and
2.0.0). The core now recognises in-band nulls at construction, which changes
what a vector built from a raw buffer reports: `Value::vec(&[1i64, i64::MIN, 3])`
answers `is_null_at(1)` and `get(1)` returns the null singleton, where before
Expand Down Expand Up @@ -101,6 +101,27 @@ All notable changes to `rayforce` are documented here. This project adheres to
pass a table value rather than a quoted name, so they keep taking the copy
path and are unaffected.

- **The v2.6.2 engine deltas that reach this crate.** A `Value::slice` of a
vector holding nulls inherits its parent's `HAS_NULLS` hint; before, every
gate that reads the bit took the window for null-free, so an aggregate over it
folded the sentinel in as a value. `is_null_at` on a slice already asked the
parent and is unchanged. `Table::save_splayed` derives the on-disk bit from
the payload rather than trusting the in-memory header, so a column holding a
sentinel reloads with its nulls. `nil?` (`Operation::NilQ`) is element-wise
outside queries as it always was inside them: over a vector or a list it
answers 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 — `['a:1]` is a parse error rather than the two symbols `a` and `1`,
and so is `0Na` — so Rayfall text handed to `eval` must separate its tokens.
`Table::load_parted` no longer reads a calendar-impossible directory such as
`2024.02.31` as a date partition, which it used to normalise silently into
`2024.03.02`; a root holding one falls back to symbol partitions. `.log.write`
is refused inside an auto-journaled IPC evaluation. The rest lives in the
engine binary rather than this crate's surface: the per-connection transmit
backlog is configurable (`.ipc.txlimit`, 256 MiB by default — the old fixed
cap), `.mc.sub` no longer requires a filter argument, and a script or piped
session stays alive until its pending timers are spent.

- **The submodules are addressed over SSH.** `.gitmodules` now points at
`git@github.com:RayforceDB/rayforce.git` and `rayforce-q.git`. An existing
clone picks the change up with `git submodule sync --recursive`; CI needs
Expand Down
6 changes: 3 additions & 3 deletions docs/docs/content/documentation/data-types/vector.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,9 @@ Nulls live **in-band**: an element is null when it holds its type's sentinel —
`i16::MIN`, `i32::MIN`, `i64::MIN`, `NaN`, the all-zero GUID, the empty symbol,
the empty string. For the fixed-width types the engine also keeps a `HAS_NULLS`
attribute as a fast-path hint and checks it first; `Value::vec` raises it when
the buffer it is handed already contains a sentinel, and `set_null` raises it
when marking an element. Symbol and string vectors need no hint: the empty
value *is* the null.
the buffer it is handed already contains a sentinel, `set_null` raises it when
marking an element, and a `slice` inherits its parent's. Symbol and string
vectors need no hint: the empty value *is* the null.

```rust
// A buffer carrying a sentinel is null from construction:
Expand Down
6 changes: 3 additions & 3 deletions docs/docs/content/get-started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,19 +92,19 @@ Moving the pin means moving the submodule and the constants together:
```sh
# 1. Move the submodule to the new tag.
git -C rayforce-sys/vendor/rayforce fetch --tags
git -C rayforce-sys/vendor/rayforce checkout v2.6.1
git -C rayforce-sys/vendor/rayforce checkout v2.6.2
git add rayforce-sys/vendor/rayforce

# 2. Read back the values build.rs must stamp.
git -C rayforce-sys/vendor/rayforce describe --tags --exact-match # -> v2.6.1
git -C rayforce-sys/vendor/rayforce describe --tags --exact-match # -> v2.6.2
git -C rayforce-sys/vendor/rayforce rev-parse --short=7 HEAD # -> e.g. 1a2b3c4
```

Then edit `rayforce-sys/build.rs` to match — `CORE_VERSION` is the tag without
its leading `v`:

```rust
const CORE_VERSION: &str = "2.6.1";
const CORE_VERSION: &str = "2.6.2";
const CORE_COMMIT: &str = "1a2b3c4";
```

Expand Down
4 changes: 2 additions & 2 deletions rayforce-sys/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ use std::process::Command;
///
/// Must match the tag `vendor/rayforce` is pinned to. CI asserts the two agree;
/// see the "Check vendored core pin" step in `.github/workflows/ci.yml`.
const CORE_VERSION: &str = "2.6.1";
const CORE_VERSION: &str = "2.6.2";

/// Commit the `vendor/rayforce` submodule is pinned to, stamped alongside
/// [`CORE_VERSION`]. Also checked by CI's "Check vendored core pin" step.
Expand All @@ -35,7 +35,7 @@ const CORE_VERSION: &str = "2.6.1";
/// under OUT_DIR, an unset value does not fall back to "unknown" — it silently
/// reports the HEAD of whatever unrelated repository happens to enclose the
/// build directory.
const CORE_COMMIT: &str = "a99a019";
const CORE_COMMIT: &str = "2c10dba";

/// Warning flags for the vendored core build — the core's own `WARNS`
/// (`Makefile:30`) minus `-Werror`. Consumers compile this with whatever
Expand Down
2 changes: 1 addition & 1 deletion rayforce-sys/vendor/rayforce
Loading