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_REAL
decoding 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_ANY
is 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
-Werror
by default. - Support building and testing with VPATH (#93).
- Fix compilation when
NDEBUG
is 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-undefined
to 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 long
ifstrtoll()
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=bar
syntax.
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.position
also 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_ANY
flag. 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.win32
in 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
s
fromat 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_ANY
encoding flag to allow encoding any JSON value. By default, only arrays and objects can be encoded. (#19) - Add
JSON_REJECT_DUPLICATES
decoding flag to issue a decoding error if any JSON object in the input contins duplicate keys. (#3) - Add
JSON_DISABLE_EOF_CHECK
decoding 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_HEX
macro. - 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.rst
with 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_t
struct. - Enhance error reporting in the decoder.
JANSSON_VERSION
et 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.h
that 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.win32
can 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
,false
andnull
- Estimate real number underflows in decoder with 0.0 instead of issuing an error
- Fix reference counting on
- Portability:
- Make
int32_t
available on all systems - Support compilers that don’t have the
inline
keyword - 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.rst
inmake 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_t
parameter injson_string_set()
,json_integer_set()
andjson_real_set()
. - Use
int32_t
internally 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.h
injansson.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_t
for 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
,false
andnull
) - Enhance circular reference handling
- Don’t define
-std=c99
inAM_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
char
is 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)