json-as 1.1.23 → 1.1.25

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.25
4
+
5
+ - feat: Implement SWAR-based string serialization
6
+
7
+ ## 2025-11-28 - 1.1.24
8
+
9
+ - 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)
10
+
3
11
  ## 2025-11-06 - 1.1.23
4
12
 
5
13
  - fix: Map keys should follow proper typing and quote rules [#161](https://github.com/JairusSW/json-as/issues/161)
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
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,288 +1,11 @@
1
- import { bs } from "../lib/as-bs";
2
- import { JSON } from ".";
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
- __SERIALIZE(ptr: usize): void {
14
- bs.proposeSize(62);
15
- store<u64>(bs.offset, 9570565822218363, 0);
16
- store<u16>(bs.offset, 58, 8);
17
- bs.offset += 10;
18
- JSON.__serialize<string>(load<string>(ptr, offsetof<this>("a")));
19
- store<u64>(bs.offset, 9570570117185580, 0);
20
- store<u16>(bs.offset, 58, 8);
21
- bs.offset += 10;
22
- JSON.__serialize<string>(load<string>(ptr, offsetof<this>("b")));
23
- store<u64>(bs.offset, 9570574412152876, 0);
24
- store<u16>(bs.offset, 58, 8);
25
- bs.offset += 10;
26
- JSON.__serialize<string>(load<string>(ptr, offsetof<this>("c")));
27
- store<u64>(bs.offset, 9570578707120172, 0);
28
- store<u16>(bs.offset, 58, 8);
29
- bs.offset += 10;
30
- JSON.__serialize<string>(load<string>(ptr, offsetof<this>("d")));
31
- store<u64>(bs.offset, 9570583002087468, 0);
32
- store<u16>(bs.offset, 58, 8);
33
- bs.offset += 10;
34
- JSON.__serialize<boolean>(load<boolean>(ptr, offsetof<this>("e")));
35
- store<u16>(bs.offset, 125, 0);
36
- bs.offset += 2;
37
- }
38
-
39
- @inline
40
- __INITIALIZE(): this {
41
- store<string>(changetype<usize>(this), "", offsetof<this>("a"));
42
- store<string>(changetype<usize>(this), "", offsetof<this>("b"));
43
- store<string>(changetype<usize>(this), "", offsetof<this>("c"));
44
- store<string>(changetype<usize>(this), "", offsetof<this>("d"));
45
- return this;
46
- }
47
- __DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {
48
- let keyStart: usize = 0;
49
- let keyEnd: usize = 0;
50
- let isKey = false;
51
- let depth: i32 = 0;
52
- let lastIndex: usize = 0;
53
- while (srcStart < srcEnd && JSON.Util.isSpace(load<u16>(srcStart))) srcStart += 2;
54
- while (srcEnd > srcStart && JSON.Util.isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
55
- if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
56
- if (load<u16>(srcStart) != 123) throw new Error("Expected '{' at start of object at position " + (srcEnd - srcStart).toString());
57
- if (load<u16>(srcEnd - 2) != 125) throw new Error("Expected '}' at end of object at position " + (srcEnd - srcStart).toString());
58
- srcStart += 2;
59
- while (srcStart < srcEnd) {
60
- let code = load<u16>(srcStart);
61
- while (JSON.Util.isSpace(code)) code = load<u16>((srcStart += 2));
62
- if (keyStart == 0) {
63
- if (code == 34 && load<u16>(srcStart - 2) !== 92) {
64
- if (isKey) {
65
- keyStart = lastIndex;
66
- keyEnd = srcStart;
67
- console.log("Key: " + JSON.Util.ptrToStr(keyStart, keyEnd));
68
- while (JSON.Util.isSpace((code = load<u16>((srcStart += 2))))) {}
69
- if (code !== 58) throw new Error("Expected ':' after key at position " + (srcEnd - srcStart).toString());
70
- isKey = false;
71
- } else {
72
- isKey = true;
73
- lastIndex = srcStart + 2;
74
- }
75
- }
76
- srcStart += 2;
77
- } else {
78
- if (code == 34) {
79
- lastIndex = srcStart;
80
- srcStart += 2;
81
- while (srcStart < srcEnd) {
82
- const code = load<u16>(srcStart);
83
- if (code == 34 && load<u16>(srcStart - 2) !== 92) {
84
- console.log("Value (string, 1): " + JSON.Util.ptrToStr(lastIndex, srcStart + 2));
85
- switch (<u32>keyEnd - <u32>keyStart) {
86
- case 2: {
87
- const code16 = load<u16>(keyStart);
88
- if (code16 == 97) {
89
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("a"));
90
- srcStart += 4;
91
- keyStart = 0;
92
- break;
93
- } else if (code16 == 98) {
94
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("b"));
95
- srcStart += 4;
96
- keyStart = 0;
97
- break;
98
- } else if (code16 == 99) {
99
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("c"));
100
- srcStart += 4;
101
- keyStart = 0;
102
- break;
103
- } else if (code16 == 100) {
104
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("d"));
105
- srcStart += 4;
106
- keyStart = 0;
107
- break;
108
- } else {
109
- srcStart += 4;
110
- keyStart = 0;
111
- break;
112
- }
113
- }
114
-
115
- default: {
116
- srcStart += 4;
117
- keyStart = 0;
118
- break;
119
- }
120
- }
121
- break;
122
- }
123
- srcStart += 2;
124
- }
125
- } else if (code - 48 <= 9 || code == 45) {
126
- lastIndex = srcStart;
127
- srcStart += 2;
128
- while (srcStart < srcEnd) {
129
- const code = load<u16>(srcStart);
130
- if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {
131
- console.log("Value (number, 2): " + JSON.Util.ptrToStr(lastIndex, srcStart));
132
- srcStart += 2;
133
- keyStart = 0;
134
- break;
135
- }
136
- srcStart += 2;
137
- }
138
- } else if (code == 123) {
139
- lastIndex = srcStart;
140
- depth++;
141
- srcStart += 2;
142
- while (srcStart < srcEnd) {
143
- const code = load<u16>(srcStart);
144
- if (code == 34) {
145
- srcStart += 2;
146
- while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
147
- } else if (code == 125) {
148
- if (--depth == 0) {
149
- srcStart += 2;
150
- console.log("Value (object, 3): " + JSON.Util.ptrToStr(lastIndex, srcStart));
151
- switch (<u32>keyEnd - <u32>keyStart) {
152
- case 2: {
153
- const code16 = load<u16>(keyStart);
154
- if (code16 == 97) {
155
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart), offsetof<this>("a"));
156
- keyStart = 0;
157
- break;
158
- } else if (code16 == 98) {
159
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart), offsetof<this>("b"));
160
- keyStart = 0;
161
- break;
162
- } else if (code16 == 99) {
163
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart), offsetof<this>("c"));
164
- keyStart = 0;
165
- break;
166
- } else if (code16 == 100) {
167
- store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart), offsetof<this>("d"));
168
- keyStart = 0;
169
- break;
170
- } else if (code16 == 101) {
171
- store<boolean>(changetype<usize>(out), JSON.__deserialize<boolean>(lastIndex, srcStart), offsetof<this>("e"));
172
- keyStart = 0;
173
- break;
174
- } else {
175
- keyStart = 0;
176
- break;
177
- }
178
- }
179
-
180
- default: {
181
- keyStart = 0;
182
- break;
183
- }
184
- }
185
- break;
186
- }
187
- } else if (code == 123) depth++;
188
- srcStart += 2;
189
- }
190
- } else if (code == 91) {
191
- lastIndex = srcStart;
192
- depth++;
193
- srcStart += 2;
194
- while (srcStart < srcEnd) {
195
- const code = load<u16>(srcStart);
196
- if (code == 34) {
197
- srcStart += 2;
198
- while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
199
- } else if (code == 93) {
200
- if (--depth == 0) {
201
- srcStart += 2;
202
- console.log("Value (object, 4): " + JSON.Util.ptrToStr(lastIndex, srcStart));
203
- keyStart = 0;
204
- break;
205
- }
206
- } else if (code == 91) depth++;
207
- srcStart += 2;
208
- }
209
- } else if (code == 116) {
210
- if (load<u64>(srcStart) == 28429475166421108) {
211
- srcStart += 8;
212
- console.log("Value (bool, 5): " + JSON.Util.ptrToStr(lastIndex, srcStart - 8));
213
- switch (<u32>keyEnd - <u32>keyStart) {
214
- case 2: {
215
- const code16 = load<u16>(keyStart);
216
- if (code16 == 101) {
217
- store<boolean>(changetype<usize>(out), true, offsetof<this>("e"));
218
- srcStart += 2;
219
- keyStart = 0;
220
- break;
221
- } else {
222
- srcStart += 2;
223
- keyStart = 0;
224
- break;
225
- }
226
- }
227
-
228
- default: {
229
- srcStart += 2;
230
- keyStart = 0;
231
- }
232
- }
233
- } else {
234
- throw new Error("Expected to find 'true' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
235
- }
236
- } else if (code == 102) {
237
- if (load<u64>(srcStart, 2) == 28429466576093281) {
238
- srcStart += 10;
239
- console.log("Value (bool, 6): " + JSON.Util.ptrToStr(lastIndex, srcStart - 10));
240
- switch (<u32>keyEnd - <u32>keyStart) {
241
- case 2: {
242
- const code16 = load<u16>(keyStart);
243
- if (code16 == 101) {
244
- store<boolean>(changetype<usize>(out), false, offsetof<this>("e"));
245
- srcStart += 2;
246
- keyStart = 0;
247
- break;
248
- } else {
249
- srcStart += 2;
250
- keyStart = 0;
251
- break;
252
- }
253
- }
254
-
255
- default: {
256
- srcStart += 2;
257
- keyStart = 0;
258
- }
259
- }
260
- } else {
261
- throw new Error("Expected to find 'false' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
262
- }
263
- } else if (code == 110) {
264
- if (load<u64>(srcStart) == 30399761348886638) {
265
- srcStart += 8;
266
- console.log("Value (null, 7): " + JSON.Util.ptrToStr(lastIndex, srcStart - 8));
267
- srcStart += 2;
268
- keyStart = 0;
269
- }
270
- } else {
271
- srcStart += 2;
272
- keyStart = 0;
273
- }
274
- }
275
- }
276
- return out;
277
- }
278
- }
279
- const good = `{"a":"a","b":"b","e":true,"c":"c","d":"d"}`;
280
- const good2 = `{"a":"a","b":"b","c":"c","d":"d","e":false}`;
281
- const bad = `{"a":"a","b":"b","e":false,"c":"c","d":"d"}`;
282
- const parsedGood = JSON.parse<Example>(good);
283
- console.log("a: " + JSON.stringify(parsedGood));
284
- const parsedGood2 = JSON.parse<Example>(good2);
285
- console.log("b: " + JSON.stringify(parsedGood2));
286
- const parsedBad = JSON.parse<Example>(bad);
287
- console.log("c: " + JSON.stringify(parsedBad));
288
- 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
@@ -1,17 +1,19 @@
1
1
  import { OBJECT, TOTAL_OVERHEAD } from "rt/common";
2
+ const SHRINK_EVERY_N: u32 = 200;
3
+ const MIN_BUFFER_SIZE: u32 = 128;
2
4
 
3
5
  /**
4
6
  * Central buffer namespace for managing memory operations.
5
7
  */
6
8
  export namespace bs {
7
- /** Current buffer pointer. */ // @ts-ignore
8
- export let buffer: ArrayBuffer = new ArrayBuffer(128); //__new(128, idof<ArrayBuffer>());
9
+ /** Current buffer pointer. */
10
+ export let buffer: ArrayBuffer = new ArrayBuffer(MIN_BUFFER_SIZE);
9
11
 
10
12
  /** Current offset within the buffer. */
11
13
  export let offset: usize = changetype<usize>(buffer);
12
14
 
13
15
  /** Byte length of the buffer. */
14
- let bufferSize: usize = 128;
16
+ let bufferSize: usize = MIN_BUFFER_SIZE;
15
17
 
16
18
  /** Proposed size of output */
17
19
  export let stackSize: usize = 0;
@@ -19,6 +21,9 @@ export namespace bs {
19
21
  let pauseOffset: usize = 0;
20
22
  let pauseStackSize: usize = 0;
21
23
 
24
+ let typicalSize: u32 = MIN_BUFFER_SIZE;
25
+ let counter: u32 = 0;
26
+
22
27
  /**
23
28
  * Stores the state of the buffer, allowing further changes to be reset
24
29
  */
@@ -56,9 +61,8 @@ export namespace bs {
56
61
  */
57
62
  // @ts-ignore: decorator
58
63
  @inline export function ensureSize(size: u32): void {
59
- // console.log("Ensure " + (size).toString() + " -> " + (offset + size).toString() + " (" + (offset - changetype<usize>(buffer)).toString() + ")");
60
64
  if (offset + size > bufferSize + changetype<usize>(buffer)) {
61
- const deltaBytes = size + 128;
65
+ const deltaBytes = size + MIN_BUFFER_SIZE;
62
66
  bufferSize += deltaBytes;
63
67
  // @ts-ignore: exists
64
68
  const newPtr = changetype<ArrayBuffer>(__renew(changetype<usize>(buffer), bufferSize));
@@ -74,7 +78,6 @@ export namespace bs {
74
78
  */
75
79
  // @ts-ignore: decorator
76
80
  @inline export function proposeSize(size: u32): void {
77
- // console.log("Propose " + (size).toString() + " -> " + (stackSize + size).toString() + " (" + (offset - changetype<usize>(buffer)).toString() + ")");
78
81
  if ((stackSize += size) > bufferSize) {
79
82
  const deltaBytes = size;
80
83
  bufferSize += deltaBytes;
@@ -86,19 +89,17 @@ export namespace bs {
86
89
  }
87
90
 
88
91
  /**
89
- * Increases the proposed size by n + 128 if necessary.
92
+ * Increases the proposed size by n + MIN_BUFFER_SIZE if necessary.
90
93
  * If necessary, reallocates the buffer to the exact new size.
91
94
  * @param size - The size to grow by.
92
95
  */
93
96
  // @ts-ignore: decorator
94
97
  @inline export function growSize(size: u32): void {
95
- // console.log("Grow " + (size).toString() + " -> " + (stackSize + size).toString() + " (" + (offset - changetype<usize>(buffer)).toString() + ")");
96
98
  if ((stackSize += size) > bufferSize) {
97
- const deltaBytes = size + 128;
99
+ const deltaBytes = size + MIN_BUFFER_SIZE;
98
100
  bufferSize += deltaBytes;
99
101
  // @ts-ignore
100
102
  const newPtr = changetype<ArrayBuffer>(__renew(changetype<usize>(buffer), bufferSize));
101
- // if (buffer != newPtr) console.log(" Old: " + changetype<usize>(buffer).toString() + "\n New: " + changetype<usize>(newPtr).toString());
102
103
  offset = offset + changetype<usize>(newPtr) - changetype<usize>(buffer);
103
104
  buffer = newPtr;
104
105
  }
@@ -147,11 +148,20 @@ export namespace bs {
147
148
  // @ts-ignore: Decorator valid here
148
149
  @inline export function out<T>(): T {
149
150
  const len = offset - changetype<usize>(buffer);
150
- // console.log("Out " + (len).toString() + " -> " + (stackSize).toString() + " (" + (offset - changetype<usize>(buffer)).toString() + ")");
151
151
  // @ts-ignore: exists
152
152
  const _out = __new(len, idof<T>());
153
153
  memory.copy(_out, changetype<usize>(buffer), len);
154
154
 
155
+ counter++;
156
+ typicalSize = (typicalSize + <u32>len) >> 1;
157
+
158
+ if (counter >= SHRINK_EVERY_N) {
159
+ if (bufferSize > (typicalSize << 2)) {
160
+ resize(typicalSize << 1);
161
+ }
162
+ counter = 0;
163
+ }
164
+
155
165
  offset = changetype<usize>(buffer);
156
166
  stackSize = 0;
157
167
  return changetype<T>(_out);
@@ -171,24 +181,18 @@ export namespace bs {
171
181
  if (len != changetype<OBJECT>(dst - TOTAL_OVERHEAD).rtSize) __renew(len, idof<T>());
172
182
  memory.copy(dst, changetype<usize>(buffer), len);
173
183
 
184
+ counter++;
185
+ typicalSize = (typicalSize + len) >> 1;
186
+
187
+ if (counter >= SHRINK_EVERY_N) {
188
+ if (bufferSize > (typicalSize << 2)) {
189
+ resize(typicalSize << 1);
190
+ }
191
+ counter = 0;
192
+ }
193
+
174
194
  offset = changetype<usize>(buffer);
175
195
  stackSize = 0;
176
196
  return changetype<T>(dst);
177
197
  }
178
- }
179
-
180
- // @ts-ignore: Decorator valid here
181
- // @inline function nextPowerOf2(n: u32): u32 {
182
- // return 1 << (32 - clz(n - 1));
183
- // }
184
-
185
- // @ts-ignore: Decorator valid here
186
- @inline function bytes<T>(o: T): i32 {
187
- if (isInteger<T>() || isFloat<T>()) {
188
- return sizeof<T>();
189
- } else if (isManaged<T>() || isReference<T>()) {
190
- return changetype<OBJECT>(changetype<usize>(o) - TOTAL_OVERHEAD).rtSize;
191
- } else {
192
- throw new Error("Cannot convert type " + nameof<T>() + " to bytes!");
193
- }
194
- }
198
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "json-as",
3
- "version": "1.1.23",
3
+ "version": "1.1.25",
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;