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