# Release Notes v0.16.0 : Substitutions

This release introduces support for
declarative and non-declarative Substitutions.


## Major Changes

- Substitutions (#154)

    * Delete Terms
    * Recovery Rules
    * Exchange Events

- Extern function (#74)

    * External dynamic libraries


## Minor Changes

- Replace ``libxml++`` with ``libxml2`` (#218)

    * 2-2.5x speed improvement for initialization from MEF XML input
    * Removed dependencies: ``libxml++``, ``glib``, ``glibmm``, ``sigc++``

- Redesign Exception classes w/ boost::exception (#219)

- Option to omit indentation whitespace in output XML (#220)
  (up to 25% smaller file size and 10% speed improvement)

- XML stream optimizations for reporting

    * ``stdio`` instead of ``iostream`` (40% speed improvement)
    * Custom indentation implementation (5% speed improvement)
    * Integer serialization optimization (4-5% speed improvement)

- GUI: Translation and localization setup with [Crowdin](https://crowdin.com/project/scram)

- GUI: Application Preferences (#210)

- GUI: Fail-safe file save (#228)

- GUI: Enable find/filter/search in Importance and Product tables


## Bug Fixes

- GUI: EventDialog name validator allows only ASCII chars (#221)


## Since v0.15.0

201 commits resulted in 215 files changed, 36429 insertions(+), 2372 deletions(-)

- Core: 61 files changed, 3262 insertions(+), 1364 deletions(-)
- Scripts: No change
- GUI: 61 files changed, 31086 insertions(+), 471 deletions(-)
- Tests: 64 files changed, 1566 insertions(+), 198 deletions(-)
- Documentation: 13 files changed, 202 insertions(+), 76 deletions(-)
- Schemas: 2 files changed, 103 insertions(+), 26 deletions(-)
