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, thread and utility.
  • stop_source answers request_stop() and stop_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

  1. Read the second macOS diagnostic in full, rather than its first line.
  2. Replace the standard stop types with the shim's own, and move the engine.
  3. 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_default and account_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.

Emacs 29.3 (Org mode 9.6.15)