pypi / orjson
orjson
What changed in orjson 3, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-21.
7 breaking1 security1 new APIs and options1 behavior and defaults2 tooling6 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initorjson 318 changes
Breaking changes 7
PyPI wheels are no longer published for Windows x86/i686.
PyPI wheels are no longer published for ppc64le and s390x.
Building now requires Rust 1.95 or later instead of 1.89.
Float serialization uses a faster library; positive exponents are now written with a plus sign, such as 1.2e+30 instead of 1.2e30.
Python 3.9 is no longer supported.
Building orjson now requires Rust 1.89 or later instead of 1.85.
Building now requires a C compiler.
Security 1
orjson does not limit recursion for deeply nested JSON documents
New APIs and options 1
ABI compatibility was added for CPython 3.15 alpha 1.
Behavior and default changes 1
Serializes the Python 3.15 built-in frozendict type identically to dict.
Tooling 2
Wheels are published for Python 3.15 and later, with manylinux_2_39 targeted instead of manylinux_2_17.
PyPI wheels are published for 3.14 and for manylinux i686, arm7, ppc64le, and s390x.
Fixes and other changes 6
Fixes building on Rust 1.95.
Adds ABI compatibility with CPython 3.15 alpha 5 free-threading.
ABI compatibility is added for CPython 3.15 alpha 5.
orjson now includes code licensed under MPL-2.0, which may affect licensing decisions.
Fixes a sporadic crash when serializing deeply nested lists of dictionaries.
Building on unsupported Python versions now shows a simple error message instead of a traceback.