diff --git a/crates/durable-ioring/CHECKLIST.md b/crates/durable-ioring/CHECKLIST.md index 7859a493..626ec1ad 100644 --- a/crates/durable-ioring/CHECKLIST.md +++ b/crates/durable-ioring/CHECKLIST.md @@ -194,19 +194,7 @@ milestone; the decision rows named below carry the reasons. - [ ] **DI-12.3** -- **The `epoch_log` merge-or-delete decision**, once DI-3.2 is proven ([DI-D-7](DESIGN-NOTES.md#di-d-7)). -- [ ] **DI-12.4** -- **Pin `windows-ioring-sys` by version once the set of changes is about to - release** ([DI-D-16](DESIGN-NOTES.md#di-d-16)). Gated on that release, not on `DI-12.3`. Add the - `version` of the `windows-ioring-sys` release carrying everything dioring relies on (at least - [D-80](../windows-ioring-sys/DESIGN-NOTES.md#d-80) and - [D-81](../windows-ioring-sys/DESIGN-NOTES.md#d-81)), keeping the `path`. This must land before - dioring's first release PR merges, because its publish job fails on a path-only dependency. - `DI-3.2.2.1` added two more path-only dependencies, pinned the same way: `win-sync-sys` (the - readiness signal's `Event`), at its first release, and `windows-threadpool-sys` (the readiness - check's wait), at the release carrying its `M-T14.1` (`From for WaitableHandle`). - win-time-sys' `WT-2.2.2` adds a fourth, `win-time-sys` (the failure timestamps' clock), at its - first release. Since `DI-8.2` these dependencies are `win-durable-ioring`'s, with a fifth: its - path-only dependency on `durable-ioring`, pinned at `durable-ioring`'s first release, which must - publish first. `durable-ioring` itself has only `io-buffers`, already pinned. +- [x] **DI-12.4** -- The five path-only dependencies of `win-durable-ioring` are pinned by version, keeping the path. -> [completed 2026-10-14](COMPLETED-CHECKLIST.md#di-124) ## DI-M4 -- Evidence: Windows' flush-failure behaviour (ungated; gates nothing) diff --git a/crates/durable-ioring/COMPLETED-CHECKLIST.md b/crates/durable-ioring/COMPLETED-CHECKLIST.md index 6dfb29f1..6c799159 100644 --- a/crates/durable-ioring/COMPLETED-CHECKLIST.md +++ b/crates/durable-ioring/COMPLETED-CHECKLIST.md @@ -2859,3 +2859,9 @@ From the second round of the review of [PR 126](https://github.com/MikeGrier/win ### DI-9.8.2 -- The portable CI job's first run is read: the crate's tests run on Linux and macOS. *(completed 2026-10-14 19:26:34 -04:00)* Draft PR 126 gave the branch a pull request, which is what [ci.yml](../../.github/workflows/ci.yml)'s trigger waits for. Its `portable` job builds, tests and lints `wtf-string`, `io-buffers` and `durable-ioring` on `ubuntu-latest` and `macos-latest`, and both runs passed; the checks are listed on the pull request as `wtf-string (non-Windows)`, a name the job shares with its first crate. Nothing in the crate needed to change for a non-Windows host. + +## Moved 2026-10-14 21:11:41 -04:00 -- DI-12.4: the version pins + +### DI-12.4 -- The five path-only dependencies of `win-durable-ioring` are pinned by version, keeping the path. *(completed 2026-10-14 21:11:41 -04:00)* + +The item was meant to land before the first release PR merged, and did not: the release merged first, `publish-crate` refused `win-durable-ioring` 0.1.0 for a dependency with no version, and its tag points at that commit. The pins landed afterwards: `durable-ioring`, `windows-ioring-sys`, `win-sync-sys`, `windows-threadpool-sys` and `win-time-sys`, each at the version release-please published or was asked to. `win-time-sys` had not been released at all, which stalled every crate waiting on it, so it was published by the `workflow_dispatch` escape hatch at the version its manifest declares. `win-durable-ioring` 0.1.0 cannot publish from its tag, so it is published by the same dispatch from the commit that carries the pins. diff --git a/crates/win-durable-ioring/Cargo.toml b/crates/win-durable-ioring/Cargo.toml index 7b5be432..5d224e3e 100644 --- a/crates/win-durable-ioring/Cargo.toml +++ b/crates/win-durable-ioring/Cargo.toml @@ -13,28 +13,24 @@ description = "A ring for Windows file I/O with durability scheduled into its wo readme = "README.md" [dependencies] -# The contract, the core and the traits this crate drives and implements (DI-D-50). **Path only, -# with no `version`, deliberately**: durable-ioring is unreleased, and a version written now would -# guess the number release-please will choose. A path-only dependency also makes `cargo publish` -# refuse, so the pin cannot be skipped at release: DI-12.4 adds the version, keeping the path. -durable-ioring = { path = "../durable-ioring" } -# **Path only, with no `version`, deliberately** (DI-D-16 in durable-ioring's DESIGN-NOTES.md). -# This crate is built against the ring crate's unreleased tree, and a version written now would -# guess the number release-please will choose. DI-12.4 adds the version, keeping the path. -windows-ioring-sys = { path = "../windows-ioring-sys" } +# The contract, the core and the traits this crate drives and implements (DI-D-50). A version and a +# path, as `cargo publish` requires: the version is the release that carries the split. +durable-ioring = { version = "0.1.0", path = "../durable-ioring" } +# The ring crate (DI-D-16 in durable-ioring's DESIGN-NOTES.md): the release that carries the typed +# ring, `leave_queued` and the registrations this driver is built on. +windows-ioring-sys = { version = "0.7.1", path = "../windows-ioring-sys" } # The file target's type (DI-D-29): a consumer's file is a `SharedHandle`, and this crate hands that # same handle to the ring, which takes the type directly. win-shared-os-owned-handle = { version = "0.1.0", path = "../win-shared-os-owned-handle" } # The readiness signal's type (DI-D-28): an `Event`, so a front end can hand it to a thread-pool -# wait without `unsafe`. Path only, as for the ring crate: it is unreleased, and DI-12.4 pins it. -win-sync-sys = { path = "../win-sync-sys" } -# The thread-pool wait the drain and the readiness check wait through. Path only: it needs -# `From for WaitableHandle`, which is unreleased, and DI-12.4 pins it. -windows-threadpool-sys = { path = "../windows-threadpool-sys" } +# wait without `unsafe`. +win-sync-sys = { version = "0.0.2", path = "../win-sync-sys" } +# The thread-pool wait the drain and the readiness check wait through. It needs +# `From for WaitableHandle`, which this release carries. +windows-threadpool-sys = { version = "0.2.1", path = "../windows-threadpool-sys" } # This driver's one time base, interrupt time (DI-D-37), read through `InterruptClock`: the crate -# forbids `unsafe`, so it cannot call `QueryInterruptTime` itself. Path only, as for the ring -# crate: it is unreleased, and DI-12.4 pins it. -win-time-sys = { path = "../win-time-sys" } +# forbids `unsafe`, so it cannot call `QueryInterruptTime` itself. +win-time-sys = { version = "0.1.0", path = "../win-time-sys" } [features] # The fault seam (DI-3.2.4): `Dioring::fail_next_flush`, failures on demand for tests. Off by