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