-Version 1.2 (in development)
-============================
+Version 2.3
+===========
+
+Released 2012-01-27
+
+* New features:
+
+ - `json_unpack()` and friends: Add support for optional object keys
+ with the ``{s?o}`` syntax.
+
+ - Add `json_object_update_existing()` and
+ `json_object_update_missing()`, for updating only existing keys or
+ only adding missing keys to an object. (#37)
+
+ - Add `json_object_foreach()` for more convenient iteration over
+ objects. (#45, #46)
+
+ - When decoding JSON, write the number of bytes that were read from
+ input to ``error.position`` also on success. This is handy with
+ ``JSON_DISABLE_EOF_CHECK``.
+
+ - Add support for decoding any JSON value, not just arrays or
+ objects. The support is enabled with the new ``JSON_DECODE_ANY``
+ flag. Patch by Andrea Marchesini. (#4)
+
+* Bug fixes
+
+ - Avoid problems with object's serial number growing too big. (#40,
+ #41)
+
+ - Decoding functions now return NULL if the first argument is NULL.
+ Patch by Andrea Marchesini.
+
+ - Include ``jansson_config.h.win32`` in the distribution tarball.
+
+ - Remove ``+`` and leading zeros from exponents in the encoder.
+ (#39)
+
+ - Make Jansson build and work on MinGW. (#39, #38)
+
+* Documentation
+
+ - Note that the same JSON values must not be encoded in parallel by
+ separate threads. (#42)
+
+ - Document MinGW support.
+
+
+Version 2.2.1
+=============
+
+Released 2011-10-06
+
+* Bug fixes:
+
+ - Fix real number encoding and decoding under non-C locales. (#32)
+
+ - Fix identifier decoding under non-UTF-8 locales. (#35)
+
+ - `json_load_file()`: Open the input file in binary mode for maximum
+ compatiblity.
+
+* Documentation:
+
+ - Clarify the lifecycle of the result of the ``s`` fromat of
+ `json_unpack()`. (#31)
+
+ - Add some portability info. (#36)
+
+ - Little clarifications here and there.
+
+* Other:
+
+ - Some style fixes, issues detected by static analyzers.
+
+
+Version 2.2
+===========
+
+Released 2011-09-03
+
+* New features:
+
+ - `json_dump_callback()`: Pass the encoder output to a callback
+ function in chunks.
+
+* Bug fixes:
+
+ - `json_string_set()`: Check that target is a string and value is
+ not NULL.
+
+* Other:
+
+ - Documentation typo fixes and clarifications.
+
+
+Version 2.1
+===========
+
+Released 2011-06-10
+
+* New features:
+
+ - `json_loadb()`: Decode a string with a given size, useful if the
+ string is not null terminated.
+
+ - Add ``JSON_ENCODE_ANY`` encoding flag to allow encoding any JSON
+ value. By default, only arrays and objects can be encoded. (#19)
+
+ - Add ``JSON_REJECT_DUPLICATES`` decoding flag to issue a decoding
+ error if any JSON object in the input contins duplicate keys. (#3)
+
+ - Add ``JSON_DISABLE_EOF_CHECK`` decoding flag to stop decoding after a
+ valid JSON input. This allows other data after the JSON data.
+
+* Bug fixes:
+
+ - Fix an additional memory leak when memory allocation fails in
+ `json_object_set()` and friends.
+
+ - Clear errno before calling `strtod()` for better portability. (#27)
+
+* Building:
+
+ - Avoid set-but-not-used warning/error in a test. (#20)
+
+* Other:
+
+ - Minor clarifications to documentation.
+
+
+Version 2.0.1
+=============
+
+Released 2011-03-31
+
+* Bug fixes:
+
+ - Replace a few `malloc()` and `free()` calls with their
+ counterparts that support custom memory management.
+
+ - Fix object key hashing in json_unpack() strict checking mode.
+
+ - Fix the parentheses in ``JANSSON_VERSION_HEX`` macro.
+
+ - Fix `json_object_size()` return value.
+
+ - Fix a few compilation issues.
+
+* Portability:
+
+ - Enhance portability of `va_copy()`.
+
+ - Test framework portability enhancements.
+
+* Documentation:
+
+ - Distribute ``doc/upgrading.rst`` with the source tarball.
+
+ - Build documentation in strict mode in ``make distcheck``.
+
+
+Version 2.0
+===========
+
+Released 2011-02-28
+
+This release is backwards incompatible with the 1.x release series.
+See the chapter "Upgrading from older versions" in documentation for
+details.
+
+* Backwards incompatible changes:
+
+ - Unify unsigned integer usage in the API: All occurences of
+ unsigned int and unsigned long have been replaced with size_t.
+
+ - Change JSON integer's underlying type to the widest signed integer
+ type available, i.e. long long if it's supported, otherwise long.
+ Add a typedef json_int_t that defines the type.
+
+ - Change the maximum indentation depth to 31 spaces in encoder. This
+ frees up bits from the flags parameter of encoding functions
+ `json_dumpf()`, `json_dumps()` and `json_dump_file()`.
+
+ - For future needs, add a flags parameter to all decoding functions
+ `json_loadf()`, `json_loads()` and `json_load_file()`.
+
+* New features
+
+ - `json_pack()`, `json_pack_ex()`, `json_vpack_ex()`: Create JSON
+ values based on a format string.
+
+ - `json_unpack()`, `json_unpack_ex()`, `json_vunpack_ex()`: Simple
+ value extraction and validation functionality based on a format
+ string.
+
+ - Add column, position and source fields to the ``json_error_t``
+ struct.
+
+ - Enhance error reporting in the decoder.
+
+ - ``JANSSON_VERSION`` et al.: Preprocessor constants that define the
+ library version.
+
+ - `json_set_alloc_funcs()`: Set custom memory allocation functions.
+
+* Fix many portability issues, especially on Windows.
+
+* Configuration
+
+ - Add file ``jansson_config.h`` that contains site specific
+ configuration. It's created automatically by the configure script,
+ or can be created by hand if the configure script cannot be used.
+ The file ``jansson_config.h.win32`` can be used without
+ modifications on Windows systems.
+
+ - Add a section to documentation describing how to build Jansson on
+ Windows.
+
+ - Documentation now requires Sphinx 1.0 or newer.
+
+
+Version 1.3
+===========
+
+Released 2010-06-13
+
+* New functions:
+
+ - `json_object_iter_set()`, `json_object_iter_set_new()`: Change
+ object contents while iterating over it.
+
+ - `json_object_iter_at()`: Return an iterator that points to a
+ specific object item.
+
+* New encoding flags:
+
+ - ``JSON_PRESERVE_ORDER``: Preserve the insertion order of object
+ keys.
+
+* Bug fixes:
+
+ - Fix an error that occured when an array or object was first
+ encoded as empty, then populated with some data, and then
+ re-encoded
+
+ - Fix the situation like above, but when the first encoding resulted
+ in an error
+
+* Documentation:
+
+ - Clarify the documentation on reference stealing, providing an
+ example usage pattern
+
+
+Version 1.2.1
+=============
+
+Released 2010-04-03
+
+* Bug fixes:
+
+ - Fix reference counting on ``true``, ``false`` and ``null``
+ - Estimate real number underflows in decoder with 0.0 instead of
+ issuing an error
+
+* Portability:
+
+ - Make ``int32_t`` available on all systems
+ - Support compilers that don't have the ``inline`` keyword
+ - Require Autoconf 2.60 (for ``int32_t``)
+
+* Tests:
+
+ - Print test names correctly when ``VERBOSE=1``
+ - ``test/suites/api``: Fail when a test fails
+ - Enhance tests for iterators
+ - Enhance tests for decoding texts that contain null bytes
+
+* Documentation:
+
+ - Don't remove ``changes.rst`` in ``make clean``
+ - Add a chapter on RFC conformance
+
+
+Version 1.2
+===========
+
+Released 2010-01-21
* New functions:
- - ``json_equal()``: Test whether two JSON values are equal
- - ``json_copy()`` and ``json_deep_copy()``: Make shallow and deep
- copies of JSON values
+ - `json_equal()`: Test whether two JSON values are equal
+ - `json_copy()` and `json_deep_copy()`: Make shallow and deep copies
+ of JSON values
- Add a version of all functions taking a string argument that
- doesn't check for valid UTF-8: ``json_string_nocheck()``,
- ``json_string_set_nocheck()``, ``json_object_set_nocheck()``,
- ``json_object_set_new_nocheck()``
+ doesn't check for valid UTF-8: `json_string_nocheck()`,
+ `json_string_set_nocheck()`, `json_object_set_nocheck()`,
+ `json_object_set_new_nocheck()`
* New encoding flags:
* Bug fixes:
- - Revise and unify whitespace usage in encoder
+ - Revise and unify whitespace usage in encoder: Add spaces between
+ array and object items, never append newline to output.
+ - Remove const qualifier from the ``json_t`` parameter in
+ `json_string_set()`, `json_integer_set()` and `json_real_set`.
+ - Use ``int32_t`` internally for representing Unicode code points
+ (int is not enough on all platforms)
* Other changes:
- Convert ``CHANGES`` (this file) to reStructured text and add it to
HTML documentation
- - Python is no longer required to run the tests
+ - The test system has been refactored. Python is no longer required
+ to run the tests.
- Documentation can now be built by invoking ``make html``
+ - Support for pkg-config
Version 1.1.3
Released 2009-11-08
* Fix a bug where an error message was not produced if the input file
- could not be opened in ``json_load_file()``
+ could not be opened in `json_load_file()`
* Fix an assertion failure in decoder caused by a minus sign without a
digit after it
* Remove an unneeded include of ``stdint.h`` in ``jansson.h``
Released 2009-09-04
-* Fixed broken ``json_is_boolean()``
+* Fixed broken `json_is_boolean()`
Version 1.0