Changes in Jansson
Version 2.5
Released 2013-09-19
- New features:
- Bug fixes:
- json_dumps() and friends: Don’t crash if json is NULL and
JSON_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.
- 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.
- Other:
- Make it possible to forward declare struct json_t.
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 \/.
- 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).
- Tests:
- Fix the symbol exports test on Linux/PPC64 (#88).
- Documentation:
Version 2.3.1
Released 2012-04-20
- Build issues:
- Only use long long if strtoll() is also available.
- 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() and
json_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 with
JSON_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 of
json_unpack(). (#31)
- Add some portability info. (#36)
- Little clarifications here and there.
- Other:
- Some style fixes, issues detected by static analyzers.
Version 2.2
Released 2011-09-03
- New features:
- Bug fixes:
- 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)
- 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() and free() 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.
- Portability:
- Enhance portability of va_copy().
- Test framework portability enhancements.
- Documentation:
- Distribute doc/upgrading.rst with the source tarball.
- Build documentation in strict mode in make distcheck.
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() and json_dump_file().
- For future needs, add a flags parameter to all decoding functions
json_loadf(), json_loads() and json_load_file().
- New features
- 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 file jansson_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.
Version 1.3
Released 2010-06-13
- New functions:
- 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 and null
- Estimate real number underflows in decoder with 0.0 instead of
issuing an error
- Portability:
- Make int32_t available on all systems
- Support compilers that don’t have the inline keyword
- Require Autoconf 2.60 (for int32_t)
- 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
- Documentation:
- Don’t remove changes.rst in make clean
- Add a chapter on RFC conformance
Version 1.2
Released 2010-01-21
- New functions:
- New encoding flags:
- JSON_SORT_KEYS: Sort objects by key
- JSON_ENSURE_ASCII: Escape all non-ASCII Unicode characters
- JSON_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 in
json_string_set(), json_integer_set() and json_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
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 in jansson.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 and null)
- Enhance circular reference handling
- Don’t define -std=c99 in AM_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)
Version 1.0.2
Released 2009-09-08
- Handle EOF correctly in decoder
Version 1.0.1
Released 2009-09-04
Version 1.0
Released 2009-08-25