1Revision history for Perl extension Cpanel::JSON::XS
2
3TODO: http://stevehanov.ca/blog/index.php?id=104 compression
4
54.27 2021-10-13 (rurban)
6        - Only add -Werror=declaration-after-statement for 5.035004 and earlier (PR #186 nwc)
7	- Fix 125_shared_boolean.t for threads (PR #184 Sinan Unur)
8
94.26 2021-04-12 (rurban)
10        - Fix compilation with C++ (GH #177)
11
124.25 2020-10-28 (rurban)
13        - Fix decode relaxed with comment at the end of the buffer (GH #174 fgaspar), a regression
14          introduced with 3.0220, to fix n_number_then_00.
15        - Possible fix for a gcc-9 optimizer bug (GH #172)
16
174.24 2020-10-02 (rurban)
18        - Fix decode_json(scalar, 0) (GH #171 plicease), check 2nd arg for true-ness
19
204.23 2020-09-05 (rurban)
21        - Fixup t/54_stringify change for JSON 2.09 (really use PR #169 madsen)
22
234.22 2020-09-04 (rurban)
24        - Fix t/54_stringify needs JSON 2.09 for allow_unknown (PR #169 madsen)
25        - Fix t/118_type.t for 5.6
26        - Fix t/96_interop.t for missing JSON::XS (GH #83 ribasushi)
27        - Possible fix for s390x with long double, untested (GH #83)
28
294.21 2020-08-13 (rurban)
30        - Fix not enough HEK memory allocation for the new canonical tied hashes
31          feature. (GH #168)
32        - TODO broken JSON::PP::Boolean versions 2.9x - 4.0 with threads::shared in
33          125_shared_boolean.t
34
354.20 2020-08-12 (rurban)
36        - New feature: sort tied hashes with canonical. (GH #167)
37        - Fix encode of threads::shared boolean (#166 Sam Bingner).
38          This was broken with 4.00.
39        - Fix some stringify overload cases via convert_blessed (GH #105)
40        - Fix a compat case with JSON::XS, when convert_blessed is set, but
41          allow_blessed not. (GH #105)
42        - Improve blessed and stringify tests
43        - Work on better inf/nan detection on AIX (#165 Peter Heuchert)
44        - Fix documentation for booleans and their types (#162 by Karen Etheridge)
45
464.19 2020-02-06 (rurban)
47        - Fix typed decode memory leak (#160 by Pali).
48
494.18 2019-12-13 (rurban)
50        - Add new method ->type_all_string (#156 by Pali).
51          When type_all_string is set then encode method produce stable deterministic
52          string types in result JSON.
53          This can be an alternative to Cpanel::JSON::XS::Type when having
54          deterministic output is required but string JSON types are enough for any
55          output.
56        - Move SvGETMAGIC() from encode_av() and encode_hv() to encode_sv()
57          (#156 by Pali)
58        - Add Math::BigInt and Math::BigFloat as recommended dependences
59          (#157 by Pali and Grinnz)
60
614.17 2019-11-04 (rurban)
62        - Add Changes tests and fixups (see #155)
63
644.16 2019-11-04 (rurban)
65        - Use Perl_strtod instead of self-made atof (via pow), to
66          minimize differences from core string-to-float conversions.
67          (#154). Fixes float representation regressions (in the 1e-6
68          to 1e-16 range) since 5.22.
69
704.15 2019-10-21 (rurban)
71        - Fix more tests for nvtype long double
72
734.14 2019-10-15 (rurban)
74        - Fix tests for nvtype long double (#153)
75        - Fix PREREQ's. E.g. CentOS 7 has not Test::More anymore. (#152 by Pali)
76
774.13 2019-10-14 (rurban)
78        - For JSON_TYPE_INT and JSON_TYPE_FLOAT allow to encode numeric values
79          above 2^64 in PV slot via Math::BigInt/Float (#145, #148, #149 by Pali)
80        - For JSON_TYPE_INT and JSON_TYPE_FLOAT encoder allow to pass Math::BigInt
81          and Math::BigFloat objects with allow_bignum. (#147 by Pali)
82        - Fix encoding floating point values above 2^64 in PV slot to JSON_TYPE_INT
83          (#148, #150 by Pali)
84        - Do not allow serializing objects when convert_blessed is not enabled.
85          (#146 by Pali)
86
874.12 2019-06-11 (rurban)
88        - Make encoder independent on Math::BigInt version (#140 by Pali)
89        - Rethrow error from eval_sv and eval_pv() (#138, #139 by Pali),
90          e.g. when Math::BigInt/BigFloat fails.
91        - Fix encoding Inf and NaN from PV and NV slots to JSON_TYPE_INT
92          (#137 by Pali)
93        - Fix memory corruption in sv_to_ivuv() function (#136 by Pali)
94        - Add new method ->require_types (#135 by Pali)
95        - Fix typed json encoder conversion from scalar's PV and NV slot to
96          JSON_TYPE_INT (#133, #134 by Pali)
97        - Fix inconsistency with warnings in typed json encoder (#131 by Pali)
98        - Fix Perl 5.8.0 support (#130 by Pali)
99        - Fixed minor pod typo (#129 by sheeit)
100        - Document invalid recursive callbacks or overloads (#128)
101
1024.11 2019-03-26 (rurban)
103        - Fix unicode strings with BOM corrupt ->utf8 state (#125)
104          The BOM encoding effects only its very own decode call,
105          not its object.
106
1074.10 2019-03-18 (rurban)
108        - Fix incr_text refcounts (#123)
109        - Add incr_rest testcase (#123)
110        - Fix encode_stringify string-overload refcnt problem (#124)
111          "Attempt to free unreferenced scalar" with convert_blessed and overload.
112
1134.09 2019-02-15 (rurban)
114        - Add seperate allow_dupkeys property, in relaxed (#122)
115        - Fixed allow_dupkeys for the XS slow path
116        - Silence 2 -Wunused-value warnings
117        - Fix ->unblessed_bool to produce modifiable perl structures (PR #121 by Pali)
118
1194.08 2018-11-28 (rurban)
120        - Add unblessed_bool property (PR #118 by Pali)
121
1224.07 2018-11-02 (rurban)
123        - Silence Gconvert -Wunused-result.
124          gcvt returns a string, sprintf int, so suppress the retval
125
1264.06 2018-08-22 (rurban)
127        - Fix overloaded eq/ne comparisons (GH #116 by demerphq, GH #117 by Graham Knopp):
128          detect strings, protect from endless recursion. false is now ne "True".
129          clarify eq/ne rules in the docs.
130
1314.05 2018-08-19 (rurban)
132        - Set decoded type (PR #115 by Pali)
133        - Add json_type_weaken (PR #114 by Pali)
134        - Fix tests for 5.6 (rurban, pali)
135
1364.04 2018-06-22 (rurban)
137        - Fix bignum NaN/inf handling (#78 reported by Slaven Rezic)
138        - Move author tests to xt/ as suggested in #106, added a make xtest target.
139          Fixes a test fail with ASAN.
140
1414.03 2018-06-21 (rurban)
142        - Add sereal cpanel_json_xs type (#110 James Rouzier)
143        - Fix bencode/bdecode methods in cpanel_json_xs (#111 Fulvio Scapin)
144        - Overload ne operator for JSON::PP::Boolean (#107 tevfik1903)
145        - Add a missing semicolon to a documentation example (#104 E. Choroba)
146
1474.02 2018-02-27 (rurban)
148        - Add encoder indent_length method (#103 rouzier), previously
149          hard-coded to 3.
150
1514.01 2018-02-03 (rurban)
152        - Fix centos7 locale crash (#101 McA), fix required for all
153          threaded perl's < 5.22 with glibc.
154
1554.00 2018-02-02 (rurban,pali)
156        - No changes
157
1583.99_03 2018-01-30 (rurban,pali)
159        - Fix uselocale() code.
160        - Probe for uselocale and xlocale.h with <5.22 threaded.
161
1623.99_02 2018-01-30 (rurban,pali)
163        - Avoid setlocale race in threads with non-C locales, where the threads differ
164          in the LC_NUMERIC locale. (#99 pali)
165
1663.99_01 2018-01-30 (rurban,pali)
167        - Added Cpanel::JSON::XS::Type as 2nd optional encode argument. (#94 pali)
168        - Removed calling get magic hooks twice in encode.
169
1703.0240 2017-12-17 (rurban)
171        - Simplify >allow_singlequote check, coverity cid #165321
172        - Deprecate UTF-16 or UTF-32 BOM's: RFC 8259.
173
1743.0239 2017-08-28 (rurban)
175        - Fix compilation under windows. (#98 mauke)
176
1773.0238 2017-08-25 (rurban)
178        - Make printing of numbers on perl's earlier than 5.22 locale
179        insensitive, to produce a dot as decimal sep. (#96)
180
1813.0237 2017-07-28 (rurban)
182        - relax inf/nan tests as in t/op/infnan.t for windows.
183          we cannot know if msvcrt.dll or the new ucrt.dll is used.
184          try a list of valid values.
185
1863.0236 2017-07-27 (rurban)
187        - Stringify true again as "1", not as "true" due to popular demand.
188          (haarg #87)
189
1903.0235 2017-07-27 (rurban)
191        - Disallow duplicate keys by default, only allow them in relaxed
192          mode. (#75)
193          Analog to invalid unicode, which does error by default.
194          RFC 7159 section 4 says that "The names within an object should be unique."
195          So it's either i_ (undefined) or n_ (errors).
196          See http://seriot.ch/parsing_json.php#24
197          This is different to the other JSON modules, which do have a different
198          interpretation of the spec. Use relaxed for backcompat if you want to
199          allow duplicate keys.
200        - De-fragilize t/96_mojo.t false test to "". It mostly is.
201
2023.0234 2017-07-27 (rurban)
203        - Fix and unify utf8 handling with 5.6.2
204          and improve many utf8 tests. (pali #88)
205        - Add tests for boolean sv_yes and sv_no (pali #88)
206        - Check for correct module in %INC (Patrick Cronin #89)
207        - Fix appveyor smoke with latest strawberry, use $Config{make} (pali #91)
208        - Fix inf/nan for strawberry 5.26
209
2103.0233 2017-05-01 (rurban)
211        - 5.6 test fixes, silence some cc warnings,
212          add coverage and release targets, fix appveyor
213
2143.0232 2017-04-30 (rurban)
215        - Fix for MSVC 2015/14.0 and newer with changed nan/inf. #85
216        - Added appveyor CI
217        - Silence 32bit debugging format warning
218        - stabilize decode_hv hook (Coverity)
219        - ignore sv_utf8_downgrade errors (Coverity)
220
2213.0231 2017-03-29 (rurban)
222        - Fix need() overallocation (#84 Matthew Horsfall) and missing
223        need() calls.
224
2253.0230 2017-03-12 (rurban)
226        - Relax -Werror=declaration-after-statement for older gcc < 4.2
227
2283.0229 2017-03-10 (rurban)
229        - fix minor gcc compilation warnings.
230        - Add some core compat. warnings for gcc/clang compat. compilers.
231
2323.0228 2017-03-08 (rurban)
233        - fix decode_prefix offset when the string was re-allocated.
234        rather return the offset not the pointer to the old start. (#82 PaulGWebster)
235
2363.0227 2017-02-13 (rurban)
237        - fix CLONE and END, broken with 3.0226 (#80 y).
238          These methods are usually called with arguments, which we ignore.
239
2403.0226 2017-02-11 (rurban)
241        - relax longdouble Gconvert test on ppc64le and aarch64-linux-ld,
242        with apparent HW quadmath without USE_QUADMATH (older perls).
243        (detected by dgolden)
244        - Fixed 2 uninit warnings in the XS
245
2463.0225 2016-11-23 (rurban)
247        - decode utf8 security fixes for perl 5.6.
248          added extra detection code for overflows and non-continuations.
249          This broke one 5.6 test with an overlong multi-byte character,
250          which previously worked accidently.
251          i.e. decode "\ud801\udc02\x{10204}"
252        - Added tests for ill-formed utf8 sequences from Encode.
253
2543.0224 2016-11-20 (rurban)
255        - fixes for g++-6, stricter -fpermissive and -Wc++11-compat
256
2573.0223 2016-11-16 (rurban)
258        - fixed decode bignum with a string prefix. #76, patch by GilmarSantosJr.
259
2603.0222 2016-10-30 (rurban)
261        - enable decode_bom for multibyte encodings UTF16 and UTF32.
262          encode internally to UTF-8.
263
2643.0221 2016-10-30 (rurban)
265        - fixed documentation of decode for unicode noncharacters.
266          added correct code to warn as in core.
267          no replacement, ignore warnings when in relaxed mode.
268          We used a wrong range also, but the wrong code from 3.02220
269          was never executed because of an coding error. #73, #74
270        - Fixed a perl 5.6 compilation regression from 3.0220.
271        - Improve decode_bom for multibyte encoding, but not yet enabled.
272          refcount error.
273        - Add 5.24 to travis tests
274
2753.0220 2016-10-28 (rurban)
276	- add comprehensive JSON decode spectests from
277          http://seriot.ch/parsing_json.html. #72
278        - decode with BOM (UTF-8, UTF-16, or UTF-32). For now only UTF-8,
279          the others error.
280        - fixed detection of final \0 as illegal non-whitespace garbage. Fixes
281          spectest 'n_number_then_00'. #72
282        - changed decode of unicode noncharacters between U+FFFD and U+10FFFF
283          to the recommended U+FFFD REPLACEMENT CHARACTER, when not in the binary
284          or relaxed mode.
285        - fail decode of non-unicode raw characters above U+10FFFF
286          when not in relaxed mode.
287
2883.0219 2016-10-26 (rurban)
289	- workaround mingw 4.0 modfl() bug [perl #125924]
290
2913.0218 2016-10-13 (rurban)
292	- no changes
293
2943.0217_06 2016-10-08 (rurban)
295	- fix DPPP_dummy_PL_parser warnings
296
2973.0217_05 2016-10-07 (rurban)
298	- fix t/gh70-asan.t for older perls < 5.14
299
3003.0217_04 2016-10-07 (rurban)
301	- fix and document wrong strEQc usage in new(). #70 (ilmari)
302
3033.0217_03 2016-10-06 (rurban)
304	- expect_false() macro fix for MSVC
305        - fix av and hv length types: protect from security sensitive overflows,
306          add HVMAX_T and RITER_T
307        - add new "Hash key too large" error. perl5 silently truncates it, we
308          prefer errors, cperl 5.25.1 does error also.
309        - fix broken 5.8.1 SvPOK_only, i.e. assert_not_ROK
310
3113.0217_02 2016-10-04 (rurban)
312	- Use faster strEQc macros from cperl with constant strings.
313        - prefer memEQ for systems without memcmp, to use bcmp there.
314        - add more expect_false() to inf/nan branches.
315
3163.0217_01 2016-10-04 (rurban)
317	- Detect INF/NAN: ?/++/-?/--- on HP-UX (#56)
318        - New stringify_infnan(3) infnan_mode. Easy to detect platform
319          independent "inf", "-inf" or "nan" strings with double quotes,
320          with qnan, snan or negative nan unified to "nan".
321
3223.0217 2016-06-18 (rurban)
323	- Improve test t/20_unknown.t for older JSON::PP (Christopher J. Madsen)
324
3253.0216 2016-06-12 (rurban)
326	- Fix wrong test 117 for 5.10.0 (pghmcfc)
327
3283.0215 2016-06-03 (rurban)
329	- Fix wrong test 117 (pghmcfc)
330        - TODO the fragile mojo boolean interop test.
331	- Improve error message with class based method calls,
332          when forgetting ->new. #66
333
3343.0214 2016-06-02 (rurban)
335	- Fix a off-by-one IV_MIN -> NV overflow in decode_json. #67 (xdg)
336        - Avoid encode_sv SEGV with -Dusequadmath #62
337          Fix quadmath NV stringification.
338
3393.0213_02 2016-04-13 (rurban)
340	- Remove author-only Pod::Usage dependency (karenetheridge).
341
3423.0213_01 2016-04-11 (rurban)
343	- Preserve numbers as numbers, enforce an added .0 (dagolden).
344          Also note that 42+"bar" will result >=5.10 in numbers not integers,
345          => 42.0
346        - 5.6 compilation fixes
347        - add yaml-tiny formats to cpanel_json_xs
348
3493.0213 2016-03-02 (rurban)
350	- silence JSON::PP::Boolean redefine warnings #60
351
3523.0212 2016-02-27 (rurban)
353	- merge with JSON-XS-3.02:
354	  - docs: add some INTEROP, stricter nonref RFC 7159 and
355	          TAGGED VALUE SYNTAX AND STANDARD JSON EN/DECODERS paragraphs
356	  - use 7159 nonref detection from JSON-XS: json_nonref()
357	  - add some SAVESTACK_POS calls
358	  - add -f cbor decode option (via CBOR::XS) to cpanel_json_xs
359	- fixed many spelling errors in the new docs
360	- fixed errors with threaded perls
361	- improved code quality in new merged code and fixed
362          new warnings found with gcc-5
363
364	- add -f and -t yaml-xs and yaml-syck options to cpanel_json_xs
365
3663.0211 2016-01-10 (rurban)
367       - relax Mojo interop test strictness ('' or 0 for false)
368       - t/z_pod.t as author test (Ether)
369       - t/z_kwalitee.t accepts now RELEASE_TESTING
370       - fix mingw64 inf/nan with uselongdouble, strawberry 5.22.1. #57
371
3723.0210 2015-12-03 (rurban)
373       - improve cpanel_json_xs: more input and output formats
374       - improved various spellings and add test
375       - much faster t/99_binary.t test
376
3773.0209 2015-12-03 (rurban)
378       - Fix nasty regression bug with allow_singlequote or relaxed,
379         hanging with single quotes in normal strings. #54
380         (reported by Quim Rovira)
381
3823.0208 2015-12-02 (rurban)
383       - Fix regression for is_bool([]), with unblessed references. #53
384         (reported by Gregory Oschwald)
385
3863.0207 2015-12-02 (rurban)
387       - Fix regression decoding big strings (>16384). #50 (reported by Dan Book)
388       - Ignore allow_barekey if we detect quotes. #51 (Fixed by Quim Rovira)
389       - Skip some unicode tests with 5.6
390
3913.0206 2015-11-30 (rurban)
392       - Add support for escape_slash from JSON::PP. #47
393       - Map sort_by to canonical from JSON::PP. #47
394         reverse sort or sort by custom keys not yet possible/silently ignored.
395       - Add support for allow_singlequote from JSON::PP. #47
396       - Add support for allow_barekey from JSON::PP. #47
397       - Add support for allow_bignum from JSON::PP. #47
398       - relaxed uses now also allow_singlequote and allow_barekey.
399       - Fixed t/20_unknown.t: SKIP when JSON is not available. #45
400       - Fixed t/55_modifiable.t: Broaden the is check of true <5.12 #45
401         (both reported by Paul Howarth)
402       - Add t/zero-mojibake.t from JSON::PP testing all supported decoding
403         options: none, utf8, ascii, latin1, binary.
404
4053.0205 2015-11-29 (rurban)
406       - Add t/20_unknown.t tests from JSON::PP, extended.
407       - Fix convert_blessed, disallow invalid JSON. #46 (reported by Dan Book)
408         convert_blessed returns now always a string, even for numbers.
409       - Fix encountered GLOB error message (still in JSON::XS, and JSON::PP took
410         over the wrong message also).
411       - Fixed regression of immediate raw values for null/true/false to be
412         modifiable again. #45. Broken with 3.0201 - 3.0204.
413         (reported by Thomas Sibley and Karen Etheridge)
414         This caused failues in Test::JSON and App::RecordStream.
415
4163.0204 2015-11-26 (rurban)
417       - Fix is_bool with JSON::XS >3.0 interop. #44 (Graham Knop)
418
4193.0203 2015-11-26 (rurban)
420       - New optional decode_json() argument to set allow_nonref as in
421         RFC 7159 and PHP. Before 3.02 JSON::XS and Cpanel::JSON::XS always
422         allowed nonref values for decode_json due to an interal bug.
423
4243.0202 2015-11-26 (rurban)
425       - New feature: convert_blessed for encode.
426         Stringify overloaded perl objects and with allow_blessed even without
427         string overload (#37)
428
4293.0201 2015-11-26 (rurban)
430       - Simplify handling of references, removing all the complicated
431         work-around for reblessing. Breaks overloaded values, but fixes
432         serialising refs to readonly values. #21 (Gianni Ceccarelli)
433         new test t/53_readonly.t
434         schmorp thinks that overloading is broken with this patch,
435         but reblessing and breaking readonly is worse.
436       - Stabilize Test::Kwalitee with missing XS dependencies
437       - suggests common::sense, not recommend. #36 (mst)
438       - Boolean interop: use only JSON::PP::Boolean. #40
439         Remove our own JSON::XS::Boolean, and solely use
440         JSON::PP::Boolean and accept Mojo::JSON::_Bool and
441         Types::Serialiser::Boolean, which is aliased to JSON::PP::Boolean.
442         JSON::YAJL::Parser just produces an unbless IV (0|1).
443         fix overload of our bools.
444         stringify true to "true", false to "0"
445       - accept Mojo::JSON::_Bool (#37)
446         Mojo does not store their booleans as JSON::PP::Boolean
447         as everybody else does.
448       - accept is_bool as method call also.
449       - implement native encode_sv of the internal sv_yes/sv_no values (#39)
450         and map them to json true/false. YAML::XS compatible.
451       - pod: add SECURITY CONSIDERATIONS
452         added a table of safe and unsafe serializers for comparison.
453         Written by JD Lightsey.
454         Only JSON and Data::MessagePack are safe by default.
455       - With canonical only skip hash keys sorting for actually tied hashes.
456         #42 (Sergey Aleynikov)
457
4583.0115 2015-01-31 (rurban)
459       - Fix stack corruption when encoding nested objects with FREEZE method,
460         #35 (Sergey Aleynikov)
461
4623.0114 2015-01-04 (rurban)
463       - Fix bad powl with Freebsd 10 -Duselongdouble. Rather use strtold. #34 + RT #101265
464
4653.0113 2014-12-15 (rurban)
466       - t/117_number relax the tests for negative nan, as BSDs also cannot deal with it. #33
467
4683.0112 2014-12-14 (rurban)
469       - Add {get_,}stringify_infnan methods and use it in the test, now run-time. #32
470         mode 0: null, 1: stringify, 2: inf/nan (invalid JSON) as before.
471       - Fix t/117_number tests for Solaris and MSWin32
472       - Remove build-time "Do you want to handle inf/nan as strings? Default: null." prompt.
473       - Improve docs.
474
4753.0111 2014-12-13 (rurban)
476       - Fixed detecting 1.#INF/1.#IND on windows. #28
477       - Also detect now -inf and -nan. #28
478       - Fixed STRINGIFY_INFNAN return string, length off by one. #28
479       - Fixed a non-C99 declaration error on XS.xs:863. Was broken with older MSVC.
480
4813.0110 2014-12-12 (rurban)
482       - Fixed one more memory bug with encode of dual-vars to strings,
483         esp. with older perl <5.10, leading to eventual panic: realloc.
484
4853.0109 2014-12-12 (rurban)
486       - Fixed serious bug with encode of dual-vars to strings, missing
487         the ending \0. #31 (Grinnz)
488
4893.0108 2014-12-11 (rurban)
490       - Change encode of numbers with dual-strings (int and float), integers
491         and numbers are now not mishandled anymore by dual-vars, temp. string representations.
492         Add t/117_numbers.t from JSON::PP, PR#10 by kraih.
493       - Add prompt for nan/inf encode policy: null or stringify.
494       - Change stringification of false and true to 0 and 1, matching upstream JSON and JSON::XS, #29.
495         This didn't affect string comparisons, just e.g. print decode_json("false").
496       - Tolerate literal ASCII TABs in strings in relaxed mode #22 (from JSON::XS)
497       - Revise pod, merge updates from JSON::XS.
498       - Fix pod typo #30 (Colin Kuskie)
499
5003.0107 2014-11-28 (rurban)
501       - fix fatal stack corruption with perl callbacks in list context
502         #27 (dur-randir)
503
5043.0106 2014-11-11 (rurban)
505       - more minor doc improvements #26 (schwern)
506
5073.0105 2014-11-05 (rurban)
508       - minor doc improvements #25 (ether)
509       - fix d_Gconvert test in t/11_pc_expo.t for 5.6
510
5113.0104 2014-04-26 (rurban)
512       - add t/z_leaktrace.t
513       - restore build on C89 (bulk88)
514       - fix small cxt->sv_json leak on interp exit (bulk88)
515
5163.0103 2014-04-21 (rurban)
517       - Change booleans interop logic (again) for JSON-XS-3.01
518         Check now for Types::Serialiser::Boolean ie JSON::PP::Boolean refs (#18 clintongormley)
519         to avoid allow_blessed for JSON-XS-3.01 booleans.
520       - fix boolean representation for JSON-XS-3.01/Types::Serialiser::Boolean interop
521         (arrayref, not hashref)
522       - add t/52_object.t from JSON::XS
523       - backport encode_hv HE sort on stack < 64 or heap to avoid stack
524         overflows from JSON-XS-3.01. do not use alloca.
525       - backport allow_tags, decode_tag, FREEZE/THAW callbacks from JSON-XS-3.01
526       - added pod for OBJECT SERIALISATION (allow_tags, FREEZE/THAW)
527
5283.0102 2014-04-17 (rurban + bulk88)
529       - Added PERL_NO_GET_CONTEXT for better performance on threaded Perls (bulk88)
530       - MANIFEST: added t/96_interop.t
531       - Document deprecated functions
532       - Change booleans interop logic for JSON-XS-3.01
533
5343.0101 2014-04-15 (rurban + bulk88)
535       - Added ithreads support (bulk88)
536         Cpanel::JSON::XS is now thread-safe.
537       - const'ed a translation table for memory savings (bulk88)
538       - Fixed booleans for JSON 2.9 and JSON-XS-3.01 interop.
539         JSON does not support JSON::XS booleans anymore, so
540         I cannot think of any reason to still use JSON::XS.
541
5422.3404 2014-01-30 (rurban)
543       - fix interop with JSON::XS booleans
544         the internal boolean objects are now blessed into JSON::XS::Boolean
545         #13 and [cpan #92548] (samuel.c.kaufman)
546       - t/96_interop.t: added
547       - LICENSE section to pod added for t/z_kwalitee.t
548       - README: fixed some pod spelling errors in (David Steinbrunner)
549
5502.3403 2013-11-02 (cpanel)
551       - fix json_atof on AIX without HAS_LONG_DOUBLE (powl in libm)
552         [cpan #88061] (Ulisse Monari, Reini Urban)
553
5542.3402 2013-11-02 (cpanel)
555       - t/97_unshare_hek.t: fix issue #10, unshare hek assertion resp. valgrind error
556       - Rename internal 5.6 methods {from|to}_json_ to _{from|to}_json
557       - Fixed get_binary pod
558       - Added t/z_*.t maintainer tests
559
5602.3401 2013-10-02 (cpanel)
561       - add more binary tests, including 5.6
562       - improve POD for binary and cPanel fork
563       - Fix homepage META
564
5652.3314 2013-09-09 (cpanel)
566       - t/01_utf8.t: workaround for stricter Encode versions (syohex)
567       - autogenerate META files
568
5692.3313 2013-06-26 (cpanel)
570       - Fix re-blessing of READONLY data (chip) [GH issue #7].
571       - Depend on Pod::Usage 1.36. 1.51 was added with 2.3306
572       - t/01_utf8.t: workaround for stricter Encode versions [RT #84244]
573       - avoid <5.10 const warnings with sv_chop
574
5752.3312 2013-05-22 (cpanel)
576       - Made common::sense optional to get smaller FatPacker packages.
577
5782.3311 2013-04-04 18:41:23 (cpanel)
579       - Changed maintainer to cpan@cpanel.net
580       - Changed tracker to RT
581       - Worked on JSON integration (matching prototypes)
582       - Fixed Boolean stringify and eq overload methods to match JSON (Fixes JSON tests)
583
5842.3310 2013-03-28 12:20:11 (rurban)
585       - add testcases for JSON::XS RT #84244, double-encoding with utf8
586         t/01_utf8.t (use utf8), t/14_latin1.t (no utf8)
587       - t/01_utf8.t: enable and fix more 5.6 testcases
588
5892.3309 2013-03-28 09:37:29 (rurban)
590       - fix 19_incr.t broken with 5.17.10 hash randomization [JSON::XS RT #84151]
591         by wyant @ cpan.org
592
5932.3308 2013-03-28 09:10:45 (rurban)
594       - fix 5.6 binary utf8 encoding, harmonized with newer perls
595         5.6. encodes strings to utf8 internally when seeing a codepoint >= 0x80.
596	 with binary decode it to the original bytes before encoding it to escaped JSON.
597
5982.3307 2013-03-27 17:27:18 (rurban)
599       - fix lots of -Wincompatible-pointer-types and -Wpointer-sign warnings
600       - add binary method
601       - write and accept \xNN JSON encoding with binary only,
602         also accept octal \0NNN JSON with binary
603
6042.3306 2013-03-27 12:15:20 (rurban)
605       - fix decode_utf8 for 5.6 (bdraco)
606       - use common::sense for tests
607       - fix README dependency: update earlier, not just at make dist
608       - added pod2text prereqs
609
6102.3305 2013-03-27 11:47:36 (rurban)
611       - nondev version to be indexed in CPAN
612       - t/99_binary.t: non-numeric test names, use is instead of ok
613       - added META data to Makefile.PL
614
6152.33_04 2013-03-01 15:42:39 (rurban)
616	- fix for 5.6 compiler:
617	  $json->incr_text may not be called as lvalue,
618	  missing attributes::reftype
619
6202.33_03 2013-02-28 17:22:52 (bdraco)
621	- revert fix crash with invalid JSON, empty sv
622
6232.33_02 2012-08-17 16:29:52 (rurban)
624	- fix crash with invalid JSON, empty sv
625
6262.33_01 2012-08-08 16:29:52 (rurban)
627	- merge with JSON-XS-2.33
628
6292.33 2012-08-01 21:03:52 2012
630	- internal encode/decode XS wrappers did not expect stack
631          moves caused by callbacks (analyzed and testcase by Jesse Luehrs).
632	- add bencode as to/from option in bin/json_xs.
633        - add -e option to json_xs, and none and string in/out formats.
634
6352.32_02 2012-06-27 19:59:18 (rurban)
636	- forked from JSON-XS-2.32
637	- Cpanel perl-5.6.2 support
638	- prefix with Cpanel
639
6402.32 2011-08-11 19:06:38
641	- fix a bug in the initial whitespace accumulation.
642
6432.31 2011-07-27 17:53:05
644	- don't accumulate initial whitespace in the incremental buffer
645          (this can be useful to allow whitespace-keepalive on a tcp
646          connection without triggering the max_size limit).
647	- properly croak on some invalid inputs that are not strings
648          (e.g. undef) when trying to decode a json text (reported
649          and analyzed by Goro Fuji).
650
6512.3  2010-08-18 01:26:47
652	- make sure decoder doesn't change the decoding in the incremental
653          parser (testcase provided by Hendrik Schumacher).
654	- applied patch by DaTa for Data::Dumper support in json_xs.
655        - added -t dump support to json_xs, using Data::Dump.
656        - added -f eval support to json_xs.
657
6582.29  2010-03-17 02:39:12
659	- fix a memory leak when callbacks set using filter_json_object
660          or filter_json_single_key_object were called (great testcase
661          by Eric Wilhelm).
662
6632.28  2010-03-11 20:30:46
664	- implement our own atof function - perl's can be orders of
665          magnitudes slower than even the system one. on the positive
666          side, ours seems to be more exact in general than perl's.
667          (testcase provided by Tim Meadowcroft).
668        - clarify floating point conversion issues a bit.
669	- update jpsykes csrf article url.
670        - updated benchmark section - JSON::PP became much faster!
671
6722.27  2010-01-07 07:35:08
673	- support relaxed option inside the incremental parser
674          (testcase provided by IKEGAMI via Makamaka).
675
6762.26  2009-10-10 03:26:19
677	- big integers could become truncated (based on patch
678          by Strobl Anton).
679	- output format change: indent now adds a final newline, which is
680          more expected and more true to the documentation.
681
6822.25  2009-08-08 12:04:41
683	- the perl debugger completely breaks lvalue subs - try to work
684          around the issue.
685	- ignore RMAGICAL hashes w.r.t. CANONICAL.
686	- try to work around a possible char signedness issue on aix.
687        - require common sense.
688
6892.24  2009-05-30 08:25:45
690	- the incremental parser did not update its parse offset
691          pointer correctly when parsing utf8-strings (nicely
692          debugged by Martin Evans).
693	- appending a non-utf8-string to the incremental parser
694          in utf8 mode failed to upgrade the string.
695        - wording of parse error messages has been improved.
696
6972.232 2009-02-22 11:12:25
698	- use an exponential algorithm to extend strings, to
699          help platforms with bad or abysmal==windows memory
700          allocater performance, at the expense of some memory
701          wastage (use shrink to recover this extra memory).
702          (nicely analysed by Dmitry Karasik).
703
7042.2311 2009-02-19 02:12:54
705        - add a section "JSON and ECMAscript" to explain some
706          incompatibilities between the two (problem was noted by
707          various people).
708	- add t/20_faihu.t.
709
7102.231 2008-11-20 04:59:08
711	- work around 5.10.0 magic bugs where manipulating magic values
712          (such as $1) would permanently damage them as perl would
713          ignore the magicalness, by making a full copy of the string,
714          reported by Dmitry Karasik.
715        - work around spurious warnings under older perl 5.8's.
716
7172.23 2008-09-29 05:08:29
718	- fix a compilation problem when perl is not using char * as, well,
719          char *.
720	- use PL_hexdigit in favour of rolling our own.
721
7222.2222 2008-07-20 18:49:00
723	- same game again, broken 5.10 finds yet another assertion
724          failure, and the workaround causes additional runtime warnings.
725          Work around the next assertion AND the warning. 5.10 seriously
726          needs to adjust it's attitude against working code.
727
7282.222 2008-07-19 06:15:34
729	- you work around one -DDEBUGGING assertion bug in perl 5.10
730          just to hit the next one. work around this one, too.
731
7322.22  2008-07-15 13:26:51
733	- allow higher nesting levels in incremental parser.
734        - error out earlier in some cases in the incremental parser
735          (as suggested by Yuval Kogman).
736        - improve incr-parser test (Yuval Kogman).
737
7382.21 2008-06-03 08:43:23
739	- (hopefully) work around a perl 5.10 bug with -DDEBUGGING.
740	- remove the experimental status of the incremental parser interface.
741	- move =encoding around again, to avoid bugs with search.cpan.org.
742          when can we finally have utf-8 in pod???
743        - add ->incr_reset method.
744
7452.2  2008-04-16 20:37:25
746	- lifted the log2 rounding restriction of max_depth and max_size.
747	- make booleans mutable by creating a copy instead of handing out
748          the same scalar (reported by pasha sadri).
749   	- added support for incremental json parsing (still EXPERIMENTAL).
750	- implemented and added a json_xs command line utility that can convert
751          from/to a number of serialisation formats - tell me if you need more.
752        - implement allow_unknown/get_allow_unknown methods.
753        - fixed documentation of max_depth w.r.t. higher and equal.
754	- moved down =encoding directive a bit, too much breaks if it's the first
755          pod directive :/.
756        - removed documentation section on other modules, it became somewhat
757          outdated and is nowadays mostly of historical interest.
758
7592.1  2008-03-19 23:23:18
760        - update documentation here and there: add a large section
761          about utf8/latin1/ascii flags, add a security consideration
762          and extend and clarify the JSON and YAML section.
763        - medium speed enhancements when encoding/decoding non-ascii chars.
764        - minor speedup in number encoding case.
765	- extend and clarify the section on incompatibilities
766          between YAML and JSON.
767        - switch to static inline from just inline when using gcc.
768        - add =encoding utf-8 to the manpage, now that perl 5.10 supports it.
769        - fix some issues with UV to JSON conversion of unknown impact.
770        - published the yahoo locals search result used in benchmarks as the
771          original url changes so comparison is impossible.
772
7732.01 2007-12-05 11:40:28
774	- INCOMPATIBLE API CHANGE: to_json and from_json have been
775          renamed to encode_json/decode_json for JSON.pm compatibility.
776          The old functions croak and might be replaced by JSON.pm
777          comaptible versions in some later release.
778
7792.0  2007-12-04 11:30:46
780	- this is supposed to be the first version of JSON::XS
781          compatible with version 2.0+ of the JSON module.
782          Using the JSON module as frontend to JSON::XS should be
783          as fast as using JSON::XS directly, so consider using it
784          instead.
785	- added get_* methods for all "simple" options.
786        - make JSON::XS subclassable.
787
7881.53 2007-11-13 23:58:33
789	- minor doc clarifications.
790        - fixed many doc typos (patch by Thomas L. Shinnick).
791
7921.52 2007-10-15 03:22:06
793	- remove =encoding pod directive again, it confuses too many pod
794          parsers :/.
795
7961.51 2007-10-13 03:55:56
797	- encode empty arrays/hashes in a compact way when pretty is enabled.
798	- apparently JSON::XS was used to find some bugs in the
799          JSON_checker testsuite, so add (the corrected) JSON_checker tests to
800          the testsuite.
801        - quite a bit of doc updates/extension.
802        - require 5.8.2, as this seems to be the first unicode-stable version.
803
8041.5  2007-08-28 04:05:38
805	- add support for tied hashes, based on ideas and testcase by
806          Marcus Holland-Moritz.
807        - implemented relaxed parsing mode where some extensions are being
808          accepted. generation is still JSON-only.
809
8101.44 2007-08-22 01:02:44
811	- very experimental process-emulation support, slowing everything down.
812          the horribly broken perl threads are still not supported - YMMV.
813
8141.43 2007-07-26 13:26:37
815	- convert big json numbers exclusively consisting of digits to NV
816          only when there is no loss of precision, otherwise to string.
817
8181.42 2007-07-24 00:51:18
819	- fix a crash caused by not handling missing array elements
820          (report and testcase by Jay Kuri).
821
8221.41 2007-07-10 18:21:44
823	- fix compilation with NDEBUG (assert side-effect),
824          affects convert_blessed only.
825	- fix a bug in decode filters calling ENTER; SAVETMPS;
826          one time too often.
827        - catch a typical error in TO_JSON methods.
828	- antique-ised XS.xs again to work with outdated
829          C compilers (windows...).
830
8311.4  2007-07-02 10:06:30
832	- add convert_blessed setting.
833        - encode did not catch all blessed objects, encoding their
834          contents in most cases. This has been fixed by introducing
835          the allow_blessed setting.
836        - added filter_json_object and filter_json_single_key_object
837          settings that specify a callback to be called when
838          all/specific json objects are encountered.
839        - assume that most object keys are simple ascii words and
840          optimise this case, penalising the general case. This can
841          speed up decoding by 30% in typical cases and gives
842          a smaller and faster perl hash.
843        - implemented simpleminded, optional resource size checking
844          in decode_json.
845        - remove objToJson/jsonToObj aliases, as the next version
846          of JSON will not have them either.
847        - bit the bullet and converted the very simple json object
848          into a more complex one.
849        - work around a bug where perl wrongly claims an integer
850          is not an integer.
851        - unbundle JSON::XS::Boolean into own pm file so Storable
852          and similar modules can resolve the overloading when thawing.
853
8541.3  2007-06-24 01:55:02
855        - make JSON::XS::true and false special overloaded objects
856          and return those instead of 1 and 0 for those json atoms
857          (JSON::PP compatibility is NOT achieved yet).
858        - add JSON::XS::is_bool predicate to test for those special
859          values.
860	- add a reference to
861          http://jpsykes.com/47/practical-csrf-and-json-security.
862        - removed require 5.8.8 again, it is just not very expert-friendly.
863          Also try to be more compatible with slightly older versions,
864          which are not recommended (because they are buggy).
865
8661.24 2007-06-11 05:40:49
867	- added informative section on JSON-as-YAML.
868        - get rid of some c99-isms again.
869        - localise dec->cur in decode_str, speeding up
870          string decoding considerably (>15% on my amd64 + gcc).
871        - increased SHORT_STRING_LEN to 16kb: stack space is
872          usually plenty, and this actually saves memory
873          when !shrinking as short strings will fit perfectly.
874
8751.23 2007-06-06 20:13:06
876	- greatly improved small integer encoding and decoding speed.
877	- implement a number of µ-optimisations.
878        - updated benchmarks.
879
8801.22 2007-05-24 00:07:25
881	- require 5.8.8 explicitly as older perls do not seem to offer
882          the required macros.
883        - possibly made it compile on so-called C compilers by microsoft.
884
8851.21 2007-05-09 18:40:32
886	- character offset reported for trailing garbage was random.
887
8881.2  2007-05-09 18:35:01
889        - decode did not work with magical scalars (doh!).
890        - added latin1 flag to produce JSON texts in the latin1 subset
891          of unicode.
892        - flag trailing garbage as error.
893        - new decode_prefix method that returns the number
894          of characters consumed by a decode.
895        - max octets/char in perls UTF-X is actually 13, not 11,
896          as pointed out by Glenn Linderman.
897	- fixed typoe reported by YAMASHINA Hio.
898
8991.11 2007-04-09 07:05:49
900	- properly 0-terminate sv's returned by encode to help
901          C libraries that expect that 0 to be there.
902	- partially "port" JSON from C to microsofts fucking broken
903          pseudo-C. They should be burned to the ground for pissing
904          on standards. And I should be stoned for even trying to
905          support this filthy excuse for a c compiler.
906
9071.1  2007-04-04 01:45:00
908	- clarify documentation (pointed out by Quinn Weaver).
909        - decode_utf8 sometimes did not correctly flag errors,
910          leading to segfaults.
911        - further reduced default nesting depth to 512 due to the test
912          failure by that anonymous "chris" whose e-mail address seems
913          to be impossible to get. Tests on other freebsd systems indicate
914          that this is likely a problem in his/her configuration and not this
915          module.
916        - renamed json => JSON in error messages.
917        - corrected the character offset in some error messages.
918
9191.01 2007-03-31 16:15:40
920	- do not segfault when from_json/decode gets passed
921          a non-string object (reported by Florian Ragwitz).
922          This has no effect on normal operation.
923
9241.0  2007-03-29 04:43:34
925	- the long awaited (by me) 1.0 version.
926        - add \0 (JSON::XS::false) and \1 (JSON::XS::true) mappings to JSON
927          true and false.
928	- add some more notes to shrink, as suggested by Alex Efros.
929        - improve testsuite.
930        - halve the default nesting depth limit, to hopefully make it
931          work on Freebsd (unfortunately, the cpan tester did not
932          send me his report, so I cannot ask about the stack limit on fbsd).
933
9340.8  2007-03-26 00:10:48
935	- fix a memleak when decoding hashes.
936	- export jsonToBj and objToJson as aliases
937          to to_json and from_json, to reduce incompatibilities
938          between JSON/JSON::PC and JSON::XS. (experimental).
939        - implement a maximum nesting depth for both en- and de-coding.
940        - added a security considerations sections.
941
9420.7  2007-03-25 01:46:30
943	- code cleanup.
944	- fix a memory overflow bug when indenting.
945        - pretty-printing now up to 15% faster.
946        - improve decoding speed of strings by
947          up to 50% by specialcasing short strings.
948        - further decoding speedups for strings using
949          lots of \u escapes.
950        - improve utf8 decoding speed for U+80 .. U+7FF.
951
9520.5  2007-03-24 20:41:51
953	- added the UTF-16 encoding example hinted at in previous
954          versions.
955        - minor documentation fixes.
956        - fix a bug in and optimise canonicalising fastpath
957          (reported by Craig Manley).
958        - remove a subtest that breaks with bleadperl (reported
959          by Andreas König).
960
9610.31 2007-03-24 02:14:34
962	- documentation updates.
963        - do some casting to hopefully fix Andreas' problem.
964        - nuke bogus json rpc stuff.
965
9660.3  2007-03-23 19:33:21
967	- remove spurious PApp::Util reference (John McNamara).
968	- adapted lots of tests from other json modules
969          (idea by Chris Carline).
970        - documented mapping from json to perl and vice versa.
971        - improved the documentation by adding more examples.
972        - added short escaping forms, reducing the created
973          json texts a bit.
974        - added shrink flag.
975        - when flag methods are called without enable argument
976          they will by default enable their flag.
977        - considerably improved string encoding speed (at least
978          with gcc 4).
979        - added a test that covers lots of different characters.
980        - clarified some error messages.
981        - error messages now use correct character offset
982          with F_UTF8.
983        - improve the "no bytes" and "no warnings" hacks in
984          case the called functions do... stuff.
985        - croak when encoding to ascii and an out-of-range
986          (non-unicode) codepoint is encountered.
987
9880.2  2007-03-23 00:23:34
989	- the "could not sleep without debugging release".
990          it should basically work now, with many bugs as
991          no production tests have been run yet.
992	- added more testcases.
993	- the expected shitload of bugfixes.
994	- handle utf8 flag correctly in decode.
995        - fix segfault in decoder.
996        - utf8n_to_uvuni sets retlen to -1, but retlen is an
997          unsigned types (argh).
998        - fix decoding of utf-8 strings.
999        - improved error diagnostics.
1000        - fix decoding of 'null'.
1001        - fix parsing of empty array/hashes
1002        - silence warnings when we prepare the croak message.
1003
10040.1   2007-03-22 22:13:43
1005	- first release, very untested, basically just to claim
1006          the namespace.
1007
10080.01  2007-03-22 06:08:12
1009	- original version; cloned from Convert-Scalar
1010
1011