@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/int64.gr
CHANGED
|
@@ -10,6 +10,13 @@
|
|
|
10
10
|
*/
|
|
11
11
|
module Int64
|
|
12
12
|
|
|
13
|
+
from "runtime/unsafe/offsets" include Offsets
|
|
14
|
+
// TODO(#703): Use `_VALUE_OFFSET` throughout this module
|
|
15
|
+
use Offsets.{
|
|
16
|
+
_INT64_VALUE_OFFSET as _VALUE_OFFSET,
|
|
17
|
+
_UINT64_VALUE_OFFSET,
|
|
18
|
+
_FLOAT64_VALUE_OFFSET,
|
|
19
|
+
}
|
|
13
20
|
from "runtime/unsafe/wasmi32" include WasmI32
|
|
14
21
|
from "runtime/unsafe/wasmi64" include WasmI64
|
|
15
22
|
use WasmI64.{ (==), (!=), (&), (|), (^), (<<), (>>), (<), (<=), (>), (>=) }
|
|
@@ -38,7 +45,25 @@ provide { fromNumber, toNumber }
|
|
|
38
45
|
*/
|
|
39
46
|
@unsafe
|
|
40
47
|
provide let fromUint64 = (number: Uint64) => {
|
|
41
|
-
let x = WasmI64.load(WasmI32.fromGrain(number),
|
|
48
|
+
let x = WasmI64.load(WasmI32.fromGrain(number), _UINT64_VALUE_OFFSET)
|
|
49
|
+
let result = newInt64(x)
|
|
50
|
+
WasmI32.toGrain(result): Int64
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Interprets a Float64 as an Int64.
|
|
55
|
+
*
|
|
56
|
+
* @param value: The value to convert
|
|
57
|
+
* @returns The Float64 interpreted as an Int64
|
|
58
|
+
*
|
|
59
|
+
* @example assert Int64.reinterpretFloat64(1.0d) == 4607182418800017408L
|
|
60
|
+
* @example assert Int64.reinterpretFloat64(-1.0d) == -4616189618054758400L
|
|
61
|
+
*
|
|
62
|
+
* @since v0.7.0
|
|
63
|
+
*/
|
|
64
|
+
@unsafe
|
|
65
|
+
provide let reinterpretFloat64 = (value: Float64) => {
|
|
66
|
+
let x = WasmI64.load(WasmI32.fromGrain(value), _FLOAT64_VALUE_OFFSET)
|
|
42
67
|
let result = newInt64(x)
|
|
43
68
|
WasmI32.toGrain(result): Int64
|
|
44
69
|
}
|
|
@@ -629,7 +654,7 @@ let rec expBySquaring = (y, x, n) => {
|
|
|
629
654
|
* @returns The base raised to the given power
|
|
630
655
|
*
|
|
631
656
|
* @example
|
|
632
|
-
*
|
|
657
|
+
* use Int64.{ (**) }
|
|
633
658
|
* assert 2L ** 3L == 8L
|
|
634
659
|
*
|
|
635
660
|
* @since v0.6.0
|