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