Version 1.10
~~~~~~~~~~~~

- Changes:
  * Renamed plutil to plistutil to not mask Apple's plutil
  * Fixed cython bindings (broken in 1.9) 
  * Added support for PLIST_UID node types to C++, cython, and swig bindings

- Important Note:
  * Support for swig python bindings will be dropped with future releases.
    The bindings will be kept in the source tree for now, but we suggest
    to update your python code to use the cython bindings instead.

Version 1.9
~~~~~~~~~~~

- Changes:
  * Add support for handling UID node types
  * Fix crash when converting plists containing comments
  * Fix Bug in plist_data_compare()
  * Fix DST handling for PLIST_DATE
  * Fix plist_dict_set_item() and plist_array_set_item()
  * Fix cython String plist handling
  * Fix invalid memory access in copy_plist_data()
  * Fix several compiler warnings

Version 1.8
~~~~~~~~~~~

- Changes:
  * Add cython bindings
  * Fix error in swig bindings
  * Fix memory corruption in libcnary

Version 1.7
~~~~~~~~~~~

- Changes:
  * Fix building on Big Endian systems

Version 1.6
~~~~~~~~~~~

- Changes:
  * Updated libcnary sources, adding license and copyright info

Version 1.5
~~~~~~~~~~~

- Changes:
  * Removed glib dependency, libplist now uses libcnary
    (http://github.com/Chronic-Dev/libcnary)
  * Fix building of python bindings with GCC 4.6

Version 1.4
~~~~~~~~~~~

- New maintainer and source location
- Changes:
  * Update AUTHORS from git history
  * Fix Unicode writing in binary plists
  * Update plist doctype
  * Fix Dictionary copy constructor
  * Fix Mac OS X library install path detection
  * Plug memory leak when writing Unicode data

Version 1.3
~~~~~~~~~~~

- Changes:
  * Endianness, alignment and type-punning fixes
  * Fix armel floating point endianess 
  * Allow compiling with mingw on Windows
  * Minor bugfixes

Version 1.2
~~~~~~~~~~~

- Changes:
  * Fix xml entity conversion
  * Silence build warnings

Version 1.1
~~~~~~~~~~~

- Changes:
  * Fix use of integer nodes within Python Bindings

Version 1.0
~~~~~~~~~~~

- Changes:
  * Bugfixes
  * Remove deprecated API

Version 0.16
~~~~~~~~~~~~

- Changes:
  * Build fixes
  * Fix issues with SWIG

Version 0.15
~~~~~~~~~~~~

- Changes:
  * Build fixes

Version 0.14
~~~~~~~~~~~~

- Changes:
  * Add C++ binding
  * Refactor API
  * Bugfixes

Version 0.13
~~~~~~~~~~~~

- Changes:
  * Add plist_copy for deep node copies
  * Add node setter functions
  * Unlink nodes from parent if free'd
  * Update Python bindings

Version 0.12
~~~~~~~~~~~~

- Changes:
  * Merge ascii and unicode handling in PLIST_STRING using UTF-8
  * Remove unicode related declaration in API (breaks API&ABI)
  * Fix bad variable type for date elements
  * Silence compiler warnings
  * Plugged few memory leaks

Version 0.11
~~~~~~~~~~~~

- Changes:
  * Fix Python binding segfaults
  * Python API additions
  * Better binary buffer handling in Python bindings

