1 Version 2.0 (in development)
2 ============================
4 This release is backwards incompatible with the 1.x release series.
5 See the documentation for instructions on how to port existing code to
8 * Backwards incompatible changes:
10 - Unify unsigned integer usage in the API: All occurences of
11 unsigned int and unsigned long have been replaced with size_t.
13 - Change JSON integer's underlying type to the widest signed integer
14 type available, i.e. long long if it's supported, otherwise long.
15 Add a typedef json_int_t that defines the type.
17 - Change the maximum indentation depth to 32 spaces in encoder. This
18 frees up bits from the flags parameter of encoding functions
19 `json_dumpf()`, `json_dumps()` and `json_dump_file()`.
21 - For future needs, add a flags parameter to all decoding functions
22 `json_loadf()`, `json_loads()` and `json_load_file()`.
26 - `json_pack()`, `json_pack_ex()`, `json_vpack_ex()`: Create complex
27 JSON values based on a format string.
29 - `json_unpack()`, `json_unpack_ex()`, `json_vunpack_ex()`: Simple
30 value extraction and validation functionality based on a format
33 - Add column, position and source fields to the ``json_error_t``
36 - Report the error context for UTF-8 decoding errors in the decoder.
38 - Add preprocessor constants that define the library version.
40 - Add API for setting custom memory allocation functions:
41 `json_set_alloc_funcs()`.
43 * Fix many portability issues, especially on Windows.
47 - Add file ``jansson_config.h`` that contains site specific
48 configuration. It's created automatically by the configure script,
49 or can be created by hand if the configure script cannot be used.
50 The file ``jansson_config.h.win32`` can be used without
51 modifications on Windows systems.
53 - Add a section to documentation describing how to build Jansson on
56 - Documentation now requires Sphinx 1.0 or newer.
66 - `json_object_iter_set()`, `json_object_iter_set_new()`: Change
67 object contents while iterating over it.
69 - `json_object_iter_at()`: Return an iterator that points to a
74 - ``JSON_PRESERVE_ORDER``: Preserve the insertion order of object
79 - Fix an error that occured when an array or object was first
80 encoded as empty, then populated with some data, and then
83 - Fix the situation like above, but when the first encoding resulted
88 - Clarify the documentation on reference stealing, providing an
99 - Fix reference counting on ``true``, ``false`` and ``null``
100 - Estimate real number underflows in decoder with 0.0 instead of
105 - Make ``int32_t`` available on all systems
106 - Support compilers that don't have the ``inline`` keyword
107 - Require Autoconf 2.60 (for ``int32_t``)
111 - Print test names correctly when ``VERBOSE=1``
112 - ``test/suites/api``: Fail when a test fails
113 - Enhance tests for iterators
114 - Enhance tests for decoding texts that contain null bytes
118 - Don't remove ``changes.rst`` in ``make clean``
119 - Add a chapter on RFC conformance
129 - `json_equal()`: Test whether two JSON values are equal
130 - `json_copy()` and `json_deep_copy()`: Make shallow and deep copies
132 - Add a version of all functions taking a string argument that
133 doesn't check for valid UTF-8: `json_string_nocheck()`,
134 `json_string_set_nocheck()`, `json_object_set_nocheck()`,
135 `json_object_set_new_nocheck()`
137 * New encoding flags:
139 - ``JSON_SORT_KEYS``: Sort objects by key
140 - ``JSON_ENSURE_ASCII``: Escape all non-ASCII Unicode characters
141 - ``JSON_COMPACT``: Use a compact representation with all unneeded
146 - Revise and unify whitespace usage in encoder: Add spaces between
147 array and object items, never append newline to output.
148 - Remove const qualifier from the ``json_t`` parameter in
149 `json_string_set()`, `json_integer_set()` and `json_real_set`.
150 - Use ``int32_t`` internally for representing Unicode code points
151 (int is not enough on all platforms)
155 - Convert ``CHANGES`` (this file) to reStructured text and add it to
157 - The test system has been refactored. Python is no longer required
159 - Documentation can now be built by invoking ``make html``
160 - Support for pkg-config
168 * Encode reals correctly, so that first encoding and then decoding a
169 real always produces the same value
170 * Don't export private symbols in ``libjansson.so``
178 * Fix a bug where an error message was not produced if the input file
179 could not be opened in `json_load_file()`
180 * Fix an assertion failure in decoder caused by a minus sign without a
182 * Remove an unneeded include of ``stdint.h`` in ``jansson.h``
190 * All documentation files were not distributed with v1.1; build
191 documentation in make distcheck to prevent this in the future
192 * Fix v1.1 release date in ``CHANGES``
200 * API additions and improvements:
202 - Extend array and object APIs
203 - Add functions to modify integer, real and string values
204 - Improve argument validation
205 - Use unsigned int instead of ``uint32_t`` for encoding flags
207 * Enhance documentation
209 - Add getting started guide and tutorial
211 - General clarifications and cleanup
213 * Check for integer and real overflows and underflows in decoder
214 * Make singleton values thread-safe (``true``, ``false`` and ``null``)
215 * Enhance circular reference handling
216 * Don't define ``-std=c99`` in ``AM_CFLAGS``
217 * Add C++ guards to ``jansson.h``
218 * Minor performance and portability improvements
219 * Expand test coverage
227 * Relax Autoconf version requirement to 2.59
228 * Make Jansson compile on platforms where plain ``char`` is unsigned
229 * Fix API tests for object
237 * Check for integer and real overflows and underflows in decoder
238 * Use the Python json module for tests, or simplejson if the json
240 * Distribute changelog (this file)
248 * Handle EOF correctly in decoder
256 * Fixed broken `json_is_boolean()`