1;;! component_model_async = true
2;;! component_model_async_builtins = true
3
4;; future.new
5(component
6  (core module $m
7    (import "" "future.new" (func $future-new (result i64)))
8  )
9  (type $future-type (future u8))
10  (core func $future-new (canon future.new $future-type))
11  (core instance $i (instantiate $m (with "" (instance (export "future.new" (func $future-new))))))
12)
13
14;; future.read
15(component
16  (core module $libc (memory (export "memory") 1))
17  (core instance $libc (instantiate $libc))
18  (core module $m
19    (import "" "future.read" (func $future-read (param i32 i32) (result i32)))
20  )
21  (type $future-type (future u8))
22  (core func $future-read (canon future.read $future-type async (memory $libc "memory")))
23  (core instance $i (instantiate $m (with "" (instance (export "future.read" (func $future-read))))))
24)
25
26;; future.read; with realloc
27(component
28  (core module $libc
29    (func (export "realloc") (param i32 i32 i32 i32) (result i32) unreachable)
30    (memory (export "memory") 1)
31  )
32  (core instance $libc (instantiate $libc))
33  (core module $m
34    (import "" "future.read" (func $future-read (param i32 i32) (result i32)))
35  )
36  (type $future-type (future string))
37  (core func $future-read (canon future.read $future-type async (memory $libc "memory") (realloc (func $libc "realloc"))))
38  (core instance $i (instantiate $m (with "" (instance (export "future.read" (func $future-read))))))
39)
40
41;; future.write
42(component
43  (core module $libc (memory (export "memory") 1))
44  (core instance $libc (instantiate $libc))
45  (core module $m
46    (import "" "future.write" (func $future-write (param i32 i32) (result i32)))
47  )
48  (type $future-type (future u8))
49  (core func $future-write (canon future.write $future-type async (memory $libc "memory")))
50  (core instance $i (instantiate $m (with "" (instance (export "future.write" (func $future-write))))))
51)
52
53;; future.cancel-read
54(component
55  (core module $m
56    (import "" "future.cancel-read" (func $future-cancel-read (param i32) (result i32)))
57  )
58  (type $future-type (future u8))
59  (core func $future-cancel-read (canon future.cancel-read $future-type))
60  (core instance $i (instantiate $m (with "" (instance (export "future.cancel-read" (func $future-cancel-read))))))
61)
62
63;; future.cancel-write
64(component
65  (core module $m
66    (import "" "future.cancel-write" (func $future-cancel-write (param i32) (result i32)))
67  )
68  (type $future-type (future u8))
69  (core func $future-cancel-write (canon future.cancel-write $future-type))
70  (core instance $i (instantiate $m (with "" (instance (export "future.cancel-write" (func $future-cancel-write))))))
71)
72
73;; future.drop-readable
74(component
75  (core module $m
76    (import "" "future.drop-readable" (func $future-drop-readable (param i32)))
77  )
78  (type $future-type (future u8))
79  (core func $future-drop-readable (canon future.drop-readable $future-type))
80  (core instance $i (instantiate $m (with "" (instance (export "future.drop-readable" (func $future-drop-readable))))))
81)
82
83;; future.drop-writable
84(component
85  (core module $m
86    (import "" "future.drop-writable" (func $future-drop-writable (param i32)))
87  )
88  (type $future-type (future u8))
89  (core func $future-drop-writable (canon future.drop-writable $future-type))
90  (core instance $i (instantiate $m (with "" (instance (export "future.drop-writable" (func $future-drop-writable))))))
91)
92