1 Revision history for Perl extension Moose
4 * Moose::Meta::Attribute
5 - required attributes now will no longer accept undef
6 from the constructor, even if there is a default and lazy
8 - default subroutines must return a value which passes the
10 - added tests for this
13 - massive refactoring of this code
14 - added serveral more tests
15 - tests for subtle conflict resolition bugs (thanks to kolibre)
18 - (Docs) referenced Moose::Util::TypeConstraints under 'isa' in 'has'
19 for how to define a new type.
21 0.24 Tues. July 3, 2007
22 ~ Some doc updates/cleanup ~
24 * Moose::Meta::Attribute
25 - added support for roles to be given as parameters
26 to the 'handles' option.
27 - added tests and docs for this
28 - the has '+foo' attribute form now accepts changes to
29 the lazy option, and the addition of a handles option
30 (but not changing the handles option)
31 - added tests and docs for this
34 - required methods are now fetched using find_method_by_name
35 so that required methods can come from superclasses
36 - adjusted tests for this
38 0.23 Mon. June 18, 2007
39 * Moose::Meta::Method::Constructor
40 - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
42 - Modify make_immutable to work with the new Class::MOP immutable
43 mechanism + POD + very basic test (groditi)
44 * Moose::Meta::Attribute
45 - Fix handles to use goto() so that caller() comes out properly on
46 the other side (perigrin)
48 0.22 Thurs. May 31, 2007
49 * Moose::Util::TypeConstraints
50 - fix for prototype undeclared issue when Moose::Util::TypeConstraints
51 loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
52 prototypes for functions
53 - added the ClassName type constraint, this checks for strings
54 which will respond true to ->isa(UNIVERSAL).
55 - added tests and docs for this
56 - subtyping just in name now works correctly by making the
57 default for where be { 1 }
60 * Moose::Meta::Method::Accessor
61 - coerce and lazy now work together correctly, thanks to
62 merlyn for finding this bug
63 - tests added for this
64 - fix reader presedence bug in Moose::Meta::Attribute + tests
67 - Foo->new(undef) now gets ignored, it is assumed you meant to pass
68 a HASH-ref and missed. This produces better error messages then
69 having it die cause undef is not a HASH.
70 - added tests for this
72 0.21 Thursday, May 2nd, 2007
74 - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
75 - modified unimport to remove super and inner along with the rest
76 - altered unimport tests to handle this
79 - altered super export to populate SUPER_SLOT
82 - altered augment and override modifier application to use *_SLOT
83 - modified tests for these to unimport one test class each to test
86 - fixed issue where custom attribute metaclasses
87 where not handled correctly in roles
88 - added tests for this
91 - fixed issue where extending metaclasses with
92 roles would blow up. Thanks to Aankhen`` for
93 finding this insidious error, and it's solution.
95 ~~ lots of spelling and grammer fixes in the docs,
96 many many thanks to rlb3 and Aankhen for these :)
98 0.20 Friday, April 6th, 2007
99 >> I messed up the SKIP logic in one test
100 so this release is just to fix that.
103 - 'has' now also accepts an ARRAY ref
104 to create multiple attrs (see docs)
105 (thanks to konobi for this)
106 - added tests and docs
108 0.19 Thurs. April 5th, 2007
109 ~~ More documentation updates ~~
111 * Moose::Util::TypeConstraints
112 - 'type' now supports messages as well
113 thanks to phaylon for finding this
114 - added tests for this
115 - added &list_all_type_constraints and
116 &list_all_builtin_type_constraints
117 functions to facilitate introspection.
119 * Moose::Meta::Attribute
120 - fixed regexp 'handles' declarations
121 to build the list of delegated methods
122 correctly (and not override important
123 things like &new) thanks to ashleyb
125 - added tests and docs for this
126 - added the 'documentation' attributes
127 so that you can actually document your
128 attributes and inspect them through the
130 - added tests and docs for this
133 - when loading custom attribute metaclasses
134 it will first look in for the class in the
135 Moose::Meta::Attribute::Custom::$name, and
136 then default to just loading $name.
137 - added tests and docs for this
139 * Moose::Meta::TypeConstraint
140 - type constraints now stringify to their names.
141 - added test for this
144 - added tests to assure we work with Module::Refresh
145 - added stricter test skip logic in the Moose POOP
146 test, ask Rob Kinyon why.
147 - *cough* DBM::Deep 1.0 backwards compatability sucks *cough* ;)
149 0.18 Sat. March 10, 2007
150 ~~ Many, many documentation updates ~~
153 - We now use Class::MOP::load_class to
155 - added tests to show types and subtypes
156 working with Declare::Constraints::Simple
157 and Test::Deep as constraint engines.
160 !! You must have Class::MOP 0.37_001 !!
161 !! for this developer release to work !!
163 This release was primarily adding the immutable
164 feature to Moose. An immutable class is one which
165 you promise not to alter. When you set the class
166 as immutable it will perform various bits of
167 memoization and inline certain part of the code
168 (constructors, destructors and accessors). This
169 minimizes (and in some cases totally eliminates)
170 one of Moose's biggest performance hits. This
171 feature is not on by default, and is 100% optional.
172 It has several configurable bits as well, so you
173 can pick and choose to your specific needs.
175 The changes involved in this were fairly wide and
176 highly specific, but 100% backwards compatible, so
177 I am not going to enumerate them here. If you are
178 truely interested in what was changed, please do
181 0.17 Tues. Nov. 14, 2006
182 * Moose::Meta::Method::Accessor
183 - bugfix for read-only accessors which
184 are have a type constraint and lazy.
185 Thanks to chansen for finding it.
187 0.16 Tues. Nov. 14, 2006
189 There are some speed improvements in this release,
190 but they are only the begining, so stay tuned.
193 - BUILDALL and DEMOLISHALL no longer get
194 called unless they actually need to be.
195 This gave us a signifigant speed boost
196 for the cases when there is no BUILD or
197 DEMOLISH method present.
199 * Moose::Util::TypeConstraints
200 * Moose::Meta::TypeConstraint
201 - added an 'optimize_as' option to the
202 type constraint, which allows for a
203 hand optimized version of the type
204 constraint to be used when possible.
205 - Any internally created type constraints
206 now provide an optimized version as well.
208 0.15 Sun. Nov. 5, 2006
210 This version of Moose *must* have Class::MOP 0.36 in order
211 to work correctly. A number of small internal tweaks have
212 been made in order to be compatible with that release.
214 * Moose::Util::TypeConstraints
215 - added &unimport so that you can clean out
216 your class namespace of these exported
220 - fixed minor issue which occasionally
221 comes up during global destruction
223 - moved Moose::Meta::Method::Overriden into
227 - moved Moose::Meta::Role::Method into
230 * Moose::Meta::Attribute
231 - changed how we do type checks so that
232 we reduce the overall cost, but still
235 - moved accessor generation methods to
236 Moose::Meta::Method::Accessor to
237 conform to the API changes from
240 * Moose::Meta::TypeConstraint
241 - changed how constraints are compiled
242 so that we do less recursion and more
243 iteration. This makes the type check
245 - moved Moose::Meta::TypeConstraint::Union
248 * Moose::Meta::Method::Accessor
249 - created this from methods formerly found in
250 Moose::Meta::Attribute
252 * Moose::Meta::Role::Method
253 - moved this from Moose::Meta::Role
255 * Moose::Meta::Method::Overriden
256 - moved this from Moose::Meta::Class
258 * Moose::Meta::TypeConstraint::Union
259 - moved this from Moose::Meta::TypeConstraint
261 0.14 Mon. Oct. 9, 2006
263 * Moose::Meta::Attribute
264 - fixed lazy attributes which were not getting
265 checked with the type constraint (thanks ashley)
266 - added tests for this
267 - removed the over-enthusiastic DWIMery of the
268 automatic ArrayRef and HashRef defaults, it
269 broke predicates in an ugly way.
270 - removed tests for this
272 0.13 Sat. Sept. 30, 2006
274 This version of Moose *must* have Class::MOP 0.35 in order
275 to work correctly. A number of small internal tweaks have
276 been made in order to be compatible with that release.
279 - Removed the use of UNIVERSAL::require to be a better
280 symbol table citizen and remove a dependency
281 (thanks Adam Kennedy)
283 **~~ removed experimental & undocumented feature ~~**
284 - commented out the 'method' and 'self' keywords, see the
285 comments for more info.
288 - added a FAQ and WTF files to document frequently
289 asked questions and common problems
291 * Moose::Util::TypeConstraints
292 - added GlobRef and FileHandle type constraint
293 - added tests for this
295 * Moose::Meta::Attribute
296 - if your attribute 'isa' ArrayRef of HashRef, and you have
297 not explicitly set a default, then make the default DWIM.
298 This will also work for subtypes of ArrayRef and HashRef
300 - you can now auto-deref subtypes of ArrayRef or HashRef too.
301 - new test added for this (thanks to ashley)
304 - added basic support for runtime role composition
305 but this is still *highly experimental*, so feedback
306 is much appreciated :)
307 - added tests for this
309 * Moose::Meta::TypeConstraint
310 - the type constraint now handles the coercion process
311 through delegation, this is to support the coercion
314 * Moose::Meta::TypeConstraint::Union
315 - it is now possible for coercions to be performed
317 - added tests for this (thanks to konobi)
319 * Moose::Meta::TypeCoercion
320 - properly capturing error when type constraint
324 - Scalar::Util 1.18 is bad on Win32, so temporarily
325 only require version 1.17 for Win32 and cygwin.
326 (thanks Adam Kennedy)
328 0.12 Sat. Sept. 1, 2006
330 - Recipe5 (subtypes & coercion) has been written
333 - fixed "bad meta" error message to be more descriptive
334 - fixed &unimport to not remove the &inner and &super
335 keywords because we need to localize them.
336 - fixed number of spelling/grammer issues, thanks Theory :)
338 **~~ experimental & undocumented feature ~~**
339 - added the method and self keywords, they are basically
340 just sugar, and they may not stay around.
343 - added &dump method to easily Data::Dumper
346 * Moose::Meta::TypeConstraint
347 - added the &is_a_type_of method to check both the current
348 and the subtype of a method (similar to &isa with classes)
351 - this is now a subclass of Class::MOP::Module, and no longer
352 creates the _role_meta ugliness of before.
353 - fixed tests to reflect this change
355 0.11 Wed. July 12, 2006
357 - added an &unimport method to remove all the keywords
358 that Moose will import, simply add 'no Moose' to the
359 bottom of your class file.
362 - fixed some test failures caused by a forgotten test
365 0.10 Thurs. July 6, 2006
367 - improved error message when loading modules so
368 it is less confusing when you load a role.
369 - added &calculate_all_roles method to
370 Moose::Meta::Class and Moose::Meta::Role
373 This module has been tested against Class::MOP 0.30
374 but it does not yet utilize the optimizations
375 it makes available. Stay tuned for that ;)
377 0.09_03 Fri. June 23, 2006
378 ++ DEVELOPER RELEASE ++
380 - 'use strict' and 'use warnings' are no longer
381 needed in Moose classes, Moose itself will
382 turn them on for you.
383 - added tests for this
384 - moved code from exported subs to private methods
385 in Moose::Meta::Class
388 - as with Moose, strict and warnings are
389 automatically turned on for you.
390 - added tests for this
393 - now handles an edge case for override errors
394 - added tests for this
395 - added some more edge case tests
397 0.09_02 Tues. May 16, 2006
398 ++ DEVELOPER RELEASE ++
400 - added prototypes to the exported subs
404 - added prototypes to the exported subs
407 * Moose::Util::TypeConstraints
408 - cleaned up prototypes for the subs
411 0.09_01 Fri. May 12, 2006
412 ++ DEVELOPER RELEASE ++
413 - This release works in combination with
414 Class::MOP 0.29_01, it is a developer
415 release because it uses the a new
416 instance sub-protocol and a fairly
417 complete Role implementation. It has
418 not yet been optimized, so it slower
419 the the previous CPAN version. This
420 release also lacks good updated docs,
421 the official release will have updated docs.
424 - refactored the keyword exports
425 - 'with' now checks Role validaity and
426 accepts more than one Role at a time
427 - 'extends' makes metaclass adjustments as
428 needed to ensure metaclass compatability
431 - refactored the keyword exports
432 - 'with' now checks Role validaity and
433 accepts more than one Role at a time
435 * Moose::Util::TypeConstraints
436 - added the 'enum' keyword for simple
437 string enumerations which can be used as
439 - see example of usage in t/202_example.t
442 - more careful checking of params to new()
445 - much work done on the role composition
446 - many new tests for conflict detection
447 and composition edge cases
448 - not enough documentation, I suggest
451 * Moose::Meta::Instance
452 - added new Instance metaclass to support
453 the new Class::MOP instance protocol
456 - some small changes to support the new
458 - some small additions to support Roles
460 * Moose::Meta::Attribute
461 - some improvements to the accessor generation code
463 - some small changes to support the new
465 - (still somewhat) experimental delegation support
466 with the 'handles' option
467 - added several tests for this
468 - no docs for this yet
470 0.05 Thurs. April 27, 2006
472 - keywords are now exported with Sub::Exporter
473 thanks to chansen for this commit
474 - has keyword now takes a 'metaclass' option
475 to support custom attribute meta-classes
476 on a per-attribute basis
477 - added tests for this
478 - the 'has' keyword not accepts inherited slot
479 specifications (has '+foo'). This is still an
480 experimental feature and probably not finished
481 see t/038_attribute_inherited_slot_specs.t for
482 more details, or ask about it on #moose
483 - added tests for this
486 - keywords are now exported with Sub::Exporter
488 * Moose::Utils::TypeConstraints
489 - reorganized the type constraint hierarchy, thanks
490 to nothingmuch and chansen for his help and advice
492 - added some tests for this
493 - keywords are now exported with Sub::Exporter
494 thanks to chansen for this commit
497 - due to changes in Class::MOP, we had to change
498 construct_instance (for the better)
500 * Moose::Meta::Attribute
501 - due to changes in Class::MOP, we had to add the
502 initialize_instance_slot method (it's a good thing)
504 * Moose::Meta::TypeConstraint
505 - added type constraint unions
506 - added tests for this
507 - added the is_subtype_of predicate method
508 - added tests for this
510 0.04 Sun. April 16th, 2006
512 - Roles can now consume other roles
513 - added tests for this
514 - Roles can specify required methods now with
515 the requires() keyword
516 - added tests for this
519 - ripped out much of it's guts ,.. much cleaner now
520 - added required methods and correct handling of
521 them in apply() for both classes and roles
522 - added tests for this
523 - no longer adds a does() method to consuming classes
524 it relys on the one in Moose::Object
525 - added roles attribute and some methods to support
526 roles consuming roles
528 * Moose::Meta::Attribute
529 - added support for triggers on attributes
530 - added tests for this
531 - added support for does option on an attribute
532 - added tests for this
535 - added support for attribute triggers in the
537 - added tests for this
540 - Moose no longer creates a subtype for your class
541 if a subtype of the same name already exists, this
542 should DWIM in 99.9999% of all cases
544 * Moose::Util::TypeConstraints
545 - fixed bug where incorrect subtype conflicts were
547 - added test for this
550 - this class can now be extended with 'use base' if
551 you need it, it properly loads the metaclass class now
552 - added test for this
554 0.03_02 Wed. April 12, 2006
556 - you must now explictly use Moose::Util::TypeConstraints
557 it no longer gets exported for you automatically
560 - new() now accepts hash-refs as well as key/value lists
561 - added does() method to check for Roles
562 - added tests for this
565 - added roles attribute along with the add_role() and
567 - added tests for this
570 - now adds a does() method to consuming classes
571 which tests the class's hierarchy for roles
572 - added tests for this
574 0.03_01 Mon. April 10, 2006
576 - added new Role recipe (no content yet, only code)
579 - added 'with' keyword for Role support
580 - added test and docs for this
581 - fixed subtype quoting bug
582 - added test for this
586 - added test and docs
588 * Moose::Util::TypeConstraints
589 - added the message keyword to add custom
590 error messages to type constraints
593 - the meta role to support Moose::Role
594 - added tests and docs
597 - moved a number of things from Moose.pm
598 to here, they should have been here
601 * Moose::Meta::Attribute
602 - moved the attribute option macros here
603 instead of putting them in Moose.pm
605 * Moose::Meta::TypeConstraint
606 - added the message attributes and the
608 - added tests and docs for this
610 0.03 Thurs. March 30, 2006
612 - added the Moose::Cookbook with 5 recipes,
613 describing all the stuff Moose can do.
616 - fixed an issue with &extends super class loading
617 it now captures errors and deals with inline
618 packages correctly (bug found by mst, solution
620 - added super/override & inner/augment features
621 - added tests and docs for these
624 - BUILDALL now takes a reference of the %params
625 that are passed to &new, and passes that to
628 * Moose::Util::TypeConstraints
629 - Type constraints now survive runtime reloading
630 - added test for this
633 - fixed the way attribute defaults are handled
634 during instance construction (bug found by chansen)
636 * Moose::Meta::Attribute
637 - read-only attributes now actually enforce their
638 read-only-ness (this corrected in Class::MOP as
641 0.02 Tues. March 21, 2006
643 - many more tests, fixing some bugs and
645 - &extends now loads the base module with
647 - added UNIVERSAL::require to the
650 - each new Moose class will also create
651 and register a subtype of Object which
652 correspond to the new Moose class.
653 - the 'isa' option in &has now only
654 accepts strings, and will DWIM in
657 * Moose::Util::TypeConstraints
658 - added type coercion features
659 - added tests for this
660 - added support for this in attributes
661 and instance construction
663 - type construction no longer creates a
664 function, it registers the type instead.
665 - added several functions to get the
669 - BUILDALL and DEMOLISHALL were broken
670 because of a mis-named hash key, Whoops :)
672 * Moose::Meta::Attribute
673 - adding support for coercion in the
674 autogenerated accessors
677 - adding support for coercion in the
678 instance construction
680 * Moose::Meta::TypeConstraint
681 * Moose::Meta::TypeCoercion
682 - type constraints and coercions are now
683 full fledges meta-objects
685 0.01 Wed. March 15, 2006
686 - Moooooooooooooooooose!!!