NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #466 most downloaded on PyPI
Simple, fast, extensible JSON encoder/decoder for Python
Last release today
03 Oct 2026
Release timing varies
gaps range from 3 weeks to 10 months
Some releases are documented
notes for 27 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
21 years old
114 releases · first in 2005
Start building CPython 3.15 wheels by @edgarrmondragon in #385
Full Changelog: v4.1.2...v4.2.0
One column per quarter.
Fix control character error position when content precedes the control char by @gaoflow in #379
Full Changelog: v4.1.1...v4.1.2
Add Python 2.7 wheel builds for Windows platforms by @etrepum in #378
Full Changelog: v4.1.0...v4.1.1
Accelerate indented encoding in the C extension; release 4.1.0 by @etrepum in #376
Full Changelog: v4.0.1...v4.1.0
Exclude Pyodide wheels from PyPI uploads by @etrepum in #375
Full Changelog: v4.0.0...v4.0.1
Replace deprecated license classifiers with SPDX license expression #347
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):
Numerous C extension memory safety fixes:
C/Python parity fixes:
except JSONDecodeError: now catches both theC extension performance and correctness improvements:
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.
#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.
#373
Replace deprecated license classifiers with SPDX license expression
#347
Documented RawJSON usage with examples and caveats
#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.
#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).
Full Changelog: v3.20.2...v4.0.0
Add a test for the min and max floats by @etrepum in #337
Version 3.20.1 released 2025-02-14
Version 3.20.1 released 2025-02-14
Full Changelog: v3.19.3...v3.20.1
Version 3.19.3 released 2024-08-14
Version 3.19.3 released 2024-08-14
Version 3.19.2 released 2023-10-05
Version 3.19.2 released 2023-10-05
Version 3.19.1 released 2023-04-06
Version 3.19.1 released 2023-04-06
Version 3.18.4 released 2023-03-14
Version 3.18.4 released 2023-03-14
Version 3.18.3 released 2023-02-05
Version 3.18.3 released 2023-02-05
Version 3.18.2 released 2023-02-04
Version 3.18.2 released 2023-02-04
Version 3.18.1 released 2023-01-03
Version 3.18.1 released 2023-01-03
i variable from encoder module namespace
https://github.com/simplejson/simplejson/pull/303Version 3.18.0 released 2022-11-14
Version 3.18.0 released 2022-11-14
Version 3.17.6 released 2021-11-15
Version 3.17.6 released 2021-11-15
Version 3.17.5 released 2021-08-23
Version 3.17.5 released 2021-08-23
Version 3.17.4 released 2021-08-19
Version 3.17.4 released 2021-08-19
Version 3.17.3 released 2021-07-09
Version 3.17.3 released 2021-07-09
Version 3.17.2 released 2020-07-16
Version 3.17.2 released 2020-07-16
Updated documentation to be Python 3 first, and have removed documentation notes about version changes that occurred more than five years ago. https:/
Restore old behavior with regard to the type of decoded empty strings with speedups enabled on Python 2.x https://github.com/simplejson/simplejson/pul
Clean up the C code https://github.com/simplejson/simplejson/pull/220
Defer is_raw_json test (performance improvement) https://github.com/simplejson/simplejson/pull/212
Fix additional Python 2.x compilation issue on Windows
Workarounds for NamedTemporaryFile issues with Windows for tool tests
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →