@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.
- package/bin/sa.js +13 -1
- package/package.json +8 -7
- package/sa_std/alloc/layout.sal +12 -0
- package/sa_std/alloc/prelude.sa +1 -0
- package/sa_std/alloc/prelude.sal +1 -0
- package/sa_std/alloc/string.sa +3 -0
- package/sa_std/alloc/vec.sa +684 -0
- package/sa_std/alloc/vec.sal +4 -0
- package/sa_std/any.sa +130 -0
- package/sa_std/any.sal +23 -0
- package/sa_std/array.sa +1876 -0
- package/sa_std/ascii.sa +2 -0
- package/sa_std/ascii.sal +1 -0
- package/sa_std/async.sla +116 -0
- package/sa_std/binary_heap.sa +3003 -0
- package/sa_std/binary_heap.sal +7 -0
- package/sa_std/borrow.sa +171 -0
- package/sa_std/borrow.sal +13 -0
- package/sa_std/btree_map.sa +2210 -0
- package/sa_std/btree_map.sal +11 -0
- package/sa_std/btree_set.sa +1072 -0
- package/sa_std/btree_set.sal +6 -0
- package/sa_std/char.sa +1309 -0
- package/sa_std/char.sal +50 -0
- package/sa_std/cmp.sa +554 -0
- package/sa_std/cmp.sal +14 -0
- package/sa_std/collections/binary_heap.sa +1 -0
- package/sa_std/collections/btree_map.sa +1 -0
- package/sa_std/collections/btree_set.sa +1 -0
- package/sa_std/collections/hashmap.sa +1 -0
- package/sa_std/collections/hashset.sa +1 -0
- package/sa_std/collections/linked_list.sa +1120 -0
- package/sa_std/collections/linked_list.sal +10 -0
- package/sa_std/collections/prelude.sa +7 -0
- package/sa_std/collections/prelude.sal +1 -0
- package/sa_std/collections/vec_deque.sa +1 -0
- package/sa_std/collections.sal +13 -0
- package/sa_std/convert.sa +1115 -0
- package/sa_std/convert.sal +24 -0
- package/sa_std/core/arc.sa +233 -0
- package/sa_std/core/arc.sal +4 -0
- package/sa_std/core/ascii.sa +784 -0
- package/sa_std/core/ascii.sal +34 -0
- package/sa_std/core/bit.sa +41 -0
- package/sa_std/core/box.sa +1 -0
- package/sa_std/core/box.sal +2 -0
- package/sa_std/core/cell.sa +108 -0
- package/sa_std/core/cell.sal +5 -0
- package/sa_std/core/cleanup.sa +26 -0
- package/sa_std/core/control.sa +20 -0
- package/sa_std/core/derive.sa +60 -0
- package/sa_std/core/derive.sal +1 -0
- package/sa_std/core/dispatch.sa +7 -0
- package/sa_std/core/dispatch.sal +5 -0
- package/sa_std/core/future.sa +777 -0
- package/sa_std/core/future.sal +73 -0
- package/sa_std/core/hash.sa +48 -0
- package/sa_std/core/iter.sa +2805 -0
- package/sa_std/core/iter.sal +4 -0
- package/sa_std/core/loop.sa +60 -0
- package/sa_std/core/mem.sa +220 -0
- package/sa_std/core/option.sa +825 -0
- package/sa_std/core/option.sal +11 -0
- package/sa_std/core/panic.sa +23 -0
- package/sa_std/core/panic.sal +12 -0
- package/sa_std/core/prelude.sa +18 -0
- package/sa_std/core/prelude.sal +18 -0
- package/sa_std/core/rc.sa +225 -0
- package/sa_std/core/rc.sal +4 -0
- package/sa_std/core/refcell.sa +283 -0
- package/sa_std/core/refcell.sal +13 -0
- package/sa_std/core/result.sa +708 -0
- package/sa_std/core/result.sal +6 -0
- package/sa_std/core/rust_patterns.sal +295 -0
- package/sa_std/core/sa_core.sa +84 -0
- package/sa_std/core/slice.sa +4021 -0
- package/sa_std/core/slice.sal +7 -0
- package/sa_std/core/task.sa +112 -0
- package/sa_std/core/task.sal +15 -0
- package/sa_std/core/trait_object.sa +26 -0
- package/sa_std/core/trait_object.sal +4 -0
- package/sa_std/core/waker.sa +289 -0
- package/sa_std/core/waker.sal +31 -0
- package/sa_std/core/weak.sa +2 -0
- package/sa_std/core/weak.sal +4 -0
- package/sa_std/cow.sa +3 -0
- package/sa_std/cow.sal +2 -0
- package/sa_std/cstring.sa +3 -0
- package/sa_std/cstring.sal +2 -0
- package/sa_std/default.sa +99 -0
- package/sa_std/duration.sa +3 -0
- package/sa_std/duration.sal +2 -0
- package/sa_std/encoding/json.sa +259 -0
- package/sa_std/encoding/json.sai +54 -0
- package/sa_std/encoding/json.sal +35 -0
- package/sa_std/encoding/prelude.sa +1 -0
- package/sa_std/encoding/prelude.sal +0 -0
- package/sa_std/env.sa +390 -0
- package/sa_std/env.sai +25 -0
- package/sa_std/error.sa +253 -0
- package/sa_std/error.sal +44 -0
- package/sa_std/ffi/cstring.sa +3 -0
- package/sa_std/ffi/cstring.sal +1 -0
- package/sa_std/ffi/prelude.sa +2 -0
- package/sa_std/ffi/prelude.sal +2 -0
- package/sa_std/ffi.sa +635 -0
- package/sa_std/ffi.sal +51 -0
- package/sa_std/fmt.sa +2 -0
- package/sa_std/fmt.sai +18 -0
- package/sa_std/fmt.sal +35 -0
- package/sa_std/fs.sa +1023 -0
- package/sa_std/fs.sai +127 -0
- package/sa_std/fs.sal +51 -0
- package/sa_std/future.sa +2 -0
- package/sa_std/future.sal +1 -0
- package/sa_std/hash.sa +1486 -0
- package/sa_std/hash.sal +13 -0
- package/sa_std/hashmap.sa +1962 -0
- package/sa_std/hashmap.sal +20 -0
- package/sa_std/hashset.sa +1004 -0
- package/sa_std/hashset.sal +18 -0
- package/sa_std/http2.sa +78 -0
- package/sa_std/http2.sai +26 -0
- package/sa_std/http2.sal +36 -0
- package/sa_std/instant.sa +3 -0
- package/sa_std/instant.sal +2 -0
- package/sa_std/io/buf_reader.sa +43 -0
- package/sa_std/io/buf_writer.sa +35 -0
- package/sa_std/io/bufio.sa +4 -0
- package/sa_std/io/bufio.sal +4 -0
- package/sa_std/io/prelude.sa +1 -0
- package/sa_std/io/prelude.sal +1 -0
- package/sa_std/io/print.sa +2 -0
- package/sa_std/io/print.sai +3 -0
- package/sa_std/io.sa +925 -0
- package/sa_std/io.sai +25 -0
- package/sa_std/io.sal +84 -0
- package/sa_std/iter.sa +2 -0
- package/sa_std/iter.sal +1 -0
- package/sa_std/join_handle.sa +3 -0
- package/sa_std/join_handle.sal +2 -0
- package/sa_std/libsa_async.sa +80 -0
- package/sa_std/m_async.sa +137 -0
- package/sa_std/m_async.sal +30 -0
- package/sa_std/m_async.sla +2 -0
- package/sa_std/manually_drop.sa +3 -0
- package/sa_std/manually_drop.sal +2 -0
- package/sa_std/marker/phantom_data.sa +3 -0
- package/sa_std/marker/phantom_data.sal +1 -0
- package/sa_std/marker/prelude.sa +4 -0
- package/sa_std/marker/prelude.sal +4 -0
- package/sa_std/marker.sa +220 -0
- package/sa_std/marker.sal +15 -0
- package/sa_std/math.sa +84 -0
- package/sa_std/math.sai +10 -0
- package/sa_std/mem/manually_drop.sa +3 -0
- package/sa_std/mem/manually_drop.sal +1 -0
- package/sa_std/mem/prelude.sa +2 -0
- package/sa_std/mem/prelude.sal +2 -0
- package/sa_std/mem.sa +564 -0
- package/sa_std/mem.sal +40 -0
- package/sa_std/modstate.sai +19 -0
- package/sa_std/net.sa +4227 -0
- package/sa_std/net.sai +239 -0
- package/sa_std/net.sal +159 -0
- package/sa_std/netx.sa +85 -0
- package/sa_std/netx.sai +11 -0
- package/sa_std/netx.sal +39 -0
- package/sa_std/nonzero.sa +3 -0
- package/sa_std/nonzero.sal +2 -0
- package/sa_std/num/nonzero.sa +3 -0
- package/sa_std/num/nonzero.sal +1 -0
- package/sa_std/num/prelude.sa +3 -0
- package/sa_std/num/prelude.sal +3 -0
- package/sa_std/num.sa +17302 -0
- package/sa_std/num.sai +11 -0
- package/sa_std/num.sal +341 -0
- package/sa_std/ops.sa +1884 -0
- package/sa_std/ops.sal +68 -0
- package/sa_std/option.sa +2 -0
- package/sa_std/option.sal +1 -0
- package/sa_std/os/fd.sa +96 -0
- package/sa_std/os/fd.sai +7 -0
- package/sa_std/os/fd.sal +11 -0
- package/sa_std/os/prelude.sa +2 -0
- package/sa_std/os/prelude.sal +1 -0
- package/sa_std/os/unix_ffi.sa +271 -0
- package/sa_std/panic.sa +1 -0
- package/sa_std/panic.sal +1 -0
- package/sa_std/path.sa +3170 -0
- package/sa_std/path.sal +12 -0
- package/sa_std/phantom_data.sa +3 -0
- package/sa_std/phantom_data.sal +2 -0
- package/sa_std/pin.sa +79 -0
- package/sa_std/pin.sal +5 -0
- package/sa_std/plugin_async.sa +90 -0
- package/sa_std/plugin_async.sal +29 -0
- package/sa_std/plugin_async.sla +4 -0
- package/sa_std/plugin_http_async.sa +46 -0
- package/sa_std/plugin_http_server.sa +61 -0
- package/sa_std/plugin_http_server.sla +2 -0
- package/sa_std/plugin_sqlite.sa +106 -0
- package/sa_std/plugin_sqlite.sla +2 -0
- package/sa_std/prelude.sa +60 -0
- package/sa_std/prelude.sal +55 -0
- package/sa_std/process.sa +916 -0
- package/sa_std/process.sai +57 -0
- package/sa_std/process.sal +27 -0
- package/sa_std/ptr.sa +503 -0
- package/sa_std/ptr.sal +2 -0
- package/sa_std/result.sa +2 -0
- package/sa_std/result.sal +1 -0
- package/sa_std/rust_core.sa +51 -0
- package/sa_std/rust_core.sal +26 -0
- package/sa_std/sa.mod +7 -0
- package/sa_std/sort.sa +156 -0
- package/sa_std/str.sla +13 -0
- package/sa_std/string.sa +12240 -0
- package/sa_std/string.sai +25 -0
- package/sa_std/string.sal +17 -0
- package/sa_std/string_format.sa +269 -0
- package/sa_std/sync/atomic.sa +1500 -0
- package/sa_std/sync/atomic.sal +45 -0
- package/sa_std/sync/barrier.sa +105 -0
- package/sa_std/sync/barrier.sal +7 -0
- package/sa_std/sync/condvar.sa +240 -0
- package/sa_std/sync/condvar.sal +4 -0
- package/sa_std/sync/mpsc.sa +758 -0
- package/sa_std/sync/mpsc.sal +42 -0
- package/sa_std/sync/mpsc_list.sa +255 -0
- package/sa_std/sync/mpsc_list.sal +3 -0
- package/sa_std/sync/mutex.sa +182 -0
- package/sa_std/sync/mutex.sal +7 -0
- package/sa_std/sync/once.sa +371 -0
- package/sa_std/sync/once.sal +31 -0
- package/sa_std/sync/poison.sa +36 -0
- package/sa_std/sync/poison.sal +11 -0
- package/sa_std/sync/prelude.sa +8 -0
- package/sa_std/sync/prelude.sal +7 -0
- package/sa_std/sync/rwlock.sa +369 -0
- package/sa_std/sync/rwlock.sal +13 -0
- package/sa_std/task.sa +2 -0
- package/sa_std/task.sal +1 -0
- package/sa_std/term.sa +2 -0
- package/sa_std/term.sai +10 -0
- package/sa_std/term.sal +33 -0
- package/sa_std/testing/assert.sai +4 -0
- package/sa_std/testing/mock_io.sa +174 -0
- package/sa_std/testing/mock_io.sal +5 -0
- package/sa_std/testing/prelude.sa +2 -0
- package/sa_std/testing/prelude.sal +1 -0
- package/sa_std/text/prelude.sa +1 -0
- package/sa_std/text/prelude.sal +1 -0
- package/sa_std/text/regex.sa +2 -0
- package/sa_std/text/regex.sai +9 -0
- package/sa_std/text/regex.sal +33 -0
- package/sa_std/thread/join_handle.sa +3 -0
- package/sa_std/thread/join_handle.sal +1 -0
- package/sa_std/thread/prelude.sa +4 -0
- package/sa_std/thread/prelude.sal +3 -0
- package/sa_std/thread.sa +160 -0
- package/sa_std/thread.sai +11 -0
- package/sa_std/thread.sal +4 -0
- package/sa_std/thread_local.sa +45 -0
- package/sa_std/thread_local.sai +9 -0
- package/sa_std/time/duration.sa +3 -0
- package/sa_std/time/duration.sal +1 -0
- package/sa_std/time/instant.sa +3 -0
- package/sa_std/time/instant.sal +1 -0
- package/sa_std/time/prelude.sa +4 -0
- package/sa_std/time/prelude.sal +4 -0
- package/sa_std/time.sa +850 -0
- package/sa_std/time.sai +37 -0
- package/sa_std/time.sal +35 -0
- package/sa_std/time.sla +67 -0
- package/sa_std/tls_client.sai +39 -0
- package/sa_std/vec.sa +5754 -0
- package/sa_std/vec.sal +1 -0
- package/sa_std/vec_deque.sa +4925 -0
- package/sa_std/vec_deque.sal +8 -0
- package/sa_std/vec_runtime_macros.sa +11 -0
- 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
|
package/sa_std/option.sa
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "core/option.sal"
|
package/sa_std/os/fd.sa
ADDED
|
@@ -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]
|
package/sa_std/os/fd.sai
ADDED
|
@@ -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
|
package/sa_std/os/fd.sal
ADDED
|
@@ -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 @@
|
|
|
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]
|
package/sa_std/panic.sa
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "core/panic.sa"
|
package/sa_std/panic.sal
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "core/panic.sal"
|