Changes for version 0.24
- Changes file now uses tabs (to make it less annoying for me) :)
- Moved the inline Aspect::Hook::LexWrap::Cleanup class into it's own dedicated Aspect::Cleanup class.
- Merged Advice-specific hooks from Aspect::Hook::Lexwrap into the advice classes.
- Removed the now-redundant Aspect::Hook::Lexwrap entirely
- Simplified the Aspect::AdviceContext constructor to make it faster
- Logically merged the code-generated functionality from ->install and the Hook::LexWrap-inspired ->hook methods for each Advice class. This removes a lot of guess work and double handling from the main execution path, and should be significantly faster.
- With the code merged, pushed the scope exit flag outside the symbol table iteration in the installer. Instead of a large array of separate exit-tracking objects, we can instead use one single shared lexical hook that works via mixed depth closure Magick.
- Only call wantarray once per hook execution and share the result therafter as a variable. Saves two function calls per hook.
Modules
Aspect-oriented programming (AOP) for Perl
change how Perl code is run at a pointcut
a pointcut context for advice code
Observer pattern with events
cross-cutting memoization
A singleton aspect
give Test::Class test methods an IUT (implementation under test)
A wormhole between call frames
base class for reusable aspects
pointcut base class
Logical 'and' operation pointcut
Binary operation pointcut
Call pointcut
Cflow pointcut
Logical 'not' operation pointcut
Logical 'or' operation pointcut
Provides
in lib/Aspect/Advice/After.pm
in lib/Aspect/Advice/Before.pm
in lib/Aspect/Cleanup.pm
in lib/Aspect/Library/Listenable.pm