DynaMix (Dynamic Mixins) is an alternative take on object-oriented programming and dynamic polymorphism. It lets users compose and modify polymorphic objects at run time. The main target language is C++, but C is also supported. The library is a means to create a project's architecture rather than achieve its purpose. It helps with extensibility, readability, scalability, and interoperability. It focuses on maximal performance and minimal memory overhead. The library uses the type dynamix::object as a placeholder, whose instances can be extended with existing classes (mixins), thus providing a particular instance with the mixin features of all those types. Likely the most important types of mixin features are messages: functional objects that in C++-OOP terms can be thought of as methods. Mixin features are overridable and use late binding and singular dispatch. Unicasts and multicasts are possible.
Features
- DynaMix is applicable for the software architecture of systems with complex objects
- Compose objects from mixins at run time
- Physically separate interface and implementation
- Non-intrusive – mixins don't need to have a common parent or any special code inside
- Mutate "live" objects by changing their composition at run time
- Create shared libraries and plugins which can enrich or modify objects, without modifying (or even rebuilding) the executable
- Have complete runtime reflection by symbols or strings