@salang/sa 0.1.3 → 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 +13 -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
package/sa_std/ops.sal ADDED
@@ -0,0 +1,68 @@
1
+ #def RangeU64_SIZE = 16
2
+ #def RangeU64_start = +0
3
+ #def RangeU64_end = +8
4
+
5
+ #def RangeFromU64_SIZE = 8
6
+ #def RangeFromU64_start = +0
7
+
8
+ #def RangeToU64_SIZE = 8
9
+ #def RangeToU64_end = +0
10
+
11
+ #def RangeInclusiveU64_SIZE = 24
12
+ #def RangeInclusiveU64_start = +0
13
+ #def RangeInclusiveU64_end = +8
14
+ #def RangeInclusiveU64_exhausted = +16
15
+
16
+ #def RangeToInclusiveU64_SIZE = 8
17
+ #def RangeToInclusiveU64_end = +0
18
+
19
+ #def RangeFull_SIZE = 0
20
+
21
+ #def BoundU64_SIZE = 16
22
+ #def BoundU64_tag = +0
23
+ #def BoundU64_value = +8
24
+
25
+ #def BOUND_U64_UNBOUNDED = 0
26
+ #def BOUND_U64_INCLUDED = 1
27
+ #def BOUND_U64_EXCLUDED = 2
28
+
29
+ #def BoundU64Ref_SIZE = 16
30
+ #def BoundU64Ref_tag = +0
31
+ #def BoundU64Ref_ptr = +8
32
+
33
+ #def RangeUsize_SIZE = 16
34
+ #def RangeUsize_start = +0
35
+ #def RangeUsize_end = +8
36
+
37
+ #def RangeInclusiveUsize_SIZE = 24
38
+ #def RangeInclusiveUsize_start = +0
39
+ #def RangeInclusiveUsize_end = +8
40
+ #def RangeInclusiveUsize_exhausted = +16
41
+
42
+ #def RangeFromUsize_SIZE = 8
43
+ #def RangeFromUsize_start = +0
44
+
45
+ #def RangeToUsize_SIZE = 8
46
+ #def RangeToUsize_end = +0
47
+
48
+ #def RangeToInclusiveUsize_SIZE = 8
49
+ #def RangeToInclusiveUsize_end = +0
50
+
51
+ #def BoundUsize_SIZE = 16
52
+ #def BoundUsize_tag = +0
53
+ #def BoundUsize_value = +8
54
+
55
+ #def BOUND_USIZE_UNBOUNDED = BOUND_U64_UNBOUNDED
56
+ #def BOUND_USIZE_INCLUDED = BOUND_U64_INCLUDED
57
+ #def BOUND_USIZE_EXCLUDED = BOUND_U64_EXCLUDED
58
+
59
+ #def BoundUsizeRef_SIZE = BoundU64Ref_SIZE
60
+ #def BoundUsizeRef_tag = BoundU64Ref_tag
61
+ #def BoundUsizeRef_ptr = BoundU64Ref_ptr
62
+
63
+ #def ControlFlowU64_SIZE = 16
64
+ #def ControlFlowU64_ALIGN = 8
65
+ #def ControlFlowU64_tag = +0
66
+ #def ControlFlowU64_value = +8
67
+ #def CONTROL_FLOW_CONTINUE = 0
68
+ #def CONTROL_FLOW_BREAK = 1
@@ -0,0 +1,2 @@
1
+ @import "core/option.sal"
2
+ @import "core/option.sa"
@@ -0,0 +1 @@
1
+ @import "core/option.sal"
@@ -0,0 +1,96 @@
1
+ @import "fd.sal"
2
+ @import "fd.sai"
3
+
4
+ [MACRO] FD_AS_RAW %out_status, %out_fd, %handle
5
+ __fd_as_raw_slot_%out_fd = stack_alloc 4
6
+ %out_status = call @sa_std_fd_as_raw(%handle, &__fd_as_raw_slot_%out_fd)
7
+ %out_fd = load __fd_as_raw_slot_%out_fd+0 as i32
8
+ [END_MACRO]
9
+
10
+ [MACRO] FD_DUP %out_status, %out_handle, %handle
11
+ __fd_dup_slot_%out_handle = stack_alloc 8
12
+ %out_status = call @sa_std_fd_dup(%handle, &__fd_dup_slot_%out_handle)
13
+ %out_handle = load __fd_dup_slot_%out_handle+0 as u64
14
+ [END_MACRO]
15
+
16
+ [MACRO] FD_DUP_RAW %out_status, %out_handle, %fd
17
+ __fd_dup_raw_slot_%out_handle = stack_alloc 8
18
+ %out_status = call @sa_std_fd_dup_raw(%fd, &__fd_dup_raw_slot_%out_handle)
19
+ %out_handle = load __fd_dup_raw_slot_%out_handle+0 as u64
20
+ [END_MACRO]
21
+
22
+ [MACRO] FD_RAW_AS_RAW_FD %out_status, %out_fd, %fd
23
+ %out_status = add 0, SA_FD_OK
24
+ %out_fd = add 0, %fd
25
+ [END_MACRO]
26
+
27
+ [MACRO] FD_RAW_INTO_RAW_FD %out_status, %out_fd, %fd
28
+ %out_status = add 0, SA_FD_OK
29
+ %out_fd = add 0, %fd
30
+ [END_MACRO]
31
+
32
+ [MACRO] FD_RAW_FROM_RAW_FD %out_status, %out_fd, %fd
33
+ %out_status = add 0, SA_FD_OK
34
+ %out_fd = add 0, %fd
35
+ [END_MACRO]
36
+
37
+ [MACRO] FD_BORROWED_BORROW_RAW %out_status, %out_fd, %fd
38
+ %out_status = add 0, SA_FD_OK
39
+ %out_fd = add 0, %fd
40
+ [END_MACRO]
41
+
42
+ [MACRO] FD_BORROWED_AS_RAW_FD %out_status, %out_fd, %fd
43
+ %out_status = add 0, SA_FD_OK
44
+ %out_fd = add 0, %fd
45
+ [END_MACRO]
46
+
47
+ [MACRO] FD_BORROWED_AS_FD %out_status, %out_fd, %fd
48
+ %out_status = add 0, SA_FD_OK
49
+ %out_fd = add 0, %fd
50
+ [END_MACRO]
51
+
52
+ [MACRO] FD_BORROWED_TRY_CLONE_TO_OWNED %out_status, %out_handle, %fd
53
+ EXPAND FD_DUP_RAW %out_status, %out_handle, %fd
54
+ [END_MACRO]
55
+
56
+ [MACRO] FD_OWNED_TRY_CLONE %out_status, %out_handle, %fd_handle
57
+ EXPAND FD_DUP %out_status, %out_handle, %fd_handle
58
+ [END_MACRO]
59
+
60
+ [MACRO] FD_FROM_RAW %out_status, %out_handle, %fd
61
+ __fd_from_raw_slot_%out_handle = stack_alloc 8
62
+ %out_status = call @sa_std_fd_from_raw(%fd, &__fd_from_raw_slot_%out_handle)
63
+ %out_handle = load __fd_from_raw_slot_%out_handle+0 as u64
64
+ [END_MACRO]
65
+
66
+ [MACRO] FD_OWNED_FROM_RAW_FD %out_status, %out_handle, %fd
67
+ EXPAND FD_FROM_RAW %out_status, %out_handle, %fd
68
+ [END_MACRO]
69
+
70
+ [MACRO] FD_INTO_RAW %out_status, %out_fd, %handle
71
+ __fd_into_raw_slot_%out_fd = stack_alloc 4
72
+ %out_status = call @sa_std_fd_into_raw(%handle, &__fd_into_raw_slot_%out_fd)
73
+ %out_fd = load __fd_into_raw_slot_%out_fd+0 as i32
74
+ [END_MACRO]
75
+
76
+ [MACRO] FD_OWNED_AS_RAW_FD %out_status, %out_fd, %fd_handle
77
+ EXPAND FD_AS_RAW %out_status, %out_fd, %fd_handle
78
+ [END_MACRO]
79
+
80
+ [MACRO] FD_OWNED_AS_FD %out_status, %out_fd, %fd_handle
81
+ EXPAND FD_AS_RAW %out_status, %out_fd, %fd_handle
82
+ [END_MACRO]
83
+
84
+ [MACRO] FD_OWNED_INTO_RAW_FD %out_status, %out_fd, %fd_handle
85
+ EXPAND FD_INTO_RAW %out_status, %out_fd, %fd_handle
86
+ [END_MACRO]
87
+
88
+ [MACRO] FD_CLOSE_RAW %out_status, %fd
89
+ %out_status = call @sa_std_fd_close_raw(%fd)
90
+ [END_MACRO]
91
+
92
+ [MACRO] FD_IS_TERMINAL %out_status, %out_flag, %handle
93
+ __fd_is_terminal_slot_%out_flag = stack_alloc 1
94
+ %out_status = call @sa_std_fd_is_terminal(%handle, &__fd_is_terminal_slot_%out_flag)
95
+ %out_flag = load __fd_is_terminal_slot_%out_flag+0 as u8
96
+ [END_MACRO]
@@ -0,0 +1,7 @@
1
+ @extern sa_std_fd_as_raw(handle: u64, &out_fd: ptr) -> i32
2
+ @extern sa_std_fd_dup(handle: u64, &out_handle: ptr) -> i32
3
+ @extern sa_std_fd_dup_raw(fd: i32, &out_handle: ptr) -> i32
4
+ @extern sa_std_fd_from_raw(fd: i32, &out_handle: ptr) -> i32
5
+ @extern sa_std_fd_into_raw(handle: u64, &out_fd: ptr) -> i32
6
+ @extern sa_std_fd_close_raw(fd: i32) -> i32
7
+ @extern sa_std_fd_is_terminal(handle: u64, &out_flag: ptr) -> i32
@@ -0,0 +1,11 @@
1
+ #def SA_FD_OK = 0
2
+ #def SA_FD_ERR_INVALID_ARGUMENT = 1
3
+ #def SA_FD_ERR_INVALID_HANDLE = 2
4
+ #def SA_FD_ERR_NOT_FOUND = 3
5
+ #def SA_FD_ERR_ACCESS = 4
6
+ #def SA_FD_ERR_NO_MEMORY = 5
7
+ #def SA_FD_ERR_IO = 6
8
+ #def SA_FD_ERR_NET = 7
9
+ #def SA_FD_ERR_UNSUPPORTED = 8
10
+ #def SA_FD_ERR_TRUNCATED = 9
11
+ #def SA_FD_ERR_UNKNOWN = 127
@@ -0,0 +1,2 @@
1
+ @import "fd.sa"
2
+ @import "unix_ffi.sa"
@@ -0,0 +1 @@
1
+ @import "fd.sal"
@@ -0,0 +1,271 @@
1
+ @import "../core/slice.sal"
2
+ @import "../core/slice.sa"
3
+ @import "../vec.sa"
4
+ @import "../string.sa"
5
+ @import "../hash.sa"
6
+
7
+ [MACRO] OS_STR_FROM_BYTES %out_os_str, %bytes_slice
8
+ __os_str_from_bytes_ptr_%out_os_str = load %bytes_slice+Slice_ptr as ptr
9
+ __os_str_from_bytes_len_%out_os_str = load %bytes_slice+Slice_len as u64
10
+ %out_os_str = alloc Slice_SIZE
11
+ EXPAND SLICE_NEW %out_os_str, __os_str_from_bytes_ptr_%out_os_str, __os_str_from_bytes_len_%out_os_str
12
+ !__os_str_from_bytes_ptr_%out_os_str
13
+ !__os_str_from_bytes_len_%out_os_str
14
+ [END_MACRO]
15
+
16
+ [MACRO] OS_STR_FROM_BYTES_SLICE %out_os_str, %bytes_slice
17
+ EXPAND OS_STR_FROM_BYTES %out_os_str, %bytes_slice
18
+ [END_MACRO]
19
+
20
+ [MACRO] OS_STR_AS_BYTES %out_slice, %os_str
21
+ __os_str_as_bytes_ptr_%out_slice = load %os_str+Slice_ptr as ptr
22
+ __os_str_as_bytes_len_%out_slice = load %os_str+Slice_len as u64
23
+ %out_slice = alloc Slice_SIZE
24
+ EXPAND SLICE_NEW %out_slice, __os_str_as_bytes_ptr_%out_slice, __os_str_as_bytes_len_%out_slice
25
+ !__os_str_as_bytes_ptr_%out_slice
26
+ !__os_str_as_bytes_len_%out_slice
27
+ [END_MACRO]
28
+
29
+ [MACRO] OS_STR_AS_BYTES_SLICE %out_slice, %os_str
30
+ EXPAND OS_STR_AS_BYTES %out_slice, %os_str
31
+ [END_MACRO]
32
+
33
+ [MACRO] OS_STRING_FROM_VEC %out_os_string, %vec_reg
34
+ %out_os_string = %vec_reg
35
+ [END_MACRO]
36
+
37
+ [MACRO] OS_STRING_FROM_VEC_U8 %out_os_string, %vec_reg
38
+ EXPAND OS_STRING_FROM_VEC %out_os_string, %vec_reg
39
+ [END_MACRO]
40
+
41
+ [MACRO] OS_STRING_INTO_VEC %out_vec, %os_string
42
+ %out_vec = %os_string
43
+ [END_MACRO]
44
+
45
+ [MACRO] OS_STRING_INTO_VEC_U8 %out_vec, %os_string
46
+ EXPAND OS_STRING_INTO_VEC %out_vec, %os_string
47
+ [END_MACRO]
48
+
49
+ // Concrete OsString/OsStr helpers over Vec<u8>/Slice byte storage.
50
+ // These are thin ownership/view aliases, not platform WTF-8/Windows OsString.
51
+
52
+ [MACRO] OS_STRING_NEW %out_os_string
53
+ EXPAND VEC_NEW %out_os_string
54
+ [END_MACRO]
55
+
56
+ [MACRO] OS_STRING_DEFAULT %out_os_string
57
+ EXPAND OS_STRING_NEW %out_os_string
58
+ [END_MACRO]
59
+
60
+ [MACRO] OS_STRING_WITH_CAPACITY %out_os_string, %capacity
61
+ EXPAND VEC_WITH_CAPACITY %out_os_string, %capacity, 1
62
+ [END_MACRO]
63
+
64
+ [MACRO] OS_STRING_FROM_STR %out_os_string, %str_slice
65
+ EXPAND VEC_FROM_STR_BYTES %out_os_string, %str_slice
66
+ [END_MACRO]
67
+
68
+ [MACRO] OS_STRING_FROM_OS_STR %out_os_string, %os_str
69
+ EXPAND OS_STR_AS_BYTES __os_string_from_os_str_bytes_%out_os_string, %os_str
70
+ EXPAND VEC_FROM_SLICE %out_os_string, __os_string_from_os_str_bytes_%out_os_string, 1
71
+ !__os_string_from_os_str_bytes_%out_os_string
72
+ [END_MACRO]
73
+
74
+ [MACRO] OS_STRING_FREE %os_string
75
+ EXPAND VEC_FREE %os_string
76
+ [END_MACRO]
77
+
78
+ [MACRO] OS_STRING_CLEAR %os_string
79
+ EXPAND VEC_CLEAR %os_string
80
+ [END_MACRO]
81
+
82
+ [MACRO] OS_STRING_LEN %out_len, %os_string
83
+ EXPAND VEC_LEN %out_len, %os_string
84
+ [END_MACRO]
85
+
86
+ [MACRO] OS_STRING_CAPACITY %out_cap, %os_string
87
+ EXPAND VEC_CAPACITY %out_cap, %os_string
88
+ [END_MACRO]
89
+
90
+ [MACRO] OS_STRING_IS_EMPTY %out_flag, %os_string
91
+ EXPAND VEC_IS_EMPTY %out_flag, %os_string
92
+ [END_MACRO]
93
+
94
+ [MACRO] OS_STRING_RESERVE %os_string, %additional
95
+ EXPAND VEC_RESERVE %os_string, %additional, 1
96
+ [END_MACRO]
97
+
98
+ [MACRO] OS_STRING_PUSH_STR %os_string, %str_slice
99
+ EXPAND VEC_EXTEND_FROM_SLICE %os_string, %str_slice, 1
100
+ [END_MACRO]
101
+
102
+ [MACRO] OS_STRING_PUSH_OS_STR %os_string, %os_str
103
+ EXPAND OS_STR_AS_BYTES __os_string_push_os_str_bytes_%os_string, %os_str
104
+ EXPAND VEC_EXTEND_FROM_SLICE %os_string, __os_string_push_os_str_bytes_%os_string, 1
105
+ !__os_string_push_os_str_bytes_%os_string
106
+ [END_MACRO]
107
+
108
+ [MACRO] OS_STRING_PUSH_SLICE %os_string, %bytes_slice
109
+ EXPAND VEC_EXTEND_FROM_SLICE %os_string, %bytes_slice, 1
110
+ [END_MACRO]
111
+
112
+ [MACRO] OS_STRING_AS_OS_STR %out_os_str, %os_string
113
+ EXPAND VEC_AS_SLICE %out_os_str, %os_string
114
+ [END_MACRO]
115
+
116
+ [MACRO] OS_STRING_AS_SLICE %out_slice, %os_string
117
+ EXPAND VEC_AS_SLICE %out_slice, %os_string
118
+ [END_MACRO]
119
+
120
+ [MACRO] DEFAULT_HASHER_WRITE_OS_STR %hasher, %os_str
121
+ EXPAND OS_STR_AS_BYTES __os_str_hash_bytes_%hasher, %os_str
122
+ EXPAND DEFAULT_HASHER_WRITE_SLICE_U8 %hasher, __os_str_hash_bytes_%hasher
123
+ !__os_str_hash_bytes_%hasher
124
+ [END_MACRO]
125
+
126
+ [MACRO] OS_STR_HASH %out_hash, %os_str
127
+ EXPAND OS_STR_AS_BYTES __os_str_hash_bytes_%out_hash, %os_str
128
+ EXPAND HASH_SLICE_U8 %out_hash, __os_str_hash_bytes_%out_hash
129
+ !__os_str_hash_bytes_%out_hash
130
+ [END_MACRO]
131
+
132
+ [MACRO] BUILD_HASHER_DEFAULT_HASH_ONE_OS_STR %out_hash, %builder, %os_str
133
+ __build_hash_one_os_str_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
134
+ EXPAND BUILD_HASHER_DEFAULT_BUILD __build_hash_one_os_str_hasher_%out_hash, %builder
135
+ EXPAND DEFAULT_HASHER_WRITE_OS_STR __build_hash_one_os_str_hasher_%out_hash, %os_str
136
+ EXPAND DEFAULT_HASHER_FINISH %out_hash, __build_hash_one_os_str_hasher_%out_hash
137
+ [END_MACRO]
138
+
139
+ [MACRO] RANDOM_STATE_HASH_ONE_OS_STR %out_hash, %state, %os_str
140
+ __random_state_hash_one_os_str_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
141
+ EXPAND RANDOM_STATE_BUILD __random_state_hash_one_os_str_hasher_%out_hash, %state
142
+ EXPAND DEFAULT_HASHER_WRITE_OS_STR __random_state_hash_one_os_str_hasher_%out_hash, %os_str
143
+ EXPAND DEFAULT_HASHER_FINISH %out_hash, __random_state_hash_one_os_str_hasher_%out_hash
144
+ [END_MACRO]
145
+
146
+ [MACRO] DEFAULT_HASHER_WRITE_OS_STRING %hasher, %os_string
147
+ EXPAND OS_STRING_AS_OS_STR __os_string_hash_view_%hasher, %os_string
148
+ EXPAND DEFAULT_HASHER_WRITE_OS_STR %hasher, __os_string_hash_view_%hasher
149
+ !__os_string_hash_view_%hasher
150
+ [END_MACRO]
151
+
152
+ [MACRO] OS_STRING_HASH %out_hash, %os_string
153
+ EXPAND OS_STRING_AS_OS_STR __os_string_hash_view_%out_hash, %os_string
154
+ EXPAND OS_STR_HASH %out_hash, __os_string_hash_view_%out_hash
155
+ !__os_string_hash_view_%out_hash
156
+ [END_MACRO]
157
+
158
+ [MACRO] BUILD_HASHER_DEFAULT_HASH_ONE_OS_STRING %out_hash, %builder, %os_string
159
+ __build_hash_one_os_string_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
160
+ EXPAND BUILD_HASHER_DEFAULT_BUILD __build_hash_one_os_string_hasher_%out_hash, %builder
161
+ EXPAND DEFAULT_HASHER_WRITE_OS_STRING __build_hash_one_os_string_hasher_%out_hash, %os_string
162
+ EXPAND DEFAULT_HASHER_FINISH %out_hash, __build_hash_one_os_string_hasher_%out_hash
163
+ [END_MACRO]
164
+
165
+ [MACRO] RANDOM_STATE_HASH_ONE_OS_STRING %out_hash, %state, %os_string
166
+ __random_state_hash_one_os_string_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
167
+ EXPAND RANDOM_STATE_BUILD __random_state_hash_one_os_string_hasher_%out_hash, %state
168
+ EXPAND DEFAULT_HASHER_WRITE_OS_STRING __random_state_hash_one_os_string_hasher_%out_hash, %os_string
169
+ EXPAND DEFAULT_HASHER_FINISH %out_hash, __random_state_hash_one_os_string_hasher_%out_hash
170
+ [END_MACRO]
171
+
172
+ [MACRO] OS_STRING_CLONE %out_os_string, %os_string
173
+ EXPAND VEC_CLONE %out_os_string, %os_string, 1
174
+ [END_MACRO]
175
+
176
+ [MACRO] OS_STRING_TO_STRING_CHECKED %out_ok, %out_string, %os_string
177
+ EXPAND VEC_AS_SLICE __os_string_to_str_view_%out_ok, %os_string
178
+ EXPAND STRING_BUF_TRY_FROM_UTF8 %out_ok, %out_string, __os_string_to_str_view_%out_ok
179
+ !__os_string_to_str_view_%out_ok
180
+ [END_MACRO]
181
+
182
+ [MACRO] OS_STRING_INTO_STRING_CHECKED %out_ok, %out_string, %os_string
183
+ EXPAND OS_STRING_TO_STRING_CHECKED %out_ok, %out_string, %os_string
184
+ br %out_ok -> L_OS_STRING_INTO_STRING_OK_%out_ok, L_OS_STRING_INTO_STRING_BAD_%out_ok
185
+ L_OS_STRING_INTO_STRING_OK_%out_ok:
186
+ EXPAND OS_STRING_FREE %os_string
187
+ jmp L_OS_STRING_INTO_STRING_DONE_%out_ok
188
+ L_OS_STRING_INTO_STRING_BAD_%out_ok:
189
+ jmp L_OS_STRING_INTO_STRING_DONE_%out_ok
190
+ L_OS_STRING_INTO_STRING_DONE_%out_ok:
191
+ [END_MACRO]
192
+
193
+ [MACRO] OS_STR_LEN %out_len, %os_str
194
+ EXPAND SLICE_GET_LEN %out_len, %os_str
195
+ [END_MACRO]
196
+
197
+ [MACRO] OS_STR_IS_EMPTY %out_flag, %os_str
198
+ EXPAND SLICE_GET_LEN __os_str_is_empty_len_%out_flag, %os_str
199
+ %out_flag = eq __os_str_is_empty_len_%out_flag, 0
200
+ !__os_str_is_empty_len_%out_flag
201
+ [END_MACRO]
202
+
203
+ [MACRO] OS_STR_TO_OS_STRING %out_os_string, %os_str
204
+ EXPAND OS_STRING_FROM_OS_STR %out_os_string, %os_str
205
+ [END_MACRO]
206
+
207
+ [MACRO] OS_STR_TO_STR_CHECKED %out_ok, %out_slice, %os_str
208
+ EXPAND OS_STR_AS_BYTES __os_str_to_str_bytes_%out_ok, %os_str
209
+ EXPAND STR_IS_UTF8 %out_ok, __os_str_to_str_bytes_%out_ok
210
+ br %out_ok -> L_OS_STR_TO_STR_OK_%out_ok, L_OS_STR_TO_STR_BAD_%out_ok
211
+ L_OS_STR_TO_STR_OK_%out_ok:
212
+ %out_slice = __os_str_to_str_bytes_%out_ok
213
+ jmp L_OS_STR_TO_STR_DONE_%out_ok
214
+ L_OS_STR_TO_STR_BAD_%out_ok:
215
+ !__os_str_to_str_bytes_%out_ok
216
+ __os_str_to_str_empty_ptr_%out_ok = 0 as ptr
217
+ %out_slice = alloc Slice_SIZE
218
+ EXPAND SLICE_NEW %out_slice, __os_str_to_str_empty_ptr_%out_ok, 0
219
+ !__os_str_to_str_empty_ptr_%out_ok
220
+ jmp L_OS_STR_TO_STR_DONE_%out_ok
221
+ L_OS_STR_TO_STR_DONE_%out_ok:
222
+ [END_MACRO]
223
+
224
+ [MACRO] OS_STRING_CAPACITY_REMAINING %out_remaining, %os_string
225
+ EXPAND VEC_CAPACITY_REMAINING %out_remaining, %os_string
226
+ [END_MACRO]
227
+
228
+ [MACRO] OS_STRING_REMAINING_CAPACITY %out_remaining, %os_string
229
+ EXPAND OS_STRING_CAPACITY_REMAINING %out_remaining, %os_string
230
+ [END_MACRO]
231
+
232
+ [MACRO] OS_STRING_EXTRA_CAPACITY %out_remaining, %os_string
233
+ EXPAND OS_STRING_CAPACITY_REMAINING %out_remaining, %os_string
234
+ [END_MACRO]
235
+
236
+ [MACRO] OS_STRING_LIT1 %out_os_string, %s0
237
+ EXPAND OS_STRING_FROM_STR %out_os_string, %s0
238
+ [END_MACRO]
239
+
240
+ [MACRO] OS_STRING_LIT2 %out_os_string, %s0, %s1
241
+ EXPAND OS_STRING_FROM_STR %out_os_string, %s0
242
+ EXPAND OS_STRING_PUSH_STR %out_os_string, %s1
243
+ [END_MACRO]
244
+
245
+ [MACRO] OS_STRING_LIT3 %out_os_string, %s0, %s1, %s2
246
+ EXPAND OS_STRING_FROM_STR %out_os_string, %s0
247
+ EXPAND OS_STRING_PUSH_STR %out_os_string, %s1
248
+ EXPAND OS_STRING_PUSH_STR %out_os_string, %s2
249
+ [END_MACRO]
250
+
251
+ // Lossy UTF-8 display/string materialization over existing StringBuf helpers.
252
+
253
+ [MACRO] OS_STRING_TO_STRING_LOSSY %out_string, %os_string
254
+ EXPAND OS_STRING_AS_SLICE __os_string_lossy_bytes_%out_string, %os_string
255
+ EXPAND STRING_BUF_FROM_UTF8_LOSSY %out_string, __os_string_lossy_bytes_%out_string
256
+ !__os_string_lossy_bytes_%out_string
257
+ [END_MACRO]
258
+
259
+ [MACRO] OS_STR_TO_STRING_LOSSY %out_string, %os_str
260
+ EXPAND OS_STR_AS_BYTES __os_str_lossy_bytes_%out_string, %os_str
261
+ EXPAND STRING_BUF_FROM_UTF8_LOSSY %out_string, __os_str_lossy_bytes_%out_string
262
+ !__os_str_lossy_bytes_%out_string
263
+ [END_MACRO]
264
+
265
+ [MACRO] OS_STRING_FROM_PATH %out_os_string, %path_slice
266
+ EXPAND OS_STRING_FROM_STR %out_os_string, %path_slice
267
+ [END_MACRO]
268
+
269
+ [MACRO] OS_STRING_INTO_STRING %out_ok, %out_string, %os_string
270
+ EXPAND OS_STRING_INTO_STRING_CHECKED %out_ok, %out_string, %os_string
271
+ [END_MACRO]
@@ -0,0 +1 @@
1
+ @import "core/panic.sa"
@@ -0,0 +1 @@
1
+ @import "core/panic.sal"