2.9 KiB
2.9 KiB
Changelog
All notable changes to the tines crates. Versions follow Semantic Versioning; before 1.0, a minor bump may break the API.
0.3.0 — 2026-10-18
Breaking
Storenow requiresrelease(&mut self, id)andis_released(&self, id) -> bool. Implementations ofStore— including test doubles and future backends — must provide them.
Added
Store::releasemarks an observation as sent, so it is no longer offered for exchange.MemStoretracks a per-entryreleasedflag, and itsfor_each_addressed_idskips released ids as an optimization (the exchange predicate remains the load-bearing check). Releasing an id that is not stored is a no-op.
0.2.1 — 2026-10-18
Changed
- Package metadata only:
repository,documentation,readme,keywordsandcategories, shared through[workspace.package]. The README now appears on crates.io. - Each crate now ships the Apache-2.0
LICENSEtext.
0.2.0 — 2026-10-18
Hardening from a full-codebase review. Wire-compatible with 0.1.0 except where noted.
Added
Exchange::on_send_error: rolls back the lastnext_frameafter a failed send.Node::pollcalls it, so aBusyorUnreachableframe is retried instead of being lost.Store::for_each_addressed_id, with a default that visits every id.MemStoreoverrides it, so custody no longer reads every broadcast observation on each poll.Bloom::fold, andBloom::from_partsnow accepts any power-of-two length up toSUMMARY_BYTES. Summaries are folded to fit the transport's MTU; a 0.1.0 node rejects a folded summary, so mixed-version links only sync when the MTU allows a full 512-byte filter.InFlight, describing a fragment stream in progress.
Changed
- Breaking:
Peer::in_flightis nowOption<InFlight>(wasOption<(ObservationId, u8)>). - Custody (addressed) and broadcast sending alternate per peer, and addressed candidates are taken in rotation.
- Bounce suppression lasts one contact, as the addressed-delivery spec says.
Fixed
- A fragment stream could panic, or send corrupt fragments, when the observation's age changed encoded length mid-stream or the tick went backwards.
- Summaries larger than the MTU stopped all broadcast sync on narrow links.
- A full bounce table silently stopped recording, so one addressed message was re-sent on every poll and starved broadcast.
- An addressed send interrupted another peer's fragment stream, which was then never finished.
- An addressed message that couldn't fit the MTU blocked every other addressed message for that peer.
- A duplicate addressed message was forwarded back to the carrier that sent it.
CI
- Tests, clippy and docs also run without the
allocfeature; doc warnings fail the build;--lockedeverywhere; toolchain pinned to 1.99.0; actions pinned to commit SHAs.
0.1.0
Initial release: tines-core and tines-sim.