Aspect
view release on metacpan or search on metacpan
by moving from using pure named hook functions to assigning
anonymous subroutines to the typeglob instead.
- Pointcuts now boolify (quickly) to true, and don't stringify to
a Data::Dumper debugging spew any more.
- Implemted the internals needed to support AndOp and OrOp pointcuts
with more than 2 elements, so that in future long chained
collections of & or | pointcuts will collapse down into a single
object, instead of building as giant nested trees of boolean pairs.
0.27 Sun 3 Jan 2010 - Adam Kennedy
- Various micro-optimisation of Aspect::AdviceContext which would
normally be somewhat pointless, but is useful in this case when
an Aspect hook is applied to something which is in the hot loop
for some program.
- Added a test script to specifically hunt down the problems with
variable sharing in string-eval'ed closures.
0.26 Thu 31 Dec 2009 - Adam Kennedy
- With the primary internals refactoring completely, we now start
a series of commits to remove excessive abstractions, and to alter
others to more appropriate abstractions (still without changing
any of the APIs)
- Cleaning up and refactoring the Aspect/Advice constructor code in
Aspect.pm
- Removed the weird Aspect::Advice->new( type, code, pointcut ) for
a more conventional ->new setup.
- Attempt to load Sub::Uplevel earlier (before we load Exporter) so
there is an increased likelyhood that we don't have to reload
Exporter later.
- Removed redundant references to Hook::LexWrap from the POD, and
removed the "Convert to Sub::Uplevel" item from the TO DO list.
- Rewrote the Pointcut family of classes to have a simpler structure
which should be faster. Some now use blessed ARRAYs as a
preparatory step for allowing the AndOp/OrOp pointcuts to have
more than just two elements (and to allow enable certain
optimisation strategies down the line).
- Removed the faulty Aspect::Pointcut::BinOp abstraction entirely.
It was causing boolean and/or operations to always run both sides,
so unlike the overloaded expression they were created from, they
would never shortcut. This is now resolved, and the an/or pointcut
elements now shortcut properly.
0.25 Thu 31 Dec 2009 - Adam Kennedy
- Debundled various out-of-date testing libraries, and reverted
to more conventional build_requires dependencies now that our
downstream packaging systems have the ability to consume them.
- Since the code documents the Aspect::Advice->install method as
private (and it is undocumented) rename to ->_install as a
precursor to changing it's behaviour at an API level.
- Now that the descope execution of the closure hook is able to be
trusted, we no longer need the Aspect::Cleanup DESTROY-time
self-execution magick.
- Added the ->wantarray property to the AdviceContext object.
This is provided as a convenience to the user (since the wantarray)
function works properly inside the advice code. It's main use is
for some AspectContext internals.
- Added wantarray context test, which uncovered a bug where
void-context calls were incorrectly running the advice in scalar
context.
0.24 Wed 30 Dec 2009 - Adam Kennedy
- 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.
0.23 Thu 24 Dec 2009 - Adam Kennedy
- Removed the concept of a standalone Aspect::Weaver class
- Each Aspect::Advice:: subclass now does most of the setup for the weaving
individually, with similar but slightly different implementations.
This adds some duplication of code, but removes a lot of architectural
complexity. It should make the creation of new types of Advice simpler.
- Corrected the versions of the test libs (which went out of sync)
- The Hook::LexWrap wrap function is now split into Advice-specific hooks
before and after, duplicating some code but making each type simpler and
faster.
0.22 Mon 21 Dec 2009 - Adam Kennedy
- Part one of an upcoming series of major upgrades
- Migrating to Sub::Uplevel to remove our custom CORE::GLOBAL::caller
0.21 Tue 21 Jul 2009 - Adam Kennedy
- Bumped the version to 0.21 so the Hook::LexWrap module indexes
0.16 Tue 19 May 2009 - Adam Kennedy
- Moved out Aspect::Library::Profiler into a standalone distribution
0.15 Thu Jul 24 23:02:11 CEST 2008 (Marcel Gruenauer <marcel@cpan.org>)
- fixed version in all modules. *sigh*
0.14 Thu Jul 24 22:46:43 CEST 2008 (Marcel Gruenauer <marcel@cpan.org>)
- fixed dist style
0.13 Thu Jul 24 18:22:15 CEST 2008 (Marcel Gruenauer <marcel@cpan.org>)
- Made sure every module has a $VERSION
- updated MANIFEST and MANIFEST.SKIP
- removed META.yml as it is being generated by Module::Install
- added requirements to Makefile.PL
- converted Makefile.PL to use Module::Install
- Aspect::Hook::LexWrap now uses warnings and strict; some changes were
necessary for those to go through
- fixed POD error in Aspect::Modular
- added spaces where necessary to avoid having the template's start_tag in
the code
- renamed t/all_tests.t to t/01_all.t
- added t/perlcriticrc
- added .shipit
- set version to 0.13
( run in 1.706 second using v1.01-cache-2.11-cpan-39bf76dae61 )