Version 2.5 =========== Released 2013-09-19 * New features: - `json_pack()` and friends: Add format specifiers ``s#``, ``+`` and ``+#``. - Add ``JSON_DECODE_INT_AS_REAL`` decoding flag to treat all numbers as real in the decoder (#123). - Add `json_array_foreach()`, paralleling `json_object_foreach()` (#118). * Bug fixes: - `json_dumps()` and friends: Don't crash if json is *NULL* and ``JSON_ENCODE_ANY`` is set. - Fix a theoretical integer overflow in `jsonp_strdup()`. - Fix `l_isxdigit()` macro (#97). - Fix an off-by-one error in `json_array_remove()`. * Build: - Support CMake in addition to GNU Autotools (#106, #107, #112, #115, #120, #127). - Support building for Android (#109). - Don't use ``-Werror`` by default. - Support building and testing with VPATH (#93). - Fix compilation when ``NDEBUG`` is defined (#128) * Tests: - Fix a refleak in ``test/bin/json_process.c``. * Documentation: - Clarify the return value of `json_load_callback_t`. - Document how to circumvent problems with separate heaps on Windows. - Fix memory leaks and warnings in ``github_commits.c``. - Use `json_decref()` properly in tutorial. * Other: - Make it possible to forward declare ``struct json_t``. Version 2.4 =========== Released 2012-09-23 * New features: - Add `json_boolean()` macro that returns the JSON true or false value based on its argument (#86). - Add `json_load_callback()` that calls a callback function repeatedly to read the JSON input (#57). - Add JSON_ESCAPE_SLASH encoding flag to escape all occurences of ``/`` with ``\/``. * Bug fixes: - Check for and reject NaN and Inf values for reals. Encoding these values resulted in invalid JSON. - Fix `json_real_set()` to return -1 on error. * Build: - Jansson now builds on Windows with Visual Studio 2010, and includes solution and project files in ``win32/vs2010/`` directory. - Fix build warnings (#77, #78). - Add ``-no-undefined`` to LDFLAGS (#90). * Tests: - Fix the symbol exports test on Linux/PPC64 (#88). * Documentation: - Fix typos (#73, #84). Version 2.3.1 ============= Released 2012-04-20 * Build issues: - Only use ``long long`` if ``strtoll()`` is also available. * Documentation: - Fix the names of library version constants in documentation. (#52) - Change the tutorial to use GitHub API v3. (#65) * Tests: - Make some tests locale independent. (#51) - Distribute the library exports test in the tarball. - Make test run on shells that don't support the ``export FOO=bar`` syntax. 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 - 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()` * New encoding flags: - ``JSON_SORT_KEYS``: Sort objects by key - ``JSON_ENSURE_ASCII``: Escape all non-ASCII Unicode characters - ``JSON_COMPACT``: Use a compact representation with all unneeded whitespace stripped * Bug fixes: - 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 - 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-12-18 * Encode reals correctly, so that first encoding and then decoding a real always produces the same value * Don't export private symbols in ``libjansson.so`` Version 1.1.2 ============= 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()` * 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`` Version 1.1.1 ============= Released 2009-10-26 * All documentation files were not distributed with v1.1; build documentation in make distcheck to prevent this in the future * Fix v1.1 release date in ``CHANGES`` Version 1.1 =========== Released 2009-10-20 * API additions and improvements: - Extend array and object APIs - Add functions to modify integer, real and string values - Improve argument validation - Use unsigned int instead of ``uint32_t`` for encoding flags * Enhance documentation - Add getting started guide and tutorial - Fix some typos - General clarifications and cleanup * Check for integer and real overflows and underflows in decoder * Make singleton values thread-safe (``true``, ``false`` and ``null``) * Enhance circular reference handling * Don't define ``-std=c99`` in ``AM_CFLAGS`` * Add C++ guards to ``jansson.h`` * Minor performance and portability improvements * Expand test coverage Version 1.0.4 ============= Released 2009-10-11 * Relax Autoconf version requirement to 2.59 * Make Jansson compile on platforms where plain ``char`` is unsigned * Fix API tests for object Version 1.0.3 ============= Released 2009-09-14 * Check for integer and real overflows and underflows in decoder * Use the Python json module for tests, or simplejson if the json module is not found * Distribute changelog (this file) Version 1.0.2 ============= Released 2009-09-08 * Handle EOF correctly in decoder Version 1.0.1 ============= Released 2009-09-04 * Fixed broken `json_is_boolean()` Version 1.0 =========== Released 2009-08-25 * Initial release