Use ``literal`` syntax with macro and flag names in CHANGES
[jansson.git] / CHANGES
1 Version 2.1 (in development)
2 ============================
3
4 * New features:
5
6   - `json_loadb()`: Decode a string with a given size, useful if the
7     string is not null terminated.
8
9   - Add ``JSON_ENCODE_ANY`` encoding flag to allow encoding any JSON
10     value. By default, only arrays and objects can be encoded. (#19)
11
12   - Add ``JSON_REJECT_DUPLICATES`` decoding flag to issue a decoding
13     error if any JSON object in the input contins duplicate keys. (#3)
14
15   - Add ``JSON_DISABLE_EOF_CHECK`` decoding flag to stop decoding after a
16     valid JSON input. This allows other data after the JSON data.
17
18 * Bug fixes:
19
20   - Fix an additional memory leak when memory allocation fails in
21     `json_object_set()` and friends.
22
23   - Clear errno before calling `strtod()` for better portability. (#27)
24
25 * Building:
26
27   - Avoid set-but-not-used warning/error in a test. (#20)
28
29 * Other:
30
31   - Minor clarifications to documentation.
32
33
34 Version 2.0.1
35 =============
36
37 Released 2011-03-31
38
39 * Bug fixes:
40
41   - Replace a few `malloc()` and `free()` calls with their
42     counterparts that support custom memory management.
43
44   - Fix object key hashing in json_unpack() strict checking mode.
45
46   - Fix the parentheses in ``JANSSON_VERSION_HEX`` macro.
47
48   - Fix `json_object_size()` return value.
49
50   - Fix a few compilation issues.
51
52 * Portability:
53
54   - Enhance portability of `va_copy()`.
55
56   - Test framework portability enhancements.
57
58 * Documentation:
59
60   - Distribute ``doc/upgrading.rst`` with the source tarball.
61
62   - Build documentation in strict mode in ``make distcheck``.
63
64
65 Version 2.0
66 ===========
67
68 Released 2011-02-28
69
70 This release is backwards incompatible with the 1.x release series.
71 See the chapter "Upgrading from older versions" in documentation for
72 details.
73
74 * Backwards incompatible changes:
75
76   - Unify unsigned integer usage in the API: All occurences of
77     unsigned int and unsigned long have been replaced with size_t.
78
79   - Change JSON integer's underlying type to the widest signed integer
80     type available, i.e. long long if it's supported, otherwise long.
81     Add a typedef json_int_t that defines the type.
82
83   - Change the maximum indentation depth to 31 spaces in encoder. This
84     frees up bits from the flags parameter of encoding functions
85     `json_dumpf()`, `json_dumps()` and `json_dump_file()`.
86
87   - For future needs, add a flags parameter to all decoding functions
88     `json_loadf()`, `json_loads()` and `json_load_file()`.
89
90 * New features
91
92   - `json_pack()`, `json_pack_ex()`, `json_vpack_ex()`: Create JSON
93     values based on a format string.
94
95   - `json_unpack()`, `json_unpack_ex()`, `json_vunpack_ex()`: Simple
96     value extraction and validation functionality based on a format
97     string.
98
99   - Add column, position and source fields to the ``json_error_t``
100     struct.
101
102   - Enhance error reporting in the decoder.
103
104   - ``JANSSON_VERSION`` et al.: Preprocessor constants that define the
105     library version.
106
107   - `json_set_alloc_funcs()`: Set custom memory allocation functions.
108
109 * Fix many portability issues, especially on Windows.
110
111 * Configuration
112
113   - Add file ``jansson_config.h`` that contains site specific
114     configuration. It's created automatically by the configure script,
115     or can be created by hand if the configure script cannot be used.
116     The file ``jansson_config.h.win32`` can be used without
117     modifications on Windows systems.
118
119   - Add a section to documentation describing how to build Jansson on
120     Windows.
121
122   - Documentation now requires Sphinx 1.0 or newer.
123
124
125 Version 1.3
126 ===========
127
128 Released 2010-06-13
129
130 * New functions:
131
132   - `json_object_iter_set()`, `json_object_iter_set_new()`: Change
133     object contents while iterating over it.
134
135   - `json_object_iter_at()`: Return an iterator that points to a
136     specific object item.
137
138 * New encoding flags:
139
140   - ``JSON_PRESERVE_ORDER``: Preserve the insertion order of object
141     keys.
142
143 * Bug fixes:
144
145   - Fix an error that occured when an array or object was first
146     encoded as empty, then populated with some data, and then
147     re-encoded
148
149   - Fix the situation like above, but when the first encoding resulted
150     in an error
151
152 * Documentation:
153
154   - Clarify the documentation on reference stealing, providing an
155     example usage pattern
156
157
158 Version 1.2.1
159 =============
160
161 Released 2010-04-03
162
163 * Bug fixes:
164
165   - Fix reference counting on ``true``, ``false`` and ``null``
166   - Estimate real number underflows in decoder with 0.0 instead of
167     issuing an error
168
169 * Portability:
170
171   - Make ``int32_t`` available on all systems
172   - Support compilers that don't have the ``inline`` keyword
173   - Require Autoconf 2.60 (for ``int32_t``)
174
175 * Tests:
176
177   - Print test names correctly when ``VERBOSE=1``
178   - ``test/suites/api``: Fail when a test fails
179   - Enhance tests for iterators
180   - Enhance tests for decoding texts that contain null bytes
181
182 * Documentation:
183
184   - Don't remove ``changes.rst`` in ``make clean``
185   - Add a chapter on RFC conformance
186
187
188 Version 1.2
189 ===========
190
191 Released 2010-01-21
192
193 * New functions:
194
195   - `json_equal()`: Test whether two JSON values are equal
196   - `json_copy()` and `json_deep_copy()`: Make shallow and deep copies
197     of JSON values
198   - Add a version of all functions taking a string argument that
199     doesn't check for valid UTF-8: `json_string_nocheck()`,
200     `json_string_set_nocheck()`, `json_object_set_nocheck()`,
201     `json_object_set_new_nocheck()`
202
203 * New encoding flags:
204
205   - ``JSON_SORT_KEYS``: Sort objects by key
206   - ``JSON_ENSURE_ASCII``: Escape all non-ASCII Unicode characters
207   - ``JSON_COMPACT``: Use a compact representation with all unneeded
208     whitespace stripped
209
210 * Bug fixes:
211
212   - Revise and unify whitespace usage in encoder: Add spaces between
213     array and object items, never append newline to output.
214   - Remove const qualifier from the ``json_t`` parameter in
215     `json_string_set()`, `json_integer_set()` and `json_real_set`.
216   - Use ``int32_t`` internally for representing Unicode code points
217     (int is not enough on all platforms)
218
219 * Other changes:
220
221   - Convert ``CHANGES`` (this file) to reStructured text and add it to
222     HTML documentation
223   - The test system has been refactored. Python is no longer required
224     to run the tests.
225   - Documentation can now be built by invoking ``make html``
226   - Support for pkg-config
227
228
229 Version 1.1.3
230 =============
231
232 Released 2009-12-18
233
234 * Encode reals correctly, so that first encoding and then decoding a
235   real always produces the same value
236 * Don't export private symbols in ``libjansson.so``
237
238
239 Version 1.1.2
240 =============
241
242 Released 2009-11-08
243
244 * Fix a bug where an error message was not produced if the input file
245   could not be opened in `json_load_file()`
246 * Fix an assertion failure in decoder caused by a minus sign without a
247   digit after it
248 * Remove an unneeded include of ``stdint.h`` in ``jansson.h``
249
250
251 Version 1.1.1
252 =============
253
254 Released 2009-10-26
255
256 * All documentation files were not distributed with v1.1; build
257   documentation in make distcheck to prevent this in the future
258 * Fix v1.1 release date in ``CHANGES``
259
260
261 Version 1.1
262 ===========
263
264 Released 2009-10-20
265
266 * API additions and improvements:
267
268   - Extend array and object APIs
269   - Add functions to modify integer, real and string values
270   - Improve argument validation
271   - Use unsigned int instead of ``uint32_t`` for encoding flags
272
273 * Enhance documentation
274
275   - Add getting started guide and tutorial
276   - Fix some typos
277   - General clarifications and cleanup
278
279 * Check for integer and real overflows and underflows in decoder
280 * Make singleton values thread-safe (``true``, ``false`` and ``null``)
281 * Enhance circular reference handling
282 * Don't define ``-std=c99`` in ``AM_CFLAGS``
283 * Add C++ guards to ``jansson.h``
284 * Minor performance and portability improvements
285 * Expand test coverage
286
287
288 Version 1.0.4
289 =============
290
291 Released 2009-10-11
292
293 * Relax Autoconf version requirement to 2.59
294 * Make Jansson compile on platforms where plain ``char`` is unsigned
295 * Fix API tests for object
296
297
298 Version 1.0.3
299 =============
300
301 Released 2009-09-14
302
303 * Check for integer and real overflows and underflows in decoder
304 * Use the Python json module for tests, or simplejson if the json
305   module is not found
306 * Distribute changelog (this file)
307
308
309 Version 1.0.2
310 =============
311
312 Released 2009-09-08
313
314 * Handle EOF correctly in decoder
315
316
317 Version 1.0.1
318 =============
319
320 Released 2009-09-04
321
322 * Fixed broken `json_is_boolean()`
323
324
325 Version 1.0
326 ===========
327
328 Released 2009-08-25
329
330 * Initial release