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)
7 - Changed slot initialization for predicate changes (groditi)
9 * Moose::Meta::Method::Accessor
10 - Added support for lazy_build option (groditi)
11 - Fix inline methods to work with corrected predicate
14 * Moose::Meta::Method::Constructor
15 - Added support for lazy_build option (groditi)
18 - tests for builder and lazy_build (groditi)
20 * fixing some misc. bits in the docs that
21 got mentioned on CPAN Forum & perlmonks
24 - fixed how required methods are handled
25 when they encounter overriden or modified
26 methods from a class (thanks to confound).
27 - added tests for this
29 * Moose::Util::TypeConstraint
30 - fixed the type notation parser so that
31 the | always creates a union and so is
32 no longer a valid type char (thanks to
33 konobi, mugwump and #moose for working
35 - added more tests for this
37 0.26 Thurs. Sept. 27, 2007
41 We now support parameterized collection types, such as:
42 ArrayRef[Int] # array or integers
43 HashRef[Object] # a hash with object values
44 They can also be nested:
45 ArrayRef[HashRef[RegExpr]] # an array of hashes with regexpr values
46 And work with the type unions as well:
47 ArrayRef[Int | Str] # array of integers of strings
49 * Better Framework Extendability
50 Moose.pm is now "extendable" such that it is now much
51 easier to extend the framework and add your own keywords
52 and customizations. See the "EXTENDING AND EMBEDDING MOOSE"
53 section of the Moose.pm docs.
56 In an effort to begin documenting some of the various
57 details of Moose as well as some common idioms, we have
58 created Moose::Cookbook::Snacks as a place to find
59 small (easily digestable) nuggets of Moose code.
62 ~ Several doc updates/cleanup thanks to castaway ~
64 - converted build system to use Module::Install instead of
65 Module::Build (thanks to jrockway)
68 - added all the meta classes to the immutable list and
69 set it to inline the accessors
70 - fix import to allow Sub::Exporter like { into => }
71 and { into_level => } (perigrin)
72 - exposed and documented init_meta() to allow better
73 embedding and extending of Moose (perigrin)
76 - complete re-organization of the test suite
77 - added some new tests as well
78 - finally re-enabled the Moose::POOP test since
79 the new version of DBM::Deep now works again
83 - fixed very odd and very nasty recursion bug with
85 - added tests for this (eilara)
87 * Moose::Meta::Attribute
88 Moose::Meta::Method::Constructor
89 Moose::Meta::Method::Accessor
90 - fixed issue with overload::Overloaded getting called
91 on non-blessed items. (RT #29269)
92 - added tests for this
94 * Moose::Meta::Method::Accessor
95 - fixed issue with generated accessor code making
96 assumptions about hash based classes (thanks to dexter)
98 * Moose::Coookbook::Snacks
99 - these are bits of documentation, not quite as big as
100 Recipes but which have no clear place in the module docs.
101 So they are Snacks! (horray for castaway++)
103 * Moose::Cookbook::Recipe4
104 - updated it to use the new ArrayRef[MyType] construct
105 - updated the accompanying test as well
107 +++ Major Refactor of the Type Constraint system +++
108 +++ with new features added as well +++
110 * Moose::Util::TypeConstraint
111 - no longer uses package variable to keep track of
112 the type constraints, now uses the an instance of
113 Moose::Meta::TypeConstraint::Registry to do it
114 - added more sophisticated type notation parsing
116 - added tests for this
118 * Moose::Meta::TypeConstraint
119 - some minor adjustments to make subclassing easier
120 - added the package_defined_in attribute so that we
121 can track where the type constraints are created
123 * Moose::Meta::TypeConstraint::Union
124 - this is now been refactored to be a subclass of
125 Moose::Meta::TypeConstraint
127 * Moose::Meta::TypeCoercion::Union
128 - this has been added to service the newly refactored
129 Moose::Meta::TypeConstraint::Union and is itself
130 a subclass of Moose::Meta::TypeCoercion
132 * Moose::Meta::TypeConstraint::Parameterized
133 - added this module (taken from MooseX::AttributeHelpers)
134 to help construct nested collection types
135 - added tests for this
137 * Moose::Meta::TypeConstraint::Registry
138 - added this class to keep track of type constraints
140 0.25 Mon. Aug. 13, 2007
142 - Documentation update to reference Moose::Util::TypeConstraints
143 under 'isa' in 'has' for how to define a new type
146 * Moose::Meta::Attribute
147 - required attributes now will no longer accept undef
148 from the constructor, even if there is a default and lazy
149 - added tests for this
150 - default subroutines must return a value which passes the
152 - added tests for this
154 * Moose::Meta::Attribute
155 * Moose::Meta::Method::Constructor
156 * Moose::Meta::Method::Accessor
157 - type-constraint tests now handle overloaded objects correctly
159 - added tests for this (thanks to EvanCarroll)
161 * Moose::Meta::TypeConstraint::Union
162 - added (has_)hand_optimized_constraint to this class so that
163 it behaves as the regular Moose::Meta::TypeConstraint does.
166 - large refactoring of this code
167 - added several more tests
168 - tests for subtle conflict resolition issues
169 added, but not currently running
172 * Moose::Cookbook::Recipe7
173 - added new recipe for augment/inner functionality
175 - added test for this
178 - a formal definition of roles (still in progress)
181 - utilities for easier working with Moose classes
182 - added tests for these
185 - This contains Moose specific test functions
186 - added tests for these
188 0.24 Tues. July 3, 2007
189 ~ Some doc updates/cleanup ~
191 * Moose::Meta::Attribute
192 - added support for roles to be given as parameters
193 to the 'handles' option.
194 - added tests and docs for this
195 - the has '+foo' attribute form now accepts changes to
196 the lazy option, and the addition of a handles option
197 (but not changing the handles option)
198 - added tests and docs for this
201 - required methods are now fetched using find_method_by_name
202 so that required methods can come from superclasses
203 - adjusted tests for this
205 0.23 Mon. June 18, 2007
206 * Moose::Meta::Method::Constructor
207 - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
209 - Modify make_immutable to work with the new Class::MOP immutable
210 mechanism + POD + very basic test (groditi)
211 * Moose::Meta::Attribute
212 - Fix handles to use goto() so that caller() comes out properly on
213 the other side (perigrin)
215 0.22 Thurs. May 31, 2007
216 * Moose::Util::TypeConstraints
217 - fix for prototype undeclared issue when Moose::Util::TypeConstraints
218 loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
219 prototypes for functions
220 - added the ClassName type constraint, this checks for strings
221 which will respond true to ->isa(UNIVERSAL).
222 - added tests and docs for this
223 - subtyping just in name now works correctly by making the
224 default for where be { 1 }
225 - added test for this
227 * Moose::Meta::Method::Accessor
228 - coerce and lazy now work together correctly, thanks to
229 merlyn for finding this bug
230 - tests added for this
231 - fix reader presedence bug in Moose::Meta::Attribute + tests
234 - Foo->new(undef) now gets ignored, it is assumed you meant to pass
235 a HASH-ref and missed. This produces better error messages then
236 having it die cause undef is not a HASH.
237 - added tests for this
239 0.21 Thursday, May 2nd, 2007
241 - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
242 - modified unimport to remove super and inner along with the rest
243 - altered unimport tests to handle this
246 - altered super export to populate SUPER_SLOT
249 - altered augment and override modifier application to use *_SLOT
250 - modified tests for these to unimport one test class each to test
253 - fixed issue where custom attribute metaclasses
254 where not handled correctly in roles
255 - added tests for this
258 - fixed issue where extending metaclasses with
259 roles would blow up. Thanks to Aankhen`` for
260 finding this insidious error, and it's solution.
262 ~~ lots of spelling and grammer fixes in the docs,
263 many many thanks to rlb3 and Aankhen for these :)
265 0.20 Friday, April 6th, 2007
266 >> I messed up the SKIP logic in one test
267 so this release is just to fix that.
270 - 'has' now also accepts an ARRAY ref
271 to create multiple attrs (see docs)
272 (thanks to konobi for this)
273 - added tests and docs
275 0.19 Thurs. April 5th, 2007
276 ~~ More documentation updates ~~
278 * Moose::Util::TypeConstraints
279 - 'type' now supports messages as well
280 thanks to phaylon for finding this
281 - added tests for this
282 - added &list_all_type_constraints and
283 &list_all_builtin_type_constraints
284 functions to facilitate introspection.
286 * Moose::Meta::Attribute
287 - fixed regexp 'handles' declarations
288 to build the list of delegated methods
289 correctly (and not override important
290 things like &new) thanks to ashleyb
292 - added tests and docs for this
293 - added the 'documentation' attributes
294 so that you can actually document your
295 attributes and inspect them through the
297 - added tests and docs for this
300 - when loading custom attribute metaclasses
301 it will first look in for the class in the
302 Moose::Meta::Attribute::Custom::$name, and
303 then default to just loading $name.
304 - added tests and docs for this
306 * Moose::Meta::TypeConstraint
307 - type constraints now stringify to their names.
308 - added test for this
311 - added tests to assure we work with Module::Refresh
312 - added stricter test skip logic in the Moose POOP
313 test, ask Rob Kinyon why.
314 - *cough* DBM::Deep 1.0 backwards compatability sucks *cough* ;)
316 0.18 Sat. March 10, 2007
317 ~~ Many, many documentation updates ~~
320 - We now use Class::MOP::load_class to
322 - added tests to show types and subtypes
323 working with Declare::Constraints::Simple
324 and Test::Deep as constraint engines.
327 !! You must have Class::MOP 0.37_001 !!
328 !! for this developer release to work !!
330 This release was primarily adding the immutable
331 feature to Moose. An immutable class is one which
332 you promise not to alter. When you set the class
333 as immutable it will perform various bits of
334 memoization and inline certain part of the code
335 (constructors, destructors and accessors). This
336 minimizes (and in some cases totally eliminates)
337 one of Moose's biggest performance hits. This
338 feature is not on by default, and is 100% optional.
339 It has several configurable bits as well, so you
340 can pick and choose to your specific needs.
342 The changes involved in this were fairly wide and
343 highly specific, but 100% backwards compatible, so
344 I am not going to enumerate them here. If you are
345 truely interested in what was changed, please do
348 0.17 Tues. Nov. 14, 2006
349 * Moose::Meta::Method::Accessor
350 - bugfix for read-only accessors which
351 are have a type constraint and lazy.
352 Thanks to chansen for finding it.
354 0.16 Tues. Nov. 14, 2006
356 There are some speed improvements in this release,
357 but they are only the begining, so stay tuned.
360 - BUILDALL and DEMOLISHALL no longer get
361 called unless they actually need to be.
362 This gave us a signifigant speed boost
363 for the cases when there is no BUILD or
364 DEMOLISH method present.
366 * Moose::Util::TypeConstraints
367 * Moose::Meta::TypeConstraint
368 - added an 'optimize_as' option to the
369 type constraint, which allows for a
370 hand optimized version of the type
371 constraint to be used when possible.
372 - Any internally created type constraints
373 now provide an optimized version as well.
375 0.15 Sun. Nov. 5, 2006
377 This version of Moose *must* have Class::MOP 0.36 in order
378 to work correctly. A number of small internal tweaks have
379 been made in order to be compatible with that release.
381 * Moose::Util::TypeConstraints
382 - added &unimport so that you can clean out
383 your class namespace of these exported
387 - fixed minor issue which occasionally
388 comes up during global destruction
390 - moved Moose::Meta::Method::Overriden into
394 - moved Moose::Meta::Role::Method into
397 * Moose::Meta::Attribute
398 - changed how we do type checks so that
399 we reduce the overall cost, but still
402 - moved accessor generation methods to
403 Moose::Meta::Method::Accessor to
404 conform to the API changes from
407 * Moose::Meta::TypeConstraint
408 - changed how constraints are compiled
409 so that we do less recursion and more
410 iteration. This makes the type check
412 - moved Moose::Meta::TypeConstraint::Union
415 * Moose::Meta::Method::Accessor
416 - created this from methods formerly found in
417 Moose::Meta::Attribute
419 * Moose::Meta::Role::Method
420 - moved this from Moose::Meta::Role
422 * Moose::Meta::Method::Overriden
423 - moved this from Moose::Meta::Class
425 * Moose::Meta::TypeConstraint::Union
426 - moved this from Moose::Meta::TypeConstraint
428 0.14 Mon. Oct. 9, 2006
430 * Moose::Meta::Attribute
431 - fixed lazy attributes which were not getting
432 checked with the type constraint (thanks ashley)
433 - added tests for this
434 - removed the over-enthusiastic DWIMery of the
435 automatic ArrayRef and HashRef defaults, it
436 broke predicates in an ugly way.
437 - removed tests for this
439 0.13 Sat. Sept. 30, 2006
441 This version of Moose *must* have Class::MOP 0.35 in order
442 to work correctly. A number of small internal tweaks have
443 been made in order to be compatible with that release.
446 - Removed the use of UNIVERSAL::require to be a better
447 symbol table citizen and remove a dependency
448 (thanks Adam Kennedy)
450 **~~ removed experimental & undocumented feature ~~**
451 - commented out the 'method' and 'self' keywords, see the
452 comments for more info.
455 - added a FAQ and WTF files to document frequently
456 asked questions and common problems
458 * Moose::Util::TypeConstraints
459 - added GlobRef and FileHandle type constraint
460 - added tests for this
462 * Moose::Meta::Attribute
463 - if your attribute 'isa' ArrayRef of HashRef, and you have
464 not explicitly set a default, then make the default DWIM.
465 This will also work for subtypes of ArrayRef and HashRef
467 - you can now auto-deref subtypes of ArrayRef or HashRef too.
468 - new test added for this (thanks to ashley)
471 - added basic support for runtime role composition
472 but this is still *highly experimental*, so feedback
473 is much appreciated :)
474 - added tests for this
476 * Moose::Meta::TypeConstraint
477 - the type constraint now handles the coercion process
478 through delegation, this is to support the coercion
481 * Moose::Meta::TypeConstraint::Union
482 - it is now possible for coercions to be performed
484 - added tests for this (thanks to konobi)
486 * Moose::Meta::TypeCoercion
487 - properly capturing error when type constraint
491 - Scalar::Util 1.18 is bad on Win32, so temporarily
492 only require version 1.17 for Win32 and cygwin.
493 (thanks Adam Kennedy)
495 0.12 Sat. Sept. 1, 2006
497 - Recipe5 (subtypes & coercion) has been written
500 - fixed "bad meta" error message to be more descriptive
501 - fixed &unimport to not remove the &inner and &super
502 keywords because we need to localize them.
503 - fixed number of spelling/grammer issues, thanks Theory :)
505 **~~ experimental & undocumented feature ~~**
506 - added the method and self keywords, they are basically
507 just sugar, and they may not stay around.
510 - added &dump method to easily Data::Dumper
513 * Moose::Meta::TypeConstraint
514 - added the &is_a_type_of method to check both the current
515 and the subtype of a method (similar to &isa with classes)
518 - this is now a subclass of Class::MOP::Module, and no longer
519 creates the _role_meta ugliness of before.
520 - fixed tests to reflect this change
522 0.11 Wed. July 12, 2006
524 - added an &unimport method to remove all the keywords
525 that Moose will import, simply add 'no Moose' to the
526 bottom of your class file.
529 - fixed some test failures caused by a forgotten test
532 0.10 Thurs. July 6, 2006
534 - improved error message when loading modules so
535 it is less confusing when you load a role.
536 - added &calculate_all_roles method to
537 Moose::Meta::Class and Moose::Meta::Role
540 This module has been tested against Class::MOP 0.30
541 but it does not yet utilize the optimizations
542 it makes available. Stay tuned for that ;)
544 0.09_03 Fri. June 23, 2006
545 ++ DEVELOPER RELEASE ++
547 - 'use strict' and 'use warnings' are no longer
548 needed in Moose classes, Moose itself will
549 turn them on for you.
550 - added tests for this
551 - moved code from exported subs to private methods
552 in Moose::Meta::Class
555 - as with Moose, strict and warnings are
556 automatically turned on for you.
557 - added tests for this
560 - now handles an edge case for override errors
561 - added tests for this
562 - added some more edge case tests
564 0.09_02 Tues. May 16, 2006
565 ++ DEVELOPER RELEASE ++
567 - added prototypes to the exported subs
571 - added prototypes to the exported subs
574 * Moose::Util::TypeConstraints
575 - cleaned up prototypes for the subs
578 0.09_01 Fri. May 12, 2006
579 ++ DEVELOPER RELEASE ++
580 - This release works in combination with
581 Class::MOP 0.29_01, it is a developer
582 release because it uses the a new
583 instance sub-protocol and a fairly
584 complete Role implementation. It has
585 not yet been optimized, so it slower
586 the the previous CPAN version. This
587 release also lacks good updated docs,
588 the official release will have updated docs.
591 - refactored the keyword exports
592 - 'with' now checks Role validaity and
593 accepts more than one Role at a time
594 - 'extends' makes metaclass adjustments as
595 needed to ensure metaclass compatability
598 - refactored the keyword exports
599 - 'with' now checks Role validaity and
600 accepts more than one Role at a time
602 * Moose::Util::TypeConstraints
603 - added the 'enum' keyword for simple
604 string enumerations which can be used as
606 - see example of usage in t/202_example.t
609 - more careful checking of params to new()
612 - much work done on the role composition
613 - many new tests for conflict detection
614 and composition edge cases
615 - not enough documentation, I suggest
618 * Moose::Meta::Instance
619 - added new Instance metaclass to support
620 the new Class::MOP instance protocol
623 - some small changes to support the new
625 - some small additions to support Roles
627 * Moose::Meta::Attribute
628 - some improvements to the accessor generation code
630 - some small changes to support the new
632 - (still somewhat) experimental delegation support
633 with the 'handles' option
634 - added several tests for this
635 - no docs for this yet
637 0.05 Thurs. April 27, 2006
639 - keywords are now exported with Sub::Exporter
640 thanks to chansen for this commit
641 - has keyword now takes a 'metaclass' option
642 to support custom attribute meta-classes
643 on a per-attribute basis
644 - added tests for this
645 - the 'has' keyword not accepts inherited slot
646 specifications (has '+foo'). This is still an
647 experimental feature and probably not finished
648 see t/038_attribute_inherited_slot_specs.t for
649 more details, or ask about it on #moose
650 - added tests for this
653 - keywords are now exported with Sub::Exporter
655 * Moose::Utils::TypeConstraints
656 - reorganized the type constraint hierarchy, thanks
657 to nothingmuch and chansen for his help and advice
659 - added some tests for this
660 - keywords are now exported with Sub::Exporter
661 thanks to chansen for this commit
664 - due to changes in Class::MOP, we had to change
665 construct_instance (for the better)
667 * Moose::Meta::Attribute
668 - due to changes in Class::MOP, we had to add the
669 initialize_instance_slot method (it's a good thing)
671 * Moose::Meta::TypeConstraint
672 - added type constraint unions
673 - added tests for this
674 - added the is_subtype_of predicate method
675 - added tests for this
677 0.04 Sun. April 16th, 2006
679 - Roles can now consume other roles
680 - added tests for this
681 - Roles can specify required methods now with
682 the requires() keyword
683 - added tests for this
686 - ripped out much of it's guts ,.. much cleaner now
687 - added required methods and correct handling of
688 them in apply() for both classes and roles
689 - added tests for this
690 - no longer adds a does() method to consuming classes
691 it relys on the one in Moose::Object
692 - added roles attribute and some methods to support
693 roles consuming roles
695 * Moose::Meta::Attribute
696 - added support for triggers on attributes
697 - added tests for this
698 - added support for does option on an attribute
699 - added tests for this
702 - added support for attribute triggers in the
704 - added tests for this
707 - Moose no longer creates a subtype for your class
708 if a subtype of the same name already exists, this
709 should DWIM in 99.9999% of all cases
711 * Moose::Util::TypeConstraints
712 - fixed bug where incorrect subtype conflicts were
714 - added test for this
717 - this class can now be extended with 'use base' if
718 you need it, it properly loads the metaclass class now
719 - added test for this
721 0.03_02 Wed. April 12, 2006
723 - you must now explictly use Moose::Util::TypeConstraints
724 it no longer gets exported for you automatically
727 - new() now accepts hash-refs as well as key/value lists
728 - added does() method to check for Roles
729 - added tests for this
732 - added roles attribute along with the add_role() and
734 - added tests for this
737 - now adds a does() method to consuming classes
738 which tests the class's hierarchy for roles
739 - added tests for this
741 0.03_01 Mon. April 10, 2006
743 - added new Role recipe (no content yet, only code)
746 - added 'with' keyword for Role support
747 - added test and docs for this
748 - fixed subtype quoting bug
749 - added test for this
753 - added test and docs
755 * Moose::Util::TypeConstraints
756 - added the message keyword to add custom
757 error messages to type constraints
760 - the meta role to support Moose::Role
761 - added tests and docs
764 - moved a number of things from Moose.pm
765 to here, they should have been here
768 * Moose::Meta::Attribute
769 - moved the attribute option macros here
770 instead of putting them in Moose.pm
772 * Moose::Meta::TypeConstraint
773 - added the message attributes and the
775 - added tests and docs for this
777 0.03 Thurs. March 30, 2006
779 - added the Moose::Cookbook with 5 recipes,
780 describing all the stuff Moose can do.
783 - fixed an issue with &extends super class loading
784 it now captures errors and deals with inline
785 packages correctly (bug found by mst, solution
787 - added super/override & inner/augment features
788 - added tests and docs for these
791 - BUILDALL now takes a reference of the %params
792 that are passed to &new, and passes that to
795 * Moose::Util::TypeConstraints
796 - Type constraints now survive runtime reloading
797 - added test for this
800 - fixed the way attribute defaults are handled
801 during instance construction (bug found by chansen)
803 * Moose::Meta::Attribute
804 - read-only attributes now actually enforce their
805 read-only-ness (this corrected in Class::MOP as
808 0.02 Tues. March 21, 2006
810 - many more tests, fixing some bugs and
812 - &extends now loads the base module with
814 - added UNIVERSAL::require to the
817 - each new Moose class will also create
818 and register a subtype of Object which
819 correspond to the new Moose class.
820 - the 'isa' option in &has now only
821 accepts strings, and will DWIM in
824 * Moose::Util::TypeConstraints
825 - added type coercion features
826 - added tests for this
827 - added support for this in attributes
828 and instance construction
830 - type construction no longer creates a
831 function, it registers the type instead.
832 - added several functions to get the
836 - BUILDALL and DEMOLISHALL were broken
837 because of a mis-named hash key, Whoops :)
839 * Moose::Meta::Attribute
840 - adding support for coercion in the
841 autogenerated accessors
844 - adding support for coercion in the
845 instance construction
847 * Moose::Meta::TypeConstraint
848 * Moose::Meta::TypeCoercion
849 - type constraints and coercions are now
850 full fledges meta-objects
852 0.01 Wed. March 15, 2006
853 - Moooooooooooooooooose!!!