1# Version history 2 3## Libucl 0.5 4 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 7 8### 0.5.1 9- Fixed number of bugs and memory leaks 10 11### 0.5.2 12 13- Allow userdata objects to be emitted and destructed 14- Use userdata objects to store lua function references 15 16### Libucl 0.6 17 18- Reworked macro interface 19 20### Libucl 0.6.1 21 22- Various utilities fixes 23 24### Libucl 0.7.0 25 26- Move to klib library from uthash to reduce memory overhead and increase performance 27 28### Libucl 0.7.1 29 30- Added safe iterators API 31 32### Libucl 0.7.2 33 34- Fixed serious bugs in schema and arrays iteration 35 36### Libucl 0.7.3 37 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) 40 41### Libucl 0.8.0 42 43- Allow to save comments and macros when parsing UCL documents 44- C++ API 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 63- Add fuzz tests 64 65**Incompatible changes**: 66 67- `ucl_object_emit_full` now accepts additional argument `comments` that could be used to emit comments with UCL output 68 69### Libucl 0.8.1 70 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 88- Fix Windows build 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 102- Various bugs fixed 103- Couple of memory leaks plugged