@@ -214,7 +214,7 @@ label' ::= len:<u32> l:<label> => l (if len = |l|)
214
214
valtype ::= i:<typeidx> => i
215
215
| pvt:<primvaltype> => pvt
216
216
resourcetype ::= 0x3f 0x7f f?:<funcidx>? => (resource (rep i32) (dtor f)?)
217
- | 0x3e 0x7f f:<funcidx> cb?:<funcidx>? => (resource (rep i32) (dtor async f (callback cb)?)) 🚝
217
+ | 0x3e 0x7f f:<funcidx> cb?:<funcidx>? => (resource (rep i32) (dtor async f (callback cb)?)) 🧵
218
218
functype ::= 0x40 ps:<paramlist> rs:<resultlist> => (func ps rs)
219
219
paramlist ::= lt*:vec(<labelvaltype>) => (param lt)*
220
220
resultlist ::= 0x00 t:<valtype> => (result t)
@@ -288,14 +288,14 @@ canon ::= 0x00 0x00 f:<core:funcidx> opts:<opts> ft:<typeidx> => (canon lift
288
288
| 0x01 0x00 f:<funcidx> opts:<opts> => (canon lower f opts (core func))
289
289
| 0x02 rt:<typeidx> => (canon resource.new rt (core func))
290
290
| 0x03 rt:<typeidx> => (canon resource.drop rt (core func))
291
- | 0x07 rt:<typeidx> => (canon resource.drop rt async (core func)) 🚝
291
+ | 0x07 rt:<typeidx> => (canon resource.drop rt async (core func)) 🧵
292
292
| 0x04 rt:<typeidx> => (canon resource.rep rt (core func))
293
293
| 0x08 => (canon backpressure.set (core func)) 🔀
294
294
| 0x09 rs:<resultlist> opts:<opts> => (canon task.return rs opts (core func)) 🔀
295
295
| 0x05 => (canon task.cancel (core func)) 🔀
296
296
| 0x0a 0x7f i:<u32> => (canon context.get i32 i (core func)) 🔀
297
297
| 0x0b 0x7f i:<u32> => (canon context.set i32 i (core func)) 🔀
298
- | 0x0c cancel?:<cancel?> => (canon yield cancel? (core func)) 🔀
298
+ | 0x0c cancel?:<cancel?> => (canon thread. yield cancel? (core func)) 🔀
299
299
| 0x06 async?:<async?> => (canon subtask.cancel async? (core func)) 🔀
300
300
| 0x0d => (canon subtask.drop (core func)) 🔀
301
301
| 0x0e t:<typeidx> => (canon stream.new t (core func)) 🔀
@@ -320,13 +320,21 @@ canon ::= 0x00 0x00 f:<core:funcidx> opts:<opts> ft:<typeidx> => (canon lift
320
320
| 0x21 cancel?:<cancel?> m:<core:memidx> => (canon waitable-set.poll cancel? (memory m) (core func)) 🔀
321
321
| 0x22 => (canon waitable-set.drop (core func)) 🔀
322
322
| 0x23 => (canon waitable.join (core func)) 🔀
323
- | 0x40 ft:<typeidx> => (canon thread.spawn_ref ft (core func)) 🧵
324
- | 0x41 ft:<typeidx> tbl:<core:tableidx> => (canon thread.spawn_indirect ft tbl (core func)) 🧵
325
- | 0x42 => (canon thread.available_parallelism (core func)) 🧵
323
+ | 0x26 => (canon thread.index (core func)) 🧵
324
+ | 0x27 ft:<typeidx> tbl:<core:tableidx> => (canon thread.new_indirect ft tbl (core func)) 🧵
325
+ | 0x28 cancel?:<cancel?> => (canon thread.switch-to cancel? (core func)) 🧵
326
+ | 0x29 cancel?:<cancel?> => (canon thread.suspend cancel? (core func)) 🧵
327
+ | 0x2a => (canon thread.resume-later (core func)) 🧵
328
+ | 0x2b cancel?:<cancel?> => (canon thread.yield-to cancel? (core func)) 🧵
329
+ | 0x40 shared?:<sh?> ft:<typeidx> => (canon thread.spawn_ref shared? ft (core func)) 🧵②
330
+ | 0x41 shared?:<sh?> ft:<typeidx> tbl:<core:tableidx> => (canon thread.spawn_indirect shared? ft tbl (core func)) 🧵②
331
+ | 0x42 shared?:<sh?> => (canon thread.available-parallelism shared? (core func)) 🧵②
326
332
async? ::= 0x00 =>
327
333
| 0x01 => async
328
334
cancel? ::= 0x00 =>
329
- | 0x01 => cancellable 🚟
335
+ | 0x01 => cancellable 🧵
336
+ sh? ::= 0x00 =>
337
+ | 0x01 => shared 🧵②
330
338
opts ::= opt*:vec(<canonopt>) => opt*
331
339
canonopt ::= 0x00 => string-encoding=utf8
332
340
| 0x01 => string-encoding=utf16
@@ -509,6 +517,8 @@ named once.
509
517
repurposed.
510
518
* Most built-ins should have a ` <canonopt>* ` immediate instead of an ad hoc
511
519
subset of ` canonopt ` s.
520
+ * Add optional ` shared ` immediate to all canonical definitions (explicitly or
521
+ via ` <canonopt> ` ) when shared-everything-threads (🧵②) is added.
512
522
513
523
514
524
[ `core:byte` ] : https://webassembly.github.io/spec/core/binary/values.html#binary-byte
0 commit comments