|
2 | 2 |
|
3 | 3 | ## Unreleased |
4 | 4 |
|
5 | | -### chore: clean linting and project housekeeping |
6 | | -- Excluded generated `.as-test` build artifacts from ESLint so lint runs only evaluate source files. |
7 | | -- Rewrote a handful of generic deserializer byte-offset calculations to use parser-safe `sizeof<valueof<T>>()` math without changing runtime behavior. |
8 | | -- Updated release/docs project files and removed the obsolete `run-tests.sh` helper. |
9 | | - |
10 | | -### fix: add built-in typed array support |
11 | | -- Added default serialization and deserialization support for all built-in typed arrays. |
12 | | -- Added dedicated `ArrayBuffer` parse/serialize helpers and routed transform-generated `ArrayBuffer` field serialization through a dedicated buffer path inside `@json` classes. |
13 | | -- Added regression coverage for direct typed-array round-trips, explicit `ArrayBuffer` helpers, field-initialized `@json` classes with `ArrayBuffer`, constructor-assigned typed-array fields, and nested `@json` class payloads. |
14 | | - |
15 | | -### fix: finish subtype-aware StaticArray deserialization |
16 | | -- Reworked `StaticArray` deserialization to dispatch by element subtype, mirroring the existing `Array<subtype>` deserializer matrix instead of relying on a generic fallback. |
17 | | -- Materialized complex deserialized array results into fixed `StaticArray` storage for nested arrays, nested static arrays, maps, `JSON.Value`, `JSON.Box`, `JSON.Obj`, `JSON.Raw`, and transform-backed structs. |
18 | | -- Added regression coverage for richer `StaticArray` payloads and fixed a shared `JSON.Raw[]` delimiter edge case exposed by the new `StaticArray<JSON.Raw>` path. |
19 | | - |
20 | | -### fix: tighten default-path runtime correctness |
21 | | -- Fixed `JSON.Value` signed integer tagging and stringification so negative integer values no longer serialize as unsigned. |
22 | | -- Fixed `@omitif("...")` to use the same omit semantics as the callback form during transform-generated serialization. |
23 | | -- Hardened the default deserializers for objects, structs, maps, sets, and raw/string arrays so escaped backslashes and quotes are scanned correctly. |
24 | | -- Implemented `JSON.Obj.from(...)` for serializable object-shaped inputs and aligned `JSON.Box<bool>` with the runtime behavior already exercised by the test suite. |
25 | | -- Added regression coverage for signed `JSON.Value`, decorator omission behavior, escaped nested strings, and raw-array string handling. |
26 | | - |
27 | | -### perf: SIMD string fast path for object deserialization |
28 | | -- Added a SIMD string-field deserializer for fast-path object deserialization. |
29 | | -- Updated transform codegen to emit mode-specific string field helpers and route generic array fields through the shared array-field helper. |
30 | | -- Relaxed fast-path `false` validation and fixed fast-path generation to respect `JSON_MODE=naive`. |
31 | | - |
32 | | -### perf: optimize direct integer array deserialization |
33 | | -- Added direct SWAR and SIMD integer-array deserializers with reusable-storage fast paths and shared whitespace-correct slow fallback. |
34 | | -- Split SWAR array field deserializers by element kind and added dedicated direct array throughput benches for SWAR and SIMD. |
35 | | - |
36 | | -### refactor: add serialize/deserialize index dispatchers |
37 | | -- Added `assembly/serialize/index/*` and `assembly/deserialize/index/*` entrypoints to centralize mode selection. |
38 | | -- Routed the public API through the new index dispatch layer and added top-level barrel exports for both serialize and deserialize. |
39 | | - |
40 | | -### perf: speed up float field deserialization |
41 | | -- Replaced linear power-of-ten loops in the handwritten float deserializers with a bitwise power-of-ten path and batched fractional parsing. |
42 | | -- Switched `deserializeFloat` from `f64.parse(ptrToStr(...))` to the handwritten parser path. |
43 | | -- Improved object fast-path throughput substantially on payloads with exponent-form float fields. |
44 | | - |
45 | | -### fix: avoid pulling SIMD code into non-SIMD bench builds |
46 | | -- Removed unconditional SIMD imports from generic string and array dispatchers so naive and SWAR builds do not emit SIMD ops. |
47 | | -- Made benchmark temp-file cleanup tolerant of missing temporary outputs after `asc --converge`. |
48 | | - |
49 | 5 | ## 2026-03-19 - 1.3.0 |
50 | 6 |
|
| 7 | +- chore: exclude generated `.as-test` build artifacts from ESLint, tighten generic deserializer offset math, and remove the obsolete `run-tests.sh` helper |
| 8 | +- fix: add built-in typed array and `ArrayBuffer` serialization and deserialization support, including transform-generated field handling inside `@json` classes |
| 9 | +- fix: finish subtype-aware `StaticArray` deserialization for nested arrays, maps, JSON value types, transform-backed structs, and related regressions |
| 10 | +- fix: tighten default-path runtime correctness for signed `JSON.Value`, `@omitif("...")`, escaped nested strings, raw-array string handling, and `JSON.Obj.from(...)` |
| 11 | +- perf: add a SIMD string-field deserializer for fast-path object deserialization and align transform codegen with mode-specific field helpers |
| 12 | +- perf: add direct SWAR and SIMD integer-array deserializers with reusable-storage fast paths and dedicated throughput benches |
| 13 | +- refactor: add `assembly/serialize/index/*` and `assembly/deserialize/index/*` dispatchers and route the public API through them |
| 14 | +- perf: speed up float deserialization with handwritten parser paths, bitwise power-of-ten handling, and batched fractional parsing |
| 15 | +- fix: avoid pulling SIMD code into non-SIMD bench builds and make benchmark temp-file cleanup tolerant of missing `asc --converge` outputs |
51 | 16 | - compat: add compatability between json-as and try-as by ignoring methods prefixed by __try |
52 | 17 | - feat: gate generated fast struct deserialization behind `JSON_USE_FAST_PATH=1` |
53 | 18 | - refactor: make generated struct `__DESERIALIZE` methods return the advanced source pointer |
|
0 commit comments