@grain/stdlib 0.5.12 → 0.6.0

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 (155) hide show
  1. package/CHANGELOG.md +200 -0
  2. package/LICENSE +1 -1
  3. package/README.md +25 -2
  4. package/array.gr +1512 -199
  5. package/array.md +2032 -94
  6. package/bigint.gr +239 -140
  7. package/bigint.md +450 -106
  8. package/buffer.gr +595 -102
  9. package/buffer.md +903 -145
  10. package/bytes.gr +401 -110
  11. package/bytes.md +551 -63
  12. package/char.gr +228 -49
  13. package/char.md +373 -7
  14. package/exception.gr +26 -12
  15. package/exception.md +29 -5
  16. package/float32.gr +130 -109
  17. package/float32.md +185 -57
  18. package/float64.gr +112 -99
  19. package/float64.md +185 -57
  20. package/hash.gr +47 -37
  21. package/hash.md +21 -3
  22. package/int16.gr +430 -0
  23. package/int16.md +618 -0
  24. package/int32.gr +200 -269
  25. package/int32.md +254 -289
  26. package/int64.gr +142 -225
  27. package/int64.md +254 -289
  28. package/int8.gr +511 -0
  29. package/int8.md +786 -0
  30. package/json.gr +2084 -0
  31. package/json.md +608 -0
  32. package/list.gr +120 -68
  33. package/list.md +125 -80
  34. package/map.gr +560 -57
  35. package/map.md +672 -56
  36. package/marshal.gr +239 -227
  37. package/marshal.md +36 -4
  38. package/number.gr +626 -676
  39. package/number.md +738 -153
  40. package/option.gr +33 -35
  41. package/option.md +58 -42
  42. package/package.json +2 -2
  43. package/path.gr +148 -187
  44. package/path.md +47 -96
  45. package/pervasives.gr +75 -416
  46. package/pervasives.md +85 -180
  47. package/priorityqueue.gr +433 -74
  48. package/priorityqueue.md +422 -54
  49. package/queue.gr +362 -80
  50. package/queue.md +433 -38
  51. package/random.gr +67 -75
  52. package/random.md +68 -40
  53. package/range.gr +135 -63
  54. package/range.md +198 -43
  55. package/rational.gr +284 -0
  56. package/rational.md +545 -0
  57. package/regex.gr +933 -1066
  58. package/regex.md +59 -60
  59. package/result.gr +23 -25
  60. package/result.md +54 -39
  61. package/runtime/atof/common.gr +78 -82
  62. package/runtime/atof/common.md +22 -10
  63. package/runtime/atof/decimal.gr +102 -127
  64. package/runtime/atof/decimal.md +28 -7
  65. package/runtime/atof/lemire.gr +56 -71
  66. package/runtime/atof/lemire.md +9 -1
  67. package/runtime/atof/parse.gr +83 -110
  68. package/runtime/atof/parse.md +12 -2
  69. package/runtime/atof/slow.gr +28 -35
  70. package/runtime/atof/slow.md +9 -1
  71. package/runtime/atof/table.gr +19 -18
  72. package/runtime/atof/table.md +10 -2
  73. package/runtime/atoi/parse.gr +153 -136
  74. package/runtime/atoi/parse.md +50 -1
  75. package/runtime/bigint.gr +410 -517
  76. package/runtime/bigint.md +71 -57
  77. package/runtime/compare.gr +176 -85
  78. package/runtime/compare.md +31 -1
  79. package/runtime/dataStructures.gr +144 -32
  80. package/runtime/dataStructures.md +267 -31
  81. package/runtime/debugPrint.gr +34 -15
  82. package/runtime/debugPrint.md +37 -5
  83. package/runtime/equal.gr +53 -52
  84. package/runtime/equal.md +30 -1
  85. package/runtime/exception.gr +38 -47
  86. package/runtime/exception.md +10 -8
  87. package/runtime/gc.gr +23 -152
  88. package/runtime/gc.md +13 -17
  89. package/runtime/malloc.gr +31 -31
  90. package/runtime/malloc.md +11 -3
  91. package/runtime/numberUtils.gr +191 -172
  92. package/runtime/numberUtils.md +17 -9
  93. package/runtime/numbers.gr +1695 -1021
  94. package/runtime/numbers.md +1098 -134
  95. package/runtime/string.gr +540 -242
  96. package/runtime/string.md +76 -6
  97. package/runtime/unsafe/constants.gr +30 -13
  98. package/runtime/unsafe/constants.md +80 -0
  99. package/runtime/unsafe/conv.gr +55 -28
  100. package/runtime/unsafe/conv.md +41 -9
  101. package/runtime/unsafe/memory.gr +10 -30
  102. package/runtime/unsafe/memory.md +15 -19
  103. package/runtime/unsafe/tags.gr +37 -21
  104. package/runtime/unsafe/tags.md +88 -8
  105. package/runtime/unsafe/wasmf32.gr +30 -36
  106. package/runtime/unsafe/wasmf32.md +64 -56
  107. package/runtime/unsafe/wasmf64.gr +30 -36
  108. package/runtime/unsafe/wasmf64.md +64 -56
  109. package/runtime/unsafe/wasmi32.gr +49 -66
  110. package/runtime/unsafe/wasmi32.md +102 -94
  111. package/runtime/unsafe/wasmi64.gr +52 -79
  112. package/runtime/unsafe/wasmi64.md +108 -100
  113. package/runtime/utils/printing.gr +13 -15
  114. package/runtime/utils/printing.md +11 -3
  115. package/runtime/wasi.gr +294 -295
  116. package/runtime/wasi.md +62 -42
  117. package/set.gr +574 -64
  118. package/set.md +634 -54
  119. package/stack.gr +181 -64
  120. package/stack.md +271 -42
  121. package/string.gr +453 -533
  122. package/string.md +241 -151
  123. package/uint16.gr +369 -0
  124. package/uint16.md +585 -0
  125. package/uint32.gr +470 -0
  126. package/uint32.md +737 -0
  127. package/uint64.gr +471 -0
  128. package/uint64.md +737 -0
  129. package/uint8.gr +369 -0
  130. package/uint8.md +585 -0
  131. package/uri.gr +1093 -0
  132. package/uri.md +477 -0
  133. package/{sys → wasi}/file.gr +914 -500
  134. package/{sys → wasi}/file.md +454 -50
  135. package/wasi/process.gr +292 -0
  136. package/{sys → wasi}/process.md +164 -6
  137. package/wasi/random.gr +77 -0
  138. package/wasi/random.md +80 -0
  139. package/{sys → wasi}/time.gr +15 -22
  140. package/{sys → wasi}/time.md +5 -5
  141. package/immutablearray.gr +0 -929
  142. package/immutablearray.md +0 -1038
  143. package/immutablemap.gr +0 -493
  144. package/immutablemap.md +0 -479
  145. package/immutablepriorityqueue.gr +0 -360
  146. package/immutablepriorityqueue.md +0 -291
  147. package/immutableset.gr +0 -498
  148. package/immutableset.md +0 -449
  149. package/runtime/debug.gr +0 -2
  150. package/runtime/debug.md +0 -6
  151. package/runtime/unsafe/errors.gr +0 -36
  152. package/runtime/unsafe/errors.md +0 -204
  153. package/sys/process.gr +0 -254
  154. package/sys/random.gr +0 -79
  155. package/sys/random.md +0 -66
package/runtime/wasi.gr CHANGED
@@ -1,331 +1,330 @@
1
- /* grainc-flags --no-gc */
1
+ module Wasi
2
2
 
3
- export *
4
-
5
- import WasmI32 from "runtime/unsafe/wasmi32"
6
- import Exception from "exception"
3
+ from "runtime/unsafe/wasmi32" include WasmI32
4
+ from "exception" include Exception
5
+ from "runtime/string" include String
6
+ use String.{ concat as (++), toString }
7
7
 
8
8
  // env
9
- import foreign wasm args_get: (
10
- WasmI32,
11
- WasmI32,
12
- ) -> WasmI32 from "wasi_snapshot_preview1"
13
- import foreign wasm args_sizes_get: (
14
- WasmI32,
15
- WasmI32,
16
- ) -> WasmI32 from "wasi_snapshot_preview1"
17
- import foreign wasm environ_get: (
18
- WasmI32,
19
- WasmI32,
20
- ) -> WasmI32 from "wasi_snapshot_preview1"
21
- import foreign wasm environ_sizes_get: (
22
- WasmI32,
23
- WasmI32,
24
- ) -> WasmI32 from "wasi_snapshot_preview1"
9
+ provide foreign wasm args_get:
10
+ (WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
11
+ provide foreign wasm args_sizes_get:
12
+ (WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
13
+ provide foreign wasm environ_get:
14
+ (WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
15
+ provide foreign wasm environ_sizes_get:
16
+ (WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
25
17
 
26
18
  // proc
27
- import foreign wasm proc_exit: WasmI32 -> Void from "wasi_snapshot_preview1"
28
- import foreign wasm proc_raise: WasmI32 -> WasmI32 from "wasi_snapshot_preview1"
29
- import foreign wasm sched_yield: () -> WasmI32 from "wasi_snapshot_preview1"
19
+ provide foreign wasm proc_exit: WasmI32 => Void from "wasi_snapshot_preview1"
20
+ provide foreign wasm proc_raise:
21
+ WasmI32 => WasmI32 from "wasi_snapshot_preview1"
22
+ provide foreign wasm sched_yield: () => WasmI32 from "wasi_snapshot_preview1"
30
23
 
31
24
  // random
32
- import foreign wasm random_get: (
33
- WasmI32,
34
- WasmI32,
35
- ) -> WasmI32 from "wasi_snapshot_preview1"
25
+ provide foreign wasm random_get:
26
+ (WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
36
27
 
37
28
  // time
38
- import foreign wasm clock_time_get: (
39
- WasmI32,
40
- WasmI64,
41
- WasmI32,
42
- ) -> WasmI32 from "wasi_snapshot_preview1"
29
+ provide foreign wasm clock_time_get:
30
+ (WasmI32, WasmI64, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
43
31
 
44
32
  // file
45
- import foreign wasm path_open: (
46
- WasmI32,
47
- WasmI32,
48
- WasmI32,
49
- WasmI32,
50
- WasmI32,
51
- WasmI64,
52
- WasmI64,
53
- WasmI32,
54
- WasmI32,
55
- ) -> WasmI32 from "wasi_snapshot_preview1"
56
- import foreign wasm fd_read: (
57
- WasmI32,
58
- WasmI32,
59
- WasmI32,
60
- WasmI32,
61
- ) -> WasmI32 from "wasi_snapshot_preview1"
62
- import foreign wasm fd_pread: (
63
- WasmI32,
64
- WasmI32,
65
- WasmI32,
66
- WasmI64,
67
- WasmI32,
68
- ) -> WasmI32 from "wasi_snapshot_preview1"
33
+ provide foreign wasm path_open:
34
+ (
35
+ WasmI32,
36
+ WasmI32,
37
+ WasmI32,
38
+ WasmI32,
39
+ WasmI32,
40
+ WasmI64,
41
+ WasmI64,
42
+ WasmI32,
43
+ WasmI32,
44
+ ) => WasmI32 from "wasi_snapshot_preview1"
45
+ provide foreign wasm fd_read:
46
+ (WasmI32, WasmI32, WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
47
+ provide foreign wasm fd_pread:
48
+ (WasmI32, WasmI32, WasmI32, WasmI64, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
49
+ provide foreign wasm fd_prestat_get:
50
+ (WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
51
+ provide foreign wasm fd_prestat_dir_name:
52
+ (WasmI32, WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
69
53
  /**
70
54
  * Invokes the `fd_write` system call.
71
55
  *
72
- * @param file_descriptor: The file descriptor to write to
73
- * @param iovs: The pointer to the array of iovs to write
74
- * @param iovs_len: The length of the array of iovs
75
- * @param nwritten: Where to store the number of bytes written
56
+ * @param 0: The file descriptor to write to
57
+ * @param 1: The pointer to the array of iovs to write
58
+ * @param 2: The length of the array of iovs
59
+ * @param 3: Where to store the number of bytes written
76
60
  * @returns The number of bytes written
77
61
  */
78
- import foreign wasm fd_write: (
79
- WasmI32,
80
- WasmI32,
81
- WasmI32,
82
- WasmI32,
83
- ) -> WasmI32 from "wasi_snapshot_preview1"
84
- import foreign wasm fd_pwrite: (
85
- WasmI32,
86
- WasmI32,
87
- WasmI32,
88
- WasmI64,
89
- WasmI32,
90
- ) -> WasmI32 from "wasi_snapshot_preview1"
91
- import foreign wasm fd_allocate: (
92
- WasmI32,
93
- WasmI64,
94
- WasmI64,
95
- ) -> WasmI32 from "wasi_snapshot_preview1"
96
- import foreign wasm fd_close: WasmI32 -> WasmI32 from "wasi_snapshot_preview1"
97
- import foreign wasm fd_datasync: WasmI32 -> WasmI32 from "wasi_snapshot_preview1"
98
- import foreign wasm fd_sync: WasmI32 -> WasmI32 from "wasi_snapshot_preview1"
99
- import foreign wasm fd_fdstat_get: (
100
- WasmI32,
101
- WasmI32,
102
- ) -> WasmI32 from "wasi_snapshot_preview1"
103
- import foreign wasm fd_fdstat_set_flags: (
104
- WasmI32,
105
- WasmI32,
106
- ) -> WasmI32 from "wasi_snapshot_preview1"
107
- import foreign wasm fd_fdstat_set_rights: (
108
- WasmI32,
109
- WasmI64,
110
- WasmI64,
111
- ) -> WasmI32 from "wasi_snapshot_preview1"
112
- import foreign wasm fd_filestat_get: (
113
- WasmI32,
114
- WasmI32,
115
- ) -> WasmI32 from "wasi_snapshot_preview1"
116
- import foreign wasm fd_filestat_set_size: (
117
- WasmI32,
118
- WasmI64,
119
- ) -> WasmI32 from "wasi_snapshot_preview1"
120
- import foreign wasm fd_filestat_set_times: (
121
- WasmI32,
122
- WasmI64,
123
- WasmI64,
124
- WasmI32,
125
- ) -> WasmI32 from "wasi_snapshot_preview1"
126
- import foreign wasm fd_readdir: (
127
- WasmI32,
128
- WasmI32,
129
- WasmI32,
130
- WasmI64,
131
- WasmI32,
132
- ) -> WasmI32 from "wasi_snapshot_preview1"
133
- import foreign wasm fd_renumber: (
134
- WasmI32,
135
- WasmI32,
136
- ) -> WasmI32 from "wasi_snapshot_preview1"
137
- import foreign wasm fd_seek: (
138
- WasmI32,
139
- WasmI64,
140
- WasmI32,
141
- WasmI32,
142
- ) -> WasmI32 from "wasi_snapshot_preview1"
143
- import foreign wasm fd_tell: (
144
- WasmI32,
145
- WasmI32,
146
- ) -> WasmI32 from "wasi_snapshot_preview1"
147
- import foreign wasm path_create_directory: (
148
- WasmI32,
149
- WasmI32,
150
- WasmI32,
151
- ) -> WasmI32 from "wasi_snapshot_preview1"
152
- import foreign wasm path_filestat_get: (
153
- WasmI32,
154
- WasmI32,
155
- WasmI32,
156
- WasmI32,
157
- WasmI32,
158
- ) -> WasmI32 from "wasi_snapshot_preview1"
159
- import foreign wasm path_filestat_set_times: (
160
- WasmI32,
161
- WasmI32,
162
- WasmI32,
163
- WasmI32,
164
- WasmI64,
165
- WasmI64,
166
- WasmI32,
167
- ) -> WasmI32 from "wasi_snapshot_preview1"
168
- import foreign wasm path_link: (
169
- WasmI32,
170
- WasmI32,
171
- WasmI32,
172
- WasmI32,
173
- WasmI32,
174
- WasmI32,
175
- WasmI32,
176
- ) -> WasmI32 from "wasi_snapshot_preview1"
177
- import foreign wasm path_symlink: (
178
- WasmI32,
179
- WasmI32,
180
- WasmI32,
181
- WasmI32,
182
- WasmI32,
183
- ) -> WasmI32 from "wasi_snapshot_preview1"
184
- import foreign wasm path_unlink_file: (
185
- WasmI32,
186
- WasmI32,
187
- WasmI32,
188
- ) -> WasmI32 from "wasi_snapshot_preview1"
189
- import foreign wasm path_readlink: (
190
- WasmI32,
191
- WasmI32,
192
- WasmI32,
193
- WasmI32,
194
- WasmI32,
195
- WasmI32,
196
- ) -> WasmI32 from "wasi_snapshot_preview1"
197
- import foreign wasm path_remove_directory: (
198
- WasmI32,
199
- WasmI32,
200
- WasmI32,
201
- ) -> WasmI32 from "wasi_snapshot_preview1"
202
- import foreign wasm path_rename: (
203
- WasmI32,
204
- WasmI32,
205
- WasmI32,
206
- WasmI32,
207
- WasmI32,
208
- WasmI32,
209
- ) -> WasmI32 from "wasi_snapshot_preview1"
62
+ provide foreign wasm fd_write:
63
+ (WasmI32, WasmI32, WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
64
+ provide foreign wasm fd_pwrite:
65
+ (WasmI32, WasmI32, WasmI32, WasmI64, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
66
+ provide foreign wasm fd_allocate:
67
+ (WasmI32, WasmI64, WasmI64) => WasmI32 from "wasi_snapshot_preview1"
68
+ provide foreign wasm fd_close: WasmI32 => WasmI32 from "wasi_snapshot_preview1"
69
+ provide foreign wasm fd_datasync:
70
+ WasmI32 => WasmI32 from "wasi_snapshot_preview1"
71
+ provide foreign wasm fd_sync: WasmI32 => WasmI32 from "wasi_snapshot_preview1"
72
+ provide foreign wasm fd_fdstat_get:
73
+ (WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
74
+ provide foreign wasm fd_fdstat_set_flags:
75
+ (WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
76
+ provide foreign wasm fd_fdstat_set_rights:
77
+ (WasmI32, WasmI64, WasmI64) => WasmI32 from "wasi_snapshot_preview1"
78
+ provide foreign wasm fd_filestat_get:
79
+ (WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
80
+ provide foreign wasm fd_filestat_set_size:
81
+ (WasmI32, WasmI64) => WasmI32 from "wasi_snapshot_preview1"
82
+ provide foreign wasm fd_filestat_set_times:
83
+ (WasmI32, WasmI64, WasmI64, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
84
+ provide foreign wasm fd_readdir:
85
+ (WasmI32, WasmI32, WasmI32, WasmI64, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
86
+ provide foreign wasm fd_renumber:
87
+ (WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
88
+ provide foreign wasm fd_seek:
89
+ (WasmI32, WasmI64, WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
90
+ provide foreign wasm fd_tell:
91
+ (WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
92
+ provide foreign wasm path_create_directory:
93
+ (WasmI32, WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
94
+ provide foreign wasm path_filestat_get:
95
+ (WasmI32, WasmI32, WasmI32, WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
96
+ provide foreign wasm path_filestat_set_times:
97
+ (WasmI32, WasmI32, WasmI32, WasmI32, WasmI64, WasmI64, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
98
+ provide foreign wasm path_link:
99
+ (WasmI32, WasmI32, WasmI32, WasmI32, WasmI32, WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
100
+ provide foreign wasm path_symlink:
101
+ (WasmI32, WasmI32, WasmI32, WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
102
+ provide foreign wasm path_unlink_file:
103
+ (WasmI32, WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
104
+ provide foreign wasm path_readlink:
105
+ (WasmI32, WasmI32, WasmI32, WasmI32, WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
106
+ provide foreign wasm path_remove_directory:
107
+ (WasmI32, WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
108
+ provide foreign wasm path_rename:
109
+ (WasmI32, WasmI32, WasmI32, WasmI32, WasmI32, WasmI32) => WasmI32 from "wasi_snapshot_preview1"
210
110
 
211
111
  // clocks
212
- let _CLOCK_REALTIME = 0n
213
- let _CLOCK_MONOTONIC = 1n
214
- let _CLOCK_PROCESS_CPUTIME = 2n
215
- let _CLOCK_THREAD_CPUTIME = 3n
112
+ @unsafe
113
+ provide let _CLOCK_REALTIME = 0n
114
+ @unsafe
115
+ provide let _CLOCK_MONOTONIC = 1n
116
+ @unsafe
117
+ provide let _CLOCK_PROCESS_CPUTIME = 2n
118
+ @unsafe
119
+ provide let _CLOCK_THREAD_CPUTIME = 3n
216
120
 
217
121
  // time
218
122
 
219
- let _TIME_SET_ATIM = 1n
220
- let _TIME_SET_ATIM_NOW = 2n
221
- let _TIME_SET_MTIM = 4n
222
- let _TIME_SET_MTIM_NOW = 8n
123
+ @unsafe
124
+ provide let _TIME_SET_ATIM = 1n
125
+ @unsafe
126
+ provide let _TIME_SET_ATIM_NOW = 2n
127
+ @unsafe
128
+ provide let _TIME_SET_MTIM = 4n
129
+ @unsafe
130
+ provide let _TIME_SET_MTIM_NOW = 8n
223
131
 
224
132
  // lookup flags
225
- let _LOOKUP_FLAG_SYMLINK_FOLLOW = 1n
133
+ @unsafe
134
+ provide let _LOOKUP_FLAG_SYMLINK_FOLLOW = 1n
226
135
 
227
136
  // open flags
228
- let _OPEN_FLAG_CREAT = 1n
229
- let _OPEN_FLAG_DIRECTORY = 2n
230
- let _OPEN_FLAG_EXCL = 4n
231
- let _OPEN_FLAG_TRUNC = 8n
137
+ @unsafe
138
+ provide let _OPEN_FLAG_CREAT = 1n
139
+ @unsafe
140
+ provide let _OPEN_FLAG_DIRECTORY = 2n
141
+ @unsafe
142
+ provide let _OPEN_FLAG_EXCL = 4n
143
+ @unsafe
144
+ provide let _OPEN_FLAG_TRUNC = 8n
232
145
 
233
146
  // fdflags
234
- let _FDFLAG_APPEND = 1n
235
- let _FDFLAG_DSYNC = 2n
236
- let _FDFLAG_NONBLOCK = 4n
237
- let _FDFLAG_RSYNC = 8n
238
- let _FDFLAG_SYNC = 16n
147
+ @unsafe
148
+ provide let _FDFLAG_APPEND = 1n
149
+ @unsafe
150
+ provide let _FDFLAG_DSYNC = 2n
151
+ @unsafe
152
+ provide let _FDFLAG_NONBLOCK = 4n
153
+ @unsafe
154
+ provide let _FDFLAG_RSYNC = 8n
155
+ @unsafe
156
+ provide let _FDFLAG_SYNC = 16n
239
157
 
240
158
  // whence
241
- let _WHENCE_SET = 0n
242
- let _WHENCE_CUR = 1n
243
- let _WHENCE_END = 2n
159
+ @unsafe
160
+ provide let _WHENCE_SET = 0n
161
+ @unsafe
162
+ provide let _WHENCE_CUR = 1n
163
+ @unsafe
164
+ provide let _WHENCE_END = 2n
244
165
 
245
166
  // error codes
246
- let _ESUCCESS = 0n
247
- let _ETOOBIG = 1n
248
- let _EACCES = 2n
249
- let _EADDRINUSE = 3n
250
- let _EADDRNOTAVAIL = 4n
251
- let _EAFNOSUPPORT = 5n
252
- let _EAGAIN = 6n
253
- let _EALREADY = 7n
254
- let _EBADF = 8n
255
- let _EBADMSG = 9n
256
- let _EBUSY = 10n
257
- let _ECANCELED = 11n
258
- let _ECHILD = 12n
259
- let _ECONNABORTED = 13n
260
- let _ECONNREFUSED = 14n
261
- let _ECONNRESET = 15n
262
- let _EDEADLK = 16n
263
- let _EDESTADDRREQ = 17n
264
- let _EDOM = 18n
265
- let _EDQUOT = 19n
266
- let _EEXIST = 20n
267
- let _EFAULT = 21n
268
- let _EFBIG = 22n
269
- let _EHOSTUNREACH = 23n
270
- let _EIDRM = 24n
271
- let _EILSEQ = 25n
272
- let _EINPROGRESS = 26n
273
- let _EINTR = 27n
274
- let _EINVAL = 28n
275
- let _EIO = 29n
276
- let _EISCONN = 30n
277
- let _EISDIR = 31n
278
- let _ELOOP = 32n
279
- let _EMFILE = 33n
280
- let _EMLINK = 34n
281
- let _EMSGSIZE = 35n
282
- let _EMULTIHOP = 36n
283
- let _ENAMETOOLONG = 37n
284
- let _ENETDOWN = 38n
285
- let _ENETRESET = 39n
286
- let _ENETUNREACH = 40n
287
- let _ENFILE = 41n
288
- let _ENOBUFS = 42n
289
- let _ENODEV = 43n
290
- let _ENOENT = 44n
291
- let _ENOEXEC = 45n
292
- let _ENOLCK = 46n
293
- let _ENOLINK = 47n
294
- let _ENOMEM = 48n
295
- let _ENOMSG = 49n
296
- let _ENOPROTOOPT = 50n
297
- let _ENOSPC = 51n
298
- let _ENOSYS = 52n
299
- let _ENOTCONN = 53n
300
- let _ENOTDIR = 54n
301
- let _ENOTEMPTY = 55n
302
- let _ENOTRECOVERABLE = 56n
303
- let _ENOTSOCK = 57n
304
- let _ENOTSUP = 58n
305
- let _ENOTTY = 59n
306
- let _ENXIO = 60n
307
- let _EOVERFLOW = 61n
308
- let _EOWNERDEAD = 62n
309
- let _EPERM = 63n
310
- let _EPIPE = 64n
311
- let _EPROTO = 65n
312
- let _EPROTONOSUPPORT = 66n
313
- let _EPROTOTYPE = 67n
314
- let _ERANGE = 68n
315
- let _EROFS = 69n
316
- let _ESPIPE = 70n
317
- let _ESRCH = 71n
318
- let _ESTALE = 72n
319
- let _ETIMEDOUT = 73n
320
- let _ETXTBSY = 74n
321
- let _EXDEV = 75n
322
- let _ENOTCAPABLE = 76n
167
+ @unsafe
168
+ provide let _ESUCCESS = 0n
169
+ @unsafe
170
+ provide let _ETOOBIG = 1n
171
+ @unsafe
172
+ provide let _EACCES = 2n
173
+ @unsafe
174
+ provide let _EADDRINUSE = 3n
175
+ @unsafe
176
+ provide let _EADDRNOTAVAIL = 4n
177
+ @unsafe
178
+ provide let _EAFNOSUPPORT = 5n
179
+ @unsafe
180
+ provide let _EAGAIN = 6n
181
+ @unsafe
182
+ provide let _EALREADY = 7n
183
+ @unsafe
184
+ provide let _EBADF = 8n
185
+ @unsafe
186
+ provide let _EBADMSG = 9n
187
+ @unsafe
188
+ provide let _EBUSY = 10n
189
+ @unsafe
190
+ provide let _ECANCELED = 11n
191
+ @unsafe
192
+ provide let _ECHILD = 12n
193
+ @unsafe
194
+ provide let _ECONNABORTED = 13n
195
+ @unsafe
196
+ provide let _ECONNREFUSED = 14n
197
+ @unsafe
198
+ provide let _ECONNRESET = 15n
199
+ @unsafe
200
+ provide let _EDEADLK = 16n
201
+ @unsafe
202
+ provide let _EDESTADDRREQ = 17n
203
+ @unsafe
204
+ provide let _EDOM = 18n
205
+ @unsafe
206
+ provide let _EDQUOT = 19n
207
+ @unsafe
208
+ provide let _EEXIST = 20n
209
+ @unsafe
210
+ provide let _EFAULT = 21n
211
+ @unsafe
212
+ provide let _EFBIG = 22n
213
+ @unsafe
214
+ provide let _EHOSTUNREACH = 23n
215
+ @unsafe
216
+ provide let _EIDRM = 24n
217
+ @unsafe
218
+ provide let _EILSEQ = 25n
219
+ @unsafe
220
+ provide let _EINPROGRESS = 26n
221
+ @unsafe
222
+ provide let _EINTR = 27n
223
+ @unsafe
224
+ provide let _EINVAL = 28n
225
+ @unsafe
226
+ provide let _EIO = 29n
227
+ @unsafe
228
+ provide let _EISCONN = 30n
229
+ @unsafe
230
+ provide let _EISDIR = 31n
231
+ @unsafe
232
+ provide let _ELOOP = 32n
233
+ @unsafe
234
+ provide let _EMFILE = 33n
235
+ @unsafe
236
+ provide let _EMLINK = 34n
237
+ @unsafe
238
+ provide let _EMSGSIZE = 35n
239
+ @unsafe
240
+ provide let _EMULTIHOP = 36n
241
+ @unsafe
242
+ provide let _ENAMETOOLONG = 37n
243
+ @unsafe
244
+ provide let _ENETDOWN = 38n
245
+ @unsafe
246
+ provide let _ENETRESET = 39n
247
+ @unsafe
248
+ provide let _ENETUNREACH = 40n
249
+ @unsafe
250
+ provide let _ENFILE = 41n
251
+ @unsafe
252
+ provide let _ENOBUFS = 42n
253
+ @unsafe
254
+ provide let _ENODEV = 43n
255
+ @unsafe
256
+ provide let _ENOENT = 44n
257
+ @unsafe
258
+ provide let _ENOEXEC = 45n
259
+ @unsafe
260
+ provide let _ENOLCK = 46n
261
+ @unsafe
262
+ provide let _ENOLINK = 47n
263
+ @unsafe
264
+ provide let _ENOMEM = 48n
265
+ @unsafe
266
+ provide let _ENOMSG = 49n
267
+ @unsafe
268
+ provide let _ENOPROTOOPT = 50n
269
+ @unsafe
270
+ provide let _ENOSPC = 51n
271
+ @unsafe
272
+ provide let _ENOSYS = 52n
273
+ @unsafe
274
+ provide let _ENOTCONN = 53n
275
+ @unsafe
276
+ provide let _ENOTDIR = 54n
277
+ @unsafe
278
+ provide let _ENOTEMPTY = 55n
279
+ @unsafe
280
+ provide let _ENOTRECOVERABLE = 56n
281
+ @unsafe
282
+ provide let _ENOTSOCK = 57n
283
+ @unsafe
284
+ provide let _ENOTSUP = 58n
285
+ @unsafe
286
+ provide let _ENOTTY = 59n
287
+ @unsafe
288
+ provide let _ENXIO = 60n
289
+ @unsafe
290
+ provide let _EOVERFLOW = 61n
291
+ @unsafe
292
+ provide let _EOWNERDEAD = 62n
293
+ @unsafe
294
+ provide let _EPERM = 63n
295
+ @unsafe
296
+ provide let _EPIPE = 64n
297
+ @unsafe
298
+ provide let _EPROTO = 65n
299
+ @unsafe
300
+ provide let _EPROTONOSUPPORT = 66n
301
+ @unsafe
302
+ provide let _EPROTOTYPE = 67n
303
+ @unsafe
304
+ provide let _ERANGE = 68n
305
+ @unsafe
306
+ provide let _EROFS = 69n
307
+ @unsafe
308
+ provide let _ESPIPE = 70n
309
+ @unsafe
310
+ provide let _ESRCH = 71n
311
+ @unsafe
312
+ provide let _ESTALE = 72n
313
+ @unsafe
314
+ provide let _ETIMEDOUT = 73n
315
+ @unsafe
316
+ provide let _ETXTBSY = 74n
317
+ @unsafe
318
+ provide let _EXDEV = 75n
319
+ @unsafe
320
+ provide let _ENOTCAPABLE = 76n
323
321
 
324
- exception SystemError(Number)
322
+ provide exception SystemError(Number)
325
323
 
326
- let stringOfSystemError = code => {
327
- let n = WasmI32.shrS(WasmI32.fromGrain(code), 1n)
328
- let (==) = WasmI32.eq
324
+ @disableGC
325
+ provide let stringOfSystemError = code => {
326
+ use WasmI32.{ (==), (>>) }
327
+ let n = WasmI32.fromGrain(code) >> 1n
329
328
  match (n) {
330
329
  n when n == _ESUCCESS =>
331
330
  "SystemError: No error occurred. System call completed successfully.",