Changes in Jansson¶
Version 2.5¶
Released 2013-09-19
- New features:
json_pack()and friends: Add format specifierss#,+and+#.- Add
JSON_DECODE_INT_AS_REALdecoding flag to treat all numbers as real in the decoder (#123). - Add
json_array_foreach(), parallelingjson_object_foreach()(#118).
- Bug fixes:
json_dumps()and friends: Don’t crash if json is NULL andJSON_ENCODE_ANYis set.- Fix a theoretical integer overflow in
jsonp_strdup(). - Fix
l_isxdigit()macro (#97). - Fix an off-by-one error in
json_array_remove().
- Build:
- Support CMake in addition to GNU Autotools (#106, #107, #112, #115, #120, #127).
- Support building for Android (#109).
- Don’t use
-Werrorby default. - Support building and testing with VPATH (#93).
- Fix compilation when
NDEBUGis defined (#128)
- Tests:
- Fix a refleak in
test/bin/json_process.c.
- Fix a refleak in
- Documentation:
- Clarify the return value of
json_load_callback_t(). - Document how to circumvent problems with separate heaps on Windows.
- Fix memory leaks and warnings in
github_commits.c. - Use
json_decref()properly in tutorial.
- Clarify the return value of
- Other:
- Make it possible to forward declare
struct json_t.
- Make it possible to forward declare
Version 2.4¶
Released 2012-09-23
- New features:
- Add
json_boolean()macro that returns the JSON true or false value based on its argument (#86). - Add
json_load_callback()that calls a callback function repeatedly to read the JSON input (#57). - Add JSON_ESCAPE_SLASH encoding flag to escape all occurences of
/with\/.
- Add
- Bug fixes:
- Check for and reject NaN and Inf values for reals. Encoding these values resulted in invalid JSON.
- Fix
json_real_set()to return -1 on error.
- Build:
- Jansson now builds on Windows with Visual Studio 2010, and
includes solution and project files in
win32/vs2010/directory. - Fix build warnings (#77, #78).
- Add
-no-undefinedto LDFLAGS (#90).
- Jansson now builds on Windows with Visual Studio 2010, and
includes solution and project files in
- Tests:
- Fix the symbol exports test on Linux/PPC64 (#88).
- Documentation:
- Fix typos (#73, #84).
Version 2.3.1¶
Released 2012-04-20
- Build issues:
- Only use
long longifstrtoll()is also available.
- Only use
- Documentation:
- Fix the names of library version constants in documentation. (#52)
- Change the tutorial to use GitHub API v3. (#65)
- Tests:
- Make some tests locale independent. (#51)
- Distribute the library exports test in the tarball.
- Make test run on shells that don’t support the
export FOO=barsyntax.
Version 2.3¶
Released 2012-01-27
- New features:
json_unpack()and friends: Add support for optional object keys with the{s?o}syntax.- Add
json_object_update_existing()andjson_object_update_missing(), for updating only existing keys or only adding missing keys to an object. (#37) - Add
json_object_foreach()for more convenient iteration over objects. (#45, #46) - When decoding JSON, write the number of bytes that were read from
input to
error.positionalso on success. This is handy withJSON_DISABLE_EOF_CHECK. - Add support for decoding any JSON value, not just arrays or
objects. The support is enabled with the new
JSON_DECODE_ANYflag. Patch by Andrea Marchesini. (#4)
- Bug fixes
- Avoid problems with object’s serial number growing too big. (#40, #41)
- Decoding functions now return NULL if the first argument is NULL. Patch by Andrea Marchesini.
- Include
jansson_config.h.win32in the distribution tarball. - Remove
+and leading zeros from exponents in the encoder. (#39) - Make Jansson build and work on MinGW. (#39, #38)
- Documentation
- Note that the same JSON values must not be encoded in parallel by separate threads. (#42)
- Document MinGW support.
Version 2.2.1¶
Released 2011-10-06
- Bug fixes:
- Fix real number encoding and decoding under non-C locales. (#32)
- Fix identifier decoding under non-UTF-8 locales. (#35)
json_load_file(): Open the input file in binary mode for maximum compatiblity.
- Documentation:
- Clarify the lifecycle of the result of the
sfromat ofjson_unpack(). (#31) - Add some portability info. (#36)
- Little clarifications here and there.
- Clarify the lifecycle of the result of the
- Other:
- Some style fixes, issues detected by static analyzers.
Version 2.2¶
Released 2011-09-03
- New features:
json_dump_callback(): Pass the encoder output to a callback function in chunks.
- Bug fixes:
json_string_set(): Check that target is a string and value is not NULL.
- Other:
- Documentation typo fixes and clarifications.
Version 2.1¶
Released 2011-06-10
- New features:
json_loadb(): Decode a string with a given size, useful if the string is not null terminated.- Add
JSON_ENCODE_ANYencoding flag to allow encoding any JSON value. By default, only arrays and objects can be encoded. (#19) - Add
JSON_REJECT_DUPLICATESdecoding flag to issue a decoding error if any JSON object in the input contins duplicate keys. (#3) - Add
JSON_DISABLE_EOF_CHECKdecoding flag to stop decoding after a valid JSON input. This allows other data after the JSON data.
- Bug fixes:
- Fix an additional memory leak when memory allocation fails in
json_object_set()and friends. - Clear errno before calling
strtod()for better portability. (#27)
- Fix an additional memory leak when memory allocation fails in
- Building:
- Avoid set-but-not-used warning/error in a test. (#20)
- Other:
- Minor clarifications to documentation.
Version 2.0.1¶
Released 2011-03-31
- Bug fixes:
- Replace a few
malloc()andfree()calls with their counterparts that support custom memory management. - Fix object key hashing in json_unpack() strict checking mode.
- Fix the parentheses in
JANSSON_VERSION_HEXmacro. - Fix
json_object_size()return value. - Fix a few compilation issues.
- Replace a few
- Portability:
- Enhance portability of
va_copy(). - Test framework portability enhancements.
- Enhance portability of
- Documentation:
- Distribute
doc/upgrading.rstwith the source tarball. - Build documentation in strict mode in
make distcheck.
- Distribute
Version 2.0¶
Released 2011-02-28
This release is backwards incompatible with the 1.x release series. See the chapter “Upgrading from older versions” in documentation for details.
- Backwards incompatible changes:
- Unify unsigned integer usage in the API: All occurences of unsigned int and unsigned long have been replaced with size_t.
- Change JSON integer’s underlying type to the widest signed integer type available, i.e. long long if it’s supported, otherwise long. Add a typedef json_int_t that defines the type.
- Change the maximum indentation depth to 31 spaces in encoder. This
frees up bits from the flags parameter of encoding functions
json_dumpf(),json_dumps()andjson_dump_file(). - For future needs, add a flags parameter to all decoding functions
json_loadf(),json_loads()andjson_load_file().
- New features
json_pack(),json_pack_ex(),json_vpack_ex(): Create JSON values based on a format string.json_unpack(),json_unpack_ex(),json_vunpack_ex(): Simple value extraction and validation functionality based on a format string.- Add column, position and source fields to the
json_error_tstruct. - Enhance error reporting in the decoder.
JANSSON_VERSIONet al.: Preprocessor constants that define the library version.json_set_alloc_funcs(): Set custom memory allocation functions.
- Fix many portability issues, especially on Windows.
- Configuration
- Add file
jansson_config.hthat contains site specific configuration. It’s created automatically by the configure script, or can be created by hand if the configure script cannot be used. The filejansson_config.h.win32can be used without modifications on Windows systems. - Add a section to documentation describing how to build Jansson on Windows.
- Documentation now requires Sphinx 1.0 or newer.
- Add file
Version 1.3¶
Released 2010-06-13
- New functions:
json_object_iter_set(),json_object_iter_set_new(): Change object contents while iterating over it.json_object_iter_at(): Return an iterator that points to a specific object item.
- New encoding flags:
JSON_PRESERVE_ORDER: Preserve the insertion order of object keys.
- Bug fixes:
- Fix an error that occured when an array or object was first encoded as empty, then populated with some data, and then re-encoded
- Fix the situation like above, but when the first encoding resulted in an error
- Documentation:
- Clarify the documentation on reference stealing, providing an example usage pattern
Version 1.2.1¶
Released 2010-04-03
- Bug fixes:
- Fix reference counting on
true,falseandnull - Estimate real number underflows in decoder with 0.0 instead of issuing an error
- Fix reference counting on
- Portability:
- Make
int32_tavailable on all systems - Support compilers that don’t have the
inlinekeyword - Require Autoconf 2.60 (for
int32_t)
- Make
- Tests:
- Print test names correctly when
VERBOSE=1 test/suites/api: Fail when a test fails- Enhance tests for iterators
- Enhance tests for decoding texts that contain null bytes
- Print test names correctly when
- Documentation:
- Don’t remove
changes.rstinmake clean - Add a chapter on RFC conformance
- Don’t remove
Version 1.2¶
Released 2010-01-21
- New functions:
json_equal(): Test whether two JSON values are equaljson_copy()andjson_deep_copy(): Make shallow and deep copies of JSON values- Add a version of all functions taking a string argument that
doesn’t check for valid UTF-8:
json_string_nocheck(),json_string_set_nocheck(),json_object_set_nocheck(),json_object_set_new_nocheck()
- New encoding flags:
JSON_SORT_KEYS: Sort objects by keyJSON_ENSURE_ASCII: Escape all non-ASCII Unicode charactersJSON_COMPACT: Use a compact representation with all unneeded whitespace stripped
- Bug fixes:
- Revise and unify whitespace usage in encoder: Add spaces between array and object items, never append newline to output.
- Remove const qualifier from the
json_tparameter injson_string_set(),json_integer_set()andjson_real_set(). - Use
int32_tinternally for representing Unicode code points (int is not enough on all platforms)
- Other changes:
- Convert
CHANGES(this file) to reStructured text and add it to HTML documentation - The test system has been refactored. Python is no longer required to run the tests.
- Documentation can now be built by invoking
make html - Support for pkg-config
- Convert
Version 1.1.3¶
Released 2009-12-18
- Encode reals correctly, so that first encoding and then decoding a real always produces the same value
- Don’t export private symbols in
libjansson.so
Version 1.1.2¶
Released 2009-11-08
- Fix a bug where an error message was not produced if the input file
could not be opened in
json_load_file() - Fix an assertion failure in decoder caused by a minus sign without a digit after it
- Remove an unneeded include of
stdint.hinjansson.h
Version 1.1.1¶
Released 2009-10-26
- All documentation files were not distributed with v1.1; build documentation in make distcheck to prevent this in the future
- Fix v1.1 release date in
CHANGES
Version 1.1¶
Released 2009-10-20
- API additions and improvements:
- Extend array and object APIs
- Add functions to modify integer, real and string values
- Improve argument validation
- Use unsigned int instead of
uint32_tfor encoding flags
- Enhance documentation
- Add getting started guide and tutorial
- Fix some typos
- General clarifications and cleanup
- Check for integer and real overflows and underflows in decoder
- Make singleton values thread-safe (
true,falseandnull) - Enhance circular reference handling
- Don’t define
-std=c99inAM_CFLAGS - Add C++ guards to
jansson.h - Minor performance and portability improvements
- Expand test coverage
Version 1.0.4¶
Released 2009-10-11
- Relax Autoconf version requirement to 2.59
- Make Jansson compile on platforms where plain
charis unsigned - Fix API tests for object
Version 1.0.3¶
Released 2009-09-14
- Check for integer and real overflows and underflows in decoder
- Use the Python json module for tests, or simplejson if the json module is not found
- Distribute changelog (this file)