Initial release.
Addition of cascading module functions.
Total overhaul of internals. Major interface changes. Addition of prepend functions. Added deprecated method exceptions for interface changes.
Added cascades_to_module methods.
2700% speed-up by preventing cascading duplicate includes/extends.
Actually fixed speed problems rather than just improving them. Add block support for declarations. Added block methods for nested declarations.
Updates to :perform_cascades to support cascading to extended instances.
Changes from :module_eval to :instance_eval for instance extend support.
Full internals update/rewrite/restructure for instance support and more complete hooks.
Separated out public interface modules from internal implementation modules.
Added ::ModuleCluster::Define::Status to interrogate currently defined hooks.
Added ::ModuleCluster::Suspend, which includes various methods to temporarily or permanently modify hooks that have been created.
Changed return values on interface methods from self to the set created by the method. This permits chaining of settings, such as appending .name( :set_name ).
Added set names, which permit the later suspension of sets by name rather than having to describe which set(s) should be suspended (although this can also be done).
Added support for Class#subclass block hook.
Added support for declaring subclass blocks in a module. Added support for declaring class_or_module_include_or_subclass hooks, class_include_or_subclass, and module_include_or_subclass.
Added support for cascading block methods.
Total interface rewrite. Renamed From ModuleCluster to Module::Cluster.
Oops! Reversed the order for before* methods. Fixed.
Fixed top-level block-only hooks.
Fixes for which instances blocks are eval'd on
Rewrite of internals, massively simplified. Module include/extend order is no longer reversed from Ruby's include and extend methods. This change may be quite annoying, but the inconsistency was more annoying.
Add :module_class execution and cascade hooks. Fixed subclass handling so that it will work on Class (in addition to instances of Class).
Changed Stack from < Array to < Array::Compositing and from using #concat to using #register_parent. This means that frames will now automatically cascade when created in a super instance after its hook, which means that frames can be created on Object to cascade to Module, Class, and other instances. This might be confusing and possibly not what we want; if so, we can cause Array::Compositing not to inherit elements created after registration. Worst case it is likely that we want Object => Module, Class, but not to new subclass.