docs(roadmap): mark concurrency done in selfhost

Green threads (lib/Task.bux) and channels (lib/Channel.bux) already work.

Verified by _test_green_threads and _test_forin_channel.
This commit is contained in:
2026-06-14 17:50:40 +03:00
parent e11dce56d2
commit fc0a560e60
+14 -3
View File
@@ -247,14 +247,25 @@ const C: int = A + B; // Evaluated at compile time
## P2 — Nice to Have ## P2 — Nice to Have
### 11. Concurrency ### 11. Concurrency
**Status:** ✅ Done in selfhost.
**Why:** Go-style goroutines + channels, but without GC. **Why:** Go-style goroutines + channels, but without GC.
**Syntax:** **Syntax:**
```bux ```bux
let (tx, rx) = Channel::New<int>(); import Std::Task;
Task::Spawn(Worker, rx); import Std::Channel;
let ch: Channel<int> = Channel_New<int>(3);
Task_Spawn(Worker as *void, (&ch) as *void);
Channel_SendInt(&ch, 42);
``` ```
**Notes:**
- Runtime support in `rt/runtime.c`: `bux_task_*` and `bux_channel_*`.
- Stdlib wrappers: `lib/Task.bux`, `lib/Channel.bux`.
- `for msg in ch` iterator lowering works in selfhost.
--- ---
## Recommended Order ## Recommended Order
@@ -274,4 +285,4 @@ Task::Spawn(Worker, rx);
13.**Selfhost bootstrap loop** — Done 13.**Selfhost bootstrap loop** — Done
14.**Destructors / Drop** — Done in selfhost. 14.**Destructors / Drop** — Done in selfhost.
15.**Bounds checking on slices**`Slice<T>` with bounds-checked indexing works in selfhost via `lib/Slice.bux`. 15.**Bounds checking on slices**`Slice<T>` with bounds-checked indexing works in selfhost via `lib/Slice.bux`.
16. **Concurrency** — Green threads + channels. 16. **Concurrency** — Green threads + channels work in selfhost.