CHANGES 13 KB

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