Task: Implement Hotfix: Apple's libc++ has no C++20 stop machinery at all
Table of Contents
This page documents a task in the Hotfix: Apple's libc++ has no C++20 stop machinery at all story. It captures the goal, current status, acceptance, and any notes or results.
1. Goal
Make the portable thread depend on nothing Apple's libc++ can be missing.
2. Status
| Field | Value |
|---|---|
| State | DONE |
| Parent story | Hotfix: Apple's libc++ has no C++20 stop machinery at all |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-09-30 |
3. Acceptance
- The header includes only
atomic,memory,threadandutility. stop_sourceanswersrequest_stop()andstop_requested(), and copies share one flag.- The engine's callable takes the shim's and its body is unchanged.
- The tree builds, the workflow and platform suites pass, and a macOS run builds and tests the branch.
4. Plan
- Read the second macOS diagnostic in full, rather than its first line.
- Replace the standard stop types with the shim's own, and move the engine.
- Build, run the suites, format-check, correct the earlier story, and dispatch macOS.
5. Measurements
| What | Value | Command | Commit | |
|---|---|---|---|---|
| The second diagnostic | no type named 'stop_token' at line 99 and 'stop_source' at line 113 of the shim |
macOS run 36767836101 | main at 3dad44a9 | |
| Standard stop types named in code, after | 0 | =grep -rn "stop_token\ | jthread" projects/ –include=*.hpp –include=*.cpp= | this branch |
| Headers the shim needs | 4: atomic, memory, thread, utility | the header | this branch | |
| Suites | 5 of 5 pass: workflow api/core/service, platform, shell workflow | =ctest -R "workflow\ | platform"= | this branch |
| Full tree | builds | cmake --build --preset linux-clang-debug-make -j 8 |
this branch | |
| Formatting | clean | clang-format --dry-run --Werror |
this branch | |
| macOS | dispatched | gh workflow run continuous-macos.yml |
this branch |
6. Notes
- The first fix's mistake is worth recording plainly: the macOS log named one missing type and the shim was written against that one type. The build after it named two more. The estate's own rule – do not infer a platform gap's boundary from a single diagnostic – is what this task follows.
- iam core's tests are red in the worktree on
is_registration_defaultandaccount_status, columns main added after the worktree's database was made. They are unrelated to this change and the suites that exercise it pass.
7. PRs
| PR | Title |
|---|---|
| #2447 | Fix the macOS build: the portable thread needs its own stop source |
8. Review
| Comment summary | File | Decision | Notes |
|---|---|---|---|
9. Result
The portable thread carries its own stop source and depends only on thread, atomic, memory and utility. No source names a standard stop type; the tree builds and the workflow and platform suites pass.