5 - Streamline emitter has been added, so it is now possible to output partial `ucl` objects
6 - Emitter now is more flexible due to emitter_context structure
9 - Fixed number of bugs and memory leaks
13 - Allow userdata objects to be emitted and destructed
14 - Use userdata objects to store lua function references
18 - Reworked macro interface
22 - Various utilities fixes
26 - Move to klib library from uthash to reduce memory overhead and increase performance
30 - Added safe iterators API
34 - Fixed serious bugs in schema and arrays iteration
38 - Fixed a bug with macros that come after an empty object
39 - Fixed a bug in include processing when an incorrect variable has been destroyed (use-after-free)
43 - Allow to save comments and macros when parsing UCL documents
45 - Python bindings (by Eitan Adler)
46 - Add msgpack support for parser and emitter
47 - Add Canonical S-expressions parser for libucl
48 - CLI interface for parsing and validation (by Maxim Ignatenko)
49 - Implement include with priority
50 - Add 'nested' functionality to .include macro (by Allan Jude)
51 - Allow searching an array of paths for includes (by Allan Jude)
52 - Add new .load macro (by Allan Jude)
53 - Implement .inherit macro (#100)
54 - Add merge strategies
55 - Add schema validation to lua API
56 - Add support for external references to schema validation
57 - Add coveralls integration to libucl
58 - Implement tests for 80% of libucl code lines
59 - Fix tonns of minor and major bugs
60 - Improve documentation
61 - Rework function names to the common conventions (old names are preserved for backwards compatibility)
62 - Add Coverity scan integration
65 **Incompatible changes**:
67 - `ucl_object_emit_full` now accepts additional argument `comments` that could be used to emit comments with UCL output
71 - Create ucl_parser_add_file_full() to be able to specify merge mode and parser type (by Allan Jude)
72 - C++ wrapper improvements (by @ftilde)
73 - C++ wrapper: add convenience method at() and lookup() (by Yonghee Kim)
74 - C++ wrapper: add assignment operator to Ucl class (by Yonghee Kim)
75 - C++ wrapper: support variables in parser (by Yonghee Kim)
76 - C++ wrapper: refactoring C++ interface (by Yonghee Kim):
77 - use auto variables (if possible)
78 - remove dangling expressions
79 - use std::set::emplace instead of std::set::insert
80 - not use std::move in return statement; considering copy elision
81 - C++ wrapper: fix compilation error and warnings (by Zhe Wang)
82 - C++ wrapper: fix iteration over objects in which the first value is `false` (by Zhe Wang)
83 - C++ wrapper: Macro helper functions (by Chris Meacham)
84 - C++ wrapper: Changing the duplicate strategy in the C++ API (by Chris Meacham)
85 - C++ wrapper: Added access functions for the size of a UCL_ARRAY (by Chris Meacham)
86 - Fix caseless comparison
87 - Fix include when EPERM is issued
89 - Allow to reserve space in arrays and hashes
90 - Fix bug with including of empty files
91 - Move to mum_hash from xxhash
92 - Fix msgpack on non-x86
93 - python: Add support to Python 3 (by Denis Volpato Martins)
94 - python: Add support for Python 2.6 tests (by Denis Volpato Martins)
95 - python: Implement validation function and tests (by Denis Volpato Martins)
96 - python: Added UCL_NULL handling and tests (by Denis Volpato Martins)
97 - Fix schema validation for patternProperties with object data (by Denis Volpato Martins)
98 - Remove the dependency on NBBY, add missing <strings.h> include (by Ed Schouten)
99 - Allow to emit msgpack from Lua
100 - Performance improvements in Lua API
101 - Allow to pass opaque objects in Lua API for transparent C passthrough
103 - Couple of memory leaks plugged