* new pointcuts: execution, cflowbelow, within, advice, calledby * a debug flag to print out subs that were matched on match_define * warnings when over 1000 methods wrapped * bring back Marcel's tracing aspect and example, class invariants example, cookbook * need a way to match subs with an attribute, attributes::get() will not work for some reason * isa() support for method pointcuts as Gaal Yahas suggested: match methods on class hierarchies without callbacks * add whatever constructs required for mocking packages, objects, builtins * need a way to match subs that have not been imported in to a package * use Scalar-Footnote for adding aspect state to objects, e.g. in Listenable. Problem is it is still in developer release state * Listenable: when listeners go out of scope, they should be removed from listenables * Listenable: should overload some operator on listenables so that it is easier to add/remove listeners IDEAS * design aspects: DBC, threading, GOF patterns * middleware aspects: security, load balancing, timeout/retry, distribution * Perl aspects: add use strict/warning/Carp to all matched packages * Perl join points: phasic- BEGIN/INIT/CHECK/END * investigate alternate strategy for weaving in Perl, using the B::* way, just like AspectJ * interface with existing Perl modules for logging, tracing, param checking, generally all things that are AOPish on CPAN. One should be able to use it all through one consistent interface * UnderscoreContext aspect: subs that match will, if called with no parameters, get $_, and if in void context, return value will set $_. Allows you to use your subs like builtins, that fall back on $_. So if we have a sub: sub replace_foo { my $in = shift; $in =~ s/foo/bar; $in } Then both calls would be equivalent: $_ = replace_foo($_); replace_foo(); * a generic FriendParamAppender aspect, that adds to a param list for affected methods, any object the method requires. Heuristics are applied to find the friend: maybe it is available in the call flow? Perhaps someone in the call flow has an accessor that can get it? Maybe a lexical in some sub in the call flow has it? The point is to cover all cases where we pass objects around, so that we don't have to. * support more pulling (vs. pushing) of aspects into packages: attributes, package specific join points * debugger support: break on pointcut * allow finer control of advice execution order