- Fix serialization bug when using
MM_COERCE_KEYS_TO_STRINGStogether withsort_keys=True(issue #229)
- Generate wheels on PyPI using Python 3.14 final release, thanks to cibuildwheel 3.2.1
- Use current master version of rapidjson, thanks to Kyle Gottfried (although I didn't merge his PR #224)
- Recompute comparison table with latest versions of other libraries, using Python 3.13
- Typing stubs: specify default value for
streamargument ofEncoder.__call__()(issue #215) - Use more recent OS images on GH Actions to test and build wheels
- Rectify type hints of
loads()andDecoder.__call__()(issue #214) - Ensure
Validatorreceives valid UTF-8bytes/bytearrayarguments - Generate wheels on PyPI using Python 3.13.0rc1 release, thanks to cibuildwheel 2.20.0
- Properly dump subclasses of
floatwith custom__repr__()method ( issue #213)
- Expose PEP-484 typing stubs, thanks to Rodion Kosianenko and GoodWasHere (PR #204)
- Use current master version of rapidjson
- Generate wheels on PyPI using Python 3.13b1 release, thanks to cibuildwheel 2.18.0
- Produce Python 3.8 wheels again, I deactivated it too eagerly, it's in security fixes only mode, not yet reached its end-of-life state
- Honor the recursion limit also at parse time, to avoid attacks as described by CVE-2024-27454
- Produce binary wheels for macOS/arm64, thanks to timothyjlaurent (PR #195)
- Fix handling of write_mode in dump functions (problem emerged discussing issue #191)
- Generate wheels on PyPI using final Python 3.12 release, thanks to cibuildwheel 2.16.2
- Use current master version of rapidjson
- Use cibuildwheel 2.15.0
- Use current master version of rapidjson
- Produce ppc64le wheels, thanks to mgiessing (PR #170)
- Use cibuildwheel 2.12.1
- Produce Python 3.11 wheels, thanks to
cibuildwheel2.11.1
- Fix problem on macOS explicitly requiring C++11, thanks to agate-pris (issue #166)
- Use current master version of rapidjson
- Update the test suite to work on Pyston, thanks to Kevin Modzelewski (PR #161)
- Fix memory leak when using
end_array(issue #160)
- Fix serialization bug when using DM_UNIX_TIME in a non-C locale context
- Build binary wheel for aarch64, thanks to odidev (PR #156)
- Yet another attempt to fix automatic wheels upload
- Fix automatic wheels upload from GH Actions to PyPI
- Reduce decoder memory consumption by uniquifiying keys in the loaded dictionaries
- Implement an alternative way of transmogrify JSON objects, similar to
json'sobject_pairs_hookload option (issue #154)
- Require Python 3.6 or greater
- New serialization options,
iterable_modeandmapping_mode, to give some control on how generic iterables and mappings get encoded (fix issue #149 and issue #150) - Internal refactorings, folding "skipkeys" and "sort_keys" arguments into the mapping_mode options, respectively as MM_SKIP_NON_STRING_KEYS and MM_SORT_KEYS: "old" arguments kept for backward compatibility
- Bump major version to 1, tag as "production/stable" and switch to a simpler X.Y versioning schema
- Fix memory leak loading an invalid JSON (issue #148)
- Fix access to
Encoderinstance attributes (issue #147)
- Use current master version of rapidjson
- Enable GH Actions-based test workflow, thanks to Martin Thoma (PR #143)
- Produce Python 3.9 wheels, disable testing under Python < 3.6
- Make the character used for indentation in pretty mode a parameter (issue #135)
- Handle wider precision range in timestamps fractional seconds (PR 133), thanks to Karl Seguin
- Add comparison benchmarks against orjson and hyperjson (issue #130 and PR #131, thanks to Sebastian Pipping)
- Fix memory leak in case of failed validation (issue #126)
- Produce Python 3.8 wheels
- Compatibility fix for Python 3.8 (issue #125)
- New dump option
write_mode, supporting RapidJSON'skFormatSingleLineArrayoption (issue #123), thanks to Nguyễn Hồng Quân for the initial implementation (PR #124)
- New serialization option
bytes_modeto control how bytes instances get encoded (issue #122)
- Hopefully fix the memory leak when loading from a stream (issue #117)
- Raise a more specific exception on loading errors,
JSONDecodeError, instead of genericValueError(issue #118) - Fix optimization path when using
OrderedDicts (issue #119) - Fix serialization of
IntEnums (issue #121) - I spent quite a lot of time investigating on the memory leak when loading from a stream (issue #117): as I was not able to fully replicate the problem, I cannot be sure I solved the problem... sorry!
- Raise correct exception in code samples (PR #109), thanks to Thomas Dähling
- Fix compilation with system-wide install of rapidjson (issue #110)
- Use current master version of rapidjson, that includes a fix for its issue #1368 and issue #1336, and cures several compilation warnings as well (issue #112 and issue #107)
- Fix memory leak when using
object_hook(issue #115)
- No visible changes, but now PyPI carries binary wheels for Python 3.7.
- Use a more specific ValidationError, to differentiate from invalid JSON
- Nothing new, attempt to build Python 3.6 binary wheels on Travis CI
- Add a new comparison table involving
ensure_ascii(issue #98) - Use Python's
repr()to emit float values instead of rapidjson'sdtoa()(issue #101) - Use a newer (although unreleased) version of rapidjson to fix an issue with JSONSchema validation (PR #103), thanks to Anthony Miyaguchi
- Tiny tweak to restore macOS build on Travis CI
- Minor tweaks to CI and PyPI deploy configuration
- New
RawJSONclass, allowing inclusion of pre-serialized content (PR #95 and PR #96), thanks to Silvio Tomatis
- Deserialize from
bytesandbytearrayinstances, ensuring they contain valid UTF-8 data - Speed up parsing of floating point numbers, avoiding intermediary conversion to a Python string (PR #94)
- Fix precision handling of DM_UNIX_TIME timestamps
- Fix memory leaks in
Decoder()andEncoder()classes, related to bad handling ofPyObject_GetAttr()result value - Fix compatibility with Python 3.7a
Implemented the streaming interface, see load() and dump() (issue #80)
Backward incompatibility: now the flags arguments on all the functions are keyword only, to mimic stdlib's
jsonstyle
- Reduce compiler warnings (issue #87)
- Fix Travis CI recipe to accomodate MacOS
Fix compilation on MacOS (issue #78)
Handle generic iterables (PR #89)
Backward incompatibility: the
dumps()function and theEncoder()constructor used to accept amax_recursion_depthargument, to control the maximum allowed nesting of Python structures; since the underlying function is now effectively recursive, it has been replaced by the generic sys.setrecursionlimit() mechanism
- Restore compatibility with Python < 3.6
- Fix memory leaks when using object_hook/start_object/end_object
- Fix bug where error handling code could raise an exception causing a confusing exception to be returned (PR #82)
- Fix bug where loads's
object_hookand dumps'sdefaultarguments could not be passedNoneexplicitly (PR #83) - Fix crash when dealing with surrogate pairs (issue #81)
- Fix compatibility with MacOS/clang
- Limit the precision of DM_UNIX_TIME timestamps to six decimal digits
- Nothing new, attempt to fix production of Python 3.6 binary wheels
- Nothing new, attempt to fix production of Python 3.6 binary wheels
- New
parse_modeoption, implementing relaxed JSON syntax (issue #73) - New
EncoderandDecoder, implementing a class-based interface - New
Validator, exposing the underlying JSON schema validation (issue #71)
- Remove beta status
- Make execution of the test suite on Appveyor actually happen
- Exclude CI configurations from the source distribution
- Fix Powershell wheel upload script in appveyor configuration
- Compilable with somewhat old g++ (issue #69)
- Backward incompatibilities:
- all
DATETIME_MODE_XXXconstants have been shortened toDM_XXXDATETIME_MODE_ISO8601_UTChas been renamed toDM_SHIFT_TO_UTC - all
UUID_MODE_XXXconstants have been shortened toUM_XXX
- all
- New option
DM_UNIX_TIMEto serialize date, datetime and time values as UNIX timestamps targeting issue #61 - New option
DM_NAIVE_IS_UTCto treat naïve datetime and time values as if they were in the UTC timezone (also for issue #61) - New keyword argument
number_modeto use underlying C library numbers - Binary wheels for GNU/Linux and Windows on PyPI (one would hope: this is the reason for the beta1 release)
- Fix a couple of refcount handling glitches, hopefully targeting issue #48.
- Fix source distribution to contain all required stuff (PR #64)
- CI testing on GitHub
- Allow using locally installed RapidJSON library (issue #60)
- Bug fixes (issue #37, issue #51, issue #57)