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