Skip to content

Commit 862a446

Browse files
committed
feat: bump canonical refernces to latest version
update ContextLocalStorage LENGTH and adjust related tests Implement thread-local storage for context management and update related tests Enhance thread management with new yield and resume functionalities Implement new thread management functions and update related tests Add tests for thread and stream functionalities - Implement tests for thread spawning and parallelism checks. - Add tests to verify stream cancellation behavior and synchronization. - Introduce future-related tests to ensure proper async handling and cancellation. - Enhance existing tests to improve coverage and correctness of stream and future operations.
1 parent e45fae1 commit 862a446

File tree

12 files changed

+2818
-536
lines changed

12 files changed

+2818
-536
lines changed

docs/spec-alignment.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Spec alignment tracker
2+
3+
This document tracks alignment between the upstream Component Model spec/reference (in `ref/component-model`) and this library’s C++ entrypoints.
4+
5+
- Upstream references:
6+
- `ref/component-model/design/mvp/CanonicalABI.md`
7+
- `ref/component-model/design/mvp/Concurrency.md`
8+
- `ref/component-model/design/mvp/canonical-abi/definitions.py`
9+
- C++ namespace: `cmcpp`
10+
11+
## Canonical built-ins inventory
12+
13+
| Spec built-in | C++ entrypoint | Status | Notes |
14+
|---|---|---|---|
15+
| `context.get` | `cmcpp::canon_context_get` | implemented | |
16+
| `context.set` | `cmcpp::canon_context_set` | implemented | |
17+
| `backpressure.inc` | `cmcpp::canon_backpressure_inc` | implemented | |
18+
| `backpressure.dec` | `cmcpp::canon_backpressure_dec` | implemented | |
19+
| `backpressure.set` | `cmcpp::canon_backpressure_set` | implemented | Spec notes this as deprecated in favor of `backpressure.{inc,dec}`. |
20+
| `thread.yield` | `cmcpp::canon_thread_yield` | implemented | |
21+
| `thread.yield-to` | `cmcpp::canon_thread_yield_to` | implemented | |
22+
| `thread.resume-later` | `cmcpp::canon_thread_resume_later` | implemented | |
23+
| `thread.index` | `cmcpp::canon_thread_index` | implemented | |
24+
| `thread.suspend` | `cmcpp::canon_thread_suspend` | implemented | |
25+
| `task.return` | `cmcpp::canon_task_return` | implemented | |
26+
| `task.cancel` | `cmcpp::canon_task_cancel` | implemented | |
27+
| `task.wait` | `cmcpp::canon_task_wait` | implemented | |
28+
| `waitable-set.new` | `cmcpp::canon_waitable_set_new` | implemented | |
29+
| `waitable-set.drop` | `cmcpp::canon_waitable_set_drop` | implemented | |
30+
| `waitable-set.wait` | `cmcpp::canon_waitable_set_wait` | implemented | |
31+
| `waitable-set.poll` | `cmcpp::canon_waitable_set_poll` | implemented | |
32+
| `waitable.join` | `cmcpp::canon_waitable_join` | implemented | |
33+
| `stream.new` | `cmcpp::canon_stream_new` | implemented | |
34+
| `stream.read` | `cmcpp::canon_stream_read` | implemented | |
35+
| `stream.write` | `cmcpp::canon_stream_write` | implemented | |
36+
| `stream.cancel-read` | `cmcpp::canon_stream_cancel_read` | implemented | |
37+
| `stream.cancel-write` | `cmcpp::canon_stream_cancel_write` | implemented | |
38+
| `stream.drop-readable` | `cmcpp::canon_stream_drop_readable` | implemented | |
39+
| `stream.drop-writable` | `cmcpp::canon_stream_drop_writable` | implemented | |
40+
| `future.new` | `cmcpp::canon_future_new` | implemented | |
41+
| `future.read` | `cmcpp::canon_future_read` | implemented | |
42+
| `future.write` | `cmcpp::canon_future_write` | implemented | |
43+
| `future.cancel-read` | `cmcpp::canon_future_cancel_read` | implemented | |
44+
| `future.cancel-write` | `cmcpp::canon_future_cancel_write` | implemented | |
45+
| `future.drop-readable` | `cmcpp::canon_future_drop_readable` | implemented | |
46+
| `future.drop-writable` | `cmcpp::canon_future_drop_writable` | implemented | |
47+
| `resource.new` | `cmcpp::canon_resource_new` | implemented | |
48+
| `resource.rep` | `cmcpp::canon_resource_rep` | implemented | |
49+
| `resource.drop` | `cmcpp::canon_resource_drop` | implemented | |
50+
| `error-context.new` | `cmcpp::canon_error_context_new` | implemented | |
51+
| `error-context.debug-message` | `cmcpp::canon_error_context_debug_message` | implemented | |
52+
| `error-context.drop` | `cmcpp::canon_error_context_drop` | implemented | |
53+
54+
## Thread built-ins (upstream)
55+
56+
These are referenced by the upstream spec/reference but do not currently have direct C++ canonical built-in entrypoints in this repo:
57+
58+
- `thread.new_ref` / `thread.new-ref` (implemented: `cmcpp::canon_thread_new_ref`)
59+
- `thread.new-indirect` (implemented: `cmcpp::canon_thread_new_indirect`)
60+
- `thread.spawn-ref` (implemented: `cmcpp::canon_thread_spawn_ref`)
61+
- `thread.spawn-indirect` (implemented: `cmcpp::canon_thread_spawn_indirect`)
62+
- `thread.switch-to` (implemented: `cmcpp::canon_thread_switch_to`)
63+
- `thread.available-parallelism` (implemented: `cmcpp::canon_thread_available_parallelism`)

0 commit comments

Comments
 (0)