Add a CHANGES entry for version 2.0
[jansson.git] / CHANGES
1 Version 2.0 (in development)
2 ============================
3
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
6 Jansson 2.0.
7
8 * Backwards incompatible changes:
9
10   - Unify unsigned integer usage in the API: All occurences of
11     unsigned int and unsigned long have been replaced with size_t.
12
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.
16
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()`.
20
21   - For future needs, add a flags parameter to all decoding functions
22     `json_loadf()`, `json_loads()` and `json_load_file()`.
23
24 * New features
25
26   - `json_pack()`, `json_pack_ex()`, `json_vpack_ex()`: Create complex
27     JSON values based on a format string.
28
29   - `json_unpack()`, `json_unpack_ex()`, `json_vunpack_ex()`: Simple
30     value extraction and validation functionality based on a format
31     string.
32
33   - Add column, position and source fields to the ``json_error_t``
34     struct.
35
36   - Report the error context for UTF-8 decoding errors in the decoder.
37
38   - Add preprocessor constants that define the library version.
39
40   - Add API for setting custom memory allocation functions:
41     `json_set_alloc_funcs()`.
42
43 * Fix many portability issues, especially on Windows.
44
45 * Configuration
46
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.
52
53   - Add a section to documentation describing how to build Jansson on
54     Windows.
55
56   - Documentation now requires Sphinx 1.0 or newer.
57
58
59 Version 1.3
60 ===========
61
62 Released 2010-06-13
63
64 * New functions:
65
66   - `json_object_iter_set()`, `json_object_iter_set_new()`: Change
67     object contents while iterating over it.
68
69   - `json_object_iter_at()`: Return an iterator that points to a
70     specific object item.
71
72 * New encoding flags:
73
74   - ``JSON_PRESERVE_ORDER``: Preserve the insertion order of object
75     keys.
76
77 * Bug fixes:
78
79   - Fix an error that occured when an array or object was first
80     encoded as empty, then populated with some data, and then
81     re-encoded
82
83   - Fix the situation like above, but when the first encoding resulted
84     in an error
85
86 * Documentation:
87
88   - Clarify the documentation on reference stealing, providing an
89     example usage pattern
90
91
92 Version 1.2.1
93 =============
94
95 Released 2010-04-03
96
97 * Bug fixes:
98
99   - Fix reference counting on ``true``, ``false`` and ``null``
100   - Estimate real number underflows in decoder with 0.0 instead of
101     issuing an error
102
103 * Portability:
104
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``)
108
109 * Tests:
110
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
115
116 * Documentation:
117
118   - Don't remove ``changes.rst`` in ``make clean``
119   - Add a chapter on RFC conformance
120
121
122 Version 1.2
123 ===========
124
125 Released 2010-01-21
126
127 * New functions:
128
129   - `json_equal()`: Test whether two JSON values are equal
130   - `json_copy()` and `json_deep_copy()`: Make shallow and deep copies
131     of JSON values
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()`
136
137 * New encoding flags:
138
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
142     whitespace stripped
143
144 * Bug fixes:
145
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)
152
153 * Other changes:
154
155   - Convert ``CHANGES`` (this file) to reStructured text and add it to
156     HTML documentation
157   - The test system has been refactored. Python is no longer required
158     to run the tests.
159   - Documentation can now be built by invoking ``make html``
160   - Support for pkg-config
161
162
163 Version 1.1.3
164 =============
165
166 Released 2009-12-18
167
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``
171
172
173 Version 1.1.2
174 =============
175
176 Released 2009-11-08
177
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
181   digit after it
182 * Remove an unneeded include of ``stdint.h`` in ``jansson.h``
183
184
185 Version 1.1.1
186 =============
187
188 Released 2009-10-26
189
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``
193
194
195 Version 1.1
196 ===========
197
198 Released 2009-10-20
199
200 * API additions and improvements:
201
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
206
207 * Enhance documentation
208
209   - Add getting started guide and tutorial
210   - Fix some typos
211   - General clarifications and cleanup
212
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
220
221
222 Version 1.0.4
223 =============
224
225 Released 2009-10-11
226
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
230
231
232 Version 1.0.3
233 =============
234
235 Released 2009-09-14
236
237 * Check for integer and real overflows and underflows in decoder
238 * Use the Python json module for tests, or simplejson if the json
239   module is not found
240 * Distribute changelog (this file)
241
242
243 Version 1.0.2
244 =============
245
246 Released 2009-09-08
247
248 * Handle EOF correctly in decoder
249
250
251 Version 1.0.1
252 =============
253
254 Released 2009-09-04
255
256 * Fixed broken `json_is_boolean()`
257
258
259 Version 1.0
260 ===========
261
262 Released 2009-08-25
263
264 * Initial release