@grain/stdlib 0.4.6 → 0.5.2

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 (85) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/array.gr +18 -18
  3. package/array.md +18 -18
  4. package/bigint.gr +497 -0
  5. package/bigint.md +811 -0
  6. package/buffer.gr +59 -223
  7. package/buffer.md +24 -17
  8. package/bytes.gr +100 -202
  9. package/bytes.md +19 -0
  10. package/char.gr +63 -133
  11. package/exception.gr +28 -2
  12. package/exception.md +43 -0
  13. package/float32.gr +76 -95
  14. package/float32.md +69 -30
  15. package/float64.gr +81 -95
  16. package/float64.md +69 -30
  17. package/hash.gr +37 -37
  18. package/int32.gr +152 -198
  19. package/int32.md +104 -0
  20. package/int64.gr +151 -197
  21. package/int64.md +104 -0
  22. package/list.gr +467 -70
  23. package/list.md +1141 -0
  24. package/map.gr +192 -7
  25. package/map.md +525 -0
  26. package/number.gr +111 -54
  27. package/number.md +100 -3
  28. package/option.md +1 -1
  29. package/package.json +3 -3
  30. package/pervasives.gr +499 -59
  31. package/pervasives.md +1116 -0
  32. package/queue.gr +4 -0
  33. package/queue.md +10 -0
  34. package/random.gr +196 -0
  35. package/random.md +179 -0
  36. package/regex.gr +1833 -842
  37. package/regex.md +11 -11
  38. package/result.md +1 -1
  39. package/runtime/bigint.gr +2045 -0
  40. package/runtime/bigint.md +326 -0
  41. package/runtime/dataStructures.gr +99 -278
  42. package/runtime/dataStructures.md +391 -0
  43. package/runtime/debug.md +6 -0
  44. package/runtime/equal.gr +5 -23
  45. package/runtime/equal.md +6 -0
  46. package/runtime/exception.md +30 -0
  47. package/runtime/gc.gr +20 -3
  48. package/runtime/gc.md +36 -0
  49. package/runtime/malloc.gr +13 -11
  50. package/runtime/malloc.md +55 -0
  51. package/runtime/numberUtils.gr +91 -41
  52. package/runtime/numberUtils.md +54 -0
  53. package/runtime/numbers.gr +1049 -391
  54. package/runtime/numbers.md +300 -0
  55. package/runtime/string.gr +136 -230
  56. package/runtime/string.md +24 -0
  57. package/runtime/stringUtils.gr +58 -38
  58. package/runtime/stringUtils.md +6 -0
  59. package/runtime/unsafe/constants.gr +17 -0
  60. package/runtime/unsafe/constants.md +72 -0
  61. package/runtime/unsafe/conv.md +71 -0
  62. package/runtime/unsafe/errors.md +204 -0
  63. package/runtime/unsafe/memory.md +54 -0
  64. package/runtime/unsafe/printWasm.md +24 -0
  65. package/runtime/unsafe/tags.gr +9 -8
  66. package/runtime/unsafe/tags.md +120 -0
  67. package/runtime/unsafe/wasmf32.md +168 -0
  68. package/runtime/unsafe/wasmf64.md +168 -0
  69. package/runtime/unsafe/wasmi32.md +282 -0
  70. package/runtime/unsafe/wasmi64.md +300 -0
  71. package/runtime/utils/printing.gr +62 -0
  72. package/runtime/utils/printing.md +18 -0
  73. package/runtime/wasi.gr +1 -1
  74. package/runtime/wasi.md +839 -0
  75. package/set.gr +17 -8
  76. package/set.md +24 -21
  77. package/stack.gr +3 -3
  78. package/stack.md +4 -6
  79. package/string.gr +194 -329
  80. package/string.md +3 -3
  81. package/sys/file.gr +245 -429
  82. package/sys/process.gr +27 -45
  83. package/sys/random.gr +47 -16
  84. package/sys/random.md +38 -0
  85. package/sys/time.gr +11 -27
@@ -0,0 +1,300 @@
1
+ ### Wasmi64.**load**
2
+
3
+ ```grain
4
+ load : (WasmI32, WasmI32) -> WasmI64
5
+ ```
6
+
7
+ ### Wasmi64.**load8S**
8
+
9
+ ```grain
10
+ load8S : (WasmI32, WasmI32) -> WasmI64
11
+ ```
12
+
13
+ ### Wasmi64.**load8U**
14
+
15
+ ```grain
16
+ load8U : (WasmI32, WasmI32) -> WasmI64
17
+ ```
18
+
19
+ ### Wasmi64.**load16S**
20
+
21
+ ```grain
22
+ load16S : (WasmI32, WasmI32) -> WasmI64
23
+ ```
24
+
25
+ ### Wasmi64.**load16U**
26
+
27
+ ```grain
28
+ load16U : (WasmI32, WasmI32) -> WasmI64
29
+ ```
30
+
31
+ ### Wasmi64.**load32S**
32
+
33
+ ```grain
34
+ load32S : (WasmI32, WasmI32) -> WasmI64
35
+ ```
36
+
37
+ ### Wasmi64.**load32U**
38
+
39
+ ```grain
40
+ load32U : (WasmI32, WasmI32) -> WasmI64
41
+ ```
42
+
43
+ ### Wasmi64.**store**
44
+
45
+ ```grain
46
+ store : (WasmI32, WasmI64, WasmI32) -> Void
47
+ ```
48
+
49
+ ### Wasmi64.**store8**
50
+
51
+ ```grain
52
+ store8 : (WasmI32, WasmI64, WasmI32) -> Void
53
+ ```
54
+
55
+ ### Wasmi64.**store16**
56
+
57
+ ```grain
58
+ store16 : (WasmI32, WasmI64, WasmI32) -> Void
59
+ ```
60
+
61
+ ### Wasmi64.**store32**
62
+
63
+ ```grain
64
+ store32 : (WasmI32, WasmI64, WasmI32) -> Void
65
+ ```
66
+
67
+ ### Wasmi64.**clz**
68
+
69
+ ```grain
70
+ clz : WasmI64 -> WasmI64
71
+ ```
72
+
73
+ ### Wasmi64.**ctz**
74
+
75
+ ```grain
76
+ ctz : WasmI64 -> WasmI64
77
+ ```
78
+
79
+ ### Wasmi64.**popcnt**
80
+
81
+ ```grain
82
+ popcnt : WasmI64 -> WasmI64
83
+ ```
84
+
85
+ ### Wasmi64.**eqz**
86
+
87
+ ```grain
88
+ eqz : WasmI64 -> Bool
89
+ ```
90
+
91
+ ### Wasmi64.**add**
92
+
93
+ ```grain
94
+ add : (WasmI64, WasmI64) -> WasmI64
95
+ ```
96
+
97
+ ### Wasmi64.**sub**
98
+
99
+ ```grain
100
+ sub : (WasmI64, WasmI64) -> WasmI64
101
+ ```
102
+
103
+ ### Wasmi64.**mul**
104
+
105
+ ```grain
106
+ mul : (WasmI64, WasmI64) -> WasmI64
107
+ ```
108
+
109
+ ### Wasmi64.**divS**
110
+
111
+ ```grain
112
+ divS : (WasmI64, WasmI64) -> WasmI64
113
+ ```
114
+
115
+ ### Wasmi64.**divU**
116
+
117
+ ```grain
118
+ divU : (WasmI64, WasmI64) -> WasmI64
119
+ ```
120
+
121
+ ### Wasmi64.**remS**
122
+
123
+ ```grain
124
+ remS : (WasmI64, WasmI64) -> WasmI64
125
+ ```
126
+
127
+ ### Wasmi64.**remU**
128
+
129
+ ```grain
130
+ remU : (WasmI64, WasmI64) -> WasmI64
131
+ ```
132
+
133
+ ### Wasmi64.**and**
134
+
135
+ ```grain
136
+ and : (WasmI64, WasmI64) -> WasmI64
137
+ ```
138
+
139
+ ### Wasmi64.**or**
140
+
141
+ ```grain
142
+ or : (WasmI64, WasmI64) -> WasmI64
143
+ ```
144
+
145
+ ### Wasmi64.**xor**
146
+
147
+ ```grain
148
+ xor : (WasmI64, WasmI64) -> WasmI64
149
+ ```
150
+
151
+ ### Wasmi64.**shl**
152
+
153
+ ```grain
154
+ shl : (WasmI64, WasmI64) -> WasmI64
155
+ ```
156
+
157
+ ### Wasmi64.**shrU**
158
+
159
+ ```grain
160
+ shrU : (WasmI64, WasmI64) -> WasmI64
161
+ ```
162
+
163
+ ### Wasmi64.**shrS**
164
+
165
+ ```grain
166
+ shrS : (WasmI64, WasmI64) -> WasmI64
167
+ ```
168
+
169
+ ### Wasmi64.**rotl**
170
+
171
+ ```grain
172
+ rotl : (WasmI64, WasmI64) -> WasmI64
173
+ ```
174
+
175
+ ### Wasmi64.**rotr**
176
+
177
+ ```grain
178
+ rotr : (WasmI64, WasmI64) -> WasmI64
179
+ ```
180
+
181
+ ### Wasmi64.**eq**
182
+
183
+ ```grain
184
+ eq : (WasmI64, WasmI64) -> Bool
185
+ ```
186
+
187
+ ### Wasmi64.**ne**
188
+
189
+ ```grain
190
+ ne : (WasmI64, WasmI64) -> Bool
191
+ ```
192
+
193
+ ### Wasmi64.**ltS**
194
+
195
+ ```grain
196
+ ltS : (WasmI64, WasmI64) -> Bool
197
+ ```
198
+
199
+ ### Wasmi64.**ltU**
200
+
201
+ ```grain
202
+ ltU : (WasmI64, WasmI64) -> Bool
203
+ ```
204
+
205
+ ### Wasmi64.**leS**
206
+
207
+ ```grain
208
+ leS : (WasmI64, WasmI64) -> Bool
209
+ ```
210
+
211
+ ### Wasmi64.**leU**
212
+
213
+ ```grain
214
+ leU : (WasmI64, WasmI64) -> Bool
215
+ ```
216
+
217
+ ### Wasmi64.**gtS**
218
+
219
+ ```grain
220
+ gtS : (WasmI64, WasmI64) -> Bool
221
+ ```
222
+
223
+ ### Wasmi64.**gtU**
224
+
225
+ ```grain
226
+ gtU : (WasmI64, WasmI64) -> Bool
227
+ ```
228
+
229
+ ### Wasmi64.**geS**
230
+
231
+ ```grain
232
+ geS : (WasmI64, WasmI64) -> Bool
233
+ ```
234
+
235
+ ### Wasmi64.**geU**
236
+
237
+ ```grain
238
+ geU : (WasmI64, WasmI64) -> Bool
239
+ ```
240
+
241
+ ### Wasmi64.**extendI32S**
242
+
243
+ ```grain
244
+ extendI32S : WasmI32 -> WasmI64
245
+ ```
246
+
247
+ ### Wasmi64.**extendI32U**
248
+
249
+ ```grain
250
+ extendI32U : WasmI32 -> WasmI64
251
+ ```
252
+
253
+ ### Wasmi64.**truncF32S**
254
+
255
+ ```grain
256
+ truncF32S : WasmF32 -> WasmI64
257
+ ```
258
+
259
+ ### Wasmi64.**truncF32U**
260
+
261
+ ```grain
262
+ truncF32U : WasmF32 -> WasmI64
263
+ ```
264
+
265
+ ### Wasmi64.**truncF64S**
266
+
267
+ ```grain
268
+ truncF64S : WasmF64 -> WasmI64
269
+ ```
270
+
271
+ ### Wasmi64.**truncF64U**
272
+
273
+ ```grain
274
+ truncF64U : WasmF64 -> WasmI64
275
+ ```
276
+
277
+ ### Wasmi64.**reinterpretF64**
278
+
279
+ ```grain
280
+ reinterpretF64 : WasmF64 -> WasmI64
281
+ ```
282
+
283
+ ### Wasmi64.**extendS8**
284
+
285
+ ```grain
286
+ extendS8 : WasmI64 -> WasmI64
287
+ ```
288
+
289
+ ### Wasmi64.**extendS16**
290
+
291
+ ```grain
292
+ extendS16 : WasmI64 -> WasmI64
293
+ ```
294
+
295
+ ### Wasmi64.**extendS32**
296
+
297
+ ```grain
298
+ extendS32 : WasmI64 -> WasmI64
299
+ ```
300
+
@@ -0,0 +1,62 @@
1
+ /* grainc-flags --no-pervasives */
2
+ // Printing utilities for runtime code (primarily for debugging)
3
+ import WasmI32 from "runtime/unsafe/wasmi32"
4
+ import Memory from "runtime/unsafe/memory"
5
+ import NumberUtils from "runtime/numberUtils"
6
+
7
+ import foreign wasm fd_write: (
8
+ WasmI32,
9
+ WasmI32,
10
+ WasmI32,
11
+ WasmI32,
12
+ ) -> WasmI32 from "wasi_snapshot_preview1"
13
+
14
+ @unsafe
15
+ export let rec numberToString = (n: WasmI64) => {
16
+ NumberUtils.itoa64(n, 10n)
17
+ }
18
+
19
+ @unsafe
20
+ export let rec printNumber = (n: WasmI64) => {
21
+ // like print(), but `s` should be a Grain string
22
+ let (+) = WasmI32.add
23
+ let s = numberToString(n)
24
+ let ptr = WasmI32.fromGrain(s)
25
+ // iov: [<ptr to string> <nbytes of string> <ptr to newline> <nbytes of newline>] (32 bytes)
26
+ // buf: <iov> <written> <newline char>
27
+ // fd_write(STDOUT (1), iov, len(iov), written)
28
+ let buf = Memory.malloc(37n)
29
+ let iov = buf
30
+ let written = buf + 32n
31
+ let lf = buf + 36n
32
+ WasmI32.store(iov, ptr + 8n, 0n)
33
+ WasmI32.store(iov, WasmI32.load(ptr, 4n), 4n)
34
+ WasmI32.store8(lf, 10n, 0n)
35
+ WasmI32.store(iov, lf, 8n)
36
+ WasmI32.store(iov, 1n, 12n)
37
+ fd_write(1n, iov, 2n, written)
38
+ Memory.free(buf)
39
+ void
40
+ }
41
+
42
+ @unsafe
43
+ export let rec printString = (s: String) => {
44
+ // like print(), but `s` should be a Grain string
45
+ let (+) = WasmI32.add
46
+ let ptr = WasmI32.fromGrain(s)
47
+ // iov: [<ptr to string> <nbytes of string> <ptr to newline> <nbytes of newline>] (32 bytes)
48
+ // buf: <iov> <written> <newline char>
49
+ // fd_write(STDOUT (1), iov, len(iov), written)
50
+ let buf = Memory.malloc(37n)
51
+ let iov = buf
52
+ let written = buf + 32n
53
+ let lf = buf + 36n
54
+ WasmI32.store(iov, ptr + 8n, 0n)
55
+ WasmI32.store(iov, WasmI32.load(ptr, 4n), 4n)
56
+ WasmI32.store8(lf, 10n, 0n)
57
+ WasmI32.store(iov, lf, 8n)
58
+ WasmI32.store(iov, 1n, 12n)
59
+ fd_write(1n, iov, 2n, written)
60
+ Memory.free(buf)
61
+ void
62
+ }
@@ -0,0 +1,18 @@
1
+ ### Printing.**numberToString**
2
+
3
+ ```grain
4
+ numberToString : WasmI64 -> String
5
+ ```
6
+
7
+ ### Printing.**printNumber**
8
+
9
+ ```grain
10
+ printNumber : WasmI64 -> Void
11
+ ```
12
+
13
+ ### Printing.**printString**
14
+
15
+ ```grain
16
+ printString : String -> Void
17
+ ```
18
+
package/runtime/wasi.gr CHANGED
@@ -73,7 +73,7 @@ import foreign wasm fd_pread: (
73
73
  * @param iovs: The pointer to the array of iovs to write
74
74
  * @param iovs_len: The length of the array of iovs
75
75
  * @param nwritten: Where to store the number of bytes written
76
- * @return The number of bytes written
76
+ * @returns The number of bytes written
77
77
  */
78
78
  import foreign wasm fd_write: (
79
79
  WasmI32,