Sha256: 955b0c557fadef867e0ee725f322091fc62ef038cbdc717f9ea99cd8a943dc61

Contents?: true

Size: 1.7 KB

Versions: 3

Compression:

Stored size: 1.7 KB

Contents

== Release Plan

=== Versions 0.1.X

Mostly bug fixes and enhancements. Only "minor" breakages of backwards compatibility.

=== Versions 0.2.0

Change the argument list for advice to |join_point, object, *args| from |join_point, *args|, 
where "*args" are the arguments passed to the invoked join point (method). Since nontrivial 
advice usually needs the object being advised, it became clear that having to call 
"join_point.context.advised_object" is too tedious. 

This change will obvious break existing aspects.

=== Versions 0.3+.0

More refinements and simpliciations to the API and functionality, including much-needed redundancy
reduction. I haven't used mocks much in the specs, but they are clearly needed now to improve 
performance of RSpec runs. 

The main thrust of new feature work will be expanding the pointcut language to include 
conditionals and stack context constructs, as well as more intuitive ways of expressing sets of 
types, such as types nested arbitrarily deep in module "namespaces" (e.g., #13403), etc. 

I'm also thinking about an alternative syntax for the DSL. Instead of just this:

	Aspect.new :around :pointcuts => [pc1, pc2, ...] do |jp, object, *args| 
		# advise
	end

How about something like the following?

	around do
 		pointcuts pc1 or pc2
 		advise_with do |jp, object, *args| 
			# advise
		end
	end

I'm not sure it adds much (at this stage of thinking about it...) except that it could make 
composition of complete pointcuts easier.
	
=== Version 1.0.0

Reasonable stable and full-featured API and DSL. Also, to justify Aquarium's existence ;), I want
to produce some non-trivial examples of refactoring known APIs and demonstrating improved clarity,
productivity, modularity, etc., etc.

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
aquarium-0.2.0 RELEASE-PLAN
aquarium-0.3.0 RELEASE-PLAN
aquarium-0.3.1 RELEASE-PLAN