1 Revision history for Perl extension Moose
4 * Moose::Meta::Attribute
5 - Added support for the new builder option (groditi)
6 - Added support for lazy_build option (groditi)
8 * Moose::Meta::Method::Accessor
9 - Added support for lazy_build option (groditi)
12 - tests for builder and lazy_build
15 * fixing some misc. bits in the docs that
16 got mentioned on CPAN Forum
19 - fixed how required methods are handled
20 when they encounter overriden or modified
21 methods from a class (thanks to confound).
22 - added tests for this
24 * Moose::Util::TypeConstraint
25 - fixed the type notation parser so that
26 the | always creates a union and so is
27 no longer a valid type char (thanks to
28 konobi, mugwump and #moose for working
30 - added more tests for this
32 0.26 Thurs. Sept. 27, 2007
36 We now support parameterized collection types, such as:
37 ArrayRef[Int] # array or integers
38 HashRef[Object] # a hash with object values
39 They can also be nested:
40 ArrayRef[HashRef[RegExpr]] # an array of hashes with regexpr values
41 And work with the type unions as well:
42 ArrayRef[Int | Str] # array of integers of strings
44 * Better Framework Extendability
45 Moose.pm is now "extendable" such that it is now much
46 easier to extend the framework and add your own keywords
47 and customizations. See the "EXTENDING AND EMBEDDING MOOSE"
48 section of the Moose.pm docs.
51 In an effort to begin documenting some of the various
52 details of Moose as well as some common idioms, we have
53 created Moose::Cookbook::Snacks as a place to find
54 small (easily digestable) nuggets of Moose code.
57 ~ Several doc updates/cleanup thanks to castaway ~
59 - converted build system to use Module::Install instead of
60 Module::Build (thanks to jrockway)
63 - added all the meta classes to the immutable list and
64 set it to inline the accessors
65 - fix import to allow Sub::Exporter like { into => }
66 and { into_level => } (perigrin)
67 - exposed and documented init_meta() to allow better
68 embedding and extending of Moose (perigrin)
71 - complete re-organization of the test suite
72 - added some new tests as well
73 - finally re-enabled the Moose::POOP test since
74 the new version of DBM::Deep now works again
78 - fixed very odd and very nasty recursion bug with
80 - added tests for this (eilara)
82 * Moose::Meta::Attribute
83 Moose::Meta::Method::Constructor
84 Moose::Meta::Method::Accessor
85 - fixed issue with overload::Overloaded getting called
86 on non-blessed items. (RT #29269)
87 - added tests for this
89 * Moose::Meta::Method::Accessor
90 - fixed issue with generated accessor code making
91 assumptions about hash based classes (thanks to dexter)
93 * Moose::Coookbook::Snacks
94 - these are bits of documentation, not quite as big as
95 Recipes but which have no clear place in the module docs.
96 So they are Snacks! (horray for castaway++)
98 * Moose::Cookbook::Recipe4
99 - updated it to use the new ArrayRef[MyType] construct
100 - updated the accompanying test as well
102 +++ Major Refactor of the Type Constraint system +++
103 +++ with new features added as well +++
105 * Moose::Util::TypeConstraint
106 - no longer uses package variable to keep track of
107 the type constraints, now uses the an instance of
108 Moose::Meta::TypeConstraint::Registry to do it
109 - added more sophisticated type notation parsing
111 - added tests for this
113 * Moose::Meta::TypeConstraint
114 - some minor adjustments to make subclassing easier
115 - added the package_defined_in attribute so that we
116 can track where the type constraints are created
118 * Moose::Meta::TypeConstraint::Union
119 - this is now been refactored to be a subclass of
120 Moose::Meta::TypeConstraint
122 * Moose::Meta::TypeCoercion::Union
123 - this has been added to service the newly refactored
124 Moose::Meta::TypeConstraint::Union and is itself
125 a subclass of Moose::Meta::TypeCoercion
127 * Moose::Meta::TypeConstraint::Parameterized
128 - added this module (taken from MooseX::AttributeHelpers)
129 to help construct nested collection types
130 - added tests for this
132 * Moose::Meta::TypeConstraint::Registry
133 - added this class to keep track of type constraints
135 0.25 Mon. Aug. 13, 2007
137 - Documentation update to reference Moose::Util::TypeConstraints
138 under 'isa' in 'has' for how to define a new type
141 * Moose::Meta::Attribute
142 - required attributes now will no longer accept undef
143 from the constructor, even if there is a default and lazy
144 - added tests for this
145 - default subroutines must return a value which passes the
147 - added tests for this
149 * Moose::Meta::Attribute
150 * Moose::Meta::Method::Constructor
151 * Moose::Meta::Method::Accessor
152 - type-constraint tests now handle overloaded objects correctly
154 - added tests for this (thanks to EvanCarroll)
156 * Moose::Meta::TypeConstraint::Union
157 - added (has_)hand_optimized_constraint to this class so that
158 it behaves as the regular Moose::Meta::TypeConstraint does.
161 - large refactoring of this code
162 - added several more tests
163 - tests for subtle conflict resolition issues
164 added, but not currently running
167 * Moose::Cookbook::Recipe7
168 - added new recipe for augment/inner functionality
170 - added test for this
173 - a formal definition of roles (still in progress)
176 - utilities for easier working with Moose classes
177 - added tests for these
180 - This contains Moose specific test functions
181 - added tests for these
183 0.24 Tues. July 3, 2007
184 ~ Some doc updates/cleanup ~
186 * Moose::Meta::Attribute
187 - added support for roles to be given as parameters
188 to the 'handles' option.
189 - added tests and docs for this
190 - the has '+foo' attribute form now accepts changes to
191 the lazy option, and the addition of a handles option
192 (but not changing the handles option)
193 - added tests and docs for this
196 - required methods are now fetched using find_method_by_name
197 so that required methods can come from superclasses
198 - adjusted tests for this
200 0.23 Mon. June 18, 2007
201 * Moose::Meta::Method::Constructor
202 - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
204 - Modify make_immutable to work with the new Class::MOP immutable
205 mechanism + POD + very basic test (groditi)
206 * Moose::Meta::Attribute
207 - Fix handles to use goto() so that caller() comes out properly on
208 the other side (perigrin)
210 0.22 Thurs. May 31, 2007
211 * Moose::Util::TypeConstraints
212 - fix for prototype undeclared issue when Moose::Util::TypeConstraints
213 loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
214 prototypes for functions
215 - added the ClassName type constraint, this checks for strings
216 which will respond true to ->isa(UNIVERSAL).
217 - added tests and docs for this
218 - subtyping just in name now works correctly by making the
219 default for where be { 1 }
220 - added test for this
222 * Moose::Meta::Method::Accessor
223 - coerce and lazy now work together correctly, thanks to
224 merlyn for finding this bug
225 - tests added for this
226 - fix reader presedence bug in Moose::Meta::Attribute + tests
229 - Foo->new(undef) now gets ignored, it is assumed you meant to pass
230 a HASH-ref and missed. This produces better error messages then
231 having it die cause undef is not a HASH.
232 - added tests for this
234 0.21 Thursday, May 2nd, 2007
236 - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
237 - modified unimport to remove super and inner along with the rest
238 - altered unimport tests to handle this
241 - altered super export to populate SUPER_SLOT
244 - altered augment and override modifier application to use *_SLOT
245 - modified tests for these to unimport one test class each to test
248 - fixed issue where custom attribute metaclasses
249 where not handled correctly in roles
250 - added tests for this
253 - fixed issue where extending metaclasses with
254 roles would blow up. Thanks to Aankhen`` for
255 finding this insidious error, and it's solution.
257 ~~ lots of spelling and grammer fixes in the docs,
258 many many thanks to rlb3 and Aankhen for these :)
260 0.20 Friday, April 6th, 2007
261 >> I messed up the SKIP logic in one test
262 so this release is just to fix that.
265 - 'has' now also accepts an ARRAY ref
266 to create multiple attrs (see docs)
267 (thanks to konobi for this)
268 - added tests and docs
270 0.19 Thurs. April 5th, 2007
271 ~~ More documentation updates ~~
273 * Moose::Util::TypeConstraints
274 - 'type' now supports messages as well
275 thanks to phaylon for finding this
276 - added tests for this
277 - added &list_all_type_constraints and
278 &list_all_builtin_type_constraints
279 functions to facilitate introspection.
281 * Moose::Meta::Attribute
282 - fixed regexp 'handles' declarations
283 to build the list of delegated methods
284 correctly (and not override important
285 things like &new) thanks to ashleyb
287 - added tests and docs for this
288 - added the 'documentation' attributes
289 so that you can actually document your
290 attributes and inspect them through the
292 - added tests and docs for this
295 - when loading custom attribute metaclasses
296 it will first look in for the class in the
297 Moose::Meta::Attribute::Custom::$name, and
298 then default to just loading $name.
299 - added tests and docs for this
301 * Moose::Meta::TypeConstraint
302 - type constraints now stringify to their names.
303 - added test for this
306 - added tests to assure we work with Module::Refresh
307 - added stricter test skip logic in the Moose POOP
308 test, ask Rob Kinyon why.
309 - *cough* DBM::Deep 1.0 backwards compatability sucks *cough* ;)
311 0.18 Sat. March 10, 2007
312 ~~ Many, many documentation updates ~~
315 - We now use Class::MOP::load_class to
317 - added tests to show types and subtypes
318 working with Declare::Constraints::Simple
319 and Test::Deep as constraint engines.
322 !! You must have Class::MOP 0.37_001 !!
323 !! for this developer release to work !!
325 This release was primarily adding the immutable
326 feature to Moose. An immutable class is one which
327 you promise not to alter. When you set the class
328 as immutable it will perform various bits of
329 memoization and inline certain part of the code
330 (constructors, destructors and accessors). This
331 minimizes (and in some cases totally eliminates)
332 one of Moose's biggest performance hits. This
333 feature is not on by default, and is 100% optional.
334 It has several configurable bits as well, so you
335 can pick and choose to your specific needs.
337 The changes involved in this were fairly wide and
338 highly specific, but 100% backwards compatible, so
339 I am not going to enumerate them here. If you are
340 truely interested in what was changed, please do
343 0.17 Tues. Nov. 14, 2006
344 * Moose::Meta::Method::Accessor
345 - bugfix for read-only accessors which
346 are have a type constraint and lazy.
347 Thanks to chansen for finding it.
349 0.16 Tues. Nov. 14, 2006
351 There are some speed improvements in this release,
352 but they are only the begining, so stay tuned.
355 - BUILDALL and DEMOLISHALL no longer get
356 called unless they actually need to be.
357 This gave us a signifigant speed boost
358 for the cases when there is no BUILD or
359 DEMOLISH method present.
361 * Moose::Util::TypeConstraints
362 * Moose::Meta::TypeConstraint
363 - added an 'optimize_as' option to the
364 type constraint, which allows for a
365 hand optimized version of the type
366 constraint to be used when possible.
367 - Any internally created type constraints
368 now provide an optimized version as well.
370 0.15 Sun. Nov. 5, 2006
372 This version of Moose *must* have Class::MOP 0.36 in order
373 to work correctly. A number of small internal tweaks have
374 been made in order to be compatible with that release.
376 * Moose::Util::TypeConstraints
377 - added &unimport so that you can clean out
378 your class namespace of these exported
382 - fixed minor issue which occasionally
383 comes up during global destruction
385 - moved Moose::Meta::Method::Overriden into
389 - moved Moose::Meta::Role::Method into
392 * Moose::Meta::Attribute
393 - changed how we do type checks so that
394 we reduce the overall cost, but still
397 - moved accessor generation methods to
398 Moose::Meta::Method::Accessor to
399 conform to the API changes from
402 * Moose::Meta::TypeConstraint
403 - changed how constraints are compiled
404 so that we do less recursion and more
405 iteration. This makes the type check
407 - moved Moose::Meta::TypeConstraint::Union
410 * Moose::Meta::Method::Accessor
411 - created this from methods formerly found in
412 Moose::Meta::Attribute
414 * Moose::Meta::Role::Method
415 - moved this from Moose::Meta::Role
417 * Moose::Meta::Method::Overriden
418 - moved this from Moose::Meta::Class
420 * Moose::Meta::TypeConstraint::Union
421 - moved this from Moose::Meta::TypeConstraint
423 0.14 Mon. Oct. 9, 2006
425 * Moose::Meta::Attribute
426 - fixed lazy attributes which were not getting
427 checked with the type constraint (thanks ashley)
428 - added tests for this
429 - removed the over-enthusiastic DWIMery of the
430 automatic ArrayRef and HashRef defaults, it
431 broke predicates in an ugly way.
432 - removed tests for this
434 0.13 Sat. Sept. 30, 2006
436 This version of Moose *must* have Class::MOP 0.35 in order
437 to work correctly. A number of small internal tweaks have
438 been made in order to be compatible with that release.
441 - Removed the use of UNIVERSAL::require to be a better
442 symbol table citizen and remove a dependency
443 (thanks Adam Kennedy)
445 **~~ removed experimental & undocumented feature ~~**
446 - commented out the 'method' and 'self' keywords, see the
447 comments for more info.
450 - added a FAQ and WTF files to document frequently
451 asked questions and common problems
453 * Moose::Util::TypeConstraints
454 - added GlobRef and FileHandle type constraint
455 - added tests for this
457 * Moose::Meta::Attribute
458 - if your attribute 'isa' ArrayRef of HashRef, and you have
459 not explicitly set a default, then make the default DWIM.
460 This will also work for subtypes of ArrayRef and HashRef
462 - you can now auto-deref subtypes of ArrayRef or HashRef too.
463 - new test added for this (thanks to ashley)
466 - added basic support for runtime role composition
467 but this is still *highly experimental*, so feedback
468 is much appreciated :)
469 - added tests for this
471 * Moose::Meta::TypeConstraint
472 - the type constraint now handles the coercion process
473 through delegation, this is to support the coercion
476 * Moose::Meta::TypeConstraint::Union
477 - it is now possible for coercions to be performed
479 - added tests for this (thanks to konobi)
481 * Moose::Meta::TypeCoercion
482 - properly capturing error when type constraint
486 - Scalar::Util 1.18 is bad on Win32, so temporarily
487 only require version 1.17 for Win32 and cygwin.
488 (thanks Adam Kennedy)
490 0.12 Sat. Sept. 1, 2006
492 - Recipe5 (subtypes & coercion) has been written
495 - fixed "bad meta" error message to be more descriptive
496 - fixed &unimport to not remove the &inner and &super
497 keywords because we need to localize them.
498 - fixed number of spelling/grammer issues, thanks Theory :)
500 **~~ experimental & undocumented feature ~~**
501 - added the method and self keywords, they are basically
502 just sugar, and they may not stay around.
505 - added &dump method to easily Data::Dumper
508 * Moose::Meta::TypeConstraint
509 - added the &is_a_type_of method to check both the current
510 and the subtype of a method (similar to &isa with classes)
513 - this is now a subclass of Class::MOP::Module, and no longer
514 creates the _role_meta ugliness of before.
515 - fixed tests to reflect this change
517 0.11 Wed. July 12, 2006
519 - added an &unimport method to remove all the keywords
520 that Moose will import, simply add 'no Moose' to the
521 bottom of your class file.
524 - fixed some test failures caused by a forgotten test
527 0.10 Thurs. July 6, 2006
529 - improved error message when loading modules so
530 it is less confusing when you load a role.
531 - added &calculate_all_roles method to
532 Moose::Meta::Class and Moose::Meta::Role
535 This module has been tested against Class::MOP 0.30
536 but it does not yet utilize the optimizations
537 it makes available. Stay tuned for that ;)
539 0.09_03 Fri. June 23, 2006
540 ++ DEVELOPER RELEASE ++
542 - 'use strict' and 'use warnings' are no longer
543 needed in Moose classes, Moose itself will
544 turn them on for you.
545 - added tests for this
546 - moved code from exported subs to private methods
547 in Moose::Meta::Class
550 - as with Moose, strict and warnings are
551 automatically turned on for you.
552 - added tests for this
555 - now handles an edge case for override errors
556 - added tests for this
557 - added some more edge case tests
559 0.09_02 Tues. May 16, 2006
560 ++ DEVELOPER RELEASE ++
562 - added prototypes to the exported subs
566 - added prototypes to the exported subs
569 * Moose::Util::TypeConstraints
570 - cleaned up prototypes for the subs
573 0.09_01 Fri. May 12, 2006
574 ++ DEVELOPER RELEASE ++
575 - This release works in combination with
576 Class::MOP 0.29_01, it is a developer
577 release because it uses the a new
578 instance sub-protocol and a fairly
579 complete Role implementation. It has
580 not yet been optimized, so it slower
581 the the previous CPAN version. This
582 release also lacks good updated docs,
583 the official release will have updated docs.
586 - refactored the keyword exports
587 - 'with' now checks Role validaity and
588 accepts more than one Role at a time
589 - 'extends' makes metaclass adjustments as
590 needed to ensure metaclass compatability
593 - refactored the keyword exports
594 - 'with' now checks Role validaity and
595 accepts more than one Role at a time
597 * Moose::Util::TypeConstraints
598 - added the 'enum' keyword for simple
599 string enumerations which can be used as
601 - see example of usage in t/202_example.t
604 - more careful checking of params to new()
607 - much work done on the role composition
608 - many new tests for conflict detection
609 and composition edge cases
610 - not enough documentation, I suggest
613 * Moose::Meta::Instance
614 - added new Instance metaclass to support
615 the new Class::MOP instance protocol
618 - some small changes to support the new
620 - some small additions to support Roles
622 * Moose::Meta::Attribute
623 - some improvements to the accessor generation code
625 - some small changes to support the new
627 - (still somewhat) experimental delegation support
628 with the 'handles' option
629 - added several tests for this
630 - no docs for this yet
632 0.05 Thurs. April 27, 2006
634 - keywords are now exported with Sub::Exporter
635 thanks to chansen for this commit
636 - has keyword now takes a 'metaclass' option
637 to support custom attribute meta-classes
638 on a per-attribute basis
639 - added tests for this
640 - the 'has' keyword not accepts inherited slot
641 specifications (has '+foo'). This is still an
642 experimental feature and probably not finished
643 see t/038_attribute_inherited_slot_specs.t for
644 more details, or ask about it on #moose
645 - added tests for this
648 - keywords are now exported with Sub::Exporter
650 * Moose::Utils::TypeConstraints
651 - reorganized the type constraint hierarchy, thanks
652 to nothingmuch and chansen for his help and advice
654 - added some tests for this
655 - keywords are now exported with Sub::Exporter
656 thanks to chansen for this commit
659 - due to changes in Class::MOP, we had to change
660 construct_instance (for the better)
662 * Moose::Meta::Attribute
663 - due to changes in Class::MOP, we had to add the
664 initialize_instance_slot method (it's a good thing)
666 * Moose::Meta::TypeConstraint
667 - added type constraint unions
668 - added tests for this
669 - added the is_subtype_of predicate method
670 - added tests for this
672 0.04 Sun. April 16th, 2006
674 - Roles can now consume other roles
675 - added tests for this
676 - Roles can specify required methods now with
677 the requires() keyword
678 - added tests for this
681 - ripped out much of it's guts ,.. much cleaner now
682 - added required methods and correct handling of
683 them in apply() for both classes and roles
684 - added tests for this
685 - no longer adds a does() method to consuming classes
686 it relys on the one in Moose::Object
687 - added roles attribute and some methods to support
688 roles consuming roles
690 * Moose::Meta::Attribute
691 - added support for triggers on attributes
692 - added tests for this
693 - added support for does option on an attribute
694 - added tests for this
697 - added support for attribute triggers in the
699 - added tests for this
702 - Moose no longer creates a subtype for your class
703 if a subtype of the same name already exists, this
704 should DWIM in 99.9999% of all cases
706 * Moose::Util::TypeConstraints
707 - fixed bug where incorrect subtype conflicts were
709 - added test for this
712 - this class can now be extended with 'use base' if
713 you need it, it properly loads the metaclass class now
714 - added test for this
716 0.03_02 Wed. April 12, 2006
718 - you must now explictly use Moose::Util::TypeConstraints
719 it no longer gets exported for you automatically
722 - new() now accepts hash-refs as well as key/value lists
723 - added does() method to check for Roles
724 - added tests for this
727 - added roles attribute along with the add_role() and
729 - added tests for this
732 - now adds a does() method to consuming classes
733 which tests the class's hierarchy for roles
734 - added tests for this
736 0.03_01 Mon. April 10, 2006
738 - added new Role recipe (no content yet, only code)
741 - added 'with' keyword for Role support
742 - added test and docs for this
743 - fixed subtype quoting bug
744 - added test for this
748 - added test and docs
750 * Moose::Util::TypeConstraints
751 - added the message keyword to add custom
752 error messages to type constraints
755 - the meta role to support Moose::Role
756 - added tests and docs
759 - moved a number of things from Moose.pm
760 to here, they should have been here
763 * Moose::Meta::Attribute
764 - moved the attribute option macros here
765 instead of putting them in Moose.pm
767 * Moose::Meta::TypeConstraint
768 - added the message attributes and the
770 - added tests and docs for this
772 0.03 Thurs. March 30, 2006
774 - added the Moose::Cookbook with 5 recipes,
775 describing all the stuff Moose can do.
778 - fixed an issue with &extends super class loading
779 it now captures errors and deals with inline
780 packages correctly (bug found by mst, solution
782 - added super/override & inner/augment features
783 - added tests and docs for these
786 - BUILDALL now takes a reference of the %params
787 that are passed to &new, and passes that to
790 * Moose::Util::TypeConstraints
791 - Type constraints now survive runtime reloading
792 - added test for this
795 - fixed the way attribute defaults are handled
796 during instance construction (bug found by chansen)
798 * Moose::Meta::Attribute
799 - read-only attributes now actually enforce their
800 read-only-ness (this corrected in Class::MOP as
803 0.02 Tues. March 21, 2006
805 - many more tests, fixing some bugs and
807 - &extends now loads the base module with
809 - added UNIVERSAL::require to the
812 - each new Moose class will also create
813 and register a subtype of Object which
814 correspond to the new Moose class.
815 - the 'isa' option in &has now only
816 accepts strings, and will DWIM in
819 * Moose::Util::TypeConstraints
820 - added type coercion features
821 - added tests for this
822 - added support for this in attributes
823 and instance construction
825 - type construction no longer creates a
826 function, it registers the type instead.
827 - added several functions to get the
831 - BUILDALL and DEMOLISHALL were broken
832 because of a mis-named hash key, Whoops :)
834 * Moose::Meta::Attribute
835 - adding support for coercion in the
836 autogenerated accessors
839 - adding support for coercion in the
840 instance construction
842 * Moose::Meta::TypeConstraint
843 * Moose::Meta::TypeCoercion
844 - type constraints and coercions are now
845 full fledges meta-objects
847 0.01 Wed. March 15, 2006
848 - Moooooooooooooooooose!!!