From 7f1ea416d455d29fa873316589268288df405d61 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Sun, 30 Aug 2026 02:12:52 +0800 Subject: [PATCH] Repin the two backends, which fixed a defect this specification's own suite could not see openkal-linux 0.7.1 and openkal-macos 0.6.1 correct `kal_timeout_read` and `kal_timeout_write`, which decoded a borrowed `kal_stream` handle with the decoder for an owned one and so waited upon the descriptor below the one they transferred upon. Five lines: `README.md`, `examples/portable/mcpp.toml` and `kit/mcpp.toml`. What a reader copies first is the line in a README, and these had to move with the release rather than after it. --- and the suite could not have caught it ---------------------------------- `conformance/src/sections/timeout.cpp` states three observations and each is a disjunction that the defect satisfies: r >= 0 || r == -kal_err_again || r == -kal_err_not_supported A bounded read of the standard input is permitted to expire, so an implementation that expires because it waited on the wrong object is indistinguishable there from one that is right. That is not an oversight in those lines -- there is no stream the suite can be sure has bytes waiting, and inventing one requires an interface the section does not import. Both backends now carry the observation in their own suites, where a channel can be made: sixteen channels, each written to, each read with a bound, and the count reported. Whether the suite here should gain the same observation -- `openkal.process` is optional, so it would have to be conditional -- is left to a change of its own rather than folded into a repin. --- README.md | 4 ++-- examples/portable/mcpp.toml | 4 ++-- kit/mcpp.toml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index db76fcd..5f6b77c 100644 --- a/README.md +++ b/README.md @@ -80,10 +80,10 @@ conditional on the target. openkal = "0.9.0" [target.'cfg(os = "linux")'.dependencies] -openkal-linux = "0.7.0" +openkal-linux = "0.7.1" [target.'cfg(os = "macos")'.dependencies] -openkal-macos = "0.6.0" +openkal-macos = "0.6.1" [target.'cfg(windows)'.dependencies] openkal-windows = "0.4.0" diff --git a/examples/portable/mcpp.toml b/examples/portable/mcpp.toml index 9640783..f48fb2c 100644 --- a/examples/portable/mcpp.toml +++ b/examples/portable/mcpp.toml @@ -12,10 +12,10 @@ version = "0.1.0" openkal = "0.9.0" [target.'cfg(os = "linux")'.dependencies] -openkal-linux = "0.7.0" +openkal-linux = "0.7.1" [target.'cfg(os = "macos")'.dependencies] -openkal-macos = "0.6.0" +openkal-macos = "0.6.1" [target.'cfg(windows)'.dependencies] openkal-windows = "0.4.0" diff --git a/kit/mcpp.toml b/kit/mcpp.toml index 024dbaa..ace8d92 100644 --- a/kit/mcpp.toml +++ b/kit/mcpp.toml @@ -98,4 +98,4 @@ openkal = "0.9.0" # same reason: a change spanning the specification and an implementation must be # tested against both halves as written, not against whichever half is published. [target.'cfg(os = "linux")'.dev-dependencies] -openkal-linux = { version = "0.7.0", features = ["standalone"] } +openkal-linux = { version = "0.7.1", features = ["standalone"] }