Skip to content

chore: release v0.3.1 - #13

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
release-plz-2026-10-17T23-31-23Z
Open

github-actions[bot] wants to merge 1 commit into
mainfrom
release-plz-2026-10-17T23-31-23Z

Conversation

@github-actions

@github-actions github-actions Bot commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

🤖 New release

  • rusty_time-core: 0.3.0 -> 0.3.1
  • rusty_time-nts: 0.3.0 -> 0.3.1
  • rusty_time-clock: 0.3.0 -> 0.3.1
  • rusty_time-api: 0.3.0 -> 0.3.1
  • rusty_time-alloc: 0.3.0 -> 0.3.1 (✓ API compatible changes)
  • rusty_time-daemon: 0.3.0 -> 0.3.1
  • rusty_time-ctl: 0.3.0 -> 0.3.1 (✓ API compatible changes)
  • rusty_time-wasm: 0.3.0 -> 0.3.1
  • rusty_time-sim: 0.3.0 -> 0.3.1
Changelog

rusty_time-core

[0.3.0] - 2026-10-08

BREAKING

  • ClientRecord's three timestamp fields change type:
    pub last_receive, pub last_transmit and pub last_receive_sent are now
    NtpTimestamp rather than Option<NtpTimestamp>, with
    NtpTimestamp::ZERO meaning "unset" — which is how RFC 5905 already spells
    it on the wire. Option<NtpTimestamp> was sixteen bytes for eight bytes of
    payload, because NtpTimestamp is a bare u64 with no niche, and every read
    tested a discriminant.

    Migration: if let Some(ts) = rec.last_receive becomes
    if !rec.last_receive.is_zero(), and rec.last_receive is the value
    directly.

    This is why the release is 0.3.0 and not 0.2.1. Note that
    cargo semver-checks reports no semver update required for it — it has no
    lint for a public field's TYPE changing — so the bump was decided by reading
    the diff, not by the tool. Do not trust that tool alone on a field-type
    change.

Performance

Six deterministic wins in the client filter and the server's client table,
measured with callgrind Ir (exact: the same binary re-runs to zero) and gated
byte-identical throughout.

instrument before after delta
client_path 219,439,512 194,470,797 -24,968,715 (-11.38%)
hot_path (steady) 47,424,979 45,664,884 -1,760,095 (-3.71%)
hot_path (churn) 75,642,533 67,786,128 -7,856,405 (-10.39%)
mru_report 5,804,467 5,234,883 -569,584 (-9.81%)
  • regress called wls_fit twice on identical data (-17,918,178).
  • The spike filter recomputed residuals spike_threshold had already produced;
    they travel as a u64 keep mask now (-2,441,711).
  • A median taken by full sort now uses select_nth_unstable_by (-3,363,768).
  • 2f64.powi(k) builds the exponent field directly instead of calling
    __powidf2 16,000 times a run (-690,184).
  • The regime-change trim advances a cursor instead of front-draining up to four
    times (-557,376).
  • The client index is open-addressed with backward-shift deletion (so no
    tombstones) and does not duplicate the key, which HashMap had to. Costs
    +10 bytes/client (150 -> 160).

No behaviour changed. TIMECORP S1/S6/S8 at 31 seeds are byte-identical to
0.2.0, and S12a/b/c server-load counts are identical including 1,021,672
evictions in S12b. cargo semver-checks: no semver update required.

Changed

  • ClientTable::bytes_per_client() reports 160 rather than 150, because the
    index now holds four buckets per client instead of one entry. The signature
    is unchanged; the number is honest.

Added

  • HOT_PATH_EVICT, a churn arm for the hot_path bench. The default arm never
    evicts, so it could not gate any change to the client index -- and at a 0.5
    load factor the new index measured a clean win there while costing +9.86%
    under eviction. The arm is what caught it.

rusty_time-nts

[0.3.0] - 2026-10-08

Changed

  • Version moved to 0.2.1 with the rest of the workspace. Nothing in this
    crate's own API or behaviour changed.
    The release is a performance pass in
    rusty_time-core; see that crate's changelog.

rusty_time-clock

[0.3.0] - 2026-10-08

Changed

  • Version moved to 0.2.1 with the rest of the workspace. Nothing in this
    crate's own API or behaviour changed.
    The release is a performance pass in
    rusty_time-core; see that crate's changelog.

rusty_time-api

[0.3.0] - 2026-10-08

Changed

  • Version moved to 0.2.1 with the rest of the workspace. Nothing in this
    crate's own API or behaviour changed.
    The release is a performance pass in
    rusty_time-core; see that crate's changelog.

rusty_time-alloc

0.3.1 - 2026-10-18

Other

  • house dependencies to current (wave 5) (#12)

rusty_time-daemon

0.3.1 - 2026-10-18

Other

  • house dependencies to current (wave 5) (#12)

rusty_time-ctl

0.3.1 - 2026-10-18

Other

  • update Cargo.lock dependencies

rusty_time-wasm

[0.3.0] - 2026-10-08

Changed

  • Version moved to 0.2.1 with the rest of the workspace. Nothing in this
    crate's own API or behaviour changed.
    The release is a performance pass in
    rusty_time-core; see that crate's changelog.

rusty_time-sim

0.3.1 - 2026-10-18

Other

  • update Cargo.lock dependencies


This PR was generated with release-plz.

@github-actions
github-actions Bot force-pushed the release-plz-2026-10-17T23-31-23Z branch from 74daca9 to 58a3bbf Compare October 18, 2026 01:00
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.

0 participants