DynaMix 1.3.7
Released: 2018 Nov 11
- Properly fixed problems with messages to methods from parent classes, removing the need for
from_parent
- User config macro
DYNAMIX_NO_BAD_MULTICASTS
allowing safe mutlicasts (no throwing if there's no implementation)
- Optional split-message macros to allow message implementations to be hidden for faster compilation.
- Renamed internal macros to start with
I_
instead of underscore and capital letter
DynaMix 1.3.6
Released: 2018 Jul 07
- New mixin feature
mixin_name
allows custom mixin names
- Fixed short message macros
- The metric
object_type_info::num_objects
is always on
- Domain has a method which frees resources for unused object type infos
- Allowed using the legacy message macros since clang and gcc may suffer increased compilation time with the new ones
- Fixed a variable shadowing warning in domain.hpp
- Added multi-threaded and mixin-in-namespace tests
- Added a compiler performance benchmark
- Improved build time of tests
DynaMix 1.3.5
Released: 2018 Mar 26
- Fixed a leak with gcc and clang when reloading plugins
DynaMix 1.3.4
Released: 2018 Feb 26
- Exceptions are no longer derived from
std::exception
- Added a way to refere to a message for a parent as a workaround to issue #20
- Fixed visibility for clang builds on macOS
- Added an optional header with message macros with short names
- Removed
noncopyable
class
- CI tests of DynaMix as a static library
DynaMix 1.3.3
Released: 2018 Feb 06
- Added checks whether a message is implemented by a default implementation
DynaMix 1.3.2
Released: 2018 Jan 16
DynaMix 1.3.1
Released: 2018 Jan 16
- Reduced macro-generated code by message declaration macros. Messages are now easier to debug with only a single line in the macro when stepping.
- Fixed a bug which didn't allow message overloads on constness alone
- Added a getter for the mutation from mutator classes
- Improved performance tests
DynaMix 1.3.0
Released: 2017 Dec 20
- Redesign of allocators. The new allocators are not backwards compatible.
- Added per-object allocators which can allocate mixins for a specific object. This can be useful if you want all mixins for an object to be in a single contiguous memory block.
- New allocators have much more flexibility as they receive more information when allocating, including a pointer to the associated object
- New allocators can construct and destroy mixins
- Added methods to
object
which allow users to replace mixins within objects
- Split
mixin_type_info
into a public and private part
- Added
noexcept
specifiers to some methods where appropriate
DynaMix 1.2.3
Released: 2017 Oct 28
- Added possibility to change the library configuration via a custom config header file without editing
config.hpp
in the source
DynaMix 1.2.2
Released: 2017 Oct 18
- Fixed a bug which caused a memory corruption when moving an empty object into another object
DynaMix 1.2.1
Released: 2017 Oct 15
- Improved mutation rules: They can now be added, removed and persisted via shared pointers
- Added
object::has
and object::get
with const char*
to query mixins by name
add_new_mutation_rule
is now deprecated
- Fixed library version header
DynaMix 1.2.0
Released: 2017 Aug 17
- Introduced a new feature: Message bids
- Overriding multicast functions is now possible
- Added
DYNAMIX_CALL_NEXT_BIDDER
which works for unicasts and multicasts
- Added bids tutorial
- Dropped CMake 2.x support. Transition to modern CMake (3.2+)
- Fixed a bug which caused a leak when defining an invalid type (when a mutation causes an exception to be thrown)
DynaMix 1.1.0
Released: 2017 Apr 07
- Dropped support for an obscure optimization feature which allowed for the same mixins and messages to be defined multiple times in multiple modules (i.e. in a static library linked to those modules)
- Fixed bug with crashes when unloading and then reloading a plugin which defines a message.
- Fixed various bugs with unused (which no mixin features) messages:
obj.implements(unused_msg)
caused a crash
unused(obj ...)
cause a crash (instead of exception)
- Crash when only a plugin uses the message
- Added (optional) mutation thread safety; in that mutating two different objects in two different threads is now safe.
- Added optional additional metrics to object and mixin type data to show the number of objects and mixins, respectively, of a given type.
DynaMix 1.0.4
Released: 2017 Feb 25
- Added check for object copy safety.
- Added two new common mutation rules
bundled_mixins
and dependent_mixins
.
DynaMix 1.0.3
Released: 2017 Jan 26
- Added a optional header with message macros with no arity. Its use is not recommended because it breaks all known code-completion tools.
- Optimized around local static variables in feature registration and the domain singleton. As a result mutation is about 5% faster and, more importantly, message calls are about 12% faster.
- Fixed some bugs in the allocator tutorial.
global_allocator::mixin_data_size
is now constexpr
DynaMix 1.0.2
Released: 2017 Jan 16
- Added copying of objects
- Added
num_implementers
to object
to check the number of mixins which implement a message
- Added optional call to
set_num_results
to multicast result combinators
DynaMix 1.0.1
Released: 2016
- Removed build tools other than CMake
- Removed C++98/03 support. Switch to C++11 only.
- Added default message implementations.
- Library rebranded
DynaMix 1.0.0
Released: 2013
First official release of the library (as Boost.Mixin)