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