Changes in Jansson

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

  • Initial release