- Use current master version of rapidjson
- Produce ppc64le wheels, thanks to mgiessing (PR #170)
- Use cibuildwheel 2.21.1
- Produce Python 3.11 wheels, thanks to
cibuildwheel
2.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_hook
load option (issue #154)
- Require Python 3.6 or greater
- New serialization options,
iterable_mode
andmapping_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
Encoder
instance 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'skFormatSingleLineArray
option (issue #123), thanks to Nguyễn Hồng Quân for the initial implementation (PR #124)
- New serialization option
bytes_mode
to 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
OrderedDict
s (issue #119) - Fix serialization of
IntEnum
s (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
RawJSON
class, allowing inclusion of pre-serialized content (PR #95 and PR #96), thanks to Silvio Tomatis
- Deserialize from
bytes
andbytearray
instances, 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
json
style
- 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_depth
argument, 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_hook
and dumps'sdefault
arguments could not be passedNone
explicitly (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_mode
option, implementing relaxed JSON syntax (issue #73) - New
Encoder
andDecoder
, 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_XXX
constants have been shortened toDM_XXX
DATETIME_MODE_ISO8601_UTC
has been renamed toDM_SHIFT_TO_UTC
- all
UUID_MODE_XXX
constants have been shortened toUM_XXX
- all
- New option
DM_UNIX_TIME
to serialize date, datetime and time values as UNIX timestamps targeting issue #61 - New option
DM_NAIVE_IS_UTC
to treat naïve datetime and time values as if they were in the UTC timezone (also for issue #61) - New keyword argument
number_mode
to 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)