Skip to content

Commit 3e79685

Browse files
committed
Improve non-reentrance wording in Explainer.md
1 parent 0c0e6ea commit 3e79685

File tree

1 file changed

+36
-30
lines changed

1 file changed

+36
-30
lines changed

design/mvp/Explainer.md

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1721,11 +1721,12 @@ If `cancellable` is set, `waitable-set.wait` may return `task-cancelled`
17211721
propagated once received.
17221722

17231723
If `waitable-set.wait` is called from a synchronous- or `async callback`-lifted
1724-
export, no other synchronous- or `async callback`-lifted threads can start or
1725-
progress in the current component instance (ensuring non-reentrance of the core
1726-
wasm code) until it returns. However, explicitly-created threads and
1727-
non-`callback` `async`-lifted ("stackful async") exports may start or progress
1728-
at any time.
1724+
export, no other threads that were implicitly created by a separate
1725+
synchronous- or `async callback`-lifted export call can start or progress in
1726+
the current component instance until `waitable-set.wait` returns (thereby
1727+
ensuring non-reentrance of the core wasm code). However, explicitly-created
1728+
threads and threads implicitly created by non-`callback` `async`-lifted
1729+
("stackful async") exports may start or progress at any time.
17291730

17301731
A `subtask` event notifies the supertask that its subtask is now in the given
17311732
state (the meanings of which are described by the [concurrency explainer]).
@@ -1762,11 +1763,12 @@ If `cancellable` is set, `waitable-set.poll` may return `task-cancelled`
17621763
propagated once received.
17631764

17641765
If `waitable-set.poll` is called from a synchronous- or `async callback`-lifted
1765-
export, no other synchronous- or `async callback`-lifted threads can start or
1766-
progress in the current component instance (ensuring non-reentrance of the core
1767-
wasm code) until it returns. However, explicitly-created threads and
1768-
non-`callback` `async`-lifted ("stackful async") exports may start or progress
1769-
at any time.
1766+
export, no other threads that were implicitly created by a separate
1767+
synchronous- or `async callback`-lifted export call can start or progress in
1768+
the current component instance until `waitable-set.poll` returns (thereby
1769+
ensuring non-reentrance of the core wasm code). However, explicitly-created
1770+
threads and threads implicitly created by non-`callback` `async`-lifted
1771+
("stackful async") exports may start or progress at any time.
17701772

17711773
The Canonical ABI of `waitable-set.poll` is the same as `waitable-set.wait`
17721774
(with the `none` case indicated by returning `0`).
@@ -2103,11 +2105,12 @@ if `cancellable` was set, [cancellation], `thread.switch-to` will return,
21032105
indicating what happened.
21042106

21052107
If `thread.switch-to` is called from a synchronous- or `async callback`-lifted
2106-
export, no other synchronous- or `async callback`-lifted threads can start or
2107-
progress in the current component instance (ensuring non-reentrance of the core
2108-
wasm code) until it returns. However, explicitly-created threads and
2109-
non-`callback` `async`-lifted ("stackful async") exports may start or progress
2110-
at any time.
2108+
export, no other threads that were implicitly created by a separate
2109+
synchronous- or `async callback`-lifted export call can start or progress in
2110+
the current component instance until `thread.switch-to` returns (thereby
2111+
ensuring non-reentrance of the core wasm code). However, explicitly-created
2112+
threads and threads implicitly created by non-`callback` `async`-lifted
2113+
("stackful async") exports may start or progress at any time.
21112114

21122115
For details, see [`canon_thread_switch_to`] in the Canonical ABI explainer.
21132116

@@ -2126,11 +2129,12 @@ the current thread is resumed by some other thread or, if `cancellable` was
21262129
set, [cancellation], `thread.suspend` will return, indicating what happened.
21272130

21282131
If `thread.suspend` is called from a synchronous- or `async callback`-lifted
2129-
export, no other synchronous- or `async callback`-lifted threads can start or
2130-
progress in the current component instance (ensuring non-reentrance of the core
2131-
wasm code) until it returns. However, explicitly-created threads and
2132-
non-`callback` `async`-lifted ("stackful async") exports may start or progress
2133-
at any time.
2132+
export, no other threads that were implicitly created by a separate
2133+
synchronous- or `async callback`-lifted export call can start or progress in
2134+
the current component instance until `thread.suspend` returns (thereby
2135+
ensuring non-reentrance of the core wasm code). However, explicitly-created
2136+
threads and threads implicitly created by non-`callback` `async`-lifted
2137+
("stackful async") exports may start or progress at any time.
21342138

21352139
For details, see [`canon_thread_suspend`] in the Canonical ABI explainer.
21362140

@@ -2163,11 +2167,12 @@ due to runtime scheduling or, if `cancellable` was set, [cancellation],
21632167
`thread.yield-to` will return, indicating what happened.
21642168

21652169
If `thread.yield-to` is called from a synchronous- or `async callback`-lifted
2166-
export, no other synchronous- or `async callback`-lifted threads can start or
2167-
progress in the current component instance (ensuring non-reentrance of the core
2168-
wasm code) until it returns. However, explicitly-created threads and
2169-
non-`callback` `async`-lifted ("stackful async") exports may start or progress
2170-
at any time.
2170+
export, no other threads that were implicitly created by a separate
2171+
synchronous- or `async callback`-lifted export call can start or progress in
2172+
the current component instance until `thread.yield-to` returns (thereby
2173+
ensuring non-reentrance of the core wasm code). However, explicitly-created
2174+
threads and threads implicitly created by non-`callback` `async`-lifted
2175+
("stackful async") exports may start or progress at any time.
21712176

21722177
For details, see [waiting] in the concurrency explainer and
21732178
[`canon_thread_yield_to`] in the Canonical ABI explainer.
@@ -2187,11 +2192,12 @@ resumed either due to runtime scheduling or, if `cancellable` was set,
21872192
[cancellation], `thread.yield` will return, indicating what happened.
21882193

21892194
If `thread.yield` is called from a synchronous- or `async callback`-lifted
2190-
export, no other synchronous- or `async callback`-lifted threads can start or
2191-
progress in the current component instance (ensuring non-reentrance of the core
2192-
wasm code) until it returns. However, explicitly-created threads and
2193-
non-`callback` `async`-lifted ("stackful async") exports may start or progress
2194-
at any time.
2195+
export, no other threads that were implicitly created by a separate
2196+
synchronous- or `async callback`-lifted export call can start or progress in
2197+
the current component instance until `thread.yield` returns (thereby
2198+
ensuring non-reentrance of the core wasm code). However, explicitly-created
2199+
threads and threads implicitly created by non-`callback` `async`-lifted
2200+
("stackful async") exports may start or progress at any time.
21952201

21962202
For details, see [waiting] in the concurrency explainer and
21972203
[`canon_thread_yield`] in the Canonical ABI explainer.

0 commit comments

Comments
 (0)