1 Version 2.4 (in development)
2 ============================
8 - Add `json_boolean()` macro that returns the JSON true or false
9 value based on its argument (#86).
11 - Add `json_load_callback()` that calls a callback function
12 repeatedly to read the JSON input (#57).
14 - Add JSON_ESCAPE_SLASH encoding flag to escape all occurences of
19 - Check for and reject NaN and Inf values for reals. Encoding these
20 values resulted in invalid JSON.
22 - Fix `json_real_set()` to return -1 on error.
26 - Jansson now builds on Windows with Visual Studio 2010, and
27 includes solution and project files in ``win32/vs2010/``
30 - Fix build warnings (#77, #78).
32 - Add ``-no-undefined`` to LDFLAGS (#90).
36 - Fix the symbol exports test on Linux/PPC64 (#88).
40 - Fix typos (#73, #84).
50 - Only use ``long long`` if ``strtoll()`` is also available.
54 - Fix the names of library version constants in documentation. (#52)
56 - Change the tutorial to use GitHub API v3. (#65)
60 - Make some tests locale independent. (#51)
62 - Distribute the library exports test in the tarball.
64 - Make test run on shells that don't support the ``export FOO=bar``
75 - `json_unpack()` and friends: Add support for optional object keys
76 with the ``{s?o}`` syntax.
78 - Add `json_object_update_existing()` and
79 `json_object_update_missing()`, for updating only existing keys or
80 only adding missing keys to an object. (#37)
82 - Add `json_object_foreach()` for more convenient iteration over
85 - When decoding JSON, write the number of bytes that were read from
86 input to ``error.position`` also on success. This is handy with
87 ``JSON_DISABLE_EOF_CHECK``.
89 - Add support for decoding any JSON value, not just arrays or
90 objects. The support is enabled with the new ``JSON_DECODE_ANY``
91 flag. Patch by Andrea Marchesini. (#4)
95 - Avoid problems with object's serial number growing too big. (#40,
98 - Decoding functions now return NULL if the first argument is NULL.
99 Patch by Andrea Marchesini.
101 - Include ``jansson_config.h.win32`` in the distribution tarball.
103 - Remove ``+`` and leading zeros from exponents in the encoder.
106 - Make Jansson build and work on MinGW. (#39, #38)
110 - Note that the same JSON values must not be encoded in parallel by
111 separate threads. (#42)
113 - Document MinGW support.
123 - Fix real number encoding and decoding under non-C locales. (#32)
125 - Fix identifier decoding under non-UTF-8 locales. (#35)
127 - `json_load_file()`: Open the input file in binary mode for maximum
132 - Clarify the lifecycle of the result of the ``s`` fromat of
133 `json_unpack()`. (#31)
135 - Add some portability info. (#36)
137 - Little clarifications here and there.
141 - Some style fixes, issues detected by static analyzers.
151 - `json_dump_callback()`: Pass the encoder output to a callback
156 - `json_string_set()`: Check that target is a string and value is
161 - Documentation typo fixes and clarifications.
171 - `json_loadb()`: Decode a string with a given size, useful if the
172 string is not null terminated.
174 - Add ``JSON_ENCODE_ANY`` encoding flag to allow encoding any JSON
175 value. By default, only arrays and objects can be encoded. (#19)
177 - Add ``JSON_REJECT_DUPLICATES`` decoding flag to issue a decoding
178 error if any JSON object in the input contins duplicate keys. (#3)
180 - Add ``JSON_DISABLE_EOF_CHECK`` decoding flag to stop decoding after a
181 valid JSON input. This allows other data after the JSON data.
185 - Fix an additional memory leak when memory allocation fails in
186 `json_object_set()` and friends.
188 - Clear errno before calling `strtod()` for better portability. (#27)
192 - Avoid set-but-not-used warning/error in a test. (#20)
196 - Minor clarifications to documentation.
206 - Replace a few `malloc()` and `free()` calls with their
207 counterparts that support custom memory management.
209 - Fix object key hashing in json_unpack() strict checking mode.
211 - Fix the parentheses in ``JANSSON_VERSION_HEX`` macro.
213 - Fix `json_object_size()` return value.
215 - Fix a few compilation issues.
219 - Enhance portability of `va_copy()`.
221 - Test framework portability enhancements.
225 - Distribute ``doc/upgrading.rst`` with the source tarball.
227 - Build documentation in strict mode in ``make distcheck``.
235 This release is backwards incompatible with the 1.x release series.
236 See the chapter "Upgrading from older versions" in documentation for
239 * Backwards incompatible changes:
241 - Unify unsigned integer usage in the API: All occurences of
242 unsigned int and unsigned long have been replaced with size_t.
244 - Change JSON integer's underlying type to the widest signed integer
245 type available, i.e. long long if it's supported, otherwise long.
246 Add a typedef json_int_t that defines the type.
248 - Change the maximum indentation depth to 31 spaces in encoder. This
249 frees up bits from the flags parameter of encoding functions
250 `json_dumpf()`, `json_dumps()` and `json_dump_file()`.
252 - For future needs, add a flags parameter to all decoding functions
253 `json_loadf()`, `json_loads()` and `json_load_file()`.
257 - `json_pack()`, `json_pack_ex()`, `json_vpack_ex()`: Create JSON
258 values based on a format string.
260 - `json_unpack()`, `json_unpack_ex()`, `json_vunpack_ex()`: Simple
261 value extraction and validation functionality based on a format
264 - Add column, position and source fields to the ``json_error_t``
267 - Enhance error reporting in the decoder.
269 - ``JANSSON_VERSION`` et al.: Preprocessor constants that define the
272 - `json_set_alloc_funcs()`: Set custom memory allocation functions.
274 * Fix many portability issues, especially on Windows.
278 - Add file ``jansson_config.h`` that contains site specific
279 configuration. It's created automatically by the configure script,
280 or can be created by hand if the configure script cannot be used.
281 The file ``jansson_config.h.win32`` can be used without
282 modifications on Windows systems.
284 - Add a section to documentation describing how to build Jansson on
287 - Documentation now requires Sphinx 1.0 or newer.
297 - `json_object_iter_set()`, `json_object_iter_set_new()`: Change
298 object contents while iterating over it.
300 - `json_object_iter_at()`: Return an iterator that points to a
301 specific object item.
303 * New encoding flags:
305 - ``JSON_PRESERVE_ORDER``: Preserve the insertion order of object
310 - Fix an error that occured when an array or object was first
311 encoded as empty, then populated with some data, and then
314 - Fix the situation like above, but when the first encoding resulted
319 - Clarify the documentation on reference stealing, providing an
320 example usage pattern
330 - Fix reference counting on ``true``, ``false`` and ``null``
331 - Estimate real number underflows in decoder with 0.0 instead of
336 - Make ``int32_t`` available on all systems
337 - Support compilers that don't have the ``inline`` keyword
338 - Require Autoconf 2.60 (for ``int32_t``)
342 - Print test names correctly when ``VERBOSE=1``
343 - ``test/suites/api``: Fail when a test fails
344 - Enhance tests for iterators
345 - Enhance tests for decoding texts that contain null bytes
349 - Don't remove ``changes.rst`` in ``make clean``
350 - Add a chapter on RFC conformance
360 - `json_equal()`: Test whether two JSON values are equal
361 - `json_copy()` and `json_deep_copy()`: Make shallow and deep copies
363 - Add a version of all functions taking a string argument that
364 doesn't check for valid UTF-8: `json_string_nocheck()`,
365 `json_string_set_nocheck()`, `json_object_set_nocheck()`,
366 `json_object_set_new_nocheck()`
368 * New encoding flags:
370 - ``JSON_SORT_KEYS``: Sort objects by key
371 - ``JSON_ENSURE_ASCII``: Escape all non-ASCII Unicode characters
372 - ``JSON_COMPACT``: Use a compact representation with all unneeded
377 - Revise and unify whitespace usage in encoder: Add spaces between
378 array and object items, never append newline to output.
379 - Remove const qualifier from the ``json_t`` parameter in
380 `json_string_set()`, `json_integer_set()` and `json_real_set`.
381 - Use ``int32_t`` internally for representing Unicode code points
382 (int is not enough on all platforms)
386 - Convert ``CHANGES`` (this file) to reStructured text and add it to
388 - The test system has been refactored. Python is no longer required
390 - Documentation can now be built by invoking ``make html``
391 - Support for pkg-config
399 * Encode reals correctly, so that first encoding and then decoding a
400 real always produces the same value
401 * Don't export private symbols in ``libjansson.so``
409 * Fix a bug where an error message was not produced if the input file
410 could not be opened in `json_load_file()`
411 * Fix an assertion failure in decoder caused by a minus sign without a
413 * Remove an unneeded include of ``stdint.h`` in ``jansson.h``
421 * All documentation files were not distributed with v1.1; build
422 documentation in make distcheck to prevent this in the future
423 * Fix v1.1 release date in ``CHANGES``
431 * API additions and improvements:
433 - Extend array and object APIs
434 - Add functions to modify integer, real and string values
435 - Improve argument validation
436 - Use unsigned int instead of ``uint32_t`` for encoding flags
438 * Enhance documentation
440 - Add getting started guide and tutorial
442 - General clarifications and cleanup
444 * Check for integer and real overflows and underflows in decoder
445 * Make singleton values thread-safe (``true``, ``false`` and ``null``)
446 * Enhance circular reference handling
447 * Don't define ``-std=c99`` in ``AM_CFLAGS``
448 * Add C++ guards to ``jansson.h``
449 * Minor performance and portability improvements
450 * Expand test coverage
458 * Relax Autoconf version requirement to 2.59
459 * Make Jansson compile on platforms where plain ``char`` is unsigned
460 * Fix API tests for object
468 * Check for integer and real overflows and underflows in decoder
469 * Use the Python json module for tests, or simplejson if the json
471 * Distribute changelog (this file)
479 * Handle EOF correctly in decoder
487 * Fixed broken `json_is_boolean()`