Aspect

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

	  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 )