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