2ccc252c88a8b5eb5dc635ecd57edcb4f0b6bc24
[gitmo/Moose.git] / Changes
1 Revision history for Perl extension Moose
2
3 0.62
4     * Moose::Meta::Role::Application::ToClass
5       Moose::Meta::Role::Application::ToRole
6       - fixed issues where excluding and aliasing the 
7         same methods for a single role did not work 
8         right (worked just fine with multiple roles)
9         - added test for this
10     * Moose::Exporter
11       - Catch another case where recursion caused the value
12         of $CALLER to be stamped on (t0m)
13         - added test for this (t0m)
14     * Moose
15       - Remove the make_immutable keyword, which has been
16         deprecated since April. It breaks metaclasses that
17         use Moose without no Moose (Sartak)
18     * Moose::Meta::Role
19       - create method for constructing a role
20         dynamically (Sartak)
21       - begin implementing anonymous roles (Sartak)
22
23 0.61 Fri November 7, 2008
24     * Moose::Meta::Attribute
25       - When passing a role to handles, it will be loaded if necessary
26         (perigrin)
27
28     * Moose::Meta::Class
29       - Method objects returned by get_method (and other methods)
30         Could end up being returned without an associated_metaclass
31         attribute. Removing get_method_map, which is provided by
32         Class::MOP::Class, fixed this. The Moose version did nothing
33         different from its parent except introduce a bug. (Dave Rolsky)
34         - added tests for this (jdv79)
35
36     * Various
37       - Added a $VERSION to all .pm files which didn't have one. Fixes
38         RT #40049, reported by Adam Kennedy. (Dave Rolsky)
39
40     * Moose::Cookbook::Basics::Recipe4
41     * Moose::Cookbook::Basics::Recipe6
42       - These files had spaces on the first line of the SYNOPSIS, as
43         opposed to a totally empty line. According to RT #40432, this
44         confuses POD parsers. (Dave Rolsky)
45
46 0.60 Fri October 24, 2008
47     * Moose::Exporter
48       - Passing "-traits" when loading Moose caused the Moose.pm
49         exports to be broken. Reported by t0m. (Dave Rolsky)
50         - Tests for this bug. (t0m)
51     
52     * Moose::Util
53       - Change resolve_metaclass alias to use the new
54         load_first_existing_class function. This makes it a lot
55         simpler, and also around 5 times faster. (t0m)
56       - Add caching to resolve_metaclass_alias, which gives an order
57         of magnitude speedup to things which repeatedly call the
58         Moose::Meta::Attribute->does method, notably MooseX::Storage
59         (t0m)
60
61     * Moose::Util::TypeConstraint
62       - Put back the changes for parameterized constraints that
63         shouldn't have been removed in 0.59. We still cannot parse
64         them, but MooseX modules can create them in some other
65         way. See the 0.58 changes for more details. (jnapiorkowski)
66       - Changed the way subtypes are created so that the job is
67         delegated to a type constraint parent.  This clears up some
68         hardcoded checking and should allow correct subtypes of
69         Moose::Meta::Type::Constraint. Don't rely on this new API too
70         much (create_child_type) because it may go away in the
71         future. (jnapiorkowski)
72
73     * Moose::Meta::TypeConstraint::Union
74       - Type constraint names are sorted as strings, not numbers.
75         (jnapiorkowski)
76       
77     * Moose::Meta::TypeConstraint::Parameterizable
78       - New parameterize method. This can be used as a factory method
79         to make a new type constraint with a given parameterized
80         type. (jnapiorkowski)
81         - added tests (jnapiorkowski)
82
83 0.59 Tue October 14, 2008
84     * Moose
85       - Add abridged documentation for builder/default/initializer/
86         predicate, and link to more details sections in 
87         Class::MOP::Attribute. (t0m)
88
89     * Moose::Util::TypeConstraints
90       - removed prototypes from all but the &-based stuff (mst)
91
92     * Moose::Util::TypeConstraints
93       - Creating a anonymous subtype with both a constraint and a
94         message failed with a very unhelpful error, but should just
95         work. Reported by t0m. (Dave Rolsky)
96
97     * Tests
98       - Some tests that used Test::Warn if it was available failed
99         with older versions of Test::Warn. Reported by Fayland. (Dave
100         Rolsky)
101       - Test firing behavior of triggers in relation to builder/default/
102         lazy_build. (t0m)
103       - Test behavior of equals/is_a_type_of/is_a_subtype_of for all
104         kinds of supported type. (t0m)
105
106     * Moose::Meta::Class
107       - In create(), do not pass "roles" option to the superclass
108         - added related test that creates an anon metaclass with
109           a required attribute
110
111     * Moose::Meta::TypeConstraint::Class
112     * Moose::Meta::TypeConstraint::Role
113       - Unify behavior of equals/is_a_type_of/is_a_subtype_of with
114         other types (as per change in 0.55_02). (t0m)
115
116     * Moose::Meta::TypeConstraint::Registry
117       - Fix warning when dealing with unknown type names (t0m)
118
119     * Moose::Util::TypeConstraints
120       - Reverted changes from 0.58 related to handle parameterized
121         types. This caused random failures on BSD and Win32 systems,
122         apparently related to the regex engine. This means that Moose
123         can no longer parse structured type constraints like
124         ArrayRef[Int,Int] or HashRef[name=>Str]. This will be
125         supported in a slightly different way via MooseX::Types some
126         time in the future. (Dave Rolsky)
127
128 0.58 Sat September 20, 2008
129     !! This release has an incompatible change regarding !!
130     !! how roles add methods to a class !!
131
132     * Roles and role application
133       ! Roles now add methods by calling add_method, not
134         alias_method. They make sure to always provide a method
135         object, which will be cloned internally. This means that it is
136         now possible to track the source of a method provided by a
137         role, and even follow its history through intermediate roles.
138
139         This means that methods added by a role now show up when
140         looking at a class's method list/map. (Dave Rolsky)
141
142     * Makefile.PL
143       - From this release on, we'll try to maintain a list of
144         conflicting modules, and warn you if you have one
145         installed. For example, this release conflicts with ...
146         - MooseX::Singleton        <= 0.11
147         - MooseX::Params::Validate <= 0.05
148         - Fey::ORM                 <= 0.10
149
150         In general, we try to not break backwards compatibility for
151         most Moose users, but MooseX modules and other code which
152         extends Moose's metaclasses is often affected by very small
153         changes in the Moose internals.
154
155     * Moose::Meta::Method::Delegation
156     * Moose::Meta::Attribute
157       - Delegation methods now have their own method class. (Dave
158         Rolsky)
159
160     * Moose::Meta::TypeConstraint::Parameterizable
161       - Added a new method 'parameterize' which is basically a factory
162         for the containing constraint.  This makes it easier to create
163         new types of parameterized constraints. (jnapiorkowski)
164
165     * Moose::Meta::TypeConstraint::Union
166       - Changed the way Union types canonicalize their names to follow
167         the normalized TC naming rules, which means we strip all
168         whitespace. (jnapiorkowski)
169
170     * Moose::Util::TypeConstraints
171       - Parameter and Union args are now sorted, this makes Int|Str
172         the same constraint as Str|Int. (jnapiorkowski)
173       - Changes to the way Union types are parsed to more correctly
174         stringify their names. (jnapiorkowski)
175       - When creating a parameterized type, we now use the new
176         parameterize method. (jnapiorkowski)
177       - Incoming type constraint strings are now normalized to remove
178         all whitespace differences. (jnapiorkowski)
179       - Changed the way we parse type constraint strings so that we now
180         match TC[Int,Int,...] and TC[name=>Str] as parameterized type
181         constraints.  This lays the foundation for more flexible type
182         constraint implementations.
183
184     * Tests and docs for all the above. (jnapiorkowski)
185
186     * Moose::Exporter
187     * Moose
188       - Moose::Exporter will no longer remove a subroutine that the
189         exporting package re-exports. Moose re-exports the
190         Carp::confess function, among others. The reasoning is that we
191         cannot know whether you have also explicitly imported those
192         functions for your own use, so we err on the safe side and
193         always keep them. (Dave Rolsky)
194         - added tests for this (rafl)
195
196     * Moose::Meta::Class
197       - Changes to how we fix metaclass compatibility that are much
198         too complicated to go into. The summary is that Moose is much
199         less likely to complain about metaclass incompatibility
200         now. In particular, if two metaclasses differ because
201         Moose::Util::MetaRole was used on the two corresponding
202         classes, then the difference in roles is reconciled for the
203         subclass's metaclass. (Dave Rolsky)
204       - Squashed an warning in _process_attribute (thepler)
205
206     * Moose::Meta::Role
207       - throw exceptions (sooner) for invalid attribute names (thepler)
208         - added tests for this (thepler)
209
210     * Moose::Util::MetaRole
211       - If you explicitly set a constructor or destructor class for a
212         metaclass object, and then applied roles to the metaclass,
213         that explicitly set class would be lost and replaced with the
214         default.
215
216     * Moose::Meta::Class
217     * Moose::Meta::Attribute
218     * Moose::Meta::Method
219     * Moose
220     * Moose::Object
221     * Moose::Error::Default
222     * Moose::Error::Croak
223     * Moose::Error::Confess
224       - All instances of confess() changed to use overridable
225         C<throw_error> method. This method ultimately calls a class
226         constructor, and you can change the class being called. In
227         addition, errors now pass more information than just a string.
228         The default C<error_class> behaves like C<Carp::confess>, so
229         the behavior is not visibly different for end users.
230
231 0.57 Wed September 3, 2008
232     * Moose::Intro
233       - A new bit of doc intended to introduce folks familiar with
234         "standard" Perl 5 OO to Moose concepts. (Dave Rolsky)
235
236     * Moose::Unsweetened
237       - Shows examples of two classes, each done first with and then
238         without Moose. This makes a nice parallel to
239         Moose::Intro. (Dave Rolsky)
240
241     * Moose::Util::TypeConstraints
242       - Fixed a bug in find_or_parse_type_constraint so that it
243         accepts a Moose::Meta::TypeConstraint object as the parent
244         type, not just a name (jnapiorkowski)
245         - added tests (jnapiorkowski)
246
247     * Moose::Exporter
248       - If Sub::Name was not present, unimporting failed to actually
249         remove some sugar subs, causing test failures (Dave Rolsky)
250
251 0.56 Mon September 1, 2008
252     For those not following the series of dev releases, there are
253     several major changes in this release of Moose.
254       ! Moose::init_meta should now be called as a method. See the
255         docs for details.
256
257       - Major performance improvements by nothingmuch.
258
259       - New modules for extension writers, Moose::Exporter and
260         Moose::Util::MetaRole by Dave Rolsky.
261
262       - Lots of doc improvements and additions, especially in the
263         cookbook sections.
264
265       - Various bug fixes.
266
267     * Removed all references to the experimental-but-no-longer-needed
268       Moose::Meta::Role::Application::ToMetaclassInstance.
269
270     * Require Class::MOP 0.65.
271
272 0.55_04 Sat August 30, 2008
273     * Moose::Util::MetaRole
274     * Moose::Cookbook::Extending::Recipe2
275       - This simplifies the application of roles to any meta class, as
276         well as the base object class. Reimplemented metaclass traits
277         using this module. (Dave Rolsky)
278
279     * Moose::Cookbook::Extending::Recipe1
280       - This a new recipe, an overview of various ways to write Moose
281         extensions (Dave Rolsky)
282
283     * Moose::Cookbook::Extending::Recipe3
284     * Moose::Cookbook::Extending::Recipe4
285       - These used to be Extending::Recipe1 and Extending::Recipe2,
286         respectively.
287
288 0.55_03 Fri August 29, 2008
289     * No changes from 0.55_02 except increasing the Class::MOP
290       dependency to 0.64_07.
291
292 0.55_02 Fri August 29, 2008
293     * Makefile.PL and Moose.pm
294       - explicitly require Perl 5.8.0+ (Dave Rolsky)
295
296     * Moose::Util::TypeConstraints
297       - Fix warnings from find_type_constraint if the type is not 
298         found (t0m).
299       
300     * Moose::Meta::TypeConstraint
301       - Predicate methods (equals/is_a_type_of/is_subtype_of) now
302         return false if the type you specify cannot be found in the
303         type registry, rather than throwing an unhelpful and
304         coincidental exception. (t0m).
305         - added docs & test for this (t0m)
306     
307     * Moose::Meta::TypeConstraint::Registry
308       - add_type_constraint now throws an exception if a parameter is
309         not supplied (t0m).
310         - added docs & test for this (t0m)
311
312     * Moose::Cookbook::FAQ
313       - Added a faq entry on the difference between "role" and "trait"
314         (t0m)
315
316     * Moose::Meta::Role
317       - Fixed a bug that caused role composition to not see a required
318         method when that method was provided by another role being
319         composed at the same time. (Dave Rolsky)
320         - test and bug finding (tokuhirom)
321         
322 0.55_01 Wed August 20, 2008
323
324     !! Calling Moose::init_meta as a function is now         !!
325     !! deprecated. Please see the Moose.pm docs for details. !!
326
327     * Moose::Meta::Method::Constructor
328       - Fix inlined constructor so that values produced by default
329         or builder methods are coerced as required. (t0m)
330         - added test for this (t0m)
331
332     * Moose::Meta::Attribute
333       - A lazy attribute with a default or builder did not attempt to
334         coerce the default value. The immutable code _did_
335         coerce. (t0m)
336         - added test for this (t0m)
337
338     * Moose::Exporter
339       - This is a new helper module for writing "Moose-alike"
340         modules. This should make the lives of MooseX module authors
341         much easier. (Dave Rolsky)
342
343     * Moose
344     * Moose::Cookbook::Meta::Recipe5
345       - Implemented metaclass traits (and wrote a recipe for it):
346
347           use Moose -traits => 'Foo'
348
349         This should make writing small Moose extensions a little
350         easier (Dave Rolsky)
351
352     * Moose::Cookbook::Basics::Recipe1
353       - Removed any examples of direct hashref access, and applied an
354         editorial axe to reduce verbosity. (Dave Rolsky)
355
356     * Moose::Cookbook::Basics::Recipe1
357       - Also applied an editorial axe here. (Dave Rolsky)
358
359     * Moose
360     * Moose::Cookbook::Extending::Recipe1
361     * Moose::Cookbook::Extending::Recipe2
362       - Rewrote extending and embedding moose documentation and
363         recipes to use Moose::Exporter (Dave Rolsky)
364
365     * Moose
366     * Moose::Role
367       - These two modules now warn when you load them from the main
368         package "main" package, because we will not export sugar to
369         main. Previously it just did nothing. (Dave Rolsky)
370
371     * Moose::Role
372       - Now provide an init_meta method just like Moose.pm, and you
373         can call this to provide an alternate role metaclass. (Dave
374         Rolsky and nothingmuch)
375       - get_method_map now respects the package cache flag (nothingmuch)
376
377     * Moose::Meta::Role
378       - Two new methods - add_method and wrap_method_body
379         (nothingmuch)
380
381     * many modules
382       - Optimizations including allowing constructors to accept hash
383         refs, making many more classes immutable, and making
384         constructors immutable. (nothingmuch)
385
386 0.55 Sun August 3, 2008
387     * Moose::Meta::Attribute
388       - breaking down the way 'handles' methods are
389         created so that the process can be more easily
390         overridden by subclasses (stevan)
391
392     * Moose::Meta::TypeConstraint
393       - fixing what is passed into a ->message with
394         the type constraints (RT #37569)
395         - added tests for this (Charles Alderman)
396
397     * Moose::Util::TypeConstraints
398       - fix coerce to accept anon types like subtype can (mst)
399
400     * Moose::Cookbook
401       - reorganized the recipes into sections - Basics, Roles, Meta,
402         Extending - and wrote abstracts for each section (Dave Rolsky)
403
404     * Moose::Cookbook::Basics::Recipe10
405       - A new recipe that demonstrates operator overloading
406         in combination with Moose. (bluefeet)
407
408     * Moose::Cookbook::Meta::Recipe1
409       - an introduction to what meta is and why you'd want to make
410         your own metaclass extensions (Dave Rolsky)
411
412     * Moose::Cookbook::Meta::Recipe4
413       - a very simple metaclass example (Dave Rolsky)
414
415     * Moose::Cookbook::Extending::Recipe1
416       - how to write a Moose-alike module to use your own object base
417         class (Dave Rolsky)
418
419     * Moose::Cookbook::Extending::Recipe2
420       - how to write modules with an API just like C<Moose.pm> (Dave
421         Rolsky)
422
423     * all documentation
424       - Tons of fixes, both syntactical and grammatical (Dave
425         Rolsky, Paul Fenwick)
426
427 0.54 Thurs. July 3, 2008
428     ... this is not my day today ...
429     
430     * Moose::Meta::Attribute
431       - fixed legal_options_for_inheritance such that 
432         clone_and_inherit options still works for 
433         Class::MOP::Attribute objects and therefore 
434         does not break MooseX::AttributeHelpers
435         (stevan)
436
437 0.53 Thurs. July 3, 2008
438     * Whoops, I guess I should run 'make manifest' before 
439       actually releasing the module. No actual changes 
440       in this release, except the fact that it includes
441       the changes that I didn't include in the last 
442       release. (stevan--)
443
444 0.52 Thurs. July 3, 2008
445     * Moose
446       - added "FEATURE REQUESTS" section to the Moose docs
447         to properly direct people (stevan) (RT #34333)
448       - making 'extends' croak if it is passed a Role since 
449         this is not ever something you want to do 
450         (fixed by stevan, found by obra)
451         - added tests for this (stevan)
452
453     * Moose::Object
454       - adding support for DOES (as in UNIVERSAL::DOES) 
455         (nothingmuch)
456         - added test for this
457
458     * Moose::Meta::Attribute
459       - added legal_options_for_inheritance (wreis)
460         - added tests for this (wreis)
461
462     * Moose::Cookbook::Snacks::*
463       - removed some of the unfinished snacks that should 
464         not have been released yet. Added some more examples
465         to the 'Keywords' snack. (stevan)
466
467     * Moose::Cookbook::Style
468       - added general Moose "style guide" of sorts to the 
469         cookbook (nothingmuch) (RT #34335)
470
471     * t/
472       - added more BUILDARGS tests (stevan)
473
474 0.51 Thurs. Jun 26, 2008
475     * Moose::Role
476       - add unimport so "no Moose::Role" actually does
477         something (sartak)
478
479     * Moose::Meta::Role::Application::ToRole
480       - when RoleA did RoleB, and RoleA aliased a method from RoleB in
481         order to provide its own implementation, that method still got
482         added to the list of required methods for consumers of
483         RoleB. Now an aliased method is only added to the list of
484         required methods if the role doing the aliasing does not
485         provide its own implementation. See Recipe 11 for an example
486         of all this. (Dave Rolsky)
487         - added tests for this
488
489     * Moose::Meta::Method::Constructor
490       - when a single argument that wasn't a hashref was provided to
491         an immutabilized constructor, the error message was very
492         unhelpful, as opposed to the non-immutable error. Reported by
493         dew. (Dave Rolsky)
494         - added test for this (Dave Rolsky)
495
496     * Moose::Meta::Attribute
497       - added support for meta_attr->does("ShortAlias") (sartak)
498         - added tests for this (sartak)
499       - moved the bulk of the `handles` handling to the new
500         install_delegation method (Stevan)
501
502     * Moose::Object
503       - Added BUILDARGS, a new step in new()
504
505     * Moose::Meta::Role::Application::RoleSummation
506       - fix typos no one ever sees (sartak)
507
508     * Moose::Util::TypeConstraints
509     * Moose::Meta::TypeConstraint
510     * Moose::Meta::TypeCoercion
511       - Attempt to work around the ??{ } vs. threads issue
512         (not yet fixed)
513       - Some null_constraint optimizations
514
515 0.50 Thurs. Jun 11, 2008
516     - Fixed a version number issue by bumping all modules
517       to 0.50.
518
519 0.49 Thurs. Jun 11, 2008
520     !! This version now approx. 20-25% !!
521     !! faster with new Class::MOP 0.59 !!
522
523     * Moose::Meta::Attribute
524       - fixed how the is => (ro|rw) works with 
525         custom defined reader, writer and accessor
526         options. 
527         - added docs for this (TODO).
528         - added tests for this (Thanks to Penfold)
529       - added the custom attribute alias for regular
530         Moose attributes which is "Moose"
531       - fix builder and default both being used
532         (groditi)
533
534     * Moose
535       Moose::Meta::Class
536       Moose::Meta::Attribute
537       Moose::Meta::Role
538       Moose::Meta::Role::Composite
539       Moose::Util::TypeConstraints
540       - switched usage of reftype to ref because 
541         it is much faster
542         
543     * Moose::Meta::Role
544       - changing add_package_symbol to use the new
545         HASH ref form
546     
547     * Moose::Object
548       - fixed how DEMOLISHALL is called so that it 
549         can be overrided in subclasses (thanks to Sartak)
550         - added test for this (thanks to Sartak)
551
552     * Moose::Util::TypeConstraints
553       - move the ClassName type check code to
554         Class::MOP::is_class_loaded (thanks to Sartak)
555
556     * Moose::Cookbook::Recipe11
557       - add tests for this (thanks to tokuhirom)
558
559 0.48 Thurs. May 29, 2008
560     (early morning release engineering)--
561
562     - fixing the version in Moose::Meta::Method::Destructor
563       which was causing the indexer to choke
564
565 0.47 Thurs. May 29, 2008
566     (late night release engineering)--
567
568     - fixing the version is META.yml, no functional 
569       changes in this release
570
571 0.46 Wed. May 28, 2008
572     !! This version now approx. 20-25% !!
573     !! faster with new Class::MOP 0.57 !!
574
575     * Moose::Meta::Class
576       - some optimizations of the &initialize method
577         since it is called so often by &meta    
578         
579     * Moose::Meta::Class
580       Moose::Meta::Role
581       - now use the get_all_package_symbols from the 
582         updated Class::MOP, test suite is now 10 seconds 
583         faster
584     
585     * Moose::Meta::Method::Destructor
586       - is_needed can now also be called as a class 
587         method for immutablization to check if the 
588         destructor object even needs to be created 
589         at all
590     
591     * Moose::Meta::Method::Destructor
592       Moose::Meta::Method::Constructor
593       - added more descriptive error message to help 
594         keep people from wasting time tracking an error
595         that is easily fixed by upgrading.
596
597 0.45 Saturday, May 24, 2008
598     * Moose
599       - Because of work in Class::MOP 0.57, all 
600         XS based functionality is now optional
601         and a Pure Perl version is supplied
602         - the CLASS_MOP_NO_XS environment variable
603           can now be used to force non-XS versions 
604           to always be used   
605         - several of the packages have been tweaked
606           to take care of this, mostly we added
607           support for the package_name and name 
608           variables in all the Method metaclasses
609       - before/around/after method modifiers now 
610         support regexp matching of names
611         (thanks to Takatoshi Kitano)
612         - tests added for this
613         - NOTE: this only works for classes, it 
614           is currently not supported in roles, 
615           but, ... patches welcome
616       - All usage of Carp::confess have been replaced
617         by Carp::croak in the "keyword" functions since
618         the stack trace is usually not helpful
619       
620     * Moose::Role
621       - All usage of Carp::confess have been replaced
622         by Carp::croak in the "keyword" functions since
623         the stack trace is usually not helpful  
624       - The 'has' keyword for roles now accepts the 
625         same array ref form that Moose.pm does 
626         (has [qw/foo bar/] => (is => 'rw', ...))
627         - added test for this
628       
629     * Moose::Meta::Attribute
630       - trigger on a ro-attribute is no longer an
631         error, as it's useful to trigger off of the
632         constructor
633
634     * Moose::Meta::Class
635       - added same 'add_package_symbol' fix as in 
636         Class::MOP 0.57
637
638     * Moose::Util
639       - does_role now handles non-Moose classes 
640         more gracefully
641         - added tests for this
642       - added the 'add_method_modifier' function 
643         (thanks to Takatoshi Kitano)
644
645     * Moose::Util::TypeConstraints
646       - subtypes of parameterizable types now are 
647         themselves parameterizable types
648
649     * Moose::Meta::Method::Constructor
650       - fixed bug where trigger was not being 
651         called by the inlined immutable 
652         constructors 
653         - added test for this (thanks to Caelum)
654     
655     * Moose::Meta::Role::Application::ToInstance
656       - now uses the metaclass of the instance
657         (if possible) to create the anon-class
658         (thanks Jonathan Rockway)
659     
660     * Moose::Cookbook::Recipe22
661       - added the meta-attribute trait recipe
662         (thanks to Sartak)
663     
664     * t/
665       - fixed hash-ordering test bug that was 
666         causing occasional cpantester failures
667       - renamed the t/000_recipe/*.t tests to be 
668         more descriptive (thanks to Sartak) 
669
670 0.44 Sat. May 10, 2008
671     * Moose
672       - made make_immutable warning cluck to 
673         show where the error is (thanks mst)
674     
675     * Moose::Object
676       - BUILDALL and DEMOLISHALL now call 
677         ->body when looping through the 
678         methods, to avoid the overloaded
679         method call.
680       - fixed issue where DEMOLISHALL was
681         eating the $@ values, and so not 
682         working correctly, it still kind of
683         eats them, but so does vanilla perl 
684         - added tests for this
685       
686     * Moose::Cookbook::Recipe7
687       - added new recipe for immutable 
688         functionality (thanks Dave Rolsky)
689       
690     * Moose::Cookbook::Recipe9
691       - added new recipe for builder and 
692         lazy_build (thanks Dave Rolsky)
693       
694     * Moose::Cookbook::Recipe11
695       - added new recipe for method aliasing 
696         and exclusion with Roles (thanks Dave Rolsky)
697
698     * t/
699       - fixed Win32 test failure (thanks spicyjack)
700
701     ~ removed Build.PL and Module::Build compat 
702       since Module::Install has done that.
703
704 0.43 Wed. April, 30, 2008
705     * NOTE TO SELF:
706         drink more coffee before 
707         doing release engineering
708       
709     - whoops, forgot to do the smolder tests, 
710       and we broke some of the custom meta-attr
711       modules. This fixes that.
712
713 0.42 Mon. April 28, 2008
714     - some bad tests slipped by, nothing else 
715       changed in this release (cpantesters++)
716       
717     - upped the Class::MOP dependency to 0.55 
718       since we have tests which need the C3 
719       support
720
721 0.41 Mon. April 28, 2008
722     ~~ numerous documentation updates ~~
723     
724     - Changed all usage of die to Carp::croak for better
725       error reporting (initial patch by Tod Hagan)
726
727     ** IMPORTANT NOTE **
728     - the make_immutable keyword is now deprecated, don't
729       use it in any new code and please fix your old code
730       as well. There will be 2 releases, and then it will
731       be removed.
732
733     * Moose
734       Moose::Role
735       Moose::Meta::Class
736       - refactored the way inner and super work to avoid
737         any method/@ISA cache penalty (nothingmuch)
738
739     * Moose::Meta::Class
740       - fixing &new_object to make sure trigger gets the 
741         coerced value (spotted by Charles Alderman on the 
742         mailing list)
743         - added test for this
744
745     * Moose::Meta::Method::Constructor
746       - immutable classes which had non-lazy attributes were calling
747         the default generating sub twice in the constructor. (bug
748         found by Jesse Luehrs, fixed by Dave Rolsky)
749         - added tests for this (Dave Rolsky)
750       - fix typo in initialize_body method (nothingmuch)
751       
752     * Moose::Meta::Method::Destructor
753       - fix typo in initialize_body method (nothingmuch)
754
755     * Moose::Meta::Method::Overriden
756       Moose::Meta::Method::Augmented
757       - moved the logic for these into their own 
758         classes (nothingmuch)
759
760     * Moose::Meta::Attribute
761       - inherited attributes may now be extended without 
762         restriction on the type ('isa', 'does') (Sartak)
763         - added tests for this (Sartak)
764       - when an attribute property is malformed (such as lazy without 
765         a default), give the name of the attribute in the error 
766         message (Sartak)
767       - added the &applied_traits and &has_applied_traits methods 
768         to allow introspection of traits
769         - added tests for this
770       - moved 'trait' and 'metaclass' argument handling to here from
771         Moose::Meta::Class
772       - clone_and_inherit_options now handles 'trait' and 'metaclass' (has
773         '+foo' syntax) (nothingmuch)
774         - added tests for this (t0m)
775      
776     * Moose::Object 
777       - localize $@ inside DEMOLISHALL to avoid it 
778         eating $@ (found by Ernesto)
779         - added test for this (thanks to Ernesto)
780
781     * Moose::Util::TypeConstraints
782       - &find_type_constraint now DWIMs when given an 
783         type constraint object or name (nothingmuch)
784       - &find_or_create_type_constraint superseded with a number of more
785         specific functions:
786         - find_or_create_{isa,does}_type_constraint
787         - find_or_parse_type_constraint
788
789     * Moose::Meta::TypeConstraint
790       Moose::Meta::TypeConstraint::Class
791       Moose::Meta::TypeConstraint::Role
792       Moose::Meta::TypeConstraint::Enum
793       Moose::Meta::TypeConstraint::Union
794       Moose::Meta::TypeConstraint::Parameterized
795         - added the &equals method for comparing two type 
796           constraints (nothingmuch)
797           - added tests for this (nothingmuch)
798
799     * Moose::Meta::TypeConstraint
800       - add the &parents method, which is just an alias to &parent. 
801         Useful for polymorphism with TC::{Class,Role,Union} (nothingmuch)
802
803     * Moose::Meta::TypeConstraint::Class
804       - added the class attribute for introspection purposes
805         (nothingmuch)
806         - added tests for this
807         
808     * Moose::Meta::TypeConstraint::Enum
809       Moose::Meta::TypeConstraint::Role
810       - broke these out into their own classes (nothingmuch)
811
812     * Moose::Cookbook::Recipe*
813       - fixed references to test file locations in the POD
814         and updated up some text for new Moose features
815         (Sartak)
816
817     * Moose::Util
818       - Added &resolve_metaclass_alias, a helper function for finding an actual
819         class for a short name (e.g. in the traits list)
820
821 0.40 Fri. March 14, 2008
822     - I hate Pod::Coverage
823
824 0.39 Fri. March 14, 2008
825     * Moose
826       - documenting the use of '+name' with attributes 
827         that come from recently composed roles. It makes
828         sense, people are using it, and so why not just 
829         officially support it.
830       - fixing the 'extends' keyword so that it will not 
831         trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
832       
833     * oose
834       - added the perl -Moose=+Class::Name feature to allow 
835         monkeypatching of classes in one liners
836       
837     * Moose::Util
838       - fixing the 'apply_all_roles' keyword so that it will not 
839         trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)    
840     
841     * Moose::Meta::Class
842       - added ->create method which now supports roles (thanks to jrockway)
843         - added tests for this
844       - added ->create_anon_class which now supports roles and caching of 
845         the results (thanks to jrockway)
846         - added tests for this
847       - made ->does_role a little more forgiving when it is
848         checking a Class::MOP era metaclasses.
849     
850     * Moose::Meta::Role::Application::ToInstance
851       - it is now possible to pass extra params to be used when 
852         a role is applied to an the instance (rebless_params)
853         - added tests for this
854     
855     * Moose::Util::TypeConstraints
856       - class_type now accepts an optional second argument for a
857         custom message. POD anotated accordingly (groditi)
858         - added tests for this 
859       - it is now possible to make anon-enums by passing 'enum' an 
860         ARRAY ref instead of the $name => @values. Everything else 
861         works as before.
862         - added tests for this
863     
864     * t/
865       - making test for using '+name' on attributes consumed 
866         from a role, it works and makes sense too.    
867
868     * Moose::Meta::Attribute 
869       - fix handles so that it doesn't return nothing 
870         when the method cannot be found, not sure why 
871         it ever did this originally, this means we now
872         have slightly better support for AUTOLOADed 
873         objects
874         - added more delegation tests
875       - adding ->does method to this so as to better 
876         support traits and their introspection.
877         - added tests for this
878     
879     * Moose::Object
880       - localizing the Data::Dumper configurations so 
881         that it does not pollute others (RT #33509)
882       - made ->does a little more forgiving when it is
883         passed Class::MOP era metaclasses.
884
885 0.38 Fri. Feb. 15, 2008
886     * Moose::Meta::Attribute 
887       - fixed initializer to correctly do 
888         type checking and coercion in the 
889         callback 
890         - added tests for this
891
892     * t/
893       - fixed some finicky tests (thanks to konobi)
894
895 0.37 Thurs. Feb. 14, 2008
896     * Moose
897       - fixed some details in Moose::init_meta 
898         and its superclass handling (thanks thepler)
899         - added tests for this (thanks thepler)
900       - 'has' now dies if you don't pass in name 
901         value pairs
902       - added the 'make_immutable' keyword as a shortcut
903         to make_immutable
904
905     * Moose::Meta::Class
906       Moose::Meta::Method::Constructor
907       Moose::Meta::Attribute        
908       - making (init_arg => undef) work here too
909         (thanks to nothingmuch)
910         
911     * Moose::Meta::Attribute        
912       Moose::Meta::Method::Constructor
913       Moose::Meta::Method::Accessor                
914       - make lazy attributes respect attr initializers (rjbs)
915         - added tests for this
916     
917     * Moose::Util::TypeConstraints
918       Moose::Util::TypeConstraints::OptimizedConstraints
919       Moose::Meta::TypeConstraints
920       Moose::Meta::Attribute
921       Moose::Meta::Method::Constructor
922       Moose::Meta::Method::Accessor            
923       - making type errors use the 
924         assigned message (thanks to Sartak)
925         - added tests for this
926
927     * Moose::Meta::Method::Destructor
928       - making sure DESTROY gets inlined properly 
929         with successive DEMOLISH calls (thanks to manito)
930
931     * Moose::Meta::Attribute  
932       Moose::Meta::Method::Accessor 
933       - fixed handling of undef with type constraints 
934         (thanks to Ernesto)               
935         - added tests for this
936     
937     * Moose::Util
938       - added &get_all_init_args and &get_all_attribute_values 
939         (thanks to Sartak and nothingmuch)
940
941 0.36 Sat. Jan. 26, 2008
942     * Moose::Role
943       Moose::Meta::Attribute
944       - role type tests now support when roles are 
945         applied to non-Moose classes (found by ash)
946         - added tests for this (thanks to ash)
947       - couple extra tests to boost code coverage
948
949     * Moose::Meta::Method::Constructor    
950       - improved fix for handling Class::MOP attributes
951         - added test for this        
952       
953     * Moose::Meta::Class
954       - handled the add_attribute($attribute_meta_object)
955         case correctly
956         - added test for this
957
958 0.35 Tues. Jan. 22, 2008
959     * Moose::Meta::Method::Constructor
960       - fix to make sure even Class::MOP attributes 
961         are handled correctly (Thanks to Dave Rolsky)
962         - added test for this (also Dave Rolsky)
963     
964     * Moose::Meta::Class
965       - improved error message on _apply_all_roles, 
966         you should now use Moose::Util::apply_all_roles
967         and you shouldnt have been using a _ prefixed
968         method in the first place ;)
969
970 0.34 Mon. Jan. 21, 2008
971     ~~~ more misc. doc. fixes ~~~
972     ~~ updated copyright dates ~~
973
974     Moose is now a postmodern object system :)
975       - (see the POD for details)
976       
977     * <<Role System Refactoring>>    
978     - this release contains a major reworking and 
979       cleanup of the role system     
980       - 100% backwards compat.
981       - Role application now restructured into seperate
982         classes based on type of applicants
983       - Role summation (combining of more than one role)
984         is much cleaner and anon-classes are no longer 
985         used in this process
986       - new Composite role metaclass    
987       - runtime application of roles to instances
988         is now more efficient and re-uses generated
989         classes when applicable
990         
991     * <<New Role composition features>>
992       - methods can now be excluded from a given role 
993         during composition
994       - methods can now be aliased to another name (and 
995         still retain the original as well)        
996     
997     * Moose::Util::TypeConstraints::OptimizedConstraints
998       - added this module (see above)
999
1000     * Moose::Meta::Class
1001       - fixed the &_process_attribute method to be called
1002         by &add_attribute, so that the API is now correct
1003
1004     * Moose::Meta::Method::Accessor
1005       - fixed bug when passing a list of values to
1006         an accessor would get (incorrectly) ignored.
1007         Thanks to Sartak for finding this ;)
1008         - added tests for this (Sartak again)
1009
1010     * Moose::Meta::Method::Accessor
1011       Moose::Meta::Method::Constructor
1012       Moose::Meta::Attribute
1013       Moose::Meta::TypeConstraint      
1014       Moose::Meta::TypeCoercion      
1015       - lots of cleanup of such things as: 
1016         - generated methods
1017         - type constraint handling
1018         - error handling/messages 
1019         (thanks to nothingmuch)   
1020     
1021     * Moose::Meta::TypeConstraint::Parameterizable
1022       - added this module to support the refactor 
1023         in Moose::Meta::TypeConstraint::Parameterized
1024
1025     * Moose::Meta::TypeConstraint::Parameterized
1026       - refactored how these types are handled so they 
1027         are more generic and not confined to ArrayRef
1028         and HashRef only
1029
1030     * t/
1031       - shortened some file names for better VMS support (RT #32381)
1032
1033 0.33 Fri. Dec. 14, 2007
1034     !! Moose now loads 2 x faster !!
1035     !!  with new Class::MOP 0.49  !!
1036
1037     ++ new oose.pm module to make command line
1038        Moose-ness easier (see POD docs for more)
1039
1040     * Moose::Meta::Class
1041     * Moose::Meta::Role
1042       - several tweaks to take advantage of the
1043         new method map caching in Class::MOP
1044
1045     * Moose::Meta::TypeConstraint::Parameterized
1046       - allow subtypes of ArrayRef and HashRef to
1047         be used as a container (sartak)
1048         - added tests for this
1049       - basic support for coercion to ArrayRef and
1050         HashRef for containers (sartak)
1051         - added tests for this
1052
1053     * Moose::Meta::TypeCoercion
1054       - coercions will now create subtypes as needed
1055         so you can now add coercions to parameterized
1056         types without having to explictly define them
1057         - added tests for this
1058
1059     * Moose::Meta::Method::Accessor
1060       - allow subclasses to decide whether we need
1061         to copy the value into a new variable (sartak)
1062
1063 0.32 Tues. Dec. 4, 2007
1064     * Moose::Util::TypeConstraints
1065       - fixing how subtype aliases of unions work
1066         they should inherit the parent's coercion
1067         - added tests for this
1068       - you can now define multiple coercions on
1069         a single type at different times instead of
1070         having to do it all in one place
1071         - added tests for this
1072
1073     * Moose::Meta::TypeConstraint
1074       - there is now a default constraint of sub { 1 }
1075         instead of Moose::Util::TypeConstraints setting
1076         this for us
1077
1078     * Moose::Meta::TypeCoercion
1079     * Moose::Meta::TypeCoercion::Union
1080       - added the &has_coercion_for_type and
1081         &add_type_coercions methods to support the
1082         new features above (although you cannot add
1083         more type coercions for Union types)
1084
1085 0.31 Mon. Nov. 26, 2007
1086     * Moose::Meta::Attribute
1087       - made the +attr syntax handle extending types with
1088         parameters. So "has '+foo' => (isa => 'ArrayRef[Int]')"
1089         now works if the original foo is an ArrayRef.
1090         - added tests for this.
1091       - delegation now works even if the attribute does not
1092         have a reader method using the get_read_method_ref
1093         method from Class::MOP::Attribute.
1094         - added tests for this
1095         - added docs for this
1096
1097     * Moose::Util::TypeConstraints
1098       - passing no "additional attribute info" to
1099         &find_or_create_type_constraint will no longer
1100         attempt to create an __ANON__ type for you,
1101         instead it will just return undef.
1102         - added docs for this
1103
1104 0.30 Fri. Nov. 23, 2007
1105     * Moose::Meta::Method::Constructor
1106       -builder related bug in inlined constructor. (groditi)
1107
1108     * Moose::Meta::Method::Accessor
1109       - genereate unnecessary calls to predicates and refactor
1110         code generation for runtime speed (groditi)
1111
1112     * Moose::Util::TypeConstraints
1113       - fix ClassName constraint to introspect symbol table (mst)
1114         - added more tests for this (mst)
1115       - fixed it so that subtype 'Foo' => as 'HashRef[Int]' ...
1116         with work correctly.
1117         - added tests for this
1118
1119     * Moose::Cookbook
1120       - adding the link to Recipie 11 (written by Sartak)
1121         - adding test for SYNOPSIS code
1122
1123     * t/
1124       - New tests for builder bug. Upon instantiation, if an
1125         attribute had a builder, no value and was not lazy the
1126         builder default was not getting run, oops. (groditi)
1127
1128 0.29 Tues. Nov. 13, 2007
1129     * Moose::Meta::Attribute
1130       - Fix error message on missing builder method (groditi)
1131
1132     * Moose::Meta::Method::Accessor
1133       - Fix error message on missing builder method (groditi)
1134
1135     * t/
1136       - Add test to check for the correct error message when
1137         builder method is missing (groditi)
1138
1139 0.28 Tues. Nov. 13, 2007
1140     - 0.27 packaged incorrectly (groditi)
1141
1142 0.27 Tues. Nov. 13, 2007
1143     * Moose::Meta::Attribute
1144       - Added support for the new builder option (groditi)
1145       - Added support for lazy_build option (groditi)
1146       - Changed slot initialization for predicate changes (groditi)
1147
1148     * Moose::Meta::Method::Accessor
1149       - Added support for lazy_build option (groditi)
1150       - Fix inline methods to work with corrected predicate
1151         behavior (groditi)
1152
1153     * Moose::Meta::Method::Constructor
1154       - Added support for lazy_build option (groditi)
1155
1156     * t/
1157       - tests for builder and lazy_build (groditi)
1158
1159     * fixing some misc. bits in the docs that
1160       got mentioned on CPAN Forum & perlmonks
1161
1162     * Moose::Meta::Role
1163       - fixed how required methods are handled
1164         when they encounter overriden or modified
1165         methods from a class (thanks to confound).
1166         - added tests for this
1167
1168     * Moose::Util::TypeConstraint
1169       - fixed the type notation parser so that
1170         the | always creates a union and so is
1171         no longer a valid type char (thanks to
1172         konobi, mugwump and #moose for working
1173         this one out.)
1174         - added more tests for this
1175
1176 0.26 Thurs. Sept. 27, 2007
1177     == New Features ==
1178
1179     * Parameterized Types
1180       We now support parameterized collection types, such as:
1181           ArrayRef[Int]    # array or integers
1182           HashRef[Object]  # a hash with object values
1183       They can also be nested:
1184           ArrayRef[HashRef[RegExpr]] # an array of hashes with regexpr values
1185       And work with the type unions as well:
1186           ArrayRef[Int | Str]  # array of integers of strings
1187
1188     * Better Framework Extendability
1189       Moose.pm is now "extendable" such that it is now much
1190       easier to extend the framework and add your own keywords
1191       and customizations. See the "EXTENDING AND EMBEDDING MOOSE"
1192       section of the Moose.pm docs.
1193
1194     * Moose Snacks!
1195       In an effort to begin documenting some of the various
1196       details of Moose as well as some common idioms, we have
1197       created Moose::Cookbook::Snacks as a place to find
1198       small (easily digestable) nuggets of Moose code.
1199
1200     ====
1201     ~ Several doc updates/cleanup thanks to castaway ~
1202
1203     - converted build system to use Module::Install instead of
1204       Module::Build (thanks to jrockway)
1205
1206     * Moose
1207       - added all the meta classes to the immutable list and
1208         set it to inline the accessors
1209       - fix import to allow Sub::Exporter like { into => }
1210             and { into_level => } (perigrin)
1211       - exposed and documented init_meta() to allow better
1212             embedding and extending of Moose (perigrin)
1213
1214         * t/
1215           - complete re-organization of the test suite
1216           - added some new tests as well
1217           - finally re-enabled the Moose::POOP test since
1218             the new version of DBM::Deep now works again
1219             (thanks rob)
1220
1221     * Moose::Meta::Class
1222       - fixed very odd and very nasty recursion bug with
1223         inner/augment (mst)
1224         - added tests for this (eilara)
1225
1226     * Moose::Meta::Attribute
1227       Moose::Meta::Method::Constructor
1228       Moose::Meta::Method::Accessor
1229       - fixed issue with overload::Overloaded getting called
1230         on non-blessed items. (RT #29269)
1231         - added tests for this
1232
1233     * Moose::Meta::Method::Accessor
1234       - fixed issue with generated accessor code making
1235         assumptions about hash based classes (thanks to dexter)
1236
1237     * Moose::Coookbook::Snacks
1238       - these are bits of documentation, not quite as big as
1239         Recipes but which have no clear place in the module docs.
1240         So they are Snacks! (horray for castaway++)
1241
1242     * Moose::Cookbook::Recipe4
1243       - updated it to use the new ArrayRef[MyType] construct
1244         - updated the accompanying test as well
1245
1246     +++ Major Refactor of the Type Constraint system +++
1247     +++       with new features added as well        +++
1248
1249     * Moose::Util::TypeConstraint
1250       - no longer uses package variable to keep track of
1251         the type constraints, now uses the an instance of
1252         Moose::Meta::TypeConstraint::Registry to do it
1253       - added more sophisticated type notation parsing
1254         (thanks to mugwump)
1255         - added tests for this
1256
1257     * Moose::Meta::TypeConstraint
1258       - some minor adjustments to make subclassing easier
1259       - added the package_defined_in attribute so that we
1260         can track where the type constraints are created
1261
1262     * Moose::Meta::TypeConstraint::Union
1263       - this is now been refactored to be a subclass of
1264         Moose::Meta::TypeConstraint
1265
1266     * Moose::Meta::TypeCoercion::Union
1267       - this has been added to service the newly refactored
1268         Moose::Meta::TypeConstraint::Union and is itself
1269         a subclass of Moose::Meta::TypeCoercion
1270
1271     * Moose::Meta::TypeConstraint::Parameterized
1272       - added this module (taken from MooseX::AttributeHelpers)
1273         to help construct nested collection types
1274         - added tests for this
1275
1276     * Moose::Meta::TypeConstraint::Registry
1277       - added this class to keep track of type constraints
1278
1279 0.25 Mon. Aug. 13, 2007
1280     * Moose
1281       - Documentation update to reference Moose::Util::TypeConstraints
1282         under 'isa' in 'has' for how to define a new type
1283         (thanks to shlomif).
1284
1285     * Moose::Meta::Attribute
1286       - required attributes now will no longer accept undef
1287         from the constructor, even if there is a default and lazy
1288         - added tests for this
1289       - default subroutines must return a value which passes the
1290         type constraint
1291         - added tests for this
1292
1293     * Moose::Meta::Attribute
1294     * Moose::Meta::Method::Constructor
1295     * Moose::Meta::Method::Accessor
1296       - type-constraint tests now handle overloaded objects correctly
1297         in the error message
1298         - added tests for this (thanks to EvanCarroll)
1299
1300     * Moose::Meta::TypeConstraint::Union
1301       - added (has_)hand_optimized_constraint to this class so that
1302         it behaves as the regular Moose::Meta::TypeConstraint does.
1303
1304     * Moose::Meta::Role
1305       - large refactoring of this code
1306       - added several more tests
1307         - tests for subtle conflict resolition issues
1308           added, but not currently running
1309           (thanks to kolibre)
1310
1311     * Moose::Cookbook::Recipe7
1312       - added new recipe for augment/inner functionality
1313         (still in progress)
1314         - added test for this
1315
1316     * Moose::Spec::Role
1317       - a formal definition of roles (still in progress)
1318
1319     * Moose::Util
1320       - utilities for easier working with Moose classes
1321         - added tests for these
1322
1323     * Test::Moose
1324       - This contains Moose specific test functions
1325         - added tests for these
1326
1327 0.24 Tues. July 3, 2007
1328     ~ Some doc updates/cleanup ~
1329
1330     * Moose::Meta::Attribute
1331       - added support for roles to be given as parameters
1332         to the 'handles' option.
1333         - added tests and docs for this
1334       - the has '+foo' attribute form now accepts changes to
1335         the lazy option, and the addition of a handles option
1336         (but not changing the handles option)
1337         - added tests and docs for this
1338
1339     * Moose::Meta::Role
1340       - required methods are now fetched using find_method_by_name
1341         so that required methods can come from superclasses
1342         - adjusted tests for this
1343
1344 0.23 Mon. June 18, 2007
1345     * Moose::Meta::Method::Constructor
1346       - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
1347     * Moose::Meta::Class
1348       - Modify make_immutable to work with the new Class::MOP immutable
1349         mechanism + POD + very basic test (groditi)
1350     * Moose::Meta::Attribute
1351       - Fix handles to use goto() so that caller() comes out properly on
1352         the other side (perigrin)
1353
1354 0.22 Thurs. May 31, 2007
1355     * Moose::Util::TypeConstraints
1356       - fix for prototype undeclared issue when Moose::Util::TypeConstraints
1357         loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
1358         prototypes for functions
1359       - added the ClassName type constraint, this checks for strings
1360         which will respond true to ->isa(UNIVERSAL).
1361         - added tests and docs for this
1362       - subtyping just in name now works correctly by making the
1363         default for where be { 1 }
1364         - added test for this
1365
1366     * Moose::Meta::Method::Accessor
1367       - coerce and lazy now work together correctly, thanks to
1368         merlyn for finding this bug
1369         - tests added for this
1370       - fix reader presedence bug in Moose::Meta::Attribute + tests
1371
1372     * Moose::Object
1373       - Foo->new(undef) now gets ignored, it is assumed you meant to pass
1374         a HASH-ref and missed. This produces better error messages then
1375         having it die cause undef is not a HASH.
1376         - added tests for this
1377
1378 0.21 Thursday, May 2nd, 2007
1379     * Moose
1380       - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
1381       - modified unimport to remove super and inner along with the rest
1382         - altered unimport tests to handle this
1383
1384     * Moose::Role
1385       - altered super export to populate SUPER_SLOT
1386
1387     * Moose::Meta::Class
1388       - altered augment and override modifier application to use *_SLOT
1389         - modified tests for these to unimport one test class each to test
1390
1391     * Moose::Meta::Role
1392       - fixed issue where custom attribute metaclasses
1393         where not handled correctly in roles
1394         - added tests for this
1395
1396     * Moose::Meta::Class
1397       - fixed issue where extending metaclasses with
1398         roles would blow up. Thanks to Aankhen`` for
1399         finding this insidious error, and it's solution.
1400
1401     ~~ lots of spelling and grammer fixes in the docs,
1402        many many thanks to rlb3 and Aankhen for these :)
1403
1404 0.20 Friday, April 6th, 2007
1405     >> I messed up the SKIP logic in one test
1406        so this release is just to fix that.
1407
1408     * Moose
1409       - 'has' now also accepts an ARRAY ref
1410         to create multiple attrs (see docs)
1411         (thanks to konobi for this)
1412          - added tests and docs
1413
1414 0.19 Thurs. April 5th, 2007
1415     ~~ More documentation updates ~~
1416
1417     * Moose::Util::TypeConstraints
1418       - 'type' now supports messages as well
1419         thanks to phaylon for finding this
1420         - added tests for this
1421       - added &list_all_type_constraints and
1422         &list_all_builtin_type_constraints
1423         functions to facilitate introspection.
1424
1425     * Moose::Meta::Attribute
1426       - fixed regexp 'handles' declarations
1427         to build the list of delegated methods
1428         correctly (and not override important
1429         things like &new) thanks to ashleyb
1430         for finding this
1431         - added tests and docs for this
1432       - added the 'documentation' attributes
1433         so that you can actually document your
1434         attributes and inspect them through the
1435         meta-object.
1436         - added tests and docs for this
1437
1438     * Moose::Meta::Class
1439       - when loading custom attribute metaclasses
1440         it will first look in for the class in the
1441         Moose::Meta::Attribute::Custom::$name, and
1442         then default to just loading $name.
1443         - added tests and docs for this
1444
1445     * Moose::Meta::TypeConstraint
1446       - type constraints now stringify to their names.
1447         - added test for this
1448
1449     * misc.
1450       - added tests to assure we work with Module::Refresh
1451       - added stricter test skip logic in the Moose POOP
1452         test, ask Rob Kinyon why.
1453         - *cough* DBM::Deep 1.0 backwards compatibility sucks *cough* ;)
1454
1455 0.18 Sat. March 10, 2007
1456     ~~ Many, many documentation updates ~~
1457
1458     * misc.
1459       - We now use Class::MOP::load_class to
1460         load all classes.
1461       - added tests to show types and subtypes
1462         working with Declare::Constraints::Simple
1463         and Test::Deep as constraint engines.
1464
1465 0.18_001
1466     !! You must have Class::MOP 0.37_001  !!
1467     !! for this developer release to work !!
1468
1469     This release was primarily adding the immutable
1470     feature to Moose. An immutable class is one which
1471     you promise not to alter. When you set the class
1472     as immutable it will perform various bits of
1473     memoization and inline certain part of the code
1474     (constructors, destructors and accessors). This
1475     minimizes (and in some cases totally eliminates)
1476     one of Moose's biggest performance hits. This
1477     feature is not on by default, and is 100% optional.
1478     It has several configurable bits as well, so you
1479     can pick and choose to your specific needs.
1480
1481     The changes involved in this were fairly wide and
1482     highly specific, but 100% backwards compatible, so
1483     I am not going to enumerate them here. If you are
1484     truely interested in what was changed, please do
1485     a diff :)
1486
1487 0.17 Tues. Nov. 14, 2006
1488     * Moose::Meta::Method::Accessor
1489       - bugfix for read-only accessors which
1490         are have a type constraint and lazy.
1491         Thanks to chansen for finding it.
1492
1493 0.16 Tues. Nov. 14, 2006
1494     ++ NOTE ++
1495     There are some speed improvements in this release,
1496     but they are only the begining, so stay tuned.
1497
1498     * Moose::Object
1499       - BUILDALL and DEMOLISHALL no longer get
1500         called unless they actually need to be.
1501         This gave us a signifigant speed boost
1502         for the cases when there is no BUILD or
1503         DEMOLISH method present.
1504
1505     * Moose::Util::TypeConstraints
1506     * Moose::Meta::TypeConstraint
1507       - added an 'optimize_as' option to the
1508         type constraint, which allows for a
1509         hand optimized version of the type
1510         constraint to be used when possible.
1511       - Any internally created type constraints
1512         now provide an optimized version as well.
1513
1514 0.15 Sun. Nov. 5, 2006
1515     ++ NOTE ++
1516     This version of Moose *must* have Class::MOP 0.36 in order
1517     to work correctly. A number of small internal tweaks have
1518     been made in order to be compatible with that release.
1519
1520     * Moose::Util::TypeConstraints
1521       - added &unimport so that you can clean out
1522         your class namespace of these exported
1523         keywords
1524
1525     * Moose::Meta::Class
1526       - fixed minor issue which occasionally
1527         comes up during global destruction
1528         (thanks omega)
1529       - moved Moose::Meta::Method::Overriden into
1530         its own file.
1531
1532     * Moose::Meta::Role
1533       - moved Moose::Meta::Role::Method into
1534         its own file.
1535
1536     * Moose::Meta::Attribute
1537       - changed how we do type checks so that
1538         we reduce the overall cost, but still
1539         retain correctness.
1540        *** API CHANGE ***
1541       - moved accessor generation methods to
1542         Moose::Meta::Method::Accessor to
1543         conform to the API changes from
1544         Class::MOP 0.36
1545
1546     * Moose::Meta::TypeConstraint
1547       - changed how constraints are compiled
1548         so that we do less recursion and more
1549         iteration. This makes the type check
1550         faster :)
1551       - moved Moose::Meta::TypeConstraint::Union
1552         into its own file
1553
1554     * Moose::Meta::Method::Accessor
1555       - created this from methods formerly found in
1556         Moose::Meta::Attribute
1557
1558     * Moose::Meta::Role::Method
1559       - moved this from Moose::Meta::Role
1560
1561     * Moose::Meta::Method::Overriden
1562       - moved this from Moose::Meta::Class
1563
1564     * Moose::Meta::TypeConstraint::Union
1565       - moved this from Moose::Meta::TypeConstraint
1566
1567 0.14 Mon. Oct. 9, 2006
1568
1569     * Moose::Meta::Attribute
1570       - fixed lazy attributes which were not getting
1571         checked with the type constraint (thanks ashley)
1572         - added tests for this
1573       - removed the over-enthusiastic DWIMery of the
1574         automatic ArrayRef and HashRef defaults, it
1575         broke predicates in an ugly way.
1576         - removed tests for this
1577
1578 0.13 Sat. Sept. 30, 2006
1579     ++ NOTE ++
1580     This version of Moose *must* have Class::MOP 0.35 in order
1581     to work correctly. A number of small internal tweaks have
1582     been made in order to be compatible with that release.
1583
1584     * Moose
1585       - Removed the use of UNIVERSAL::require to be a better
1586         symbol table citizen and remove a dependency
1587         (thanks Adam Kennedy)
1588
1589       **~~ removed experimental & undocumented feature ~~**
1590       - commented out the 'method' and 'self' keywords, see the
1591         comments for more info.
1592
1593     * Moose::Cookbook
1594       - added a FAQ and WTF files to document frequently
1595         asked questions and common problems
1596
1597     * Moose::Util::TypeConstraints
1598       - added GlobRef and FileHandle type constraint
1599         - added tests for this
1600
1601     * Moose::Meta::Attribute
1602       - if your attribute 'isa' ArrayRef of HashRef, and you have
1603         not explicitly set a default, then make the default DWIM.
1604         This will also work for subtypes of ArrayRef and HashRef
1605         as well.
1606       - you can now auto-deref subtypes of ArrayRef or HashRef too.
1607         - new test added for this (thanks to ashley)
1608
1609     * Moose::Meta::Role
1610       - added basic support for runtime role composition
1611         but this is still *highly experimental*, so feedback
1612         is much appreciated :)
1613         - added tests for this
1614
1615     * Moose::Meta::TypeConstraint
1616       - the type constraint now handles the coercion process
1617         through delegation, this is to support the coercion
1618         of unions
1619
1620     * Moose::Meta::TypeConstraint::Union
1621       - it is now possible for coercions to be performed
1622         on a type union
1623         - added tests for this (thanks to konobi)
1624
1625     * Moose::Meta::TypeCoercion
1626       - properly capturing error when type constraint
1627         is not found
1628
1629     * Build.PL
1630       - Scalar::Util 1.18 is bad on Win32, so temporarily
1631         only require version 1.17 for Win32 and cygwin.
1632         (thanks Adam Kennedy)
1633
1634 0.12 Sat. Sept. 1, 2006
1635     * Moose::Cookbook
1636       - Recipe5 (subtypes & coercion) has been written
1637
1638     * Moose
1639       - fixed "bad meta" error message to be more descriptive
1640       - fixed &unimport to not remove the &inner and &super
1641         keywords because we need to localize them.
1642       - fixed number of spelling/grammer issues, thanks Theory :)
1643
1644       **~~ experimental & undocumented feature ~~**
1645       - added the method and self keywords, they are basically
1646         just sugar, and they may not stay around.
1647
1648     * Moose::Object
1649       - added &dump method to easily Data::Dumper
1650         an object
1651
1652     * Moose::Meta::TypeConstraint
1653       - added the &is_a_type_of method to check both the current
1654         and the subtype of a method (similar to &isa with classes)
1655
1656     * Moose::Meta::Role
1657       - this is now a subclass of Class::MOP::Module, and no longer
1658         creates the _role_meta ugliness of before.
1659         - fixed tests to reflect this change
1660
1661 0.11 Wed. July 12, 2006
1662     * Moose
1663       - added an &unimport method to remove all the keywords
1664         that Moose will import, simply add 'no Moose' to the
1665         bottom of your class file.
1666
1667     * t/
1668       - fixed some test failures caused by a forgotten test
1669         dependency.
1670
1671 0.10 Thurs. July 6, 2006
1672     * Moose
1673       - improved error message when loading modules so
1674         it is less confusing when you load a role.
1675       - added &calculate_all_roles method to
1676         Moose::Meta::Class and Moose::Meta::Role
1677
1678     NOTE:
1679     This module has been tested against Class::MOP 0.30
1680     but it does not yet utilize the optimizations
1681     it makes available. Stay tuned for that ;)
1682
1683 0.09_03 Fri. June 23, 2006
1684     ++ DEVELOPER RELEASE ++
1685     * Moose
1686       - 'use strict' and 'use warnings' are no longer
1687          needed in Moose classes, Moose itself will
1688          turn them on for you.
1689          - added tests for this
1690       - moved code from exported subs to private methods
1691         in Moose::Meta::Class
1692
1693     * Moose::Role
1694       - as with Moose, strict and warnings are
1695         automatically turned on for you.
1696          - added tests for this
1697
1698     * Moose::Meta::Role
1699       - now handles an edge case for override errors
1700         - added tests for this
1701       - added some more edge case tests
1702
1703 0.09_02 Tues. May 16, 2006
1704     ++ DEVELOPER RELEASE ++
1705     * Moose
1706       - added prototypes to the exported subs
1707       - updated docs
1708
1709     * Moose::Role
1710       - added prototypes to the exported subs
1711       - updated docs
1712
1713     * Moose::Util::TypeConstraints
1714       - cleaned up prototypes for the subs
1715       - updated docs
1716
1717 0.09_01 Fri. May 12, 2006
1718     ++ DEVELOPER RELEASE ++
1719       - This release works in combination with
1720         Class::MOP 0.29_01, it is a developer
1721         release because it uses the a new
1722         instance sub-protocol and a fairly
1723         complete Role implementation. It has
1724         not yet been optimized, so it slower
1725         the the previous CPAN version. This
1726         release also lacks good updated docs,
1727         the official release will have updated docs.
1728
1729     * Moose
1730       - refactored the keyword exports
1731         - 'with' now checks Role validaity and
1732           accepts more than one Role at a time
1733         - 'extends' makes metaclass adjustments as
1734            needed to ensure metaclass compatibility
1735
1736     * Moose::Role
1737       - refactored the keyword exports
1738         - 'with' now checks Role validaity and
1739           accepts more than one Role at a time
1740
1741     * Moose::Util::TypeConstraints
1742       - added the 'enum' keyword for simple
1743         string enumerations which can be used as
1744         type constraints
1745         - see example of usage in t/202_example.t
1746
1747     * Moose::Object
1748       - more careful checking of params to new()
1749
1750     * Moose::Meta::Role
1751       - much work done on the role composition
1752         - many new tests for conflict detection
1753           and composition edge cases
1754         - not enough documentation, I suggest
1755           looking at the tests
1756
1757     * Moose::Meta::Instance
1758       - added new Instance metaclass to support
1759         the new Class::MOP instance protocol
1760
1761     * Moose::Meta::Class
1762       - some small changes to support the new
1763         instance protocol
1764       - some small additions to support Roles
1765
1766     * Moose::Meta::Attribute
1767       - some improvements to the accessor generation code
1768         by nothingmuch
1769       - some small changes to support the new
1770         instance protocol
1771       - (still somewhat) experimental delegation support
1772         with the 'handles' option
1773         - added several tests for this
1774         - no docs for this yet
1775
1776 0.05 Thurs. April 27, 2006
1777     * Moose
1778       - keywords are now exported with Sub::Exporter
1779         thanks to chansen for this commit
1780       - has keyword now takes a 'metaclass' option
1781         to support custom attribute meta-classes
1782         on a per-attribute basis
1783         - added tests for this
1784       - the 'has' keyword not accepts inherited slot
1785         specifications (has '+foo'). This is still an
1786         experimental feature and probably not finished
1787         see t/038_attribute_inherited_slot_specs.t for
1788         more details, or ask about it on #moose
1789         - added tests for this
1790
1791     * Moose::Role
1792       - keywords are now exported with Sub::Exporter
1793
1794     * Moose::Utils::TypeConstraints
1795       - reorganized the type constraint hierarchy, thanks
1796         to nothingmuch and chansen for his help and advice
1797         on this
1798         - added some tests for this
1799       - keywords are now exported with Sub::Exporter
1800         thanks to chansen for this commit
1801
1802     * Moose::Meta::Class
1803       - due to changes in Class::MOP, we had to change
1804         construct_instance (for the better)
1805
1806     * Moose::Meta::Attribute
1807       - due to changes in Class::MOP, we had to add the
1808         initialize_instance_slot method (it's a good thing)
1809
1810     * Moose::Meta::TypeConstraint
1811       - added type constraint unions
1812         - added tests for this
1813       - added the is_subtype_of predicate method
1814         - added tests for this
1815
1816 0.04 Sun. April 16th, 2006
1817     * Moose::Role
1818       - Roles can now consume other roles
1819         - added tests for this
1820       - Roles can specify required methods now with
1821         the requires() keyword
1822         - added tests for this
1823
1824     * Moose::Meta::Role
1825       - ripped out much of it's guts ,.. much cleaner now
1826       - added required methods and correct handling of
1827         them in apply() for both classes and roles
1828         - added tests for this
1829       - no longer adds a does() method to consuming classes
1830         it relys on the one in Moose::Object
1831       - added roles attribute and some methods to support
1832         roles consuming roles
1833
1834     * Moose::Meta::Attribute
1835       - added support for triggers on attributes
1836         - added tests for this
1837       - added support for does option on an attribute
1838         - added tests for this
1839
1840     * Moose::Meta::Class
1841       - added support for attribute triggers in the
1842         object construction
1843         - added tests for this
1844
1845     * Moose
1846       - Moose no longer creates a subtype for your class
1847         if a subtype of the same name already exists, this
1848         should DWIM in 99.9999% of all cases
1849
1850     * Moose::Util::TypeConstraints
1851       - fixed bug where incorrect subtype conflicts were
1852         being reported
1853         - added test for this
1854
1855     * Moose::Object
1856       - this class can now be extended with 'use base' if
1857         you need it, it properly loads the metaclass class now
1858         - added test for this
1859
1860 0.03_02 Wed. April 12, 2006
1861     * Moose
1862       - you must now explictly use Moose::Util::TypeConstraints
1863         it no longer gets exported for you automatically
1864
1865     * Moose::Object
1866       - new() now accepts hash-refs as well as key/value lists
1867       - added does() method to check for Roles
1868         - added tests for this
1869
1870     * Moose::Meta::Class
1871       - added roles attribute along with the add_role() and
1872         does_role() methods
1873         - added tests for this
1874
1875     * Moose::Meta::Role
1876       - now adds a does() method to consuming classes
1877         which tests the class's hierarchy for roles
1878         - added tests for this
1879
1880 0.03_01 Mon. April 10, 2006
1881     * Moose::Cookbook
1882       - added new Role recipe (no content yet, only code)
1883
1884     * Moose
1885       - added 'with' keyword for Role support
1886         - added test and docs for this
1887       - fixed subtype quoting bug
1888         - added test for this
1889
1890     * Moose::Role
1891       - Roles for Moose
1892         - added test and docs
1893
1894     * Moose::Util::TypeConstraints
1895       - added the message keyword to add custom
1896         error messages to type constraints
1897
1898     * Moose::Meta::Role
1899       - the meta role to support Moose::Role
1900         - added tests and docs
1901
1902     * Moose::Meta::Class
1903       - moved a number of things from Moose.pm
1904         to here, they should have been here
1905         in the first place
1906
1907     * Moose::Meta::Attribute
1908       - moved the attribute option macros here
1909         instead of putting them in Moose.pm
1910
1911     * Moose::Meta::TypeConstraint
1912       - added the message attributes and the
1913         validate method
1914         - added tests and docs for this
1915
1916 0.03 Thurs. March 30, 2006
1917     * Moose::Cookbook
1918       - added the Moose::Cookbook with 5 recipes,
1919         describing all the stuff Moose can do.
1920
1921     * Moose
1922       - fixed an issue with &extends super class loading
1923         it now captures errors and deals with inline
1924         packages correctly (bug found by mst, solution
1925         stolen from alias)
1926       - added super/override & inner/augment features
1927         - added tests and docs for these
1928
1929     * Moose::Object
1930       - BUILDALL now takes a reference of the %params
1931         that are passed to &new, and passes that to
1932         each BUILD as well.
1933
1934     * Moose::Util::TypeConstraints
1935       - Type constraints now survive runtime reloading
1936         - added test for this
1937
1938         * Moose::Meta::Class
1939           - fixed the way attribute defaults are handled
1940             during instance construction (bug found by chansen)
1941
1942     * Moose::Meta::Attribute
1943       - read-only attributes now actually enforce their
1944         read-only-ness (this corrected in Class::MOP as
1945         well)
1946
1947 0.02 Tues. March 21, 2006
1948     * Moose
1949       - many more tests, fixing some bugs and
1950         edge cases
1951       - &extends now loads the base module with
1952         UNIVERSAL::require
1953         - added UNIVERSAL::require to the
1954           dependencies list
1955       ** API CHANGES **
1956       - each new Moose class will also create
1957         and register a subtype of Object which
1958         correspond to the new Moose class.
1959       - the 'isa' option in &has now only
1960         accepts strings, and will DWIM in
1961         almost all cases
1962
1963     * Moose::Util::TypeConstraints
1964       - added type coercion features
1965         - added tests for this
1966         - added support for this in attributes
1967           and instance construction
1968       ** API CHANGES **
1969       - type construction no longer creates a
1970         function, it registers the type instead.
1971         - added several functions to get the
1972           registered types
1973
1974     * Moose::Object
1975       - BUILDALL and DEMOLISHALL were broken
1976         because of a mis-named hash key, Whoops :)
1977
1978     * Moose::Meta::Attribute
1979       - adding support for coercion in the
1980         autogenerated accessors
1981
1982     * Moose::Meta::Class
1983       - adding support for coercion in the
1984         instance construction
1985
1986     * Moose::Meta::TypeConstraint
1987     * Moose::Meta::TypeCoercion
1988           - type constraints and coercions are now
1989             full fledges meta-objects
1990
1991 0.01 Wed. March 15, 2006
1992     - Moooooooooooooooooose!!!