nosj 0.3.0-aarch64-linux → 0.3.1-aarch64-linux
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -0
- data/README.md +5 -0
- data/lib/nosj/3.3/nosj.so +0 -0
- data/lib/nosj/3.4/nosj.so +0 -0
- data/lib/nosj/4.0/nosj.so +0 -0
- data/lib/nosj/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9d1c48677ffc867030f5f2fbf43842509cc8412415d93c16eabdfea9ec8f2e86
|
|
4
|
+
data.tar.gz: 2469b7844b7faebd71ed211e3e9b14098b6782ec1284d0a8927ae5054d99fdea
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6bdf4484d310a5f0f868b13b2c7c1b3f9e57e1da773f665bcd276b52f98055428aa9c0b4d37b30c13502ff380aea3e9f520da412dae12388bb4b622e1dd9acc1
|
|
7
|
+
data.tar.gz: a874c09f066ed4d37595228e5bc91cc69b646a72ed793b73e9d3eb37f5395a234356af48bd5469dc26aac250e90b69e449377847f0b2c4587dda0a3585ce691d
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
## [0.3.1] - 2026-07-17
|
|
2
|
+
|
|
3
|
+
- Fixed: `NOSJ.minify` / `NOSJ.reformat` produced unparseable output
|
|
4
|
+
for a float that overflows to Infinity—a huge-exponent literal like
|
|
5
|
+
`1e999`, or a ~300-digit integer with an exponent (such literals
|
|
6
|
+
parse to Infinity even in strict mode, matching the `json` gem).
|
|
7
|
+
The pipe emitted a bare `Infinity` token; it now raises the same
|
|
8
|
+
`GeneratorError` that `generate` would
|
|
9
|
+
(`"Infinity not allowed in JSON"`). With `allow_nan: true` the
|
|
10
|
+
literal still passes through as `Infinity`. Found by fuzzing.
|
|
11
|
+
- Fixed (second manifestation, also found by fuzzing): the same
|
|
12
|
+
unparseable output could appear with the overflowing literal hidden
|
|
13
|
+
behind a duplicate object key. Because the reformat pipe
|
|
14
|
+
deliberately preserves duplicate-key entries, it now refuses such
|
|
15
|
+
documents with the same `GeneratorError` even though
|
|
16
|
+
`generate(parse(x))` succeeds there (last-key-wins parsing discards
|
|
17
|
+
the shadowed value)—a documented divergence.
|
|
18
|
+
- Differential fuzzing for the native extension (`ext/nosj/fuzz`):
|
|
19
|
+
three cargo-fuzz targets—reformat, NDJSON framing, and
|
|
20
|
+
byte-splicing/JSON Patch—each drive the real entry points on an
|
|
21
|
+
embedded Ruby VM and compare every input against pure-Ruby
|
|
22
|
+
reference implementations, with committed seed corpora and a weekly
|
|
23
|
+
CI workflow (`fuzz.yml`).
|
|
24
|
+
|
|
1
25
|
## [0.3.0] - 2026-07-17
|
|
2
26
|
|
|
3
27
|
- Reformat without parsing. `NOSJ.minify(json, opts)` and
|
data/README.md
CHANGED
|
@@ -434,6 +434,11 @@ bundle exec rake bench:fast # the sweep without retraining
|
|
|
434
434
|
bundle exec rake "bench:ips[twitter]" # multi-gem shoot-out (benchmark-ips); no args = full corpus
|
|
435
435
|
```
|
|
436
436
|
|
|
437
|
+
The native layer is differentially fuzzed on an embedded VM
|
|
438
|
+
(reformat pipe, NDJSON framing, splice/patch span arithmetic against
|
|
439
|
+
pure-Ruby reference implementations)—see
|
|
440
|
+
[ext/nosj/fuzz/README.md](ext/nosj/fuzz/README.md).
|
|
441
|
+
|
|
437
442
|
## Acknowledgements
|
|
438
443
|
|
|
439
444
|
Thanks to [Jean Boussier](https://github.com/byroot), [Florian Frank](https://github.com/flori), [Hiroshi Shibata](https://github.com/hsbt), [Nobuyoshi Nakada](https://github.com/nobu), [Étienne Barrié](https://github.com/etiennebarrie), and the other authors and maintainers of the [json gem](https://github.com/ruby/json)—for their work on the gem itself, for optimization ideas, and for some of the JSON documents in the benchmark corpus.
|
data/lib/nosj/3.3/nosj.so
CHANGED
|
Binary file
|
data/lib/nosj/3.4/nosj.so
CHANGED
|
Binary file
|
data/lib/nosj/4.0/nosj.so
CHANGED
|
Binary file
|
data/lib/nosj/version.rb
CHANGED