@grain/stdlib 0.6.6 → 0.7.1
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/CHANGELOG.md +67 -0
- package/LICENSE +1 -1
- package/README.md +2 -2
- package/array.gr +55 -7
- package/array.md +606 -560
- package/bigint.md +228 -228
- package/buffer.gr +85 -53
- package/buffer.md +442 -319
- package/bytes.gr +112 -35
- package/bytes.md +299 -219
- package/char.gr +201 -99
- package/char.md +447 -120
- package/exception.gr +11 -11
- package/exception.md +29 -4
- package/float32.gr +327 -3
- package/float32.md +698 -111
- package/float64.gr +320 -3
- package/float64.md +698 -111
- package/fs.gr +1082 -0
- package/fs.md +630 -0
- package/hash.gr +142 -88
- package/hash.md +105 -17
- package/int16.md +178 -178
- package/int32.gr +26 -5
- package/int32.md +266 -231
- package/int64.gr +27 -2
- package/int64.md +266 -231
- package/int8.md +178 -178
- package/json.gr +366 -51
- package/json.md +431 -15
- package/list.gr +328 -31
- package/list.md +759 -336
- package/map.gr +20 -12
- package/map.md +266 -260
- package/marshal.gr +41 -40
- package/marshal.md +14 -14
- package/number.gr +278 -35
- package/number.md +688 -269
- package/option.md +162 -162
- package/package.json +5 -3
- package/path.gr +48 -0
- package/path.md +180 -89
- package/pervasives.gr +2 -2
- package/pervasives.md +275 -275
- package/priorityqueue.gr +7 -7
- package/priorityqueue.md +131 -131
- package/queue.gr +183 -29
- package/queue.md +404 -148
- package/random.md +43 -43
- package/range.gr +4 -4
- package/range.md +42 -42
- package/rational.md +123 -123
- package/regex.gr +52 -51
- package/regex.md +102 -102
- package/result.md +118 -118
- package/runtime/atof/common.md +39 -39
- package/runtime/atof/decimal.gr +6 -6
- package/runtime/atof/decimal.md +14 -14
- package/runtime/atof/lemire.gr +5 -5
- package/runtime/atof/lemire.md +1 -1
- package/runtime/atof/parse.gr +16 -16
- package/runtime/atof/parse.md +2 -2
- package/runtime/atof/slow.md +1 -1
- package/runtime/atof/table.md +2 -2
- package/runtime/atoi/parse.gr +3 -3
- package/runtime/atoi/parse.md +1 -1
- package/runtime/bigint.gr +15 -47
- package/runtime/bigint.md +54 -60
- package/runtime/compare.gr +2 -2
- package/runtime/compare.md +8 -8
- package/runtime/dataStructures.md +211 -211
- package/runtime/debugPrint.gr +4 -1
- package/runtime/debugPrint.md +9 -9
- package/runtime/equal.gr +99 -77
- package/runtime/equal.md +8 -8
- package/runtime/exception.gr +62 -82
- package/runtime/exception.md +62 -11
- package/runtime/gc.gr +39 -45
- package/runtime/gc.md +4 -4
- package/runtime/malloc.gr +7 -7
- package/runtime/malloc.md +13 -13
- package/runtime/math/kernel/cos.gr +70 -0
- package/runtime/math/kernel/cos.md +14 -0
- package/runtime/math/kernel/sin.gr +65 -0
- package/runtime/math/kernel/sin.md +14 -0
- package/runtime/math/kernel/tan.gr +136 -0
- package/runtime/math/kernel/tan.md +14 -0
- package/runtime/math/rempio2.gr +244 -0
- package/runtime/math/rempio2.md +14 -0
- package/runtime/math/trig.gr +130 -0
- package/runtime/math/trig.md +28 -0
- package/runtime/math/umuldi.gr +26 -0
- package/runtime/math/umuldi.md +14 -0
- package/runtime/numberUtils.gr +29 -29
- package/runtime/numberUtils.md +12 -12
- package/runtime/numbers.gr +373 -381
- package/runtime/numbers.md +348 -342
- package/runtime/string.gr +37 -105
- package/runtime/string.md +20 -26
- package/runtime/unsafe/constants.md +24 -24
- package/runtime/unsafe/conv.md +19 -19
- package/runtime/unsafe/memory.gr +24 -20
- package/runtime/unsafe/memory.md +27 -7
- package/runtime/unsafe/offsets.gr +36 -0
- package/runtime/unsafe/offsets.md +88 -0
- package/runtime/unsafe/panic.gr +28 -0
- package/runtime/unsafe/panic.md +14 -0
- package/runtime/unsafe/tags.md +32 -32
- package/runtime/unsafe/wasmf32.md +28 -28
- package/runtime/unsafe/wasmf64.md +28 -28
- package/runtime/unsafe/wasmi32.md +47 -47
- package/runtime/unsafe/wasmi64.md +50 -50
- package/runtime/utf8.gr +189 -0
- package/runtime/utf8.md +117 -0
- package/runtime/wasi.gr +4 -2
- package/runtime/wasi.md +147 -147
- package/set.gr +18 -11
- package/set.md +253 -247
- package/stack.gr +171 -2
- package/stack.md +371 -89
- package/string.gr +352 -557
- package/string.md +298 -255
- package/uint16.md +170 -170
- package/uint32.gr +25 -4
- package/uint32.md +249 -214
- package/uint64.gr +25 -5
- package/uint64.md +249 -214
- package/uint8.md +170 -170
- package/uri.gr +57 -53
- package/uri.md +88 -89
- package/wasi/file.gr +67 -59
- package/wasi/file.md +308 -308
- package/wasi/process.md +26 -26
- package/wasi/random.md +12 -12
- package/wasi/time.md +16 -16
- package/runtime/utils/printing.gr +0 -60
- package/runtime/utils/printing.md +0 -26
package/int32.gr
CHANGED
|
@@ -10,6 +10,12 @@
|
|
|
10
10
|
*/
|
|
11
11
|
module Int32
|
|
12
12
|
|
|
13
|
+
from "runtime/unsafe/offsets" include Offsets
|
|
14
|
+
use Offsets.{
|
|
15
|
+
_UINT32_VALUE_OFFSET as _VALUE_OFFSET,
|
|
16
|
+
_UINT32_VALUE_OFFSET,
|
|
17
|
+
_FLOAT32_VALUE_OFFSET,
|
|
18
|
+
}
|
|
13
19
|
from "runtime/unsafe/wasmi32" include WasmI32
|
|
14
20
|
use WasmI32.{
|
|
15
21
|
(+),
|
|
@@ -40,9 +46,6 @@ use Numbers.{
|
|
|
40
46
|
coerceInt32ToNumber as toNumber,
|
|
41
47
|
}
|
|
42
48
|
|
|
43
|
-
@unsafe
|
|
44
|
-
let _VALUE_OFFSET = 4n
|
|
45
|
-
|
|
46
49
|
provide { fromNumber, toNumber }
|
|
47
50
|
|
|
48
51
|
/**
|
|
@@ -57,7 +60,25 @@ provide { fromNumber, toNumber }
|
|
|
57
60
|
*/
|
|
58
61
|
@unsafe
|
|
59
62
|
provide let fromUint32 = (number: Uint32) => {
|
|
60
|
-
let x = WasmI32.load(WasmI32.fromGrain(number),
|
|
63
|
+
let x = WasmI32.load(WasmI32.fromGrain(number), _UINT32_VALUE_OFFSET)
|
|
64
|
+
let result = newInt32(x)
|
|
65
|
+
WasmI32.toGrain(result): Int32
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Interprets a Float32 as an Int32.
|
|
70
|
+
*
|
|
71
|
+
* @param value: The value to convert
|
|
72
|
+
* @returns The Float32 interpreted as an Int32
|
|
73
|
+
*
|
|
74
|
+
* @example Int32.reinterpretFloat32(1.0f) == 1065353216l
|
|
75
|
+
* @example Int32.reinterpretFloat32(-1.0f) == -1065353216l
|
|
76
|
+
*
|
|
77
|
+
* @since v0.7.0
|
|
78
|
+
*/
|
|
79
|
+
@unsafe
|
|
80
|
+
provide let reinterpretFloat32 = (value: Float32) => {
|
|
81
|
+
let x = WasmI32.load(WasmI32.fromGrain(value), _FLOAT32_VALUE_OFFSET)
|
|
61
82
|
let result = newInt32(x)
|
|
62
83
|
WasmI32.toGrain(result): Int32
|
|
63
84
|
}
|
|
@@ -642,7 +663,7 @@ let rec expBySquaring = (y, x, n) => {
|
|
|
642
663
|
* @returns The base raised to the given power
|
|
643
664
|
*
|
|
644
665
|
* @example
|
|
645
|
-
*
|
|
666
|
+
* use Int32.{ (**) }
|
|
646
667
|
* assert 2l ** 3l == 8l
|
|
647
668
|
*
|
|
648
669
|
* @since v0.6.0
|