1 Revision history for Perl extension Moose
4 ~ Several doc updates/cleanup thanks to castaway ~
7 - added all the meta classes to the immutable list and
8 set it to inline the accessors
9 - fix import to allow Sub::Exporter like { into => }
10 and { into_level => } (perigrin)
11 - exposed and documented init_meta() to allow better
12 embedding and extending of Moose (perigrin)
14 * Moose::Util::TypeConstraint
15 - no longer uses package variable to keep track of
16 the type constraints, now uses the an instance of
17 Moose::Meta::TypeConstraint::Registry to do it
19 * Moose::Meta::TypeConstraint
20 - some minor adjustments to make subclassing easier
21 - added the package_defined_in attribute so that we
22 can track where the type constraints are created
24 * Moose::Meta::TypeConstraint::Union
25 - this is not a subclass of Moose::Meta::TypeConstraint
28 * Moose::Meta::TypeConstraint::Container
29 - added this module (taken from MooseX::AttributeHelpers)
30 to help construct nested collection types
31 - added tests for this
33 * Moose::Meta::TypeConstraint::Registry
34 - added this class to keep track of type constraints
36 * Moose::Meta::Attribute
37 Moose::Meta::Method::Constructor
38 Moose::Meta::Method::Accessor
39 - fixed issue with overload::Overloaded getting called
41 - added tests for this
43 * Moose::Coookbook::Snacks
44 - these are bits of documentation, not quite as big as
45 Recipes but which have no clear place in the module docs.
46 So they are Snacks! (horray for castaway++)
48 0.25 Mon. Aug. 13, 2007
50 - Documentation update to reference Moose::Util::TypeConstraints
51 under 'isa' in 'has' for how to define a new type
54 * Moose::Meta::Attribute
55 - required attributes now will no longer accept undef
56 from the constructor, even if there is a default and lazy
57 - added tests for this
58 - default subroutines must return a value which passes the
60 - added tests for this
62 * Moose::Meta::Attribute
63 * Moose::Meta::Method::Constructor
64 * Moose::Meta::Method::Accessor
65 - type-constraint tests now handle overloaded objects correctly
67 - added tests for this (thanks to EvanCarroll)
69 * Moose::Meta::TypeConstraint::Union
70 - added (has_)hand_optimized_constraint to this class so that
71 it behaves as the regular Moose::Meta::TypeConstraint does.
74 - large refactoring of this code
75 - added several more tests
76 - tests for subtle conflict resolition issues
77 added, but not currently running
80 * Moose::Cookbook::Recipe7
81 - added new recipe for augment/inner functionality
86 - a formal definition of roles (still in progress)
89 - utilities for easier working with Moose classes
90 - added tests for these
93 - This contains Moose specific test functions
94 - added tests for these
96 0.24 Tues. July 3, 2007
97 ~ Some doc updates/cleanup ~
99 * Moose::Meta::Attribute
100 - added support for roles to be given as parameters
101 to the 'handles' option.
102 - added tests and docs for this
103 - the has '+foo' attribute form now accepts changes to
104 the lazy option, and the addition of a handles option
105 (but not changing the handles option)
106 - added tests and docs for this
109 - required methods are now fetched using find_method_by_name
110 so that required methods can come from superclasses
111 - adjusted tests for this
113 0.23 Mon. June 18, 2007
114 * Moose::Meta::Method::Constructor
115 - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
117 - Modify make_immutable to work with the new Class::MOP immutable
118 mechanism + POD + very basic test (groditi)
119 * Moose::Meta::Attribute
120 - Fix handles to use goto() so that caller() comes out properly on
121 the other side (perigrin)
123 0.22 Thurs. May 31, 2007
124 * Moose::Util::TypeConstraints
125 - fix for prototype undeclared issue when Moose::Util::TypeConstraints
126 loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
127 prototypes for functions
128 - added the ClassName type constraint, this checks for strings
129 which will respond true to ->isa(UNIVERSAL).
130 - added tests and docs for this
131 - subtyping just in name now works correctly by making the
132 default for where be { 1 }
133 - added test for this
135 * Moose::Meta::Method::Accessor
136 - coerce and lazy now work together correctly, thanks to
137 merlyn for finding this bug
138 - tests added for this
139 - fix reader presedence bug in Moose::Meta::Attribute + tests
142 - Foo->new(undef) now gets ignored, it is assumed you meant to pass
143 a HASH-ref and missed. This produces better error messages then
144 having it die cause undef is not a HASH.
145 - added tests for this
147 0.21 Thursday, May 2nd, 2007
149 - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
150 - modified unimport to remove super and inner along with the rest
151 - altered unimport tests to handle this
154 - altered super export to populate SUPER_SLOT
157 - altered augment and override modifier application to use *_SLOT
158 - modified tests for these to unimport one test class each to test
161 - fixed issue where custom attribute metaclasses
162 where not handled correctly in roles
163 - added tests for this
166 - fixed issue where extending metaclasses with
167 roles would blow up. Thanks to Aankhen`` for
168 finding this insidious error, and it's solution.
170 ~~ lots of spelling and grammer fixes in the docs,
171 many many thanks to rlb3 and Aankhen for these :)
173 0.20 Friday, April 6th, 2007
174 >> I messed up the SKIP logic in one test
175 so this release is just to fix that.
178 - 'has' now also accepts an ARRAY ref
179 to create multiple attrs (see docs)
180 (thanks to konobi for this)
181 - added tests and docs
183 0.19 Thurs. April 5th, 2007
184 ~~ More documentation updates ~~
186 * Moose::Util::TypeConstraints
187 - 'type' now supports messages as well
188 thanks to phaylon for finding this
189 - added tests for this
190 - added &list_all_type_constraints and
191 &list_all_builtin_type_constraints
192 functions to facilitate introspection.
194 * Moose::Meta::Attribute
195 - fixed regexp 'handles' declarations
196 to build the list of delegated methods
197 correctly (and not override important
198 things like &new) thanks to ashleyb
200 - added tests and docs for this
201 - added the 'documentation' attributes
202 so that you can actually document your
203 attributes and inspect them through the
205 - added tests and docs for this
208 - when loading custom attribute metaclasses
209 it will first look in for the class in the
210 Moose::Meta::Attribute::Custom::$name, and
211 then default to just loading $name.
212 - added tests and docs for this
214 * Moose::Meta::TypeConstraint
215 - type constraints now stringify to their names.
216 - added test for this
219 - added tests to assure we work with Module::Refresh
220 - added stricter test skip logic in the Moose POOP
221 test, ask Rob Kinyon why.
222 - *cough* DBM::Deep 1.0 backwards compatability sucks *cough* ;)
224 0.18 Sat. March 10, 2007
225 ~~ Many, many documentation updates ~~
228 - We now use Class::MOP::load_class to
230 - added tests to show types and subtypes
231 working with Declare::Constraints::Simple
232 and Test::Deep as constraint engines.
235 !! You must have Class::MOP 0.37_001 !!
236 !! for this developer release to work !!
238 This release was primarily adding the immutable
239 feature to Moose. An immutable class is one which
240 you promise not to alter. When you set the class
241 as immutable it will perform various bits of
242 memoization and inline certain part of the code
243 (constructors, destructors and accessors). This
244 minimizes (and in some cases totally eliminates)
245 one of Moose's biggest performance hits. This
246 feature is not on by default, and is 100% optional.
247 It has several configurable bits as well, so you
248 can pick and choose to your specific needs.
250 The changes involved in this were fairly wide and
251 highly specific, but 100% backwards compatible, so
252 I am not going to enumerate them here. If you are
253 truely interested in what was changed, please do
256 0.17 Tues. Nov. 14, 2006
257 * Moose::Meta::Method::Accessor
258 - bugfix for read-only accessors which
259 are have a type constraint and lazy.
260 Thanks to chansen for finding it.
262 0.16 Tues. Nov. 14, 2006
264 There are some speed improvements in this release,
265 but they are only the begining, so stay tuned.
268 - BUILDALL and DEMOLISHALL no longer get
269 called unless they actually need to be.
270 This gave us a signifigant speed boost
271 for the cases when there is no BUILD or
272 DEMOLISH method present.
274 * Moose::Util::TypeConstraints
275 * Moose::Meta::TypeConstraint
276 - added an 'optimize_as' option to the
277 type constraint, which allows for a
278 hand optimized version of the type
279 constraint to be used when possible.
280 - Any internally created type constraints
281 now provide an optimized version as well.
283 0.15 Sun. Nov. 5, 2006
285 This version of Moose *must* have Class::MOP 0.36 in order
286 to work correctly. A number of small internal tweaks have
287 been made in order to be compatible with that release.
289 * Moose::Util::TypeConstraints
290 - added &unimport so that you can clean out
291 your class namespace of these exported
295 - fixed minor issue which occasionally
296 comes up during global destruction
298 - moved Moose::Meta::Method::Overriden into
302 - moved Moose::Meta::Role::Method into
305 * Moose::Meta::Attribute
306 - changed how we do type checks so that
307 we reduce the overall cost, but still
310 - moved accessor generation methods to
311 Moose::Meta::Method::Accessor to
312 conform to the API changes from
315 * Moose::Meta::TypeConstraint
316 - changed how constraints are compiled
317 so that we do less recursion and more
318 iteration. This makes the type check
320 - moved Moose::Meta::TypeConstraint::Union
323 * Moose::Meta::Method::Accessor
324 - created this from methods formerly found in
325 Moose::Meta::Attribute
327 * Moose::Meta::Role::Method
328 - moved this from Moose::Meta::Role
330 * Moose::Meta::Method::Overriden
331 - moved this from Moose::Meta::Class
333 * Moose::Meta::TypeConstraint::Union
334 - moved this from Moose::Meta::TypeConstraint
336 0.14 Mon. Oct. 9, 2006
338 * Moose::Meta::Attribute
339 - fixed lazy attributes which were not getting
340 checked with the type constraint (thanks ashley)
341 - added tests for this
342 - removed the over-enthusiastic DWIMery of the
343 automatic ArrayRef and HashRef defaults, it
344 broke predicates in an ugly way.
345 - removed tests for this
347 0.13 Sat. Sept. 30, 2006
349 This version of Moose *must* have Class::MOP 0.35 in order
350 to work correctly. A number of small internal tweaks have
351 been made in order to be compatible with that release.
354 - Removed the use of UNIVERSAL::require to be a better
355 symbol table citizen and remove a dependency
356 (thanks Adam Kennedy)
358 **~~ removed experimental & undocumented feature ~~**
359 - commented out the 'method' and 'self' keywords, see the
360 comments for more info.
363 - added a FAQ and WTF files to document frequently
364 asked questions and common problems
366 * Moose::Util::TypeConstraints
367 - added GlobRef and FileHandle type constraint
368 - added tests for this
370 * Moose::Meta::Attribute
371 - if your attribute 'isa' ArrayRef of HashRef, and you have
372 not explicitly set a default, then make the default DWIM.
373 This will also work for subtypes of ArrayRef and HashRef
375 - you can now auto-deref subtypes of ArrayRef or HashRef too.
376 - new test added for this (thanks to ashley)
379 - added basic support for runtime role composition
380 but this is still *highly experimental*, so feedback
381 is much appreciated :)
382 - added tests for this
384 * Moose::Meta::TypeConstraint
385 - the type constraint now handles the coercion process
386 through delegation, this is to support the coercion
389 * Moose::Meta::TypeConstraint::Union
390 - it is now possible for coercions to be performed
392 - added tests for this (thanks to konobi)
394 * Moose::Meta::TypeCoercion
395 - properly capturing error when type constraint
399 - Scalar::Util 1.18 is bad on Win32, so temporarily
400 only require version 1.17 for Win32 and cygwin.
401 (thanks Adam Kennedy)
403 0.12 Sat. Sept. 1, 2006
405 - Recipe5 (subtypes & coercion) has been written
408 - fixed "bad meta" error message to be more descriptive
409 - fixed &unimport to not remove the &inner and &super
410 keywords because we need to localize them.
411 - fixed number of spelling/grammer issues, thanks Theory :)
413 **~~ experimental & undocumented feature ~~**
414 - added the method and self keywords, they are basically
415 just sugar, and they may not stay around.
418 - added &dump method to easily Data::Dumper
421 * Moose::Meta::TypeConstraint
422 - added the &is_a_type_of method to check both the current
423 and the subtype of a method (similar to &isa with classes)
426 - this is now a subclass of Class::MOP::Module, and no longer
427 creates the _role_meta ugliness of before.
428 - fixed tests to reflect this change
430 0.11 Wed. July 12, 2006
432 - added an &unimport method to remove all the keywords
433 that Moose will import, simply add 'no Moose' to the
434 bottom of your class file.
437 - fixed some test failures caused by a forgotten test
440 0.10 Thurs. July 6, 2006
442 - improved error message when loading modules so
443 it is less confusing when you load a role.
444 - added &calculate_all_roles method to
445 Moose::Meta::Class and Moose::Meta::Role
448 This module has been tested against Class::MOP 0.30
449 but it does not yet utilize the optimizations
450 it makes available. Stay tuned for that ;)
452 0.09_03 Fri. June 23, 2006
453 ++ DEVELOPER RELEASE ++
455 - 'use strict' and 'use warnings' are no longer
456 needed in Moose classes, Moose itself will
457 turn them on for you.
458 - added tests for this
459 - moved code from exported subs to private methods
460 in Moose::Meta::Class
463 - as with Moose, strict and warnings are
464 automatically turned on for you.
465 - added tests for this
468 - now handles an edge case for override errors
469 - added tests for this
470 - added some more edge case tests
472 0.09_02 Tues. May 16, 2006
473 ++ DEVELOPER RELEASE ++
475 - added prototypes to the exported subs
479 - added prototypes to the exported subs
482 * Moose::Util::TypeConstraints
483 - cleaned up prototypes for the subs
486 0.09_01 Fri. May 12, 2006
487 ++ DEVELOPER RELEASE ++
488 - This release works in combination with
489 Class::MOP 0.29_01, it is a developer
490 release because it uses the a new
491 instance sub-protocol and a fairly
492 complete Role implementation. It has
493 not yet been optimized, so it slower
494 the the previous CPAN version. This
495 release also lacks good updated docs,
496 the official release will have updated docs.
499 - refactored the keyword exports
500 - 'with' now checks Role validaity and
501 accepts more than one Role at a time
502 - 'extends' makes metaclass adjustments as
503 needed to ensure metaclass compatability
506 - refactored the keyword exports
507 - 'with' now checks Role validaity and
508 accepts more than one Role at a time
510 * Moose::Util::TypeConstraints
511 - added the 'enum' keyword for simple
512 string enumerations which can be used as
514 - see example of usage in t/202_example.t
517 - more careful checking of params to new()
520 - much work done on the role composition
521 - many new tests for conflict detection
522 and composition edge cases
523 - not enough documentation, I suggest
526 * Moose::Meta::Instance
527 - added new Instance metaclass to support
528 the new Class::MOP instance protocol
531 - some small changes to support the new
533 - some small additions to support Roles
535 * Moose::Meta::Attribute
536 - some improvements to the accessor generation code
538 - some small changes to support the new
540 - (still somewhat) experimental delegation support
541 with the 'handles' option
542 - added several tests for this
543 - no docs for this yet
545 0.05 Thurs. April 27, 2006
547 - keywords are now exported with Sub::Exporter
548 thanks to chansen for this commit
549 - has keyword now takes a 'metaclass' option
550 to support custom attribute meta-classes
551 on a per-attribute basis
552 - added tests for this
553 - the 'has' keyword not accepts inherited slot
554 specifications (has '+foo'). This is still an
555 experimental feature and probably not finished
556 see t/038_attribute_inherited_slot_specs.t for
557 more details, or ask about it on #moose
558 - added tests for this
561 - keywords are now exported with Sub::Exporter
563 * Moose::Utils::TypeConstraints
564 - reorganized the type constraint hierarchy, thanks
565 to nothingmuch and chansen for his help and advice
567 - added some tests for this
568 - keywords are now exported with Sub::Exporter
569 thanks to chansen for this commit
572 - due to changes in Class::MOP, we had to change
573 construct_instance (for the better)
575 * Moose::Meta::Attribute
576 - due to changes in Class::MOP, we had to add the
577 initialize_instance_slot method (it's a good thing)
579 * Moose::Meta::TypeConstraint
580 - added type constraint unions
581 - added tests for this
582 - added the is_subtype_of predicate method
583 - added tests for this
585 0.04 Sun. April 16th, 2006
587 - Roles can now consume other roles
588 - added tests for this
589 - Roles can specify required methods now with
590 the requires() keyword
591 - added tests for this
594 - ripped out much of it's guts ,.. much cleaner now
595 - added required methods and correct handling of
596 them in apply() for both classes and roles
597 - added tests for this
598 - no longer adds a does() method to consuming classes
599 it relys on the one in Moose::Object
600 - added roles attribute and some methods to support
601 roles consuming roles
603 * Moose::Meta::Attribute
604 - added support for triggers on attributes
605 - added tests for this
606 - added support for does option on an attribute
607 - added tests for this
610 - added support for attribute triggers in the
612 - added tests for this
615 - Moose no longer creates a subtype for your class
616 if a subtype of the same name already exists, this
617 should DWIM in 99.9999% of all cases
619 * Moose::Util::TypeConstraints
620 - fixed bug where incorrect subtype conflicts were
622 - added test for this
625 - this class can now be extended with 'use base' if
626 you need it, it properly loads the metaclass class now
627 - added test for this
629 0.03_02 Wed. April 12, 2006
631 - you must now explictly use Moose::Util::TypeConstraints
632 it no longer gets exported for you automatically
635 - new() now accepts hash-refs as well as key/value lists
636 - added does() method to check for Roles
637 - added tests for this
640 - added roles attribute along with the add_role() and
642 - added tests for this
645 - now adds a does() method to consuming classes
646 which tests the class's hierarchy for roles
647 - added tests for this
649 0.03_01 Mon. April 10, 2006
651 - added new Role recipe (no content yet, only code)
654 - added 'with' keyword for Role support
655 - added test and docs for this
656 - fixed subtype quoting bug
657 - added test for this
661 - added test and docs
663 * Moose::Util::TypeConstraints
664 - added the message keyword to add custom
665 error messages to type constraints
668 - the meta role to support Moose::Role
669 - added tests and docs
672 - moved a number of things from Moose.pm
673 to here, they should have been here
676 * Moose::Meta::Attribute
677 - moved the attribute option macros here
678 instead of putting them in Moose.pm
680 * Moose::Meta::TypeConstraint
681 - added the message attributes and the
683 - added tests and docs for this
685 0.03 Thurs. March 30, 2006
687 - added the Moose::Cookbook with 5 recipes,
688 describing all the stuff Moose can do.
691 - fixed an issue with &extends super class loading
692 it now captures errors and deals with inline
693 packages correctly (bug found by mst, solution
695 - added super/override & inner/augment features
696 - added tests and docs for these
699 - BUILDALL now takes a reference of the %params
700 that are passed to &new, and passes that to
703 * Moose::Util::TypeConstraints
704 - Type constraints now survive runtime reloading
705 - added test for this
708 - fixed the way attribute defaults are handled
709 during instance construction (bug found by chansen)
711 * Moose::Meta::Attribute
712 - read-only attributes now actually enforce their
713 read-only-ness (this corrected in Class::MOP as
716 0.02 Tues. March 21, 2006
718 - many more tests, fixing some bugs and
720 - &extends now loads the base module with
722 - added UNIVERSAL::require to the
725 - each new Moose class will also create
726 and register a subtype of Object which
727 correspond to the new Moose class.
728 - the 'isa' option in &has now only
729 accepts strings, and will DWIM in
732 * Moose::Util::TypeConstraints
733 - added type coercion features
734 - added tests for this
735 - added support for this in attributes
736 and instance construction
738 - type construction no longer creates a
739 function, it registers the type instead.
740 - added several functions to get the
744 - BUILDALL and DEMOLISHALL were broken
745 because of a mis-named hash key, Whoops :)
747 * Moose::Meta::Attribute
748 - adding support for coercion in the
749 autogenerated accessors
752 - adding support for coercion in the
753 instance construction
755 * Moose::Meta::TypeConstraint
756 * Moose::Meta::TypeCoercion
757 - type constraints and coercions are now
758 full fledges meta-objects
760 0.01 Wed. March 15, 2006
761 - Moooooooooooooooooose!!!