@salang/sa 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/bin/sa.js +19 -1
  2. package/package.json +8 -7
  3. package/sa_std/alloc/layout.sal +12 -0
  4. package/sa_std/alloc/prelude.sa +1 -0
  5. package/sa_std/alloc/prelude.sal +1 -0
  6. package/sa_std/alloc/string.sa +3 -0
  7. package/sa_std/alloc/vec.sa +684 -0
  8. package/sa_std/alloc/vec.sal +4 -0
  9. package/sa_std/any.sa +130 -0
  10. package/sa_std/any.sal +23 -0
  11. package/sa_std/array.sa +1876 -0
  12. package/sa_std/ascii.sa +2 -0
  13. package/sa_std/ascii.sal +1 -0
  14. package/sa_std/async.sla +116 -0
  15. package/sa_std/binary_heap.sa +3003 -0
  16. package/sa_std/binary_heap.sal +7 -0
  17. package/sa_std/borrow.sa +171 -0
  18. package/sa_std/borrow.sal +13 -0
  19. package/sa_std/btree_map.sa +2210 -0
  20. package/sa_std/btree_map.sal +11 -0
  21. package/sa_std/btree_set.sa +1072 -0
  22. package/sa_std/btree_set.sal +6 -0
  23. package/sa_std/char.sa +1309 -0
  24. package/sa_std/char.sal +50 -0
  25. package/sa_std/cmp.sa +554 -0
  26. package/sa_std/cmp.sal +14 -0
  27. package/sa_std/collections/binary_heap.sa +1 -0
  28. package/sa_std/collections/btree_map.sa +1 -0
  29. package/sa_std/collections/btree_set.sa +1 -0
  30. package/sa_std/collections/hashmap.sa +1 -0
  31. package/sa_std/collections/hashset.sa +1 -0
  32. package/sa_std/collections/linked_list.sa +1120 -0
  33. package/sa_std/collections/linked_list.sal +10 -0
  34. package/sa_std/collections/prelude.sa +7 -0
  35. package/sa_std/collections/prelude.sal +1 -0
  36. package/sa_std/collections/vec_deque.sa +1 -0
  37. package/sa_std/collections.sal +13 -0
  38. package/sa_std/convert.sa +1115 -0
  39. package/sa_std/convert.sal +24 -0
  40. package/sa_std/core/arc.sa +233 -0
  41. package/sa_std/core/arc.sal +4 -0
  42. package/sa_std/core/ascii.sa +784 -0
  43. package/sa_std/core/ascii.sal +34 -0
  44. package/sa_std/core/bit.sa +41 -0
  45. package/sa_std/core/box.sa +1 -0
  46. package/sa_std/core/box.sal +2 -0
  47. package/sa_std/core/cell.sa +108 -0
  48. package/sa_std/core/cell.sal +5 -0
  49. package/sa_std/core/cleanup.sa +26 -0
  50. package/sa_std/core/control.sa +20 -0
  51. package/sa_std/core/derive.sa +60 -0
  52. package/sa_std/core/derive.sal +1 -0
  53. package/sa_std/core/dispatch.sa +7 -0
  54. package/sa_std/core/dispatch.sal +5 -0
  55. package/sa_std/core/future.sa +777 -0
  56. package/sa_std/core/future.sal +73 -0
  57. package/sa_std/core/hash.sa +48 -0
  58. package/sa_std/core/iter.sa +2805 -0
  59. package/sa_std/core/iter.sal +4 -0
  60. package/sa_std/core/loop.sa +60 -0
  61. package/sa_std/core/mem.sa +220 -0
  62. package/sa_std/core/option.sa +825 -0
  63. package/sa_std/core/option.sal +11 -0
  64. package/sa_std/core/panic.sa +23 -0
  65. package/sa_std/core/panic.sal +12 -0
  66. package/sa_std/core/prelude.sa +18 -0
  67. package/sa_std/core/prelude.sal +18 -0
  68. package/sa_std/core/rc.sa +225 -0
  69. package/sa_std/core/rc.sal +4 -0
  70. package/sa_std/core/refcell.sa +283 -0
  71. package/sa_std/core/refcell.sal +13 -0
  72. package/sa_std/core/result.sa +708 -0
  73. package/sa_std/core/result.sal +6 -0
  74. package/sa_std/core/rust_patterns.sal +295 -0
  75. package/sa_std/core/sa_core.sa +84 -0
  76. package/sa_std/core/slice.sa +4021 -0
  77. package/sa_std/core/slice.sal +7 -0
  78. package/sa_std/core/task.sa +112 -0
  79. package/sa_std/core/task.sal +15 -0
  80. package/sa_std/core/trait_object.sa +26 -0
  81. package/sa_std/core/trait_object.sal +4 -0
  82. package/sa_std/core/waker.sa +289 -0
  83. package/sa_std/core/waker.sal +31 -0
  84. package/sa_std/core/weak.sa +2 -0
  85. package/sa_std/core/weak.sal +4 -0
  86. package/sa_std/cow.sa +3 -0
  87. package/sa_std/cow.sal +2 -0
  88. package/sa_std/cstring.sa +3 -0
  89. package/sa_std/cstring.sal +2 -0
  90. package/sa_std/default.sa +99 -0
  91. package/sa_std/duration.sa +3 -0
  92. package/sa_std/duration.sal +2 -0
  93. package/sa_std/encoding/json.sa +259 -0
  94. package/sa_std/encoding/json.sai +54 -0
  95. package/sa_std/encoding/json.sal +35 -0
  96. package/sa_std/encoding/prelude.sa +1 -0
  97. package/sa_std/encoding/prelude.sal +0 -0
  98. package/sa_std/env.sa +390 -0
  99. package/sa_std/env.sai +25 -0
  100. package/sa_std/error.sa +253 -0
  101. package/sa_std/error.sal +44 -0
  102. package/sa_std/ffi/cstring.sa +3 -0
  103. package/sa_std/ffi/cstring.sal +1 -0
  104. package/sa_std/ffi/prelude.sa +2 -0
  105. package/sa_std/ffi/prelude.sal +2 -0
  106. package/sa_std/ffi.sa +635 -0
  107. package/sa_std/ffi.sal +51 -0
  108. package/sa_std/fmt.sa +2 -0
  109. package/sa_std/fmt.sai +18 -0
  110. package/sa_std/fmt.sal +35 -0
  111. package/sa_std/fs.sa +1023 -0
  112. package/sa_std/fs.sai +127 -0
  113. package/sa_std/fs.sal +51 -0
  114. package/sa_std/future.sa +2 -0
  115. package/sa_std/future.sal +1 -0
  116. package/sa_std/hash.sa +1486 -0
  117. package/sa_std/hash.sal +13 -0
  118. package/sa_std/hashmap.sa +1962 -0
  119. package/sa_std/hashmap.sal +20 -0
  120. package/sa_std/hashset.sa +1004 -0
  121. package/sa_std/hashset.sal +18 -0
  122. package/sa_std/http2.sa +78 -0
  123. package/sa_std/http2.sai +26 -0
  124. package/sa_std/http2.sal +36 -0
  125. package/sa_std/instant.sa +3 -0
  126. package/sa_std/instant.sal +2 -0
  127. package/sa_std/io/buf_reader.sa +43 -0
  128. package/sa_std/io/buf_writer.sa +35 -0
  129. package/sa_std/io/bufio.sa +4 -0
  130. package/sa_std/io/bufio.sal +4 -0
  131. package/sa_std/io/prelude.sa +1 -0
  132. package/sa_std/io/prelude.sal +1 -0
  133. package/sa_std/io/print.sa +2 -0
  134. package/sa_std/io/print.sai +3 -0
  135. package/sa_std/io.sa +925 -0
  136. package/sa_std/io.sai +25 -0
  137. package/sa_std/io.sal +84 -0
  138. package/sa_std/iter.sa +2 -0
  139. package/sa_std/iter.sal +1 -0
  140. package/sa_std/join_handle.sa +3 -0
  141. package/sa_std/join_handle.sal +2 -0
  142. package/sa_std/libsa_async.sa +80 -0
  143. package/sa_std/m_async.sa +137 -0
  144. package/sa_std/m_async.sal +30 -0
  145. package/sa_std/m_async.sla +2 -0
  146. package/sa_std/manually_drop.sa +3 -0
  147. package/sa_std/manually_drop.sal +2 -0
  148. package/sa_std/marker/phantom_data.sa +3 -0
  149. package/sa_std/marker/phantom_data.sal +1 -0
  150. package/sa_std/marker/prelude.sa +4 -0
  151. package/sa_std/marker/prelude.sal +4 -0
  152. package/sa_std/marker.sa +220 -0
  153. package/sa_std/marker.sal +15 -0
  154. package/sa_std/math.sa +84 -0
  155. package/sa_std/math.sai +10 -0
  156. package/sa_std/mem/manually_drop.sa +3 -0
  157. package/sa_std/mem/manually_drop.sal +1 -0
  158. package/sa_std/mem/prelude.sa +2 -0
  159. package/sa_std/mem/prelude.sal +2 -0
  160. package/sa_std/mem.sa +564 -0
  161. package/sa_std/mem.sal +40 -0
  162. package/sa_std/modstate.sai +19 -0
  163. package/sa_std/net.sa +4227 -0
  164. package/sa_std/net.sai +239 -0
  165. package/sa_std/net.sal +159 -0
  166. package/sa_std/netx.sa +85 -0
  167. package/sa_std/netx.sai +11 -0
  168. package/sa_std/netx.sal +39 -0
  169. package/sa_std/nonzero.sa +3 -0
  170. package/sa_std/nonzero.sal +2 -0
  171. package/sa_std/num/nonzero.sa +3 -0
  172. package/sa_std/num/nonzero.sal +1 -0
  173. package/sa_std/num/prelude.sa +3 -0
  174. package/sa_std/num/prelude.sal +3 -0
  175. package/sa_std/num.sa +17302 -0
  176. package/sa_std/num.sai +11 -0
  177. package/sa_std/num.sal +341 -0
  178. package/sa_std/ops.sa +1884 -0
  179. package/sa_std/ops.sal +68 -0
  180. package/sa_std/option.sa +2 -0
  181. package/sa_std/option.sal +1 -0
  182. package/sa_std/os/fd.sa +96 -0
  183. package/sa_std/os/fd.sai +7 -0
  184. package/sa_std/os/fd.sal +11 -0
  185. package/sa_std/os/prelude.sa +2 -0
  186. package/sa_std/os/prelude.sal +1 -0
  187. package/sa_std/os/unix_ffi.sa +271 -0
  188. package/sa_std/panic.sa +1 -0
  189. package/sa_std/panic.sal +1 -0
  190. package/sa_std/path.sa +3170 -0
  191. package/sa_std/path.sal +12 -0
  192. package/sa_std/phantom_data.sa +3 -0
  193. package/sa_std/phantom_data.sal +2 -0
  194. package/sa_std/pin.sa +79 -0
  195. package/sa_std/pin.sal +5 -0
  196. package/sa_std/plugin_async.sa +90 -0
  197. package/sa_std/plugin_async.sal +29 -0
  198. package/sa_std/plugin_async.sla +4 -0
  199. package/sa_std/plugin_http_async.sa +46 -0
  200. package/sa_std/plugin_http_server.sa +61 -0
  201. package/sa_std/plugin_http_server.sla +2 -0
  202. package/sa_std/plugin_sqlite.sa +106 -0
  203. package/sa_std/plugin_sqlite.sla +2 -0
  204. package/sa_std/prelude.sa +60 -0
  205. package/sa_std/prelude.sal +55 -0
  206. package/sa_std/process.sa +916 -0
  207. package/sa_std/process.sai +57 -0
  208. package/sa_std/process.sal +27 -0
  209. package/sa_std/ptr.sa +503 -0
  210. package/sa_std/ptr.sal +2 -0
  211. package/sa_std/result.sa +2 -0
  212. package/sa_std/result.sal +1 -0
  213. package/sa_std/rust_core.sa +51 -0
  214. package/sa_std/rust_core.sal +26 -0
  215. package/sa_std/sa.mod +7 -0
  216. package/sa_std/sort.sa +156 -0
  217. package/sa_std/str.sla +13 -0
  218. package/sa_std/string.sa +12240 -0
  219. package/sa_std/string.sai +25 -0
  220. package/sa_std/string.sal +17 -0
  221. package/sa_std/string_format.sa +269 -0
  222. package/sa_std/sync/atomic.sa +1500 -0
  223. package/sa_std/sync/atomic.sal +45 -0
  224. package/sa_std/sync/barrier.sa +105 -0
  225. package/sa_std/sync/barrier.sal +7 -0
  226. package/sa_std/sync/condvar.sa +240 -0
  227. package/sa_std/sync/condvar.sal +4 -0
  228. package/sa_std/sync/mpsc.sa +758 -0
  229. package/sa_std/sync/mpsc.sal +42 -0
  230. package/sa_std/sync/mpsc_list.sa +255 -0
  231. package/sa_std/sync/mpsc_list.sal +3 -0
  232. package/sa_std/sync/mutex.sa +182 -0
  233. package/sa_std/sync/mutex.sal +7 -0
  234. package/sa_std/sync/once.sa +371 -0
  235. package/sa_std/sync/once.sal +31 -0
  236. package/sa_std/sync/poison.sa +36 -0
  237. package/sa_std/sync/poison.sal +11 -0
  238. package/sa_std/sync/prelude.sa +8 -0
  239. package/sa_std/sync/prelude.sal +7 -0
  240. package/sa_std/sync/rwlock.sa +369 -0
  241. package/sa_std/sync/rwlock.sal +13 -0
  242. package/sa_std/task.sa +2 -0
  243. package/sa_std/task.sal +1 -0
  244. package/sa_std/term.sa +2 -0
  245. package/sa_std/term.sai +10 -0
  246. package/sa_std/term.sal +33 -0
  247. package/sa_std/testing/assert.sai +4 -0
  248. package/sa_std/testing/mock_io.sa +174 -0
  249. package/sa_std/testing/mock_io.sal +5 -0
  250. package/sa_std/testing/prelude.sa +2 -0
  251. package/sa_std/testing/prelude.sal +1 -0
  252. package/sa_std/text/prelude.sa +1 -0
  253. package/sa_std/text/prelude.sal +1 -0
  254. package/sa_std/text/regex.sa +2 -0
  255. package/sa_std/text/regex.sai +9 -0
  256. package/sa_std/text/regex.sal +33 -0
  257. package/sa_std/thread/join_handle.sa +3 -0
  258. package/sa_std/thread/join_handle.sal +1 -0
  259. package/sa_std/thread/prelude.sa +4 -0
  260. package/sa_std/thread/prelude.sal +3 -0
  261. package/sa_std/thread.sa +160 -0
  262. package/sa_std/thread.sai +11 -0
  263. package/sa_std/thread.sal +4 -0
  264. package/sa_std/thread_local.sa +45 -0
  265. package/sa_std/thread_local.sai +9 -0
  266. package/sa_std/time/duration.sa +3 -0
  267. package/sa_std/time/duration.sal +1 -0
  268. package/sa_std/time/instant.sa +3 -0
  269. package/sa_std/time/instant.sal +1 -0
  270. package/sa_std/time/prelude.sa +4 -0
  271. package/sa_std/time/prelude.sal +4 -0
  272. package/sa_std/time.sa +850 -0
  273. package/sa_std/time.sai +37 -0
  274. package/sa_std/time.sal +35 -0
  275. package/sa_std/time.sla +67 -0
  276. package/sa_std/tls_client.sai +39 -0
  277. package/sa_std/vec.sa +5754 -0
  278. package/sa_std/vec.sal +1 -0
  279. package/sa_std/vec_deque.sa +4925 -0
  280. package/sa_std/vec_deque.sal +8 -0
  281. package/sa_std/vec_runtime_macros.sa +11 -0
  282. package/sa_std/ws_client.sai +57 -0
@@ -0,0 +1,12 @@
1
+ @import "core/slice.sal"
2
+
3
+ #def Path_SIZE = Slice_SIZE
4
+ #def Path_ptr = Slice_ptr
5
+ #def Path_len = Slice_len
6
+
7
+ #def PathBuf_SIZE = Slice_SIZE
8
+ #def PathBuf_ptr = Slice_ptr
9
+ #def PathBuf_cap = Slice_len
10
+
11
+ #def PATH_MAIN_SEPARATOR_UNIX = 47
12
+ #def PATH_MAIN_SEPARATOR = 47
@@ -0,0 +1,3 @@
1
+ // Public PhantomData marker facade over marker.sa.
2
+ @import "marker.sal"
3
+ @import "marker.sa"
@@ -0,0 +1,2 @@
1
+ // PhantomData has no runtime payload.
2
+ @import "marker.sal"
package/sa_std/pin.sa ADDED
@@ -0,0 +1,79 @@
1
+ @import "pin.sal"
2
+
3
+ [MACRO] PIN_NEW %pin_ptr, %target_ptr
4
+ store %pin_ptr+Pin_ptr, %target_ptr as ptr
5
+ [END_MACRO]
6
+
7
+ [MACRO] PIN_NEW_UNCHECKED %pin_ptr, %target_ptr
8
+ store %pin_ptr+Pin_ptr, %target_ptr as ptr
9
+ [END_MACRO]
10
+
11
+ [MACRO] PIN_MUT_NEW %pin_ptr, %target_ptr
12
+ store %pin_ptr+PinMut_ptr, %target_ptr as ptr
13
+ [END_MACRO]
14
+
15
+ [MACRO] PIN_MUT_NEW_UNCHECKED %pin_ptr, %target_ptr
16
+ store %pin_ptr+PinMut_ptr, %target_ptr as ptr
17
+ [END_MACRO]
18
+
19
+ [MACRO] PIN_GET_REF %out_ptr, %pin_ptr
20
+ %out_ptr = load %pin_ptr+Pin_ptr as ptr
21
+ [END_MACRO]
22
+
23
+ [MACRO] PIN_MUT_GET_REF %out_ptr, %pin_ptr
24
+ %out_ptr = load %pin_ptr+PinMut_ptr as ptr
25
+ [END_MACRO]
26
+
27
+ [MACRO] PIN_MUT_GET_MUT %out_ptr, %pin_ptr
28
+ %out_ptr = load %pin_ptr+PinMut_ptr as ptr
29
+ [END_MACRO]
30
+
31
+ [MACRO] PIN_MUT_GET_UNCHECKED_MUT %out_ptr, %pin_ptr
32
+ %out_ptr = load %pin_ptr+PinMut_ptr as ptr
33
+ [END_MACRO]
34
+
35
+ [MACRO] PIN_AS_REF %out_pin_ptr, %pin_ptr
36
+ __pin_ref_ptr_%out_pin_ptr = load %pin_ptr+Pin_ptr as ptr
37
+ store %out_pin_ptr+Pin_ptr, __pin_ref_ptr_%out_pin_ptr as ptr
38
+ !__pin_ref_ptr_%out_pin_ptr
39
+ [END_MACRO]
40
+
41
+ [MACRO] PIN_MUT_AS_REF %out_pin_ptr, %pin_ptr
42
+ __pin_mut_ref_ptr_%out_pin_ptr = load %pin_ptr+PinMut_ptr as ptr
43
+ store %out_pin_ptr+Pin_ptr, __pin_mut_ref_ptr_%out_pin_ptr as ptr
44
+ !__pin_mut_ref_ptr_%out_pin_ptr
45
+ [END_MACRO]
46
+
47
+ [MACRO] PIN_MUT_AS_MUT %out_pin_ptr, %pin_ptr
48
+ __pin_mut_ptr_%out_pin_ptr = load %pin_ptr+PinMut_ptr as ptr
49
+ store %out_pin_ptr+PinMut_ptr, __pin_mut_ptr_%out_pin_ptr as ptr
50
+ !__pin_mut_ptr_%out_pin_ptr
51
+ [END_MACRO]
52
+
53
+ [MACRO] PIN_MUT_INTO_REF %out_pin_ptr, %pin_ptr
54
+ EXPAND PIN_MUT_AS_REF %out_pin_ptr, %pin_ptr
55
+ [END_MACRO]
56
+
57
+ [MACRO] PIN_INTO_INNER_UNCHECKED %out_ptr, %pin_ptr
58
+ %out_ptr = load %pin_ptr+Pin_ptr as ptr
59
+ [END_MACRO]
60
+
61
+ [MACRO] PIN_MUT_INTO_INNER_UNCHECKED %out_ptr, %pin_ptr
62
+ %out_ptr = load %pin_ptr+PinMut_ptr as ptr
63
+ [END_MACRO]
64
+
65
+ [MACRO] PIN_PTR_EQ %out_bool, %left_pin, %right_pin
66
+ __pin_left_%out_bool = load %left_pin+Pin_ptr as ptr
67
+ __pin_right_%out_bool = load %right_pin+Pin_ptr as ptr
68
+ %out_bool = eq __pin_left_%out_bool, __pin_right_%out_bool
69
+ !__pin_right_%out_bool
70
+ !__pin_left_%out_bool
71
+ [END_MACRO]
72
+
73
+ [MACRO] PIN_MUT_PTR_EQ %out_bool, %left_pin, %right_pin
74
+ __pin_mut_left_%out_bool = load %left_pin+PinMut_ptr as ptr
75
+ __pin_mut_right_%out_bool = load %right_pin+PinMut_ptr as ptr
76
+ %out_bool = eq __pin_mut_left_%out_bool, __pin_mut_right_%out_bool
77
+ !__pin_mut_right_%out_bool
78
+ !__pin_mut_left_%out_bool
79
+ [END_MACRO]
package/sa_std/pin.sal ADDED
@@ -0,0 +1,5 @@
1
+ #def Pin_SIZE = 8
2
+ #def Pin_ptr = +0
3
+
4
+ #def PinMut_SIZE = 8
5
+ #def PinMut_ptr = +0
@@ -0,0 +1,90 @@
1
+ // Plugin async adapter macros.
2
+ //
3
+ // A plugin operation is polled by the concrete adapter and exposed as a
4
+ // PollResult<u64>: pending while the plugin reports would_block/not-ready,
5
+ // ready-ok with the owned result handle, or ready-err with the plugin status.
6
+ // This keeps HTTP, process, DB-worker, and future plugin adapters on one ABI.
7
+ @import "plugin_async.sal"
8
+ @import "core/future.sa"
9
+
10
+ [MACRO] PLUGIN_ASYNC_OP_NEW %out_op, %handle, %deadline_ms
11
+ %out_op = alloc PluginAsyncOp_SIZE
12
+ store %out_op+PluginAsyncOp_handle, %handle as ptr
13
+ store %out_op+PluginAsyncOp_state, PluginAsync_PENDING as u64
14
+ store %out_op+PluginAsyncOp_status, PluginAsync_STATUS_OK as u64
15
+ store %out_op+PluginAsyncOp_value, 0 as ptr
16
+ store %out_op+PluginAsyncOp_error, 0 as u64
17
+ store %out_op+PluginAsyncOp_deadline_ms, %deadline_ms as u64
18
+ store %out_op+PluginAsyncOp_cancelled, 0 as u64
19
+ store %out_op+PluginAsyncOp_owned, 1 as u64
20
+ [END_MACRO]
21
+
22
+ [MACRO] PLUGIN_ASYNC_OP_STATE %out_state, %op
23
+ %out_state = load %op+PluginAsyncOp_state as u64
24
+ [END_MACRO]
25
+
26
+ [MACRO] PLUGIN_ASYNC_OP_HANDLE %out_handle, %op
27
+ %out_handle = load %op+PluginAsyncOp_handle as ptr
28
+ [END_MACRO]
29
+
30
+ [MACRO] PLUGIN_ASYNC_OP_SET_READY %op, %value
31
+ store %op+PluginAsyncOp_state, PluginAsync_READY as u64
32
+ store %op+PluginAsyncOp_status, PluginAsync_STATUS_OK as u64
33
+ store %op+PluginAsyncOp_value, %value as ptr
34
+ [END_MACRO]
35
+
36
+ [MACRO] PLUGIN_ASYNC_OP_SET_ERROR %op, %status
37
+ store %op+PluginAsyncOp_state, PluginAsync_FAILED as u64
38
+ store %op+PluginAsyncOp_status, %status as u64
39
+ store %op+PluginAsyncOp_error, %status as u64
40
+ [END_MACRO]
41
+
42
+ [MACRO] PLUGIN_ASYNC_OP_CANCEL %op
43
+ store %op+PluginAsyncOp_state, PluginAsync_CANCELLED as u64
44
+ store %op+PluginAsyncOp_status, PluginAsync_STATUS_CLOSED as u64
45
+ store %op+PluginAsyncOp_error, PluginAsync_ERROR_CANCELLED as u64
46
+ store %op+PluginAsyncOp_cancelled, 1 as u64
47
+ [END_MACRO]
48
+
49
+ [MACRO] PLUGIN_ASYNC_OP_IS_DONE %out_done, %op
50
+ __plugin_async_state_%out_done = load %op+PluginAsyncOp_state as u64
51
+ __plugin_async_ready_%out_done = eq __plugin_async_state_%out_done, PluginAsync_READY
52
+ __plugin_async_failed_%out_done = eq __plugin_async_state_%out_done, PluginAsync_FAILED
53
+ __plugin_async_cancelled_%out_done = eq __plugin_async_state_%out_done, PluginAsync_CANCELLED
54
+ __plugin_async_terminal_%out_done = or __plugin_async_ready_%out_done, __plugin_async_failed_%out_done
55
+ %out_done = or __plugin_async_terminal_%out_done, __plugin_async_cancelled_%out_done
56
+ !__plugin_async_cancelled_%out_done
57
+ !__plugin_async_terminal_%out_done
58
+ !__plugin_async_failed_%out_done
59
+ !__plugin_async_ready_%out_done
60
+ !__plugin_async_state_%out_done
61
+ [END_MACRO]
62
+
63
+ // Convert a plugin poll status plus its ready bit into PollResult<u64>.
64
+ // `%value` must be the result handle when ready; it is ignored for errors.
65
+ [MACRO] PLUGIN_ASYNC_POLL_RESULT %out_poll, %status, %ready, %value
66
+ __plugin_async_poll_is_would_block_%out_poll = eq %status, PluginAsync_STATUS_WOULD_BLOCK
67
+ __plugin_async_poll_is_ready_%out_poll = ne %ready, 0
68
+ __plugin_async_poll_is_ok_%out_poll = eq %status, PluginAsync_STATUS_OK
69
+ __plugin_async_poll_is_not_ready_%out_poll = eq %ready, 0
70
+ __plugin_async_poll_ok_pending_%out_poll = and __plugin_async_poll_is_ok_%out_poll, __plugin_async_poll_is_not_ready_%out_poll
71
+ __plugin_async_poll_is_pending_%out_poll = or __plugin_async_poll_is_would_block_%out_poll, __plugin_async_poll_ok_pending_%out_poll
72
+ br __plugin_async_poll_is_pending_%out_poll -> L_PLUGIN_ASYNC_POLL_PENDING_%out_poll, L_PLUGIN_ASYNC_POLL_STATUS_%out_poll
73
+ L_PLUGIN_ASYNC_POLL_PENDING_%out_poll:
74
+ EXPAND POLL_RESULT_PENDING %out_poll
75
+ jmp L_PLUGIN_ASYNC_POLL_DONE_%out_poll
76
+ L_PLUGIN_ASYNC_POLL_STATUS_%out_poll:
77
+ br __plugin_async_poll_is_ok_%out_poll -> L_PLUGIN_ASYNC_POLL_READY_%out_poll, L_PLUGIN_ASYNC_POLL_ERROR_%out_poll
78
+ L_PLUGIN_ASYNC_POLL_READY_%out_poll:
79
+ EXPAND POLL_RESULT_READY_OK %out_poll, %value
80
+ jmp L_PLUGIN_ASYNC_POLL_DONE_%out_poll
81
+ L_PLUGIN_ASYNC_POLL_ERROR_%out_poll:
82
+ EXPAND POLL_RESULT_READY_ERR %out_poll, %status
83
+ L_PLUGIN_ASYNC_POLL_DONE_%out_poll:
84
+ !__plugin_async_poll_is_would_block_%out_poll
85
+ !__plugin_async_poll_is_ready_%out_poll
86
+ !__plugin_async_poll_is_ok_%out_poll
87
+ !__plugin_async_poll_is_not_ready_%out_poll
88
+ !__plugin_async_poll_ok_pending_%out_poll
89
+ !__plugin_async_poll_is_pending_%out_poll
90
+ [END_MACRO]
@@ -0,0 +1,29 @@
1
+ // Common state for adapting plugin-owned poll handles to SA Future values.
2
+ // The plugin operation remains owned by the caller; this layout only tracks
3
+ // the Future-facing terminal state and the last plugin error/value.
4
+
5
+ #def PluginAsyncOp_SIZE = 64
6
+ #def PluginAsyncOp_handle = +0
7
+ #def PluginAsyncOp_state = +8
8
+ #def PluginAsyncOp_status = +16
9
+ #def PluginAsyncOp_value = +24
10
+ #def PluginAsyncOp_error = +32
11
+ #def PluginAsyncOp_deadline_ms = +40
12
+ #def PluginAsyncOp_cancelled = +48
13
+ #def PluginAsyncOp_owned = +56
14
+
15
+ #def PluginAsync_PENDING = 0
16
+ #def PluginAsync_READY = 1
17
+ #def PluginAsync_FAILED = 2
18
+ #def PluginAsync_CANCELLED = 3
19
+
20
+ #def PluginAsync_STATUS_OK = 0
21
+ #def PluginAsync_STATUS_WOULD_BLOCK = 1
22
+ #def PluginAsync_STATUS_CLOSED = 2
23
+ #def PluginAsync_STATUS_TIMEOUT = 3
24
+ #def PluginAsync_STATUS_TOO_LARGE = 4
25
+ #def PluginAsync_STATUS_INVALID = 5
26
+ #def PluginAsync_STATUS_IO_ERROR = 6
27
+
28
+ #def PluginAsync_ERROR_CANCELLED = 97
29
+ #def PluginAsync_ERROR_DEADLINE = 96
@@ -0,0 +1,4 @@
1
+ // SLA import surface for plugin async adapters.
2
+ @import "sa_std/plugin_async.sa"
3
+ @import "sa_std/plugin_http_async.sa"
4
+ @import "sa_std/plugin_http_server.sla"
@@ -0,0 +1,46 @@
1
+ // HTTP client v2 -> PollResult adapter.
2
+ // Import the installed `sa_http_client.sai` before using these macros.
3
+ @import "plugin_async.sa"
4
+
5
+ [MACRO] SA_HTTP_ASYNC_POLL_V2 %out_poll, %op, %timeout_ms
6
+ __sa_http_async_ready_slot_%out_poll = stack_alloc 8
7
+ store __sa_http_async_ready_slot_%out_poll+0, 0 as u64
8
+ __sa_http_async_status_%out_poll = call @sa_http_client_async_poll_v2(%op, %timeout_ms, &__sa_http_async_ready_slot_%out_poll)
9
+ __sa_http_async_ready_%out_poll = load __sa_http_async_ready_slot_%out_poll+0 as u64
10
+ __sa_http_async_resp_slot_%out_poll = stack_alloc 8
11
+ store __sa_http_async_resp_slot_%out_poll+0, 0 as u64
12
+ __sa_http_async_is_ready_%out_poll = ne __sa_http_async_ready_%out_poll, 0
13
+ __sa_http_async_is_ok_%out_poll = eq __sa_http_async_status_%out_poll, PluginAsync_STATUS_OK
14
+ __sa_http_async_can_take_%out_poll = and __sa_http_async_is_ready_%out_poll, __sa_http_async_is_ok_%out_poll
15
+ br __sa_http_async_can_take_%out_poll -> L_SA_HTTP_ASYNC_TAKE_%out_poll, L_SA_HTTP_ASYNC_MAP_%out_poll
16
+ L_SA_HTTP_ASYNC_TAKE_%out_poll:
17
+ __sa_http_async_take_status_%out_poll = call @sa_http_client_async_take_response_v2(%op, &__sa_http_async_resp_slot_%out_poll)
18
+ __sa_http_async_resp_%out_poll = load __sa_http_async_resp_slot_%out_poll+0 as ptr
19
+ __sa_http_async_take_ok_%out_poll = eq __sa_http_async_take_status_%out_poll, PluginAsync_STATUS_OK
20
+ br __sa_http_async_take_ok_%out_poll -> L_SA_HTTP_ASYNC_READY_%out_poll, L_SA_HTTP_ASYNC_TAKE_ERR_%out_poll
21
+ L_SA_HTTP_ASYNC_READY_%out_poll:
22
+ EXPAND POLL_RESULT_READY_OK %out_poll, __sa_http_async_resp_%out_poll
23
+ jmp L_SA_HTTP_ASYNC_DONE_%out_poll
24
+ L_SA_HTTP_ASYNC_TAKE_ERR_%out_poll:
25
+ EXPAND POLL_RESULT_READY_ERR %out_poll, __sa_http_async_take_status_%out_poll
26
+ jmp L_SA_HTTP_ASYNC_DONE_%out_poll
27
+ L_SA_HTTP_ASYNC_MAP_%out_poll:
28
+ EXPAND PLUGIN_ASYNC_POLL_RESULT %out_poll, __sa_http_async_status_%out_poll, __sa_http_async_ready_%out_poll, 0
29
+ L_SA_HTTP_ASYNC_DONE_%out_poll:
30
+ !__sa_http_async_take_ok_%out_poll
31
+ !__sa_http_async_take_status_%out_poll
32
+ !__sa_http_async_can_take_%out_poll
33
+ !__sa_http_async_is_ok_%out_poll
34
+ !__sa_http_async_is_ready_%out_poll
35
+ !__sa_http_async_resp_%out_poll
36
+ !__sa_http_async_ready_%out_poll
37
+ !__sa_http_async_status_%out_poll
38
+ [END_MACRO]
39
+
40
+ [MACRO] SA_HTTP_ASYNC_CANCEL_V2 %op
41
+ call @sa_http_client_async_cancel_v2(%op)
42
+ [END_MACRO]
43
+
44
+ [MACRO] SA_HTTP_ASYNC_FREE_V2 %op
45
+ call @sa_http_client_async_free_v2(%op)
46
+ [END_MACRO]
@@ -0,0 +1,61 @@
1
+ // HTTP server v2 facade.
2
+ // accept_v2 timeout/would_block are cooperative Pending states; a request is
3
+ // Ready(ptr); closed/invalid/io_error are terminal PollResult errors.
4
+ @import "plugin_async.sa"
5
+
6
+ [MACRO] SA_HTTP_SERVER_ACCEPT_V2 %out_poll, %server, %timeout_ms
7
+ __sa_http_server_req_slot_%out_poll = stack_alloc 8
8
+ store __sa_http_server_req_slot_%out_poll+0, 0 as u64
9
+ __sa_http_server_status_%out_poll = call @sa_http_server_accept_v2(%server, %timeout_ms, &__sa_http_server_req_slot_%out_poll)
10
+ __sa_http_server_req_%out_poll = load __sa_http_server_req_slot_%out_poll+0 as ptr
11
+ __sa_http_server_is_ok_%out_poll = eq __sa_http_server_status_%out_poll, PluginAsync_STATUS_OK
12
+ __sa_http_server_is_would_block_%out_poll = eq __sa_http_server_status_%out_poll, PluginAsync_STATUS_WOULD_BLOCK
13
+ __sa_http_server_is_timeout_%out_poll = eq __sa_http_server_status_%out_poll, PluginAsync_STATUS_TIMEOUT
14
+ __sa_http_server_is_pending_%out_poll = or __sa_http_server_is_would_block_%out_poll, __sa_http_server_is_timeout_%out_poll
15
+ br __sa_http_server_is_pending_%out_poll -> L_SA_HTTP_SERVER_PENDING_%out_poll, L_SA_HTTP_SERVER_STATUS_%out_poll
16
+ L_SA_HTTP_SERVER_PENDING_%out_poll:
17
+ EXPAND POLL_RESULT_PENDING %out_poll
18
+ jmp L_SA_HTTP_SERVER_DONE_%out_poll
19
+ L_SA_HTTP_SERVER_STATUS_%out_poll:
20
+ br __sa_http_server_is_ok_%out_poll -> L_SA_HTTP_SERVER_READY_%out_poll, L_SA_HTTP_SERVER_ERROR_%out_poll
21
+ L_SA_HTTP_SERVER_READY_%out_poll:
22
+ EXPAND POLL_RESULT_READY_OK %out_poll, __sa_http_server_req_%out_poll
23
+ jmp L_SA_HTTP_SERVER_DONE_%out_poll
24
+ L_SA_HTTP_SERVER_ERROR_%out_poll:
25
+ EXPAND POLL_RESULT_READY_ERR %out_poll, __sa_http_server_status_%out_poll
26
+ L_SA_HTTP_SERVER_DONE_%out_poll:
27
+ !__sa_http_server_is_pending_%out_poll
28
+ !__sa_http_server_is_timeout_%out_poll
29
+ !__sa_http_server_is_would_block_%out_poll
30
+ !__sa_http_server_is_ok_%out_poll
31
+ !__sa_http_server_req_%out_poll
32
+ !__sa_http_server_status_%out_poll
33
+ [END_MACRO]
34
+
35
+ [MACRO] SA_HTTP_SERVER_RESP_SEND_V2 %out_status, %resp, %body, %body_len, %timeout_ms
36
+ %out_status = call @sa_http_server_resp_send_v2(%resp, %body, %body_len, %timeout_ms)
37
+ [END_MACRO]
38
+
39
+ [MACRO] SA_HTTP_SERVER_STREAM_WRITE_V2 %out_status, %stream, %body, %body_len, %timeout_ms
40
+ %out_status = call @sa_http_server_resp_stream_write_v2(%stream, %body, %body_len, %timeout_ms)
41
+ [END_MACRO]
42
+
43
+ [MACRO] SA_HTTP_SERVER_STREAM_END_V2 %out_status, %stream, %timeout_ms
44
+ %out_status = call @sa_http_server_resp_stream_end_v2(%stream, %timeout_ms)
45
+ [END_MACRO]
46
+
47
+ [MACRO] SA_HTTP_SERVER_REQ_FREE_V2 %req
48
+ call @sa_http_server_req_free_v2(%req)
49
+ [END_MACRO]
50
+
51
+ [MACRO] SA_HTTP_SERVER_RESP_FREE_V2 %resp
52
+ call @sa_http_server_resp_free_v2(%resp)
53
+ [END_MACRO]
54
+
55
+ [MACRO] SA_HTTP_SERVER_STREAM_FREE_V2 %stream
56
+ call @sa_http_server_resp_stream_free_v2(%stream)
57
+ [END_MACRO]
58
+
59
+ [MACRO] SA_HTTP_SERVER_FREE_V2 %server
60
+ call @sa_http_server_free_v2(%server)
61
+ [END_MACRO]
@@ -0,0 +1,2 @@
1
+ // SLA import surface for HTTP server plugin adapters.
2
+ @import "sa_std/plugin_http_server.sa"
@@ -0,0 +1,106 @@
1
+ // Synchronous SQLite facade over sa_plugin_node/node_extra.sai.
2
+ //
3
+ // Import node_extra.sai before using these macros. The underlying ABI is
4
+ // synchronous; callers must serialize access or run it on a dedicated worker
5
+ // when used from an async service.
6
+
7
+ [MACRO] SA_SQLITE_OPEN %out_status, %out_db, %path, %path_len
8
+ %out_db = 0
9
+ __sa_sqlite_open_status_%out_db = call @sa_node_plugin_sqlite_open(%path, %path_len, &%out_db)
10
+ %out_status = add __sa_sqlite_open_status_%out_db, 0
11
+ !__sa_sqlite_open_status_%out_db
12
+ [END_MACRO]
13
+
14
+ [MACRO] SA_SQLITE_CLOSE %out_status, %db
15
+ __sa_sqlite_close_status_%db = call @sa_node_plugin_sqlite_close(%db)
16
+ %out_status = add __sa_sqlite_close_status_%db, 0
17
+ !__sa_sqlite_close_status_%db
18
+ [END_MACRO]
19
+
20
+ [MACRO] SA_SQLITE_EXEC %out_status, %db, %sql, %sql_len
21
+ __sa_sqlite_exec_status_%out_db = call @sa_node_plugin_sqlite_exec(%db, %sql, %sql_len)
22
+ %out_status = add __sa_sqlite_exec_status_%out_db, 0
23
+ !__sa_sqlite_exec_status_%out_db
24
+ [END_MACRO]
25
+
26
+ [MACRO] SA_SQLITE_QUERY_JSON %out_status, %out_ptr, %out_len, %db, %sql, %sql_len
27
+ __sa_sqlite_query_ptr_slot_%out_ptr = stack_alloc 8
28
+ __sa_sqlite_query_len_slot_%out_ptr = stack_alloc 8
29
+ store __sa_sqlite_query_ptr_slot_%out_ptr+0, 0 as u64
30
+ store __sa_sqlite_query_len_slot_%out_ptr+0, 0 as u64
31
+ __sa_sqlite_query_status_%out_ptr = call @sa_node_plugin_sqlite_query_json(%db, %sql, %sql_len, &__sa_sqlite_query_ptr_slot_%out_ptr, &__sa_sqlite_query_len_slot_%out_ptr)
32
+ %out_status = add __sa_sqlite_query_status_%out_ptr, 0
33
+ %out_ptr = load __sa_sqlite_query_ptr_slot_%out_ptr+0 as ptr
34
+ %out_len = load __sa_sqlite_query_len_slot_%out_ptr+0 as u64
35
+ !__sa_sqlite_query_status_%out_ptr
36
+ [END_MACRO]
37
+
38
+ [MACRO] SA_SQLITE_PREPARE %out_status, %out_stmt, %db, %sql, %sql_len
39
+ %out_stmt = 0
40
+ __sa_sqlite_prepare_status_%out_stmt = call @sa_node_plugin_sqlite_prepare(%db, %sql, %sql_len, &%out_stmt)
41
+ %out_status = add __sa_sqlite_prepare_status_%out_stmt, 0
42
+ !__sa_sqlite_prepare_status_%out_stmt
43
+ [END_MACRO]
44
+
45
+ [MACRO] SA_SQLITE_BIND_INT %out_status, %stmt, %index, %value
46
+ __sa_sqlite_bind_int_status_%stmt = call @sa_node_plugin_sqlite_bind_int(%stmt, %index, %value)
47
+ %out_status = add __sa_sqlite_bind_int_status_%stmt, 0
48
+ !__sa_sqlite_bind_int_status_%stmt
49
+ [END_MACRO]
50
+
51
+ [MACRO] SA_SQLITE_BIND_DOUBLE %out_status, %stmt, %index, %value
52
+ __sa_sqlite_bind_double_status_%stmt = call @sa_node_plugin_sqlite_bind_double(%stmt, %index, %value)
53
+ %out_status = add __sa_sqlite_bind_double_status_%stmt, 0
54
+ !__sa_sqlite_bind_double_status_%stmt
55
+ [END_MACRO]
56
+
57
+ [MACRO] SA_SQLITE_BIND_TEXT %out_status, %stmt, %index, %value, %value_len
58
+ __sa_sqlite_bind_text_status_%stmt = call @sa_node_plugin_sqlite_bind_text(%stmt, %index, %value, %value_len)
59
+ %out_status = add __sa_sqlite_bind_text_status_%stmt, 0
60
+ !__sa_sqlite_bind_text_status_%stmt
61
+ [END_MACRO]
62
+
63
+ [MACRO] SA_SQLITE_BIND_BLOB %out_status, %stmt, %index, %value, %value_len
64
+ __sa_sqlite_bind_blob_status_%stmt = call @sa_node_plugin_sqlite_bind_blob(%stmt, %index, %value, %value_len)
65
+ %out_status = add __sa_sqlite_bind_blob_status_%stmt, 0
66
+ !__sa_sqlite_bind_blob_status_%stmt
67
+ [END_MACRO]
68
+
69
+ [MACRO] SA_SQLITE_BIND_NULL %out_status, %stmt, %index
70
+ __sa_sqlite_bind_null_status_%stmt = call @sa_node_plugin_sqlite_bind_null(%stmt, %index)
71
+ %out_status = add __sa_sqlite_bind_null_status_%stmt, 0
72
+ !__sa_sqlite_bind_null_status_%stmt
73
+ [END_MACRO]
74
+
75
+ [MACRO] SA_SQLITE_STEP_JSON %out_status, %out_ready, %out_ptr, %out_len, %stmt
76
+ __sa_sqlite_step_ready_slot_%stmt = stack_alloc 8
77
+ __sa_sqlite_step_ptr_slot_%stmt = stack_alloc 8
78
+ __sa_sqlite_step_len_slot_%stmt = stack_alloc 8
79
+ store __sa_sqlite_step_ready_slot_%stmt+0, 0 as u64
80
+ store __sa_sqlite_step_ptr_slot_%stmt+0, 0 as u64
81
+ store __sa_sqlite_step_len_slot_%stmt+0, 0 as u64
82
+ __sa_sqlite_step_status_%stmt = call @sa_node_plugin_sqlite_step_json(%stmt, &__sa_sqlite_step_ready_slot_%stmt, &__sa_sqlite_step_ptr_slot_%stmt, &__sa_sqlite_step_len_slot_%stmt)
83
+ %out_status = add __sa_sqlite_step_status_%stmt, 0
84
+ %out_ready = load __sa_sqlite_step_ready_slot_%stmt+0 as u64
85
+ %out_ptr = load __sa_sqlite_step_ptr_slot_%stmt+0 as ptr
86
+ %out_len = load __sa_sqlite_step_len_slot_%stmt+0 as u64
87
+ !__sa_sqlite_step_status_%stmt
88
+ [END_MACRO]
89
+
90
+ [MACRO] SA_SQLITE_RESET %out_status, %stmt
91
+ __sa_sqlite_reset_status_%stmt = call @sa_node_plugin_sqlite_reset(%stmt)
92
+ %out_status = add __sa_sqlite_reset_status_%stmt, 0
93
+ !__sa_sqlite_reset_status_%stmt
94
+ [END_MACRO]
95
+
96
+ [MACRO] SA_SQLITE_CLEAR_BINDINGS %out_status, %stmt
97
+ __sa_sqlite_clear_bindings_status_%stmt = call @sa_node_plugin_sqlite_clear_bindings(%stmt)
98
+ %out_status = add __sa_sqlite_clear_bindings_status_%stmt, 0
99
+ !__sa_sqlite_clear_bindings_status_%stmt
100
+ [END_MACRO]
101
+
102
+ [MACRO] SA_SQLITE_FINALIZE %out_status, %stmt
103
+ __sa_sqlite_finalize_status_%stmt = call @sa_node_plugin_sqlite_finalize(%stmt)
104
+ %out_status = add __sa_sqlite_finalize_status_%stmt, 0
105
+ !__sa_sqlite_finalize_status_%stmt
106
+ [END_MACRO]
@@ -0,0 +1,2 @@
1
+ // SLA import surface for the synchronous Node SQLite facade.
2
+ @import "sa_std/plugin_sqlite.sa"
@@ -0,0 +1,60 @@
1
+ // Explicit public facade aggregation for applications and smoke tests.
2
+ // This is opt-in; the compiler does not inject it implicitly.
3
+
4
+ @import "core/prelude.sa"
5
+ @import "alloc/prelude.sa"
6
+ @import "collections/prelude.sa"
7
+ @import "encoding/prelude.sa"
8
+ @import "ffi/prelude.sa"
9
+ @import "io/prelude.sa"
10
+ @import "os/prelude.sa"
11
+ @import "sync/prelude.sa"
12
+ @import "text/prelude.sa"
13
+
14
+ @import "any.sa"
15
+ @import "array.sa"
16
+ @import "ascii.sa"
17
+ @import "binary_heap.sa"
18
+ @import "borrow.sa"
19
+ @import "btree_map.sa"
20
+ @import "btree_set.sa"
21
+ @import "char.sa"
22
+ @import "cmp.sa"
23
+ @import "convert.sa"
24
+ @import "cow.sa"
25
+ @import "cstring.sa"
26
+ @import "default.sa"
27
+ @import "env.sa"
28
+ @import "error.sa"
29
+ @import "ffi.sa"
30
+ @import "fmt.sa"
31
+ @import "fs.sa"
32
+ @import "future.sa"
33
+ @import "hash.sa"
34
+ @import "hashmap.sa"
35
+ @import "hashset.sa"
36
+ @import "io.sa"
37
+ @import "iter.sa"
38
+ @import "marker/prelude.sa"
39
+ @import "math.sa"
40
+ @import "mem/prelude.sa"
41
+ @import "net.sa"
42
+ @import "netx.sa"
43
+ @import "num/prelude.sa"
44
+ @import "ops.sa"
45
+ @import "option.sa"
46
+ @import "panic.sa"
47
+ @import "path.sa"
48
+ @import "pin.sa"
49
+ @import "process.sa"
50
+ @import "ptr.sa"
51
+ @import "result.sa"
52
+ @import "sort.sa"
53
+ @import "string.sa"
54
+ @import "string_format.sa"
55
+ @import "task.sa"
56
+ @import "term.sa"
57
+ @import "thread/prelude.sa"
58
+ @import "time/prelude.sa"
59
+ @import "vec.sa"
60
+ @import "vec_deque.sa"
@@ -0,0 +1,55 @@
1
+ // ABI/layout companion for the explicit public facade aggregation.
2
+
3
+ @import "alloc/prelude.sal"
4
+ @import "collections/prelude.sal"
5
+ @import "core/prelude.sal"
6
+ @import "encoding/prelude.sal"
7
+ @import "ffi/prelude.sal"
8
+ @import "io/prelude.sal"
9
+ @import "os/prelude.sal"
10
+ @import "sync/prelude.sal"
11
+ @import "text/prelude.sal"
12
+
13
+ @import "any.sal"
14
+ @import "array.sa"
15
+ @import "ascii.sal"
16
+ @import "binary_heap.sal"
17
+ @import "borrow.sal"
18
+ @import "btree_map.sal"
19
+ @import "btree_set.sal"
20
+ @import "char.sal"
21
+ @import "cmp.sal"
22
+ @import "convert.sal"
23
+ @import "cow.sal"
24
+ @import "cstring.sal"
25
+ @import "env.sai"
26
+ @import "error.sal"
27
+ @import "ffi.sal"
28
+ @import "fmt.sal"
29
+ @import "fs.sai"
30
+ @import "future.sal"
31
+ @import "hash.sal"
32
+ @import "hashmap.sal"
33
+ @import "hashset.sal"
34
+ @import "io.sai"
35
+ @import "iter.sal"
36
+ @import "marker/prelude.sal"
37
+ @import "mem/prelude.sal"
38
+ @import "net.sai"
39
+ @import "netx.sai"
40
+ @import "num/prelude.sal"
41
+ @import "ops.sal"
42
+ @import "option.sal"
43
+ @import "panic.sal"
44
+ @import "path.sal"
45
+ @import "pin.sal"
46
+ @import "process.sai"
47
+ @import "ptr.sal"
48
+ @import "result.sal"
49
+ @import "string.sal"
50
+ @import "task.sal"
51
+ @import "term.sai"
52
+ @import "thread/prelude.sal"
53
+ @import "time/prelude.sal"
54
+ @import "vec.sal"
55
+ @import "vec_deque.sal"