@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,18 @@
1
+ #def HashSet_SIZE = 32
2
+ #def HashSet_slots = +0
3
+ #def HashSet_cap = +8
4
+ #def HashSet_len = +16
5
+ #def HashSet_tombs = +24
6
+
7
+ #def HashSetSlot_SIZE = 32
8
+ #def HashSetSlot_hash = +0
9
+ #def HashSetSlot_key = +8
10
+ #def HashSetSlot_value = +16
11
+ #def HashSetSlot_state = +24
12
+
13
+ #def HashSet_INITIAL_CAP = 8
14
+ #def HashSet_STATE_EMPTY = 0
15
+ #def HashSet_STATE_FILLED = 1
16
+ #def HashSet_STATE_TOMB = 2
17
+
18
+ #def HashSet_VALUE_SENTINEL = 1
@@ -0,0 +1,78 @@
1
+ @import "http2.sal"
2
+ @import "http2.sai"
3
+
4
+ [MACRO] HTTP2_SUPPORTED %out_status, %out_supported
5
+ __h2_supported_%out_status = stack_alloc 4
6
+ %out_status = call @sa_std_http2_supported(&__h2_supported_%out_status)
7
+ %out_supported = load __h2_supported_%out_status+0 as u32
8
+ [END_MACRO]
9
+
10
+ [MACRO] HTTP2_CLIENT_REQUEST %out_status, %out_buffer, %url, %url_len, %method, %method_len, %body, %body_len
11
+ __h2_client_handle_%out_status = stack_alloc 8
12
+ %out_status = call @sa_std_http2_client_request(&%url, %url_len, &%method, %method_len, &%body, %body_len, &__h2_client_handle_%out_status)
13
+ %out_buffer = load __h2_client_handle_%out_status+0 as u64
14
+ [END_MACRO]
15
+
16
+ [MACRO] HTTP2_VERSION_JSON %out_status, %out_buffer
17
+ __h2_version_handle_%out_status = stack_alloc 8
18
+ %out_status = call @sa_std_http2_nghttp2_version_json(&__h2_version_handle_%out_status)
19
+ %out_buffer = load __h2_version_handle_%out_status+0 as u64
20
+ [END_MACRO]
21
+
22
+ [MACRO] HTTP2_STATUS_JSON %out_status, %out_buffer
23
+ __h2_status_handle_%out_status = stack_alloc 8
24
+ %out_status = call @sa_std_http2_status_json(&__h2_status_handle_%out_status)
25
+ %out_buffer = load __h2_status_handle_%out_status+0 as u64
26
+ [END_MACRO]
27
+
28
+ [MACRO] HTTP2_CONSTANTS_JSON %out_status, %out_buffer
29
+ __h2_consts_handle_%out_status = stack_alloc 8
30
+ %out_status = call @sa_std_http2_constants_json(&__h2_consts_handle_%out_status)
31
+ %out_buffer = load __h2_consts_handle_%out_status+0 as u64
32
+ [END_MACRO]
33
+
34
+ [MACRO] HTTP2_SENSITIVE_HEADERS_JSON %out_status, %out_buffer
35
+ __h2_sens_handle_%out_status = stack_alloc 8
36
+ %out_status = call @sa_std_http2_sensitive_headers(&__h2_sens_handle_%out_status)
37
+ %out_buffer = load __h2_sens_handle_%out_status+0 as u64
38
+ [END_MACRO]
39
+
40
+ [MACRO] HTTP2_DEFAULT_SETTINGS_JSON %out_status, %out_buffer
41
+ __h2_default_handle_%out_status = stack_alloc 8
42
+ %out_status = call @sa_std_http2_get_default_settings_json(&__h2_default_handle_%out_status)
43
+ %out_buffer = load __h2_default_handle_%out_status+0 as u64
44
+ [END_MACRO]
45
+
46
+ [MACRO] HTTP2_GET_PACKED_SETTINGS %out_status, %out_buffer, %settings_json, %settings_json_len
47
+ __h2_packed_handle_%out_status = stack_alloc 8
48
+ %out_status = call @sa_std_http2_get_packed_settings(&%settings_json, %settings_json_len, &__h2_packed_handle_%out_status)
49
+ %out_buffer = load __h2_packed_handle_%out_status+0 as u64
50
+ [END_MACRO]
51
+
52
+ [MACRO] HTTP2_GET_UNPACKED_SETTINGS_JSON %out_status, %out_buffer, %buf, %buf_len
53
+ __h2_unpacked_handle_%out_status = stack_alloc 8
54
+ %out_status = call @sa_std_http2_get_unpacked_settings_json(&%buf, %buf_len, &__h2_unpacked_handle_%out_status)
55
+ %out_buffer = load __h2_unpacked_handle_%out_status+0 as u64
56
+ [END_MACRO]
57
+
58
+ [MACRO] HTTP2_PERFORM_SERVER_HANDSHAKE %out_status, %out_bytes, %out_json, %input, %input_len, %settings_json, %settings_json_len
59
+ __h2_hs_bytes_%out_status = stack_alloc 8
60
+ __h2_hs_json_%out_status = stack_alloc 8
61
+ %out_status = call @sa_std_http2_perform_server_handshake(&%input, %input_len, &%settings_json, %settings_json_len, &__h2_hs_bytes_%out_status, &__h2_hs_json_%out_status)
62
+ %out_bytes = load __h2_hs_bytes_%out_status+0 as u64
63
+ %out_json = load __h2_hs_json_%out_status+0 as u64
64
+ [END_MACRO]
65
+
66
+ // buffer handle accessors (sci convention)
67
+
68
+ [MACRO] HTTP2_BUFFER_DATA %out_ptr, %buffer
69
+ %out_ptr = call @sa_std_http2_buffer_data(%buffer)
70
+ [END_MACRO]
71
+
72
+ [MACRO] HTTP2_BUFFER_LEN %out_len, %buffer
73
+ %out_len = call @sa_std_http2_buffer_len(%buffer)
74
+ [END_MACRO]
75
+
76
+ [MACRO] HTTP2_BUFFER_FREE %out_status, %buffer
77
+ %out_status = call @sa_std_http2_buffer_free(^%buffer)
78
+ [END_MACRO]
@@ -0,0 +1,26 @@
1
+ // sa_std HTTP/2 surface — real libnghttp2 backend living in the sci runtime.
2
+ //
3
+ // String/JSON/binary outputs are returned as registered u64 buffer handles,
4
+ // following the same convention as sa_std.fs.read_*: read bytes/length with
5
+ // sa_std_http2_buffer_data / sa_std_http2_buffer_len and release with
6
+ // sa_std_http2_buffer_free.
7
+
8
+ @extern sa_std_http2_supported(&out_supported: ptr) -> i32
9
+
10
+ @extern sa_std_http2_client_request(&url: ptr, url_len: u64, &method: ptr, method_len: u64, &body: ptr, body_len: u64, &out_handle: ptr) -> i32
11
+
12
+ @extern sa_std_http2_nghttp2_version_json(&out_handle: ptr) -> i32
13
+ @extern sa_std_http2_status_json(&out_handle: ptr) -> i32
14
+ @extern sa_std_http2_constants_json(&out_handle: ptr) -> i32
15
+ @extern sa_std_http2_sensitive_headers(&out_handle: ptr) -> i32
16
+ @extern sa_std_http2_get_default_settings_json(&out_handle: ptr) -> i32
17
+
18
+ @extern sa_std_http2_get_packed_settings(&settings_json: ptr, settings_json_len: u64, &out_handle: ptr) -> i32
19
+ @extern sa_std_http2_get_unpacked_settings_json(&buf: ptr, buf_len: u64, &out_handle: ptr) -> i32
20
+
21
+ @extern sa_std_http2_perform_server_handshake(&input: ptr, input_len: u64, &settings_json: ptr, settings_json_len: u64, &out_bytes: ptr, &out_json: ptr) -> i32
22
+
23
+ // buffer handle accessors (sci convention)
24
+ @extern sa_std_http2_buffer_data(buffer: u64) -> &ptr
25
+ @extern sa_std_http2_buffer_len(buffer: u64) -> u64
26
+ @extern sa_std_http2_buffer_free(^buffer: u64) -> i32
@@ -0,0 +1,36 @@
1
+ #def SA_H2_OK = 0
2
+ #def SA_H2_ERR_UNSUPPORTED = -1
3
+ #def SA_H2_ERR_NO_MEMORY = -12
4
+ #def SA_H2_ERR_INVALID_ARGUMENT = -22
5
+ #def SA_H2_ERR_CONNECT = 100
6
+ #def SA_H2_ERR_PROTOCOL = 101
7
+
8
+ #def NGHTTP2_NV_FLAG_NONE = 0
9
+ #def NGHTTP2_NV_FLAG_NO_INDEX = 1
10
+ #def NGHTTP2_NV_FLAG_NO_EMIT_NAME = 2
11
+ #def NGHTTP2_NV_FLAG_NO_EMIT_VALUE = 4
12
+ #def NGHTTP2_NV_FLAG_NO_NEVER_INDEX = 8
13
+
14
+ #def HTTP2_FRAME_DATA = 0
15
+ #def HTTP2_FRAME_HEADERS = 1
16
+ #def HTTP2_FRAME_PRIORITY = 2
17
+ #def HTTP2_FRAME_RST_STREAM = 3
18
+ #def HTTP2_FRAME_SETTINGS = 4
19
+ #def HTTP2_FRAME_PING = 6
20
+ #def HTTP2_FRAME_GOAWAY = 7
21
+ #def HTTP2_FRAME_WINDOW_UPDATE = 8
22
+
23
+ #def HTTP2_FLAG_NONE = 0
24
+ #def HTTP2_FLAG_END_STREAM = 1
25
+ #def HTTP2_FLAG_ACK = 1
26
+ #def HTTP2_FLAG_END_HEADERS = 4
27
+
28
+ #def HTTP2_SETTINGS_HEADER_TABLE_SIZE = 1
29
+ #def HTTP2_SETTINGS_ENABLE_PUSH = 2
30
+ #def HTTP2_SETTINGS_MAX_CONCURRENT_STREAMS = 3
31
+ #def HTTP2_SETTINGS_INITIAL_WINDOW_SIZE = 4
32
+ #def HTTP2_SETTINGS_MAX_FRAME_SIZE = 5
33
+ #def HTTP2_SETTINGS_MAX_HEADER_LIST_SIZE = 6
34
+ #def HTTP2_SETTINGS_ENABLE_CONNECT_PROTOCOL = 8
35
+
36
+ #def HTTP2_DATA_FLAG_EOF = 1
@@ -0,0 +1,3 @@
1
+ // Public Instant/SystemTime facade. Runtime and arithmetic macros live in time.sa.
2
+ @import "time.sal"
3
+ @import "time.sa"
@@ -0,0 +1,2 @@
1
+ // Standard layout aliases for Instant and SystemTime.
2
+ @import "time.sal"
@@ -0,0 +1,43 @@
1
+ @import "../io.sai"
2
+
3
+ [MACRO] BUF_READER_READ_LINE %out_buf, %handle, %max_bytes
4
+ __buf_reader_read_line = call @sa_io_read_line(%handle, %max_bytes)
5
+ %out_buf = ? __buf_reader_read_line
6
+ !__buf_reader_read_line
7
+ [END_MACRO]
8
+
9
+ [MACRO] BUF_READER_READ %out_count, %handle, %buf, %cap
10
+ __buf_reader_read_slot = stack_alloc 8
11
+ __buf_reader_read_status = call @sa_io_read(%handle, &%buf, %cap, &__buf_reader_read_slot)
12
+ %out_count = load __buf_reader_read_slot+0 as u64
13
+ !__buf_reader_read_status
14
+ [END_MACRO]
15
+
16
+ [MACRO] BUF_READER_READ_BYTES %out_count, %handle, %buf, %cap
17
+ EXPAND BUF_READER_READ %out_count, %handle, %buf, %cap
18
+ [END_MACRO]
19
+
20
+ [MACRO] BUF_READER_READ_EXACT %out_count, %handle, %buf, %len
21
+ __buf_reader_read_exact_status = call @sa_io_read_exact(%handle, &%buf, %len)
22
+ %out_count = %len
23
+ !__buf_reader_read_exact_status
24
+ [END_MACRO]
25
+
26
+ [MACRO] BUF_READER_READ_EXACT_BYTES %out_count, %handle, %buf, %len
27
+ EXPAND BUF_READER_READ_EXACT %out_count, %handle, %buf, %len
28
+ [END_MACRO]
29
+
30
+ [MACRO] BUF_READER_FREE %out_ok, %buf
31
+ __buf_reader_free = call @sa_io_buffer_free(^%buf)
32
+ %out_ok = ? __buf_reader_free
33
+ !__buf_reader_free
34
+ [END_MACRO]
35
+
36
+ [MACRO] BUF_READER_CLOSE %out_ok, %handle
37
+ __buf_reader_close = call @sa_io_close(%handle)
38
+ %out_ok = __buf_reader_close
39
+ [END_MACRO]
40
+
41
+ [MACRO] BUF_READER_LINES %out_buf, %handle, %max_bytes
42
+ EXPAND BUF_READER_READ_LINE %out_buf, %handle, %max_bytes
43
+ [END_MACRO]
@@ -0,0 +1,35 @@
1
+ @import "../io.sai"
2
+
3
+ [MACRO] BUF_WRITER_WRITE %out_count, %handle, %buf, %len
4
+ __buf_writer_write_slot = stack_alloc 8
5
+ __buf_writer_write_status = call @sa_io_write(%handle, &%buf, %len, &__buf_writer_write_slot)
6
+ %out_count = load __buf_writer_write_slot+0 as u64
7
+ !__buf_writer_write_status
8
+ [END_MACRO]
9
+
10
+ [MACRO] BUF_WRITER_WRITE_BYTES %out_count, %handle, %buf, %len
11
+ EXPAND BUF_WRITER_WRITE %out_count, %handle, %buf, %len
12
+ [END_MACRO]
13
+
14
+ [MACRO] BUF_WRITER_WRITE_ALL %out_ok, %handle, %buf, %len
15
+ __buf_writer_write_all = call @sa_io_write_all(%handle, &%buf, %len)
16
+ %out_ok = __buf_writer_write_all
17
+ [END_MACRO]
18
+
19
+ [MACRO] BUF_WRITER_WRITE_ALL_BYTES %out_ok, %handle, %buf, %len
20
+ EXPAND BUF_WRITER_WRITE_ALL %out_ok, %handle, %buf, %len
21
+ [END_MACRO]
22
+
23
+ [MACRO] BUF_WRITER_FLUSH %out_ok, %handle
24
+ __buf_writer_flush = call @sa_io_flush(%handle)
25
+ %out_ok = __buf_writer_flush
26
+ [END_MACRO]
27
+
28
+ [MACRO] BUF_WRITER_CLOSE %out_ok, %handle
29
+ __buf_writer_close = call @sa_io_close(%handle)
30
+ %out_ok = __buf_writer_close
31
+ [END_MACRO]
32
+
33
+ [MACRO] BUF_WRITER_WRITE_FMT %out_ok, %handle, %buf, %len
34
+ EXPAND BUF_WRITER_WRITE_ALL %out_ok, %handle, %buf, %len
35
+ [END_MACRO]
@@ -0,0 +1,4 @@
1
+ // Stable aggregate entry for buffered I/O facades.
2
+ @import "buf_reader.sa"
3
+ @import "buf_writer.sa"
4
+ @import "print.sa"
@@ -0,0 +1,4 @@
1
+ @import "../io.sal"
2
+ @import "buf_reader.sa"
3
+ @import "buf_writer.sa"
4
+ @import "print.sai"
@@ -0,0 +1 @@
1
+ @import "bufio.sa"
@@ -0,0 +1 @@
1
+ @import "bufio.sal"
@@ -0,0 +1,2 @@
1
+ @import "../io.sal"
2
+ @import "print.sai"
@@ -0,0 +1,3 @@
1
+ // Legacy print contract for demos and simple applications.
2
+ // Implemented by the Zig-backed sa_std.io library as stdout().write_all(bytes).
3
+ @extern sa_print_bytes(&msg: ptr, len: u64) -> void