json-as 1.1.24 → 1.1.26

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 CHANGED
@@ -1,5 +1,13 @@
1
1
  # Change Log
2
2
 
3
+ ## 2025-12-21 - 1.1.26
4
+
5
+ - chore: remove log
6
+
7
+ ## 2025-12-21 - 1.1.25
8
+
9
+ - feat: Implement SWAR-based string serialization
10
+
3
11
  ## 2025-11-28 - 1.1.24
4
12
 
5
13
  - feat: Implement a moving average window to determine buffer size (essentially, allow the buffer size to shrink) [#163](https://github.com/JairusSW/json-as/pull/163)
package/README.md CHANGED
@@ -14,6 +14,12 @@ Add the `--transform` to your `asc` command (e.g. in package.json)
14
14
  --transform json-as/transform
15
15
  ```
16
16
 
17
+ Optionally, for additional performance, also add:
18
+
19
+ ```bash
20
+ --enable simd
21
+ ```
22
+
17
23
  Alternatively, add it to your `asconfig.json`
18
24
 
19
25
  ```typescript
@@ -0,0 +1,128 @@
1
+ import { BACK_SLASH } from "../../custom/chars";
2
+ import { DESERIALIZE_ESCAPE_TABLE, ESCAPE_HEX_TABLE } from "../../globals/tables";
3
+
4
+ // @ts-ignore: decorator allowed
5
+ @lazy const LANE_MASK_HIGH = 0xFF00_FF00_FF00_FF00;
6
+ // @ts-ignore: decorator allowed
7
+ @lazy const LANE_MASK_LOW = 0x00FF_00FF_00FF_00FF;
8
+ // @ts-ignore: decorator allowed
9
+ @lazy const UINT64_H8 = 0x8080808080808080;
10
+ // @ts-ignore: decorator allowed
11
+ @lazy const QUOTE_MASK = 0x0022_0022_0022_0022;
12
+ // @ts-ignore: decorator allowed
13
+ @lazy const BACKSLASH_MASK = 0x005C_005C_005C_005C;
14
+ // @ts-ignore: decorator allowed
15
+ @lazy const CONTROL_MASK = 0x0020_0020_0020_0020;
16
+ // @ts-ignore: decorator allowed
17
+ @lazy const U00_MARKER = 13511005048209500;
18
+
19
+ /**
20
+ * Deserializes strings back into into their original form using SIMD operations
21
+ * @param src string to deserialize
22
+ * @param dst buffer to write to
23
+ * @returns number of bytes written
24
+ */
25
+ // todo: optimize and stuff. it works, its not pretty. ideally, i'd like this to be (nearly) branchless
26
+ export function deserializeString_SWAR(srcStart: usize, srcEnd: usize, dst: usize): usize {
27
+ srcStart += 2;
28
+ srcEnd -= 2;
29
+ let dst_ptr = changetype<usize>(dst);
30
+ const src_end_15 = srcEnd - 15;
31
+
32
+ while (srcStart < src_end_15) {
33
+ const block = v128.load(srcStart);
34
+ v128.store(dst_ptr, block);
35
+
36
+ const backslash_indices = i16x8.eq(block, SPLAT_92);
37
+ let mask = i16x8.bitmask(backslash_indices);
38
+
39
+ while (mask != 0) {
40
+ const lane_index = ctz(mask) << 1;
41
+ const dst_offset = dst_ptr + lane_index;
42
+ const src_offset = srcStart + lane_index;
43
+ const code = load<u16>(src_offset, 2);
44
+
45
+ mask &= mask - 1;
46
+ if (code == 117 && load<u32>(src_offset, 4) == 3145776) {
47
+ const block = load<u32>(src_offset, 8);
48
+ const codeA = block & 0xffff;
49
+ const codeB = (block >> 16) & 0xffff;
50
+ const escapedA = load<u8>(ESCAPE_HEX_TABLE + codeA);
51
+ const escapedB = load<u8>(ESCAPE_HEX_TABLE + codeB);
52
+ const escaped = (escapedA << 4) + escapedB;
53
+ // console.log("Escaped:");
54
+ // console.log(" a: " + escapedA.toString())
55
+ // console.log(" b: " + escapedB.toString());
56
+ // console.log(" c: " + escaped.toString());
57
+ // console.log(" o: " + (dst_ptr - dst).toString());
58
+ // console.log(" d: " + (dst_offset - dst).toString())
59
+ // console.log(" l: " + (lane_index).toString())
60
+ store<u16>(dst_offset, escaped);
61
+ v128.store(dst_offset, v128.load(src_offset, 4), 2);
62
+ if (lane_index >= 6) {
63
+ const bytes_left = lane_index - 4;
64
+ srcStart += bytes_left;
65
+ dst_ptr += bytes_left;
66
+ // console.log(" e: " + (bytes_left).toString())
67
+ }
68
+ dst_ptr -= 10;
69
+ } else {
70
+ const escaped = load<u8>(DESERIALIZE_ESCAPE_TABLE + code);
71
+ store<u16>(dst_offset, escaped);
72
+ v128.store(dst_offset, v128.load(src_offset, 4), 2);
73
+ // console.log("Escaped:");
74
+ if (lane_index == 14) {
75
+ srcStart += 2;
76
+ } else {
77
+ dst_ptr -= 2;
78
+ }
79
+ }
80
+ }
81
+
82
+ srcStart += 16;
83
+ dst_ptr += 16;
84
+
85
+ // console.log("src: " + (srcStart - changetype<usize>(src)).toString());
86
+ // console.log("dst: " + (dst_ptr - dst).toString());
87
+ }
88
+ while (srcStart < srcEnd) {
89
+ let code = load<u16>(srcStart);
90
+ if (code == BACK_SLASH) {
91
+ code = load<u16>(DESERIALIZE_ESCAPE_TABLE + load<u8>(srcStart, 2));
92
+ if (code == 117 && load<u32>(srcStart, 4) == 3145776) {
93
+ const block = load<u32>(srcStart, 8);
94
+ const codeA = block & 0xffff;
95
+ const codeB = (block >> 16) & 0xffff;
96
+ const escapedA = load<u8>(ESCAPE_HEX_TABLE + codeA);
97
+ const escapedB = load<u8>(ESCAPE_HEX_TABLE + codeB);
98
+ const escaped = (escapedA << 4) + escapedB;
99
+ store<u16>(dst_ptr, escaped);
100
+ dst_ptr += 2;
101
+ srcStart += 12;
102
+ } else {
103
+ store<u16>(dst_ptr, code);
104
+ dst_ptr += 2;
105
+ srcStart += 4;
106
+ }
107
+ } else {
108
+ store<u16>(dst_ptr, code);
109
+ dst_ptr += 2;
110
+ srcStart += 2;
111
+ }
112
+ }
113
+
114
+ return dst_ptr - dst;
115
+ }
116
+
117
+ // @ts-ignore: decorators allowed
118
+ @inline function v64x4_eq(x: u64, y: u64): u64 {
119
+ const xored = (x ^ LANE_MASK_HIGH) ^ y;
120
+ const mask = (((xored >> 1) | UINT64_H8) - xored) & UINT64_H8;
121
+ return (mask << 1) - (mask >> 7);
122
+ }
123
+
124
+ // @ts-ignore: decorators allowed
125
+ @inline function v64x4_ltu(a: u64, b: u64): u64 {
126
+ // Vigna's algorithm - fastest SWAR unsigned less-than
127
+ return (((a | UINT64_H8) - (b & ~UINT64_H8)) | (a ^ b)) ^ (a | ~b);
128
+ }
package/assembly/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /// <reference path="./index.d.ts" />
2
2
 
3
3
  import { bs } from "../lib/as-bs";
4
- import { serializeString } from "./serialize/simple/string";
4
+ // import { serializeString } from "./serialize/simple/string";
5
5
  import { serializeArray } from "./serialize/simple/array";
6
6
  import { serializeMap } from "./serialize/simple/map";
7
7
  import { serializeDate } from "./serialize/simple/date";
@@ -28,6 +28,7 @@ import { deserializeObject } from "./deserialize/simple/object";
28
28
  import { serializeRaw } from "./serialize/simple/raw";
29
29
  import { deserializeRaw } from "./deserialize/simple/raw";
30
30
  import { serializeString_SIMD } from "./serialize/simd/string";
31
+ import { serializeString_SWAR } from "./serialize/swar/string";
31
32
  // import { deserializeString_SIMD } from "./deserialize/simd/string";
32
33
 
33
34
  /**
@@ -110,14 +111,14 @@ export namespace JSON {
110
111
  // const newSize = bytes(data) + 4;
111
112
  // const newBuf = __new(newSize, idof<string>());
112
113
  // bs.setBuffer(newBuf);
113
- // serializeString(changetype<string>(data));
114
+ // serializeString_SWAR(changetype<string>(data));
114
115
  // bs.setBuffer(oldBuf);
115
116
  // return changetype<string>(newBuf);
116
117
  // }
117
118
  if (ASC_FEATURE_SIMD) {
118
119
  serializeString_SIMD(data as string);
119
120
  } else {
120
- serializeString(data as string);
121
+ serializeString_SWAR(data as string);
121
122
  }
122
123
  return bs.out<string>();
123
124
  // @ts-ignore: Supplied by transform
@@ -261,6 +262,7 @@ export namespace JSON {
261
262
  }
262
263
 
263
264
 
265
+ // @ts-ignore: decorators allowed here
264
266
  @final
265
267
  export class Value {
266
268
  static METHODS: Map<u32, u32> = new Map<u32, u32>();
@@ -553,7 +555,7 @@ export namespace JSON {
553
555
  if (ASC_FEATURE_SIMD) {
554
556
  serializeString_SIMD(src as string);
555
557
  } else {
556
- serializeString(src as string);
558
+ serializeString_SWAR(src as string);
557
559
  }
558
560
  // @ts-ignore: Supplied by transform
559
561
  } else if (isDefined(src.__SERIALIZE_CUSTOM)) {
@@ -722,7 +724,7 @@ export namespace JSON {
722
724
  // const newSize = bytes(data) + 4;
723
725
  // const newBuf = __new(newSize, idof<string>());
724
726
  // bs.setBuffer(newBuf);
725
- // serializeString(changetype<string>(data));
727
+ // serializeString_SWAR(changetype<string>(data));
726
728
  // bs.setBuffer(oldBuf);
727
729
  // return changetype<string>(newBuf);
728
730
  // }
@@ -730,7 +732,7 @@ export namespace JSON {
730
732
  serializeString_SIMD(data as string);
731
733
  } else {
732
734
  bs.saveState();
733
- serializeString(data as string);
735
+ serializeString_SWAR(data as string);
734
736
  }
735
737
  return bs.cpyOut<string>();
736
738
  // @ts-ignore: Supplied by transform
@@ -5,8 +5,6 @@ import { bytes } from "../../util";
5
5
 
6
6
  /**
7
7
  * Serializes strings into their JSON counterparts using SIMD operations
8
- * @param srcStart pointer to begin serializing at
9
- * @param srcEnd pointer to end serialization at
10
8
  */
11
9
  export function serializeString_SIMD(src: string): void {
12
10
  const U00_MARKER = 13511005048209500;
@@ -22,7 +20,7 @@ export function serializeString_SIMD(src: string): void {
22
20
 
23
21
  bs.proposeSize(srcSize + 4);
24
22
 
25
- store<u8>(changetype<usize>(bs.offset), 34); /* " */
23
+ store<u8>(bs.offset, 34); // "
26
24
  bs.offset += 2;
27
25
 
28
26
  while (srcStart <= srcEnd16) {
@@ -39,6 +37,7 @@ export function serializeString_SIMD(src: string): void {
39
37
 
40
38
  while (mask != 0) {
41
39
  const lane_index = ctz(mask) << 1;
40
+ // console.log("lane index " + lane_index.toString());
42
41
  const src_offset = srcStart + lane_index;
43
42
  const code = load<u16>(src_offset) << 2;
44
43
  const escaped = load<u32>(SERIALIZE_ESCAPE_TABLE + code);
@@ -1,4 +1,5 @@
1
1
  import { JSON } from "../..";
2
+ import { serializeString_SWAR } from "../swar/string";
2
3
  import { serializeArray } from "./array";
3
4
  import { serializeBool } from "./bool";
4
5
  import { serializeFloat } from "./float";
@@ -27,7 +28,7 @@ export function serializeArbitrary(src: JSON.Value): void {
27
28
  serializeFloat<f64>(src.get<f64>());
28
29
  break;
29
30
  case JSON.Types.String:
30
- serializeString(src.get<string>());
31
+ serializeString_SWAR(src.get<string>());
31
32
  break;
32
33
  case JSON.Types.Bool:
33
34
  serializeBool(src.get<bool>());
@@ -2,7 +2,7 @@ import { bs } from "../../../lib/as-bs";
2
2
  import { JSON } from "../..";
3
3
  import { BRACE_LEFT, BRACE_RIGHT, COLON, COMMA } from "../../custom/chars";
4
4
  import { serializeArbitrary } from "./arbitrary";
5
- import { serializeString } from "./string";
5
+ import { serializeString_SWAR } from "../swar/string";
6
6
 
7
7
  export function serializeObject(src: JSON.Obj): void {
8
8
  const srcSize = src.size;
@@ -23,7 +23,7 @@ export function serializeObject(src: JSON.Obj): void {
23
23
  bs.offset += 2;
24
24
 
25
25
  for (let i = 0; i < srcEnd; i++) {
26
- serializeString(unchecked(keys[i]));
26
+ serializeString_SWAR(unchecked(keys[i]));
27
27
  bs.growSize(2);
28
28
  store<u16>(bs.offset, COLON);
29
29
  bs.offset += 2;
@@ -34,7 +34,7 @@ export function serializeObject(src: JSON.Obj): void {
34
34
  bs.offset += 2;
35
35
  }
36
36
 
37
- serializeString(unchecked(keys[srcEnd]));
37
+ serializeString_SWAR(unchecked(keys[srcEnd]));
38
38
  bs.growSize(2);
39
39
  store<u16>(bs.offset, COLON);
40
40
  bs.offset += 2;
@@ -0,0 +1,109 @@
1
+ import { bs } from "../../../lib/as-bs";
2
+ import { BACK_SLASH } from "../../custom/chars";
3
+ import { SERIALIZE_ESCAPE_TABLE } from "../../globals/tables";
4
+ import { bytes } from "../../util/bytes";
5
+
6
+
7
+ // @ts-ignore: decorator allowed
8
+ @lazy const LANE_MASK_HIGH = 0xFF00_FF00_FF00_FF00;
9
+ // @ts-ignore: decorator allowed
10
+ @lazy const LANE_MASK_LOW = 0x00FF_00FF_00FF_00FF;
11
+ // @ts-ignore: decorator allowed
12
+ @lazy const UINT64_H8 = 0x8080808080808080;
13
+ // @ts-ignore: decorator allowed
14
+ @lazy const QUOTE_MASK = 0x0022_0022_0022_0022;
15
+ // @ts-ignore: decorator allowed
16
+ @lazy const BACKSLASH_MASK = 0x005C_005C_005C_005C;
17
+ // @ts-ignore: decorator allowed
18
+ @lazy const CONTROL_MASK = 0x0020_0020_0020_0020;
19
+ // @ts-ignore: decorator allowed
20
+ @lazy const U00_MARKER = 13511005048209500;
21
+
22
+ export function serializeString_SWAR(src: string): void {
23
+ const srcSize = bytes(src);
24
+ let srcStart = changetype<usize>(src);
25
+ const srcEnd = srcStart + srcSize;
26
+ const srcEnd8 = srcEnd - 8;
27
+
28
+ bs.proposeSize(srcSize + 4);
29
+ store<u16>(bs.offset, 34); // "
30
+ bs.offset += 2;
31
+
32
+ while (srcStart <= srcEnd8) {
33
+ const block = load<u64>(srcStart);
34
+ store<u64>(bs.offset, block);
35
+
36
+ let mask = (
37
+ v64x4_eq(block, QUOTE_MASK) |
38
+ v64x4_eq(block, BACKSLASH_MASK) |
39
+ v64x4_ltu(block & LANE_MASK_LOW, CONTROL_MASK)
40
+ ) & UINT64_H8
41
+
42
+ while (mask != 0) {
43
+ const lane_index = usize(ctz(mask) >> 3);
44
+ // console.log("lane index " + lane_index.toString());
45
+ const src_offset = srcStart + lane_index;
46
+ const code = load<u16>(src_offset) << 2;
47
+ const escaped = load<u32>(SERIALIZE_ESCAPE_TABLE + code);
48
+
49
+ if ((escaped & 0xffff) != BACK_SLASH) {
50
+ bs.growSize(10);
51
+ const dst_offset = bs.offset + lane_index;
52
+ store<u64>(dst_offset, U00_MARKER);
53
+ store<u32>(dst_offset, escaped, 8);
54
+ // store<u64>(dst_offset, load<u64>(src_offset, 2), 12); // unsafe. can overflow here
55
+ memory.copy(dst_offset + 12, src_offset + 2, (4 - lane_index) << 1);
56
+ bs.offset += 10;
57
+ } else {
58
+ bs.growSize(2);
59
+ const dst_offset = bs.offset + lane_index;
60
+ store<u32>(dst_offset, escaped);
61
+ // store<u64>(dst_offset, load<u64>(src_offset, 2), 4);
62
+ memory.copy(dst_offset + 4, src_offset + 2, (4 - lane_index) << 1);
63
+ bs.offset += 2;
64
+ }
65
+
66
+ mask &= mask - 1;
67
+ }
68
+
69
+ srcStart += 8;
70
+ bs.offset += 8;
71
+ }
72
+
73
+ while (srcStart <= srcEnd - 2) {
74
+ const code = load<u16>(srcStart);
75
+ if (code == 92 || code == 34 || code < 32) {
76
+ const escaped = load<u32>(SERIALIZE_ESCAPE_TABLE + (code << 2));
77
+ if ((escaped & 0xffff) != BACK_SLASH) {
78
+ bs.growSize(10);
79
+ store<u64>(bs.offset, U00_MARKER);
80
+ store<u32>(bs.offset, escaped, 8);
81
+ bs.offset += 12;
82
+ } else {
83
+ bs.growSize(2);
84
+ store<u32>(bs.offset, escaped);
85
+ bs.offset += 4;
86
+ }
87
+ } else {
88
+ store<u16>(bs.offset, code);
89
+ bs.offset += 2;
90
+ }
91
+ srcStart += 2;
92
+ }
93
+
94
+ store<u16>(bs.offset, 34); // "
95
+ bs.offset += 2;
96
+ }
97
+
98
+ // @ts-ignore: decorators allowed
99
+ @inline function v64x4_eq(x: u64, y: u64): u64 {
100
+ const xored = (x ^ LANE_MASK_HIGH) ^ y;
101
+ const mask = (((xored >> 1) | UINT64_H8) - xored) & UINT64_H8;
102
+ return (mask << 1) - (mask >> 7);
103
+ }
104
+
105
+ // @ts-ignore: decorators allowed
106
+ @inline function v64x4_ltu(a: u64, b: u64): u64 {
107
+ // Vigna's algorithm - fastest SWAR unsigned less-than
108
+ return (((a | UINT64_H8) - (b & ~UINT64_H8)) | (a ^ b)) ^ (a | ~b);
109
+ }
@@ -1,290 +1,11 @@
1
- import { bs } from "../lib/as-bs";
2
- import { JSON } from ".";
3
-
4
-
5
- @json
6
- class Example {
7
- constructor(
8
- public a: string,
9
- public b: string,
10
- public c: string,
11
- public d: string,
12
- public e: boolean,
13
- ) {}
14
- __SERIALIZE(ptr: usize): void {
15
- bs.proposeSize(62);
16
- store<u64>(bs.offset, 9570565822218363, 0);
17
- store<u16>(bs.offset, 58, 8);
18
- bs.offset += 10;
19
- JSON.__serialize<string>(load<string>(ptr, offsetof<this>("a")));
20
- store<u64>(bs.offset, 9570570117185580, 0);
21
- store<u16>(bs.offset, 58, 8);
22
- bs.offset += 10;
23
- JSON.__serialize<string>(load<string>(ptr, offsetof<this>("b")));
24
- store<u64>(bs.offset, 9570574412152876, 0);
25
- store<u16>(bs.offset, 58, 8);
26
- bs.offset += 10;
27
- JSON.__serialize<string>(load<string>(ptr, offsetof<this>("c")));
28
- store<u64>(bs.offset, 9570578707120172, 0);
29
- store<u16>(bs.offset, 58, 8);
30
- bs.offset += 10;
31
- JSON.__serialize<string>(load<string>(ptr, offsetof<this>("d")));
32
- store<u64>(bs.offset, 9570583002087468, 0);
33
- store<u16>(bs.offset, 58, 8);
34
- bs.offset += 10;
35
- JSON.__serialize<boolean>(load<boolean>(ptr, offsetof<this>("e")));
36
- store<u16>(bs.offset, 125, 0);
37
- bs.offset += 2;
38
- }
39
-
40
-
41
- @inline
42
- __INITIALIZE(): this {
43
- store<string>(changetype<usize>(this), "", offsetof<this>("a"));
44
- store<string>(changetype<usize>(this), "", offsetof<this>("b"));
45
- store<string>(changetype<usize>(this), "", offsetof<this>("c"));
46
- store<string>(changetype<usize>(this), "", offsetof<this>("d"));
47
- return this;
48
- }
49
- __DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {
50
- let keyStart: usize = 0;
51
- let keyEnd: usize = 0;
52
- let isKey = false;
53
- let depth: i32 = 0;
54
- let lastIndex: usize = 0;
55
- while (srcStart < srcEnd && JSON.Util.isSpace(load<u16>(srcStart))) srcStart += 2;
56
- while (srcEnd > srcStart && JSON.Util.isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
57
- if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
58
- if (load<u16>(srcStart) != 123) throw new Error("Expected '{' at start of object at position " + (srcEnd - srcStart).toString());
59
- if (load<u16>(srcEnd - 2) != 125) throw new Error("Expected '}' at end of object at position " + (srcEnd - srcStart).toString());
60
- srcStart += 2;
61
- while (srcStart < srcEnd) {
62
- let code = load<u16>(srcStart);
63
- while (JSON.Util.isSpace(code)) code = load<u16>((srcStart += 2));
64
- if (keyStart == 0) {
65
- if (code == 34 && load<u16>(srcStart - 2) !== 92) {
66
- if (isKey) {
67
- keyStart = lastIndex;
68
- keyEnd = srcStart;
69
- console.log("Key: " + JSON.Util.ptrToStr(keyStart, keyEnd));
70
- while (JSON.Util.isSpace((code = load<u16>((srcStart += 2))))) {}
71
- if (code !== 58) throw new Error("Expected ':' after key at position " + (srcEnd - srcStart).toString());
72
- isKey = false;
73
- } else {
74
- isKey = true;
75
- lastIndex = srcStart + 2;
76
- }
77
- }
78
- srcStart += 2;
79
- } else {
80
- if (code == 34) {
81
- lastIndex = srcStart;
82
- srcStart += 2;
83
- while (srcStart < srcEnd) {
84
- const code = load<u16>(srcStart);
85
- if (code == 34 && load<u16>(srcStart - 2) !== 92) {
86
- console.log("Value (string, 1): " + JSON.Util.ptrToStr(lastIndex, srcStart + 2));
87
- switch (<u32>keyEnd - <u32>keyStart) {
88
- case 2: {
89
- const code16 = load<u16>(keyStart);
90
- if (code16 == 97) {
91
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("a"));
92
- srcStart += 4;
93
- keyStart = 0;
94
- break;
95
- } else if (code16 == 98) {
96
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("b"));
97
- srcStart += 4;
98
- keyStart = 0;
99
- break;
100
- } else if (code16 == 99) {
101
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("c"));
102
- srcStart += 4;
103
- keyStart = 0;
104
- break;
105
- } else if (code16 == 100) {
106
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("d"));
107
- srcStart += 4;
108
- keyStart = 0;
109
- break;
110
- } else {
111
- srcStart += 4;
112
- keyStart = 0;
113
- break;
114
- }
115
- }
116
-
117
- default: {
118
- srcStart += 4;
119
- keyStart = 0;
120
- break;
121
- }
122
- }
123
- break;
124
- }
125
- srcStart += 2;
126
- }
127
- } else if (code - 48 <= 9 || code == 45) {
128
- lastIndex = srcStart;
129
- srcStart += 2;
130
- while (srcStart < srcEnd) {
131
- const code = load<u16>(srcStart);
132
- if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {
133
- console.log("Value (number, 2): " + JSON.Util.ptrToStr(lastIndex, srcStart));
134
- srcStart += 2;
135
- keyStart = 0;
136
- break;
137
- }
138
- srcStart += 2;
139
- }
140
- } else if (code == 123) {
141
- lastIndex = srcStart;
142
- depth++;
143
- srcStart += 2;
144
- while (srcStart < srcEnd) {
145
- const code = load<u16>(srcStart);
146
- if (code == 34) {
147
- srcStart += 2;
148
- while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
149
- } else if (code == 125) {
150
- if (--depth == 0) {
151
- srcStart += 2;
152
- console.log("Value (object, 3): " + JSON.Util.ptrToStr(lastIndex, srcStart));
153
- switch (<u32>keyEnd - <u32>keyStart) {
154
- case 2: {
155
- const code16 = load<u16>(keyStart);
156
- if (code16 == 97) {
157
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart), offsetof<this>("a"));
158
- keyStart = 0;
159
- break;
160
- } else if (code16 == 98) {
161
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart), offsetof<this>("b"));
162
- keyStart = 0;
163
- break;
164
- } else if (code16 == 99) {
165
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart), offsetof<this>("c"));
166
- keyStart = 0;
167
- break;
168
- } else if (code16 == 100) {
169
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart), offsetof<this>("d"));
170
- keyStart = 0;
171
- break;
172
- } else if (code16 == 101) {
173
- store<boolean>(changetype<usize>(out), JSON.__deserialize<boolean>(lastIndex, srcStart), offsetof<this>("e"));
174
- keyStart = 0;
175
- break;
176
- } else {
177
- keyStart = 0;
178
- break;
179
- }
180
- }
181
-
182
- default: {
183
- keyStart = 0;
184
- break;
185
- }
186
- }
187
- break;
188
- }
189
- } else if (code == 123) depth++;
190
- srcStart += 2;
191
- }
192
- } else if (code == 91) {
193
- lastIndex = srcStart;
194
- depth++;
195
- srcStart += 2;
196
- while (srcStart < srcEnd) {
197
- const code = load<u16>(srcStart);
198
- if (code == 34) {
199
- srcStart += 2;
200
- while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
201
- } else if (code == 93) {
202
- if (--depth == 0) {
203
- srcStart += 2;
204
- console.log("Value (object, 4): " + JSON.Util.ptrToStr(lastIndex, srcStart));
205
- keyStart = 0;
206
- break;
207
- }
208
- } else if (code == 91) depth++;
209
- srcStart += 2;
210
- }
211
- } else if (code == 116) {
212
- if (load<u64>(srcStart) == 28429475166421108) {
213
- srcStart += 8;
214
- console.log("Value (bool, 5): " + JSON.Util.ptrToStr(lastIndex, srcStart - 8));
215
- switch (<u32>keyEnd - <u32>keyStart) {
216
- case 2: {
217
- const code16 = load<u16>(keyStart);
218
- if (code16 == 101) {
219
- store<boolean>(changetype<usize>(out), true, offsetof<this>("e"));
220
- srcStart += 2;
221
- keyStart = 0;
222
- break;
223
- } else {
224
- srcStart += 2;
225
- keyStart = 0;
226
- break;
227
- }
228
- }
229
-
230
- default: {
231
- srcStart += 2;
232
- keyStart = 0;
233
- }
234
- }
235
- } else {
236
- throw new Error("Expected to find 'true' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
237
- }
238
- } else if (code == 102) {
239
- if (load<u64>(srcStart, 2) == 28429466576093281) {
240
- srcStart += 10;
241
- console.log("Value (bool, 6): " + JSON.Util.ptrToStr(lastIndex, srcStart - 10));
242
- switch (<u32>keyEnd - <u32>keyStart) {
243
- case 2: {
244
- const code16 = load<u16>(keyStart);
245
- if (code16 == 101) {
246
- store<boolean>(changetype<usize>(out), false, offsetof<this>("e"));
247
- srcStart += 2;
248
- keyStart = 0;
249
- break;
250
- } else {
251
- srcStart += 2;
252
- keyStart = 0;
253
- break;
254
- }
255
- }
256
-
257
- default: {
258
- srcStart += 2;
259
- keyStart = 0;
260
- }
261
- }
262
- } else {
263
- throw new Error("Expected to find 'false' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
264
- }
265
- } else if (code == 110) {
266
- if (load<u64>(srcStart) == 30399761348886638) {
267
- srcStart += 8;
268
- console.log("Value (null, 7): " + JSON.Util.ptrToStr(lastIndex, srcStart - 8));
269
- srcStart += 2;
270
- keyStart = 0;
271
- }
272
- } else {
273
- srcStart += 2;
274
- keyStart = 0;
275
- }
276
- }
277
- }
278
- return out;
279
- }
280
- }
281
- const good = `{"a":"a","b":"b","e":true,"c":"c","d":"d"}`;
282
- const good2 = `{"a":"a","b":"b","c":"c","d":"d","e":false}`;
283
- const bad = `{"a":"a","b":"b","e":false,"c":"c","d":"d"}`;
284
- const parsedGood = JSON.parse<Example>(good);
285
- console.log("a: " + JSON.stringify(parsedGood));
286
- const parsedGood2 = JSON.parse<Example>(good2);
287
- console.log("b: " + JSON.stringify(parsedGood2));
288
- const parsedBad = JSON.parse<Example>(bad);
289
- console.log("c: " + JSON.stringify(parsedBad));
290
- console.log(load<u64>(changetype<usize>("alse")).toString());
1
+ import {
2
+ bs
3
+ } from "../lib/as-bs";
4
+ import {
5
+ serializeString_SIMD
6
+ } from "./serialize/simd/string";
7
+ import {
8
+ serializeString_SWAR
9
+ } from "./serialize/swar/string";
10
+ serializeString_SWAR("a\"cd");
11
+ console.log(bs.out<string>());
package/assembly/test.ts CHANGED
@@ -1,25 +1,7 @@
1
- import { JSON } from ".";
1
+ import { bs } from "../lib/as-bs";
2
+ import { serializeString_SIMD } from "./serialize/simd/string";
3
+ import { serializeString_SWAR } from "./serialize/swar/string";
2
4
 
3
-
4
- @json
5
- class Example {
6
- constructor(
7
- public a: string,
8
- public b: string,
9
- public c: string,
10
- public d: string,
11
- public e: boolean,
12
- ) {}
13
- }
14
-
15
- const good = `{"a":"a","b":"b","e":true,"c":"c","d":"d"}`;
16
- const good2 = `{"a":"a","b":"b","c":"c","d":"d","e":false}`;
17
- const bad = `{"a":"a","b":"b","e":false,"c":"c","d":"d"}`;
18
- const parsedGood = JSON.parse<Example>(good);
19
- console.log("a: " + JSON.stringify(parsedGood));
20
- const parsedGood2 = JSON.parse<Example>(good2);
21
- console.log("b: " + JSON.stringify(parsedGood2));
22
- const parsedBad = JSON.parse<Example>(bad);
23
- console.log("c: " + JSON.stringify(parsedBad));
24
-
25
- console.log(load<u64>(changetype<usize>("alse")).toString());
5
+ serializeString_SWAR("a\"cd");
6
+ // serializeString_SIMD("a\0b\"\nd");
7
+ console.log(bs.out<string>());
package/lib/as-bs.ts CHANGED
@@ -156,7 +156,7 @@ export namespace bs {
156
156
  typicalSize = (typicalSize + <u32>len) >> 1;
157
157
 
158
158
  if (counter >= SHRINK_EVERY_N) {
159
- if (bufferSize > typicalSize << 2) {
159
+ if (bufferSize > (typicalSize << 2)) {
160
160
  resize(typicalSize << 1);
161
161
  }
162
162
  counter = 0;
@@ -185,14 +185,14 @@ export namespace bs {
185
185
  typicalSize = (typicalSize + len) >> 1;
186
186
 
187
187
  if (counter >= SHRINK_EVERY_N) {
188
- if (bufferSize > typicalSize << 2) {
188
+ if (bufferSize > (typicalSize << 2)) {
189
189
  resize(typicalSize << 1);
190
190
  }
191
191
  counter = 0;
192
192
  }
193
-
193
+
194
194
  offset = changetype<usize>(buffer);
195
195
  stackSize = 0;
196
196
  return changetype<T>(dst);
197
197
  }
198
- }
198
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "json-as",
3
- "version": "1.1.24",
3
+ "version": "1.1.26",
4
4
  "author": "Jairus Tanaka",
5
5
  "repository": {
6
6
  "type": "git",
@@ -9,12 +9,12 @@
9
9
  "main": "transform/lib/index.js",
10
10
  "devDependencies": {
11
11
  "@assemblyscript/wasi-shim": "^0.1.0",
12
- "@types/node": "^24.2.1",
13
- "assemblyscript": "^0.28.4",
12
+ "@types/node": "^25.0.3",
13
+ "assemblyscript": "^0.28.9",
14
14
  "assemblyscript-prettier": "^3.0.1",
15
- "prettier": "^3.6.2",
16
- "tinybench": "^5.0.1",
17
- "typescript": "^5.9.2"
15
+ "prettier": "^3.7.4",
16
+ "tinybench": "^6.0.0",
17
+ "typescript": "^5.9.3"
18
18
  },
19
19
  "bugs": {
20
20
  "url": "https://github.com/JairusSW/json-as/issues"
@@ -31,7 +31,7 @@
31
31
  "Loredana Cirstea",
32
32
  "Accipiter Nisus"
33
33
  ],
34
- "description": "The only JSON library you'll need for AssemblyScript. SIMD enabled",
34
+ "description": "The only JSON library you'll need for AssemblyScript with SIMD and SWAR",
35
35
  "homepage": "https://github.com/JairusSW/json-as#readme",
36
36
  "keywords": [
37
37
  "assemblyscript",
package/run-bench.as.sh CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/bin/bash
2
2
  RUNTIMES=${RUNTIMES:-"minimal stub"}
3
3
  ENGINES=${ENGINES:-"liftoff ignition sparkplug turbofan llvm"}
4
- for file in ./assembly/__benches__/vec3.bench.ts; do
4
+ for file in ./assembly/__benches__/abc.bench.ts; do
5
5
  filename=$(basename -- "$file")
6
6
  for runtime in $RUNTIMES; do
7
7
  output="./build/${filename%.ts}.${runtime}"
@@ -1 +1 @@
1
- {"version":3,"file":"visitor.js","sourceRoot":"","sources":["../src/visitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"visitor.js","sourceRoot":"","sources":["../src/visitor.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { ArrayLiteralExpression, AssertionExpression, BinaryExpression, CallExpression, ElementAccessExpression, FloatLiteralExpression, FunctionTypeNode, IdentifierExpression, NamedTypeNode, Node, ObjectLiteralExpression, Source, TypeParameterNode, BlockStatement, BreakStatement, ClassDeclaration, ClassExpression, CommaExpression, ContinueStatement, DecoratorNode, DoStatement, EmptyStatement, EnumDeclaration, EnumValueDeclaration, ExportDefaultStatement, ExportImportStatement, ExportMember, ExportStatement, ExpressionStatement, FieldDeclaration, ForStatement, FunctionDeclaration, FunctionExpression, IfStatement, ImportDeclaration, ImportStatement, IndexSignatureNode, InstanceOfExpression, IntegerLiteralExpression, InterfaceDeclaration, LiteralExpression, MethodDeclaration, NamespaceDeclaration, NewExpression, ParameterNode, ParenthesizedExpression, PropertyAccessExpression, RegexpLiteralExpression, ReturnStatement, StringLiteralExpression, SwitchCase, SwitchStatement, TemplateLiteralExpression, TernaryExpression, ThrowStatement, TryStatement, TypeDeclaration, TypeName, UnaryPostfixExpression, UnaryPrefixExpression, VariableDeclaration, VariableStatement, WhileStatement, NodeKind, TypeNode, Expression, LiteralKind, UnaryExpression, SuperExpression, FalseExpression, TrueExpression, ThisExpression, NullExpression, ConstructorExpression, Statement, VoidStatement, CompiledExpression, CommentNode, Module, OmittedExpression, ForOfStatement, ModuleDeclaration } from "assemblyscript/dist/assemblyscript.js";
2
- import { toString } from "./util.js";
3
2
 
4
3
  export class Visitor {
5
4
  public currentSource: Source | null = null;