From 22208f0aa02577411c93e12aed69aae92f7fd235 Mon Sep 17 00:00:00 2001 From: Tachikoma Date: Sun, 2 Aug 2026 18:57:27 -0400 Subject: [PATCH] Correct the error-pool entry: the pin is 1.0.0, upstream locks it The largest item in the file said the error pool has no synchronisation of any kind and that libakstdlib is therefore permanently single-threaded pending a decision upstream. That is true of deps/libakerror as pinned -- 1.0.0, zero occurrences of akerr_mutex_lock, no lock.h, no thread tests -- and false of libakerror 2.0.1, which holds one recursive lock over the pool and the status registry and ships docs/thread-safety.md. libakgl and akbasic both pin 2.0.1 already. Issue #2 is retitled and rescoped to the submodule bump and the concurrent test that has to prove it, rather than a wait on somebody else. Co-Authored-By: Claude Opus 5 (1M context) Co-Authored-By: Andrew Kesterson --- TODO.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/TODO.md b/TODO.md index cddf605..e55eb9b 100644 --- a/TODO.md +++ b/TODO.md @@ -27,15 +27,15 @@ The six confirmed defects that used to head this file are fixed and `AKSL_KNOWN_FAILING_TESTS` is empty. What they were, and what changed as a result, is in `UPGRADING.md`. -## The four items blocked upstream +## What libakerror costs this library -Not fixable from inside this repository, and each currently costs something here. -Filed both here and against libakerror, because the fix is there and the bill is -here: +Three of these are not fixable from inside this repository, and each costs +something here. They are filed in both places, because the fix is there and the +bill is here. The fourth turned out not to be blocked at all: | Here | Upstream | What it costs | |---|---|---| -| #2 | libakerror | The unlocked error pool, **which is what makes this library single-threaded**. The threading and socket wrappers cannot be written until it is resolved | +| #2 | — | **Corrected while filing.** The unlocked error pool is a property of the libakerror this repository *pins* (1.0.0), not of libakerror (2.0.1, which locks it). `libakgl` and `akbasic` are both on 2.0.1. The work is a submodule bump and the verification that goes with it, not a wait | | #3 | libakerror | `IGNORE()` leaks a context, so `aksl_tree_iterate` open-codes log-then-release in four lines that should be one | | #4 | libakerror | The `coverage` target is not namespaced when embedded, so `-DAKSL_COVERAGE=ON` fails to configure and `CMakeLists.txt` shadows `add_custom_target` to work around it | | #5 | libakerror | No `akerrorConfigVersion.cmake`, so `find_dependency(akerror)` cannot ask for the 1.0.0 floor |