Repository navigation
Expand file tree
/
Copy pathCHANGES.txt
More file actions
1006 lines (761 loc) · 38.4 KB
/
Copy pathCHANGES.txt
File metadata and controls
1006 lines (761 loc) · 38.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Version 4.2.0 released 2026-10-02
* Start building wheels for Python 3.15 and drop Python 3.8 support
via upgrade to cibuildwheel v4.2.0
https://github.com/simplejson/simplejson/pull/385
* Build and test riscv64 Linux wheels on native RISE runners
https://github.com/simplejson/simplejson/pull/389
* The C scanner now reports the same error message as the pure Python
decoder for an invalid first key in an object
https://github.com/simplejson/simplejson/pull/388
* ``int_as_string_bitcount`` now supports thresholds of 64 bits and above
(including 128-bit integers) in both the C and pure Python encoders;
the C encoder previously rejected them
https://github.com/simplejson/simplejson/pull/387
* Circular references introduced through ``for_json()`` or ``_asdict()``
now raise ``ValueError("Circular reference detected")`` instead of
recursing without bound
https://github.com/simplejson/simplejson/pull/390
* CI now tests Python 3.15 (including free-threaded 3.15t), PyPy 3.12,
CPython 3.14.8 debug builds, and uses current GitHub Actions and
cibuildwheel v4.2.1
https://github.com/simplejson/simplejson/pull/386
Version 4.1.2 released 2026-08-26
* Fix control character error position when content precedes the control char
https://github.com/simplejson/simplejson/pull/379
* Report the offending char, not the backslash, for invalid \X escapes
https://github.com/simplejson/simplejson/pull/380
* Handle non-finite Decimals like floats in the encoder
https://github.com/simplejson/simplejson/pull/381
* Parse failures due to trailing commas are now reported consistently
across implementations
https://github.com/simplejson/simplejson/pull/382
Version 4.1.1 released 2026-04-24
* The ``build_wheels_py27`` CI job now also builds Python 2.7 wheels
for Windows AMD64 and Windows x86, joining the existing Py2.7
manylinux1 / manylinux2010 x86_64 wheels. This unblocks offline /
``--no-index`` installs on Py2.7-on-Windows (the original
reporter's case), which previously had no matching binary wheel on
PyPI, fell through to the sdist, and failed on the PEP 517
isolated-build step complaining that ``setuptools>=42`` was not in
the wheelhouse.
https://github.com/simplejson/simplejson/issues/377
Version 4.1.0 released 2026-04-22
* The C extension now accelerates encoding when ``indent=`` is set.
Previously the encoder fell back to the pure-Python implementation
whenever a non-None ``indent`` was passed; now the C encoder emits
the newline-plus-indent prefix, the level-aware item separator, and
the closing indent directly. A representative nested-dict workload
benchmarks about 4-5x faster end-to-end, and the ``indent=0`` and
empty-container edge cases continue to match the Python output
byte-for-byte.
* The C extension now emits PEP 678 ``exc.add_note()`` annotations on
serialization failures, matching the pure-Python encoder. A chained
error on ``{'a': [1, object(), 3]}`` produces the same three notes
(``when serializing object object``, ``when serializing list item 1``,
``when serializing dict item 'a'``) whether the speedups are loaded
or not, so the add_note assertions in ``test_errors.py`` no longer
need ``indent=2`` to force the Python path.
Version 4.0.1 released 2026-04-18
* Skip uploading Pyodide/wasm wheels to PyPI, which rejects them with
"unsupported platform tag 'pyodide_2024_0_wasm32'". The wheels are
still built in CI and preserved as workflow artifacts.
https://github.com/simplejson/simplejson/pull/375
Version 4.0.0 released 2026-04-18
* simplejson 4 requires Python 2.7 or Python 3.8+. Older Python
versions (2.5, 2.6, 3.0-3.7) are no longer supported. pip will
not install simplejson 4 on unsupported versions.
* The C extension now uses heap types and per-module state instead of
static types and global state. This is required for free-threading
support and sub-interpreter isolation. The Python-level API is
unchanged.
* Full support for Python 3.13+ free-threading (PEP 703). The C
extension is now safe to use with the GIL disabled (python3.14t):
- Converted all static types to heap types with per-module state
- Added per-object critical sections to scanner and encoder
- Added free-threading-safe dict operations for Python 3.13+
- Unified per-module state management and templated parser
https://github.com/simplejson/simplejson/pull/363
https://github.com/simplejson/simplejson/pull/364
https://github.com/simplejson/simplejson/pull/365
https://github.com/simplejson/simplejson/pull/367
https://github.com/simplejson/simplejson/pull/369
* Numerous C extension memory safety fixes:
- Fix use-after-free and leak in encoder ident handling
- Fix NULL dereferences on OOM in module init and static string init
- Fix reference leaks in dict encoder (skipkeys item, variable shadowing)
- Fix member table copy-paste, exception clobbering, missing Py_VISIT
- Fix error-as-truthy bugs in maybe_quote_bigint and is_raw_json
- Fix iterable_as_array swallowing MemoryError and KeyboardInterrupt
- Fix for_json and _asdict swallowing MemoryError, KeyboardInterrupt,
and other non-AttributeError exceptions raised by user __getattr__
https://github.com/simplejson/simplejson/pull/355
https://github.com/simplejson/simplejson/pull/356
https://github.com/simplejson/simplejson/pull/357
https://github.com/simplejson/simplejson/pull/358
https://github.com/simplejson/simplejson/pull/359
https://github.com/simplejson/simplejson/pull/360
https://github.com/simplejson/simplejson/pull/373
* C/Python parity fixes:
- Fix C scanstring off-by-one bounds checks that caused truncated
or boundary \uXXXX escapes to raise "Invalid \\uXXXX escape
sequence" instead of "Unterminated string", and report error
position at the 'u' instead of the leading backslash. The C and
Python decoders now agree on exception class, message, and
position across all tested edge cases.
- Align the Python encoder's dispatch order with the C encoder for
objects that define _asdict(). Previously a list/tuple/dict
subclass with an _asdict() method encoded as its container type
under the Python encoder and as the _asdict() return value under
the C encoder; both now check _asdict() before list/tuple/dict.
for_json() continues to outrank _asdict() in both.
- Fix C scanstring raising a plain ValueError ("end is out of
bounds") instead of JSONDecodeError for out-of-range end indices.
User code with `except JSONDecodeError:` now catches both the
C and pure-Python paths consistently.
https://github.com/simplejson/simplejson/pull/372
* C extension performance and correctness improvements:
- Add PyDict_Next fast path for unsorted exact-dict encoding,
avoiding intermediate items list and N tuple allocations
- Add indexed fast path for exact list/tuple encoding, avoiding
iterator allocation and per-item PyIter_Next overhead
- Use PyUnicodeWriter as JSON_Accu backend on Python 3.14+,
eliminating intermediate string objects and ''.join calls
- Fix integer overflow in ascii_escape output_size calculation
that could cause buffer overwrite on pathologically large strings
- Fix list encoder separator counter overflow (int to Py_ssize_t)
- Dead code cleanup (unreachable NULL checks, do-while wrappers)
https://github.com/simplejson/simplejson/pull/370
* Added Python 3.14 support and updated to cibuildwheel 3.2.1. CI now
tests free-threaded (3.14t) and debug builds with -Werror, refcount
leak detection, and GIL-disabled mode.
https://github.com/simplejson/simplejson/pull/343
* Added a ThreadSanitizer (TSan) stress test CI job. Builds a
TSan-instrumented free-threaded CPython (cached between runs) and
runs a concurrent stress test script against the C extension to
catch data races under free-threading.
https://github.com/simplejson/simplejson/pull/373
* Replace deprecated license classifiers with SPDX license expression
https://github.com/simplejson/simplejson/pull/347
* Documented RawJSON usage with examples and caveats
https://github.com/simplejson/simplejson/pull/346
* Added pyproject.toml for PEP 517 build support. setup.py is retained
for Python 2.7 wheel builds and backwards compatibility.
* Migrated build_ext import from distutils to setuptools in setup.py.
The distutils.errors imports are kept since setuptools vendors
distutils on Python 3.12+ where stdlib distutils was removed.
* CI now tests PEP 517 builds (pyproject.toml) alongside the existing
setup.py-based builds.
* Added Pyodide (wasm32) wheel builds with C speedups via cibuildwheel.
Previously Pyodide users fell back to the pure-Python wheel; now they
get the compiled C extension cross-compiled to WebAssembly. Thread
and subprocess tests are skipped on Emscripten where those APIs are
unavailable.
* Test suite now fails (instead of skipping) when C speedups are missing
during cibuildwheel runs, catching broken extension builds early.
* New ``array_hook`` parameter for ``loads()``, ``load()``, and
``JSONDecoder``. Called with each decoded JSON array (as a list),
its return value replaces the list. Analogous to ``object_hook``
for dicts. Works with both the Python decoder and C scanner.
(Matches CPython 3.15 json module.)
* Trailing comma detection: the decoder now raises ``JSONDecodeError``
with "Illegal trailing comma before end of object/array" for inputs
like ``[1,]`` and ``{"a": 1,}`` instead of generic error messages.
Both the Python decoder and C scanner are updated.
(Matches CPython 3.13+ json module.)
* ``frozendict`` encoding support: when ``frozendict`` is available
(CPython 3.15+ PEP 814), it is encoded as a JSON object just like
``dict``. No effect on older Python versions.
* Serialization errors now include ``add_note()`` context on Python
3.11+ (PEP 678), annotating exceptions with the path to the error,
e.g. "when serializing list item 1" / "when serializing dict item
'key'". Only applies to the Python encoder.
* New C fast path for ``encode_basestring`` (``ensure_ascii=False``).
Previously the non-ASCII string encoder fell back to pure Python;
now it has a C implementation matching the existing
``encode_basestring_ascii`` fast path.
https://github.com/simplejson/simplejson/issues/207
* The Python decoder now rejects non-ASCII digits (e.g. fullwidth
``\uff10``) in JSON numbers, matching the C scanner behavior.
The ``NUMBER_RE`` regex was changed from ``\d`` to ``[0-9]``.
* Removed dead single-phase init code for Python 3.3/3.4 from the
C extension (these versions are no longer supported).
Version 3.20.2 released 2025-09-24
* Disable speedups on GraalPy same as on PyPy
https://github.com/simplejson/simplejson/pull/339
Version 3.20.1 released 2025-02-14
* Do not memoize keys before they are coerced to string
https://github.com/simplejson/simplejson/pull/329
Version 3.19.3 released 2024-08-14
* Updated test & build matrix to include Python 3.13.
Dropped wheel support for Python 2.7 on macOS.
https://github.com/simplejson/simplejson/pull/326
Version 3.19.2 released 2023-10-05
* Updated test & build matrix to include Python 3.12 and use
GitHub Actions as a Trusted Publisher (OIDC)
https://github.com/simplejson/simplejson/pull/317
Version 3.19.1 released 2023-04-06
* This release contains security hardening measures based on recommendations
by a security audit sponsored by OSTIF and conducted by X41 D-Sec GmbH.
Several of these measures include changing defaults to be more strict,
by default simplejson will now only consume and produce compliant JSON,
but the flags still exist for any backwards compatibility needs.
No high priority issues were discovered, the reference count
leak is thought to be unreachable since the digits of the float are
checked before PyOS_string_to_double is called.
A link to the public version of this report will be included in a
future release of simplejson. The following fixes were implemented in
one PR: https://github.com/simplejson/simplejson/pull/313
* Fix invalid handling of unicode escape sequences in the pure Python
implementation of the decoder (SJ-PT-23-01)
* Fix missing reference count decrease if PyOS_string_to_double raises
an exception in Python 2.x; was probably unreachable (SJ-PT-23-02)
* Backport the integer string length limitation from Python 3.11 to
limit quadratic number parsing (SJ-PT-23-03)
* Fix inconsistencies with error messages between the C and Python
implementations (SJ-PT-23-100)
* Remove unused unichr import from encoder (SJ-PT-23-101)
* Remove unused namedtuple_as_object and tuple_as_array arguments from
simplejson.load (SJ-PT-23-102)
* Remove vestigial _one_shot code from iterencode (SJ-PT-23-103)
* Change default of allow_nan from True to False and add allow_nan
to decoder (SJ-PT-23-107)
Version 3.18.4 released 2023-03-14
* Test the sdist to prevent future regressions
https://github.com/simplejson/simplejson/pull/311
* Enable ppc64le wheels
https://github.com/simplejson/simplejson/pull/312
Version 3.18.3 released 2023-02-05
* Fix regression in sdist archive
https://github.com/simplejson/simplejson/pull/310
Version 3.18.2 released 2023-02-04
* Distribute a pure python wheel for Pyodide
https://github.com/simplejson/simplejson/pull/308
Version 3.18.1 released 2023-01-03
* Remove unnecessary `i` variable from encoder module namespace
https://github.com/simplejson/simplejson/pull/303
* Declare support for Python 3.11 and add wheels
https://github.com/simplejson/simplejson/pull/305
Version 3.18.0 released 2022-11-14
* Allow serialization of classes that implement for_json or _asdict by
ignoring TypeError when those methods are called
https://github.com/simplejson/simplejson/pull/302
* Raise JSONDecodeError instead of ValueError in invalid unicode escape
sequence edge case
https://github.com/simplejson/simplejson/pull/298
Version 3.17.6 released 2021-11-15
* Declare support for Python 3.10 and add wheels
https://github.com/simplejson/simplejson/pull/291
https://github.com/simplejson/simplejson/pull/292
Version 3.17.5 released 2021-08-23
* Fix the C extension module to harden is_namedtuple against looks-a-likes such
as Mocks. Also prevent dict encoding from causing an unraised SystemError when
encountering a non-Dict. Noticed by running user tests against a CPython
interpreter with C asserts enabled (COPTS += -UNDEBUG).
https://github.com/simplejson/simplejson/pull/284
Version 3.17.4 released 2021-08-19
* Upgrade cibuildwheel
https://github.com/simplejson/simplejson/pull/287
Version 3.17.3 released 2021-07-09
* Replaced Travis-CI and AppVeyor with Github Actions,
adding wheels for Python 3.9.
https://github.com/simplejson/simplejson/pull/283
Version 3.17.2 released 2020-07-16
* Added arm64 to build matrix and reintroduced
manylinux wheels
https://github.com/simplejson/simplejson/pull/264
* No more bdist_wininst builds per PEP 527
https://github.com/simplejson/simplejson/pull/260
* Minor grammatical issue fixed in README
https://github.com/simplejson/simplejson/pull/261
Version 3.17.0 released 2019-11-17
* Updated documentation to be Python 3 first, and
have removed documentation notes about version changes
that occurred more than five years ago.
https://github.com/simplejson/simplejson/pull/257
https://github.com/simplejson/simplejson/pull/254
* Update build matrix for Python 3.8
https://github.com/simplejson/simplejson/pull/255
https://github.com/simplejson/simplejson/pull/256
Version 3.16.1 released 2018-09-07
* Added examples for JSON lines use cases
https://github.com/simplejson/simplejson/pull/236
* Add wheels for more Python versions and platforms
https://github.com/simplejson/simplejson/pull/234
https://github.com/simplejson/simplejson/pull/233
https://github.com/simplejson/simplejson/pull/231
Version 3.16.0 released 2018-06-28
* Restore old behavior with regard to the type of decoded empty
strings with speedups enabled on Python 2.x
https://github.com/simplejson/simplejson/pull/225
* Add python_requires to setup.py to help pip
https://github.com/simplejson/simplejson/pull/224
* Fix CSS in docs when built locally
https://github.com/simplejson/simplejson/pull/222
Version 3.15.0 released 2018-05-12
* Clean up the C code
https://github.com/simplejson/simplejson/pull/220
* Bypass the decode() method in bytes subclasses
https://github.com/simplejson/simplejson/pull/219
* Support builds without cStringIO
https://github.com/simplejson/simplejson/pull/217
* Allow to disable serializing bytes by default in Python 3
https://github.com/simplejson/simplejson/pull/216
* Simplify the compatibility code
https://github.com/simplejson/simplejson/pull/215
* Fix tests in Python 2.5
https://github.com/simplejson/simplejson/pull/214
Version 3.14.0 released 2018-04-21
* Defer is_raw_json test (performance improvement)
https://github.com/simplejson/simplejson/pull/212
* Avoid escaping U+2028 and U+2029 without ensure_ascii
https://github.com/simplejson/simplejson/pull/211
* Fix an incorrect type test in Python 2, avoiding an unnecessary unicode copy.
https://github.com/simplejson/simplejson/pull/210
Version 3.13.2 released 2017-11-24
* Fix additional Python 2.x compilation issue on Windows
Version 3.13.1 released 2017-11-24
* Improve CI to catch speedups build regressions
* Fix speedups build regression in Python 2.x
https://github.com/simplejson/simplejson/issues/193
Version 3.13.0 released 2017-11-23
* Workarounds for NamedTemporaryFile issues with Windows for tool tests
* Make TypeError messages contain type name instead of a repr.
https://github.com/simplejson/simplejson/pull/191
* Ensure that encoding of text subtypes is consistent with or without speedups
https://github.com/simplejson/simplejson/issues/185
Version 3.12.1 released 2017-11-23
* Misc updates to build infrastructure
* Fix an assertion failure when make_encoder receives a bad encoder argument
https://github.com/simplejson/simplejson/pull/188
* Fix potential crash during GC
https://github.com/simplejson/simplejson/pull/187
* Fix a reference leak when sorting keys
https://github.com/simplejson/simplejson/pull/186
Version 3.12.0 released 2017-11-05
* Fix threaded import race condition
https://github.com/simplejson/simplejson/issues/184
* Move RawJSON implementation to simplejson.raw_json module
* Move JSONDecodeError implementation to simplejson.errors module
Version 3.11.1 released 2017-06-19
* Fix issue with item_sort_key when speedups are available, and add
auto-discovery to test suites to prevent similar regressions
https://github.com/simplejson/simplejson/issues/173
Version 3.11.0 released 2017-06-18
* docstring fix in JSONEncoder
https://github.com/simplejson/simplejson/pull/172
* Call PyObject_IsTrue() only once for the strict argument of scanner
https://github.com/simplejson/simplejson/pull/170
* Fix a crash with unencodable encoding in the encoder
https://github.com/simplejson/simplejson/pull/171
* Remove unused imports
https://github.com/simplejson/simplejson/pull/162
* Remove remnants of Python 2.4 support
https://github.com/simplejson/simplejson/pull/168
* Fix argument checking errors in _speedups.c
https://github.com/simplejson/simplejson/pull/169
* Remove the `__init__` methods in extension classes
https://github.com/simplejson/simplejson/pull/166
* Fix typo in the doc for loads
https://github.com/simplejson/simplejson/issues/161
* Add Python 3.6 to testing matrix and PyPI metadata
https://github.com/simplejson/simplejson/pull/153
https://github.com/simplejson/simplejson/pull/152
Version 3.10.0 released 2016-10-28
* Add RawJSON class to allow a faster path for already encoded JSON.
https://github.com/simplejson/simplejson/pull/143
Version 3.9.0 released 2016-10-21
* Workaround for bad behavior in string subclasses
https://github.com/simplejson/simplejson/issues/144
* Fix warnings flagged by -3
https://github.com/simplejson/simplejson/pull/146
* Update readthedocs documentation links
https://github.com/simplejson/simplejson/pull/137
* Add build status badge to README
https://github.com/simplejson/simplejson/pull/134
Version 3.8.2 released 2016-02-14
* Fix implicit cast compiler warning in _speedups.c
* simplejson is now available as wheels for OS X and Windows thanks to Travis-CI
and AppVeyor respectively! Many thanks to @aebrahim for getting this party
started.
https://github.com/simplejson/simplejson/pull/130
https://github.com/simplejson/simplejson/issues/122
Version 3.8.1 released 2015-10-27
* Fix issue with iterable_as_array and indent option
https://github.com/simplejson/simplejson/issues/128
* Fix typo in keyword argument name introduced in 3.8.0
https://github.com/simplejson/simplejson/pull/123
Version 3.8.0 released 2015-07-18
* New iterable_as_array encoder option to perform lazy serialization of
any iterable objects, without having to convert to tuple or list.
Version 3.7.3 released 2015-05-31
* Fix typo introduced in 3.7.0 (behavior should be indistinguishable)
https://github.com/simplejson/simplejson/commit/e18cc09b688ea1f3305c27616fd3cadd2adc6d31#commitcomment-11443842
Version 3.7.2 released 2015-05-22
* Do not cache Decimal class in encoder, only reference the decimal module.
This may make reload work in more common scenarios.
Version 3.7.1 released 2015-05-18
* Fix compilation with MSVC
https://github.com/simplejson/simplejson/pull/119
Version 3.7.0 released 2015-05-18
* simplejson no longer trusts custom str/repr methods for int, long, float
subclasses. These instances are now formatted as if they were exact
instances of those types.
https://github.com/simplejson/simplejson/issues/118
Version 3.6.5 released 2014-10-24
* Importing bug fix for reference leak when an error occurs during
dict encoding
https://github.com/simplejson/simplejson/issues/109
Version 3.6.4 released 2014-09-29
* Important bug fix for dump when only sort_keys is set
https://github.com/simplejson/simplejson/issues/106
Version 3.6.3 released 2014-08-18
* Documentation updates
https://github.com/simplejson/simplejson/issues/103
Version 3.6.2 released 2014-08-09
* Documentation updates
http://bugs.python.org/issue21514
Version 3.6.1 released 2014-08-09
* Documentation updates
https://github.com/simplejson/simplejson/issues/102
Version 3.6.0 released 2014-07-21
* Automatically strip any UTF-8 BOM from input to more closely
follow the latest specs
https://github.com/simplejson/simplejson/pull/101
Version 3.5.3 released 2014-06-24
* Fix lower bound checking in scan_once / raw_decode API
https://github.com/simplejson/simplejson/issues/98
Version 3.5.2 released 2014-05-22
* Fix Windows build with VS2008
https://github.com/simplejson/simplejson/pull/97
Version 3.5.1 released 2014-05-21
* Consistently reject int_as_string_bitcount settings that are not
positive integers
Version 3.5.0 released 2014-05-20
* Added int_as_string_bitcount encoder option
https://github.com/simplejson/pull/96
* Fixed potential crash when encoder created with incorrect options
Version 3.4.1 released 2014-04-30
* Fixed tests to run on Python 3.4
Version 3.4.0 released 2014-04-02
* Native setuptools support re-introduced
https://github.com/simplejson/simplejson/pull/92
Version 3.3.3 released 2014-02-14
* Improve test suite's Python 3.4 compatibility
https://github.com/simplejson/simplejson/issues/87
Version 3.3.2 released 2014-01-06
* Docstring fix for decoded string types
https://github.com/simplejson/simplejson/pull/82
Version 3.3.1 released 2013-10-05
* JSONDecodeError exceptions can now be pickled
https://github.com/simplejson/simplejson/pull/78
Version 3.3.0 released 2013-05-07
* Unpaired surrogates once again pass through the decoder, to match older
behavior and the RFC-4627 spec.
https://github.com/simplejson/simplejson/issues/62
Version 3.2.0 released 2013-05-01
* New ignore_nan kwarg in encoder that serializes out
of range floats (Infinity, -Infinity, NaN) as null for ECMA-262
compliance.
https://github.com/simplejson/simplejson/pull/63
* New for_json kwarg in encoder to make it possible to for
subclasses of dict and list to be specialized.
https://github.com/simplejson/simplejson/pull/69
Version 3.1.3 released 2013-04-06
* Updated documentation to discourage subclassing whenever possible.
default, object_hook, and object_pairs_hook provide almost all of
the functionality of subclassing.
Version 3.1.2 released 2013-03-20
* Updated documentation to reflect separators behavior when indent is
not None
https://github.com/simplejson/simplejson/issues/59
* Test suite should be compatible with debug builds of Python 2.x and 3.x
https://github.com/simplejson/simplejson/pull/65
Version 3.1.1 released 2013-02-21
* setup.py now has another workaround for Windows machines without
MSVC installed
http://bugs.python.org/issue7511
Version 3.1.0 released 2013-02-21
* Updated JSON conformance test suite
http://bugs.python.org/issue16559
* simplejson.tool tests and bugfix for Python 3.x
http://bugs.python.org/issue16549
* Improve error messages for certain kinds of truncated input
http://bugs.python.org/issue16009
* Moved JSONDecodeError to json.scanner (still available for import
from json.decoder)
* Changed scanner to use JSONDecodeError directly rather than
StopIteration to improve error messages
Version 3.0.9 released 2013-02-21
* Fix an off-by-one error in the colno property of JSONDecodeError
(when lineno == 1)
http://bugs.python.org/issue17225
Version 3.0.8 released 2013-02-19
* Fix a Python 2.x compiler warning for narrow unicode builds
https://github.com/simplejson/simplejson/issues/56
Version 3.0.7 released 2013-01-11
* NOTE: this release only changes the license.
* simplejson is now dual-licensed software, MIT or AFL v2.1. It is
also made explicit that this code is also licensed to the PSF under
a Contributor Agreement.
Version 3.0.6 released 2013-01-11
* Fix for major Python 2.x ensure_ascii=False encoding regression
introduced in simplejson 3.0.0. If you use this setting, please
upgrade immediately.
https://github.com/simplejson/simplejson/issues/50
Version 3.0.5 released 2013-01-03
* NOTE: this release only changes the tests, it is
not essential to upgrade
* Tests now run with deprecation warnings printed
* Fixed Python 3 syntax error in simplejson.tool
https://github.com/simplejson/simplejson/issues/49
* Fixed Python 3.3 deprecation warnings in test suite
https://github.com/simplejson/simplejson/issues/48
Version 3.0.4 released 2013-01-02
* MSVC compatibility for Python 3.3
https://github.com/simplejson/simplejson/pull/47
Version 3.0.3 released 2013-01-01
* Fixes for bugs introduced in 3.0.2
* Fixes for Python 2.5 compatibility
* MSVC compatibility for Python 2.x
https://github.com/simplejson/simplejson/pull/46
Version 3.0.2 released 2013-01-01
* THIS VERSION HAS BEEN REMOVED
* Missed a changeset to _speedups.c in the 3.0.1 branch cut
Version 3.0.1 released 2013-01-01
* THIS VERSION HAS BEEN REMOVED
* Add accumulator optimization to encoder, equivalent to the usage of
`_Py_Accu` in the Python 3.3 json library. Only relevant if encoding
very large JSON documents.
Version 3.0.0 released 2012-12-30
* Python 3.3 is now supported, thanks to Vinay Sajip
https://github.com/simplejson/simplejson/issues/8
* `sort_keys`/`item_sort_key` now sort on the stringified version of the
key, rather than the original object. This ensures that the sort
only compares string types and makes the behavior consistent between
Python 2.x and Python 3.x.
* Like other number types, Decimal instances used as keys are now
coerced to strings when use_decimal is True.
Version 2.6.2 released 2012-09-21
* JSONEncoderForHTML was not exported in the simplejson module
https://github.com/simplejson/simplejson/issues/41
Version 2.6.1 released 2012-07-27
* raw_decode() now skips whitespace before the object
https://github.com/simplejson/simplejson/pull/38
Version 2.6.0 released 2012-06-26
* Error messages changed to match proposal for Python 3.3.1
http://bugs.python.org/issue5067
Version 2.5.2 released 2012-05-10
* Fix for regression introduced in 2.5.1
https://github.com/simplejson/simplejson/issues/35
Version 2.5.1 released 2012-05-10
* Support for use_decimal=True in environments that use Python
sub-interpreters such as uWSGI
https://github.com/simplejson/simplejson/issues/34
Version 2.5.0 released 2012-03-29
* New item_sort_key option for encoder to allow fine grained control of sorted
output
Version 2.4.0 released 2012-03-06
* New bigint_as_string option for encoder to trade JavaScript number precision
issues for type issues.
https://github.com/simplejson/simplejson/issues/31
Version 2.3.3 released 2012-02-27
* Allow unknown numerical types for indent parameter
https://github.com/simplejson/simplejson/pull/29
Version 2.3.2 released 2011-12-30
* Fix crashing regression in speedups introduced in 2.3.1
Version 2.3.1 released 2011-12-29
* namedtuple_as_object now checks _asdict to ensure that it
is callable.
https://github.com/simplejson/simplejson/issues/26
Version 2.3.0 released 2011-12-05
* Any objects with _asdict() methods are now considered for
namedtuple_as_object.
https://github.com/simplejson/simplejson/pull/22
Version 2.2.1 released 2011-09-06
* Fix MANIFEST.in issue when building a sdist from a sdist.
https://github.com/simplejson/simplejson/issues/16
Version 2.2.0 released 2011-09-04
* Remove setuptools requirement, reverted to pure distutils
* use_decimal default for encoding (dump, dumps, JSONEncoder) is now True
* tuple encoding as JSON objects can be turned off with new
tuple_as_array=False option.
https://github.com/simplejson/simplejson/pull/6
* namedtuple (or other tuple subclasses with _asdict methods) are now
encoded as JSON objects rather than arrays by default. Can be disabled
and treated as a tuple with the new namedtuple_as_object=False option.
https://github.com/simplejson/simplejson/pull/6
* JSONDecodeError is now raised instead of ValueError when a document
ends with an opening quote and the C speedups are in use.
https://github.com/simplejson/simplejson/issues/15
* Updated documentation with information about JSONDecodeError
* Force unicode linebreak characters to be escaped (U+2028 and U+2029)
http://timelessrepo.com/json-isnt-a-javascript-subset
* Moved documentation from a git submodule to
https://simplejson.readthedocs.io/
Version 2.1.6 released 2011-05-08
* Prevent segfaults with deeply nested JSON documents
https://github.com/simplejson/simplejson/issues/11
* Fix compatibility with Python 2.5
https://github.com/simplejson/simplejson/issues/5
Version 2.1.5 released 2011-04-17
* Built sdist tarball with setuptools_git installed. Argh.
Version 2.1.4 released 2011-04-17
* Does not try to build the extension when using PyPy
* Trailing whitespace after commas no longer emitted when indent is used
* Migrated to github http://github.com/simplejson/simplejson
Version 2.1.3 released 2011-01-17
* Support the sort_keys option in C encoding speedups
http://code.google.com/p/simplejson/issues/detail?id=86
* Allow use_decimal to work with dump()
http://code.google.com/p/simplejson/issues/detail?id=87
Version 2.1.2 released 2010-11-01
* Correct wrong end when object_pairs_hook is used
http://code.google.com/p/simplejson/issues/detail?id=85
* Correct output for indent=0
http://bugs.python.org/issue10019
* Correctly raise TypeError when non-string keys are used with speedups
http://code.google.com/p/simplejson/issues/detail?id=82
* Fix the endlineno, endcolno attributes of the JSONDecodeError exception.
http://code.google.com/p/simplejson/issues/detail?id=81
Version 2.1.1 released 2010-03-31
* Change how setup.py imports ez_setup.py to try and workaround old versions
of setuptools.
http://code.google.com/p/simplejson/issues/detail?id=75
* Fix compilation on Windows platform (and other platforms with very
picky compilers)
* Corrected simplejson.__version__ and other minor doc changes.
* Do not fail speedups tests if speedups could not be built.
http://code.google.com/p/simplejson/issues/detail?id=73
Version 2.1.0 released 2010-03-10
* Decimal serialization officially supported for encoding with
use_decimal=True. For encoding this encodes Decimal objects and
for decoding it implies parse_float=Decimal
* Python 2.4 no longer supported (may still work, but no longer tested)
* Decoding performance and memory utilization enhancements
http://bugs.python.org/issue7451
* JSONEncoderForHTML class for escaping &, <, >
http://code.google.com/p/simplejson/issues/detail?id=66
* Memoization of object keys during encoding (when using speedups)
* Encoder changed to use PyIter_Next for list iteration to avoid
potential threading issues
* Encoder changed to use iteritems rather than PyDict_Next in order to
support dict subclasses that have a well defined ordering
http://bugs.python.org/issue6105
* indent encoding parameter changed to be a string rather than an integer
(integer use still supported for backwards compatibility)
http://code.google.com/p/simplejson/issues/detail?id=56
* Test suite (python setup.py test) now automatically runs with and without
speedups
http://code.google.com/p/simplejson/issues/detail?id=55
* Fixed support for older versions of easy_install (e.g. stock Mac OS X config)
http://code.google.com/p/simplejson/issues/detail?id=54
* Fixed str/unicode mismatches when using ensure_ascii=False
http://code.google.com/p/simplejson/issues/detail?id=48
* Fixed error message when parsing an array with trailing comma with speedups
http://code.google.com/p/simplejson/issues/detail?id=46
* Refactor decoder errors to raise JSONDecodeError instead of ValueError
http://code.google.com/p/simplejson/issues/detail?id=45
* New ordered_pairs_hook feature in decoder which makes it possible to
preserve key order. http://bugs.python.org/issue5381
* Fixed containerless unicode float decoding (same bug as 2.0.4, oops!)
http://code.google.com/p/simplejson/issues/detail?id=43
* Share PosInf definition between encoder and decoder
* Minor reformatting to make it easier to backport simplejson changes
to Python 2.7/3.1 json module
Version 2.0.9 released 2009-02-18
* Adds cyclic GC to the Encoder and Scanner speedups, which could've
caused uncollectible cycles in some cases when using custom parser
or encoder functions
Version 2.0.8 released 2009-02-15
* Documentation fixes
* Fixes encoding True and False as keys
* Fixes checking for True and False by identity for several parameters
Version 2.0.7 released 2009-01-04
* Documentation fixes
* C extension now always returns unicode strings when the input string is
unicode, even for empty strings
Version 2.0.6 released 2008-12-19
* Windows build fixes
Version 2.0.5 released 2008-11-23
* Fixes a segfault in the C extension when using check_circular=False and
encoding an invalid document
Version 2.0.4 released 2008-10-24
* Fixes a parsing error in the C extension when the JSON document is (only)
a floating point number. It would consume one too few characters in that
case, and claim the document invalid.
Version 2.0.3 released 2008-10-11
* Fixes reference leaks in the encoding speedups (sorry about that!)
* Fixes doctest suite for Python 2.6
* More optimizations for the decoder
Version 2.0.2 released 2008-10-06
* Fixes MSVC2003 build regression
* Fixes Python 2.4 compatibility in _speedups.c
Version 2.0.1 released 2008-09-29
* Fixes long encoding regression introduced in 2.0.0
* Fixes MinGW build regression introduced in 2.0.0
Version 2.0.0 released 2008-09-27
* optimized Python encoding path
* optimized Python decoding path
* optimized C encoding path
* optimized C decoding path
* switched to sphinx docs (nearly the same as the json module in python 2.6)
Version 1.9.3 released 2008-09-23
* Decoding is significantly faster (for our internal benchmarks)
* Pretty-printing tool changed from simplejson to simplejson.tool for better
Python 2.6 comaptibility
* Misc. bug fixes
Version 1.9 released 2008-05-03
* Rewrote test suite with unittest and doctest (no more nosetest dependency)
* Better PEP 7 and PEP 8 source compliance
* Removed simplejson.jsonfilter demo module
* simplejson.jsonfilter is no longer included
Version 1.8.1 released 2008-03-24
* Optional C extension for accelerating the decoding of JSON strings
* Command line interface for pretty-printing JSON (via python -msimplejson)
* Decoding of integers and floats is now extensible (e.g. to use Decimal) via
parse_int, parse_float options.
* Subversion and issue tracker moved to google code:
http://code.google.com/p/simplejson/
* "/" is no longer escaped, so if you're embedding JSON directly in HTML
you'll want to use .replace("/", "\\/") to prevent a close-tag attack.
Version 1.7 released 2007-03-18
* Improves encoding performance with an optional C extension to speed up
str/unicode encoding (by 10-150x or so), which yields an overall speed
boost of 2x+ (JSON is string-heavy).
* Support for encoding unicode code points outside the BMP to UTF-16
surrogate code pairs (specified by the Strings section of RFC 4627).
Version 1.6 released 2007-03-03
* Improved str support for encoding. Previous versions of simplejson
integrated strings directly into the output stream, this version ensures
they're of a particular encoding (default is UTF-8) so that the output
stream is valid.
Version 1.5 released 2007-01-18
* Better Python 2.5 compatibility
* Better Windows compatibility
* indent encoding parameter for pretty printing
* separators encoding parameter for generating optimally compact JSON
Version 1.3 released 2006-04-01
* The optional object_hook function is called upon decoding of any JSON
object literal, and its return value is used instead of the dict that
would normally be used. This can be used to efficiently implement
features such as JSON-RPC class hinting, or other custom decodings of
JSON. See the documentation for more information.
Version 1.1 released 2005-12-31
* Renamed from simple_json to simplejson to comply with PEP 8 module naming
guidelines
* Full set of documentation
* More tests
* The encoder and decoder have been extended to understand NaN, Infinity, and
-Infinity (but this can be turned off via allow_nan=False for strict JSON
compliance)
* The decoder's scanner has been fixed so that it no longer accepts invalid
JSON documents
* The decoder now reports line and column information as well as character
numbers for easier debugging
* The encoder now has a circular reference checker, which can be optionally
disabled with check_circular=False
* dump, dumps, load, loads now accept an optional cls kwarg to use an