[Aquarium-devel] V0.3.1 released

Dean Wampler dean at aspectprogramming.com
Tue Jan 29 10:33:56 EST 2008


A minor release that significantly improves the speed of the rspec  
suite. Here are the notes:

== Version 0.3.1

V0.3.1 adds numerous performance improvements, especially in the RSpec  
suite, and some minor API additions.

Bug fixes:
N.A.

Enhancements:
14447	Unify internal handling of reporting errors to the user
17514	Provide an Aquarium library-wide logger with configuration  
parameters and instance overrides
17515	Add an optional warning if an aspect doesn't match any join points
17516	Remove unnecessary examples that use :types_and_descendents to  
shorten time to run the RSpec suite
17565	JoinPoint.new should convert a type name, symbol, or regex to  
the type and only allow one type

These first two enhancements are related. There is a now an  
Aquarium::Utils::DefaultLogger
module with static accessors for getting and setting the "system-wide"  
logger.

When instance-level overrides are necessary, the  
Aquarium::Utils::OptionsUtils provides
"universal" options (but currently used only by Aspect and Pointcut)  
for specifying a logger
(with the new :logger parameter), or alternatively, specifying just  
the output stream
(:logger_stream) and/or the severity (:severity, one of the standard  
library's
Logger::Severity-defined constants). If either of the latter two  
options is specified, a
separate logger instance is created, rather than changing parameters  
for the global logger.

OptionsUtils also supports a :noop parameter, which classes interpret  
to mean do none (or
perhaps only some) of the processing. Useful for debugging.

#17515 adds a helpful warning to the system (or aspect-instance's)  
logger if an aspect
matches no join points. This warning will be suppressed if (i) the  
severity level for the
logger is above WARN or (ii) the aspect was created with the option
	:ignore_no_matching_join_points => true.

#17516 fixes halved the long execution times for the whole RSpec suite  
by refactoring some examples
that used type finders with the :types_and_descendents option  
unnecessarily. It is a very intensive
computation! Note that I stubbed out these calls using an aspect with  
around advise, a useful
"development-time" aspect. See Aquarium::TypeUtilsStub (in  
spec_example_types.rb) and how it's used
in pointcut_spec.rb. Using this technique and other optimizations, the  
time to run the suite was
reduced from ~5 minutes to about 1 minute.

#17565 fixes a "hole" in JoinPoint, where it doesn't confirm that a  
specified type string, symbol
or regex matches a class that exists and only one class. Now it does  
and it stores the type, rather
than the original "specification" for it.


Dean Wampler, Ph.D.
dean at objectmentor.com
http://www.objectmentor.com
See also:
http://www.aspectprogramming.com  AOP advocacy site
http://aquarium.rubyforge.org     AOP for Ruby
http://www.contract4j.org         Design by Contract for Java5



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/aquarium-devel/attachments/20080129/c312408e/attachment.html 


More information about the Aquarium-devel mailing list