0.46
[gitmo/Moose.git] / Changes
CommitLineData
e522431d 1Revision history for Perl extension Moose
2
bd364604 30.46 Wed. May 28, 2008
4 !! This version now approx. 20-25% !!
5 !! faster with new Class::MOP 0.57 !!
6
7 * Moose::Meta::Class
8 - some optimizations of the &initialize method
9 since it is called so often by &meta
10
0addec44 11 * Moose::Meta::Class
12 Moose::Meta::Role
13 - now use the get_all_package_symbols from the
14 updated Class::MOP, test suite is now 10 seconds
15 faster
d3308256 16
17 * Moose::Meta::Method::Destructor
bd364604 18 - is_needed can now also be called as a class
19 method for immutablization to check if the
20 destructor object even needs to be created
21 at all
22
23 * Moose::Meta::Method::Destructor
d3308256 24 Moose::Meta::Method::Constructor
25 - added more descriptive error message to help
26 keep people from wasting time tracking an error
27 that is easily fixed by upgrading.
0addec44 28
c998012c 290.45 Saturday, May 24, 2008
1b2aea39 30 * Moose
31 - Because of work in Class::MOP 0.56, all
32 XS based functionality is now optional
33 and a Pure Perl version is supplied
34 - the CLASS_MOP_NO_XS environment variable
35 can now be used to force non-XS versions
36 to always be used
37 - several of the packages have been tweaked
38 to take care of this, mostly we added
39 support for the package_name and name
40 variables in all the Method metaclasses
408f2665 41 - before/around/after method modifiers now
42 support regexp matching of names
43 (thanks to Takatoshi Kitano)
44 - tests added for this
088f372b 45 - NOTE: this only works for classes, it
46 is currently not supported in roles,
47 but, ... patches welcome
b8926b8c 48 - All usage of Carp::confess have been replaced
49 by Carp::croak in the "keyword" functions since
50 the stack trace is usually not helpful
51
52 * Moose::Role
53 - All usage of Carp::confess have been replaced
54 by Carp::croak in the "keyword" functions since
55 the stack trace is usually not helpful
56 - The 'has' keyword for roles now accepts the
57 same array ref form that Moose.pm does
58 (has [qw/foo bar/] => (is => 'rw', ...))
59 - added test for this
60
0b7df53c 61 * Moose::Meta::Attribute
62 - trigger on a ro-attribute is no longer an
63 error, as it's useful to trigger off of the
64 constructor
65
8453c358 66 * Moose::Meta::Class
67 - added same 'add_package_symbol' fix as in
68 Class::MOP 0.56
69
70 * Moose::Util
71 - does_role now handles non-Moose classes
72 more gracefully
73 - added tests for this
408f2665 74 - added the 'add_method_modifier' function
75 (thanks to Takatoshi Kitano)
8453c358 76
a84a89ba 77 * Moose::Util::TypeConstraints
78 - subtypes of parameterizable types now are
79 themselves parameterizable types
80
1b55c340 81 * Moose::Meta::Method::Constructor
82 - fixed bug where trigger was not being
83 called by the inlined immutable
84 constructors
85 - added test for this (thanks to Caelum)
86
87 * Moose::Meta::Role::Application::ToInstance
88 - now uses the metaclass of the instance
89 (if possible) to create the anon-class
90 (thanks Jonathan Rockway)
91
b8926b8c 92 * Moose::Cookbook::Recipe22
93 - added the meta-attribute trait recipe
94 (thanks to Sartak)
95
1b55c340 96 * t/
97 - fixed hash-ordering test bug that was
b8926b8c 98 causing occasional cpantester failures
99 - renamed the t/000_recipe/*.t tests to be
100 more descriptive (thanks to Sartak)
1b55c340 101
3a0c064a 1020.44 Sat. May 10, 2008
c0b37457 103 * Moose
3a0c064a 104 - made make_immutable warning cluck to
ca0e380d 105 show where the error is (thanks mst)
3a0c064a 106
107 * Moose::Object
108 - BUILDALL and DEMOLISHALL now call
109 ->body when looping through the
110 methods, to avoid the overloaded
111 method call.
ca0e380d 112 - fixed issue where DEMOLISHALL was
113 eating the $@ values, and so not
114 working correctly, it still kind of
115 eats them, but so does vanilla perl
116 - added tests for this
3a0c064a 117
ceb8945d 118 * Moose::Cookbook::Recipe7
3a0c064a 119 - added new recipe for immutable
120 functionality (thanks Dave Rolsky)
121
ceb8945d 122 * Moose::Cookbook::Recipe9
3a0c064a 123 - added new recipe for builder and
124 lazy_build (thanks Dave Rolsky)
125
37332f31 126 * Moose::Cookbook::Recipe11
3a0c064a 127 - added new recipe for method aliasing
128 and exclusion with Roles (thanks Dave Rolsky)
129
130 * t/
ca0e380d 131 - fixed Win32 test failure (thanks spicyjack)
ceb8945d 132
1a28289d 133 ~ removed Build.PL and Module::Build compat
134 since Module::Install has done that.
135
27cabcda 1360.43 Wed. April, 30, 2008
cbd141ca 137 * NOTE TO SELF:
138 drink more coffee before
139 doing release engineering
140
141 - whoops, forgot to do the smolder tests,
142 and we broke some of the custom meta-attr
143 modules. This fixes that.
144
c93e8e7d 1450.42 Mon. April 28, 2008
146 - some bad tests slipped by, nothing else
147 changed in this release (cpantesters++)
148
149 - upped the Class::MOP dependency to 0.55
150 since we have tests which need the C3
151 support
152
a5e883ae 1530.41 Mon. April 28, 2008
004222dc 154 ~~ numerous documentation updates ~~
547dda77 155
156 - Changed all usage of die to Carp::croak for better
157 error reporting (initial patch by Tod Hagan)
004222dc 158
c2922d69 159 ** IMPORTANT NOTE **
160 - the make_immutable keyword is now deprecated, don't
161 use it in any new code and please fix your old code
162 as well. There will be 2 releases, and then it will
163 be removed.
164
6c36eeaa 165 * Moose
166 Moose::Role
167 Moose::Meta::Class
168 - refactored the way inner and super work to avoid
169 any method/@ISA cache penalty (nothingmuch)
170
4078709c 171 * Moose::Meta::Class
172 - fixing &new_object to make sure trigger gets the
173 coerced value (spotted by Charles Alderman on the
174 mailing list)
175 - added test for this
176
51c107ef 177 * Moose::Meta::Method::Constructor
178 - immutable classes which had non-lazy attributes were calling
179 the default generating sub twice in the constructor. (bug
180 found by Jesse Luehrs, fixed by Dave Rolsky)
181 - added tests for this (Dave Rolsky)
ae8d63f2 182 - fix typo in initialize_body method (nothingmuch)
183
184 * Moose::Meta::Method::Destructor
185 - fix typo in initialize_body method (nothingmuch)
51c107ef 186
6c36eeaa 187 * Moose::Meta::Method::Overriden
188 Moose::Meta::Method::Augmented
189 - moved the logic for these into their own
190 classes (nothingmuch)
191
5e98d2b6 192 * Moose::Meta::Attribute
aed87761 193 - inherited attributes may now be extended without
2ea379cb 194 restriction on the type ('isa', 'does') (Sartak)
cf12a691 195 - added tests for this (Sartak)
547dda77 196 - when an attribute property is malformed (such as lazy without
197 a default), give the name of the attribute in the error
198 message (Sartak)
88f23977 199 - added the &applied_traits and &has_applied_traits methods
200 to allow introspection of traits
201 - added tests for this
37905a64 202 - moved 'trait' and 'metaclass' argument handling to here from
203 Moose::Meta::Class
204 - clone_and_inherit_options now handles 'trait' and 'metaclass' (has
205 '+foo' syntax) (nothingmuch)
206 - added tests for this (t0m)
7c60f730 207
208 * Moose::Object
209 - localize $@ inside DEMOLISHALL to avoid it
210 eating $@ (found by Ernesto)
211 - added test for this (thanks to Ernesto)
cf12a691 212
ae8d63f2 213 * Moose::Util::TypeConstraints
214 - &find_type_constraint now DWIMs when given an
6c36eeaa 215 type constraint object or name (nothingmuch)
37905a64 216 - &find_or_create_type_constraint superseded with a number of more
217 specific functions:
218 - find_or_create_{isa,does}_type_constraint
219 - find_or_parse_type_constraint
ae8d63f2 220
221 * Moose::Meta::TypeConstraint
4078709c 222 Moose::Meta::TypeConstraint::Class
37905a64 223 Moose::Meta::TypeConstraint::Role
4078709c 224 Moose::Meta::TypeConstraint::Enum
225 Moose::Meta::TypeConstraint::Union
226 Moose::Meta::TypeConstraint::Parameterized
227 - added the &equals method for comparing two type
228 constraints (nothingmuch)
229 - added tests for this (nothingmuch)
230
231 * Moose::Meta::TypeConstraint
ae8d63f2 232 - add the &parents method, which is just an alias to &parent.
37905a64 233 Useful for polymorphism with TC::{Class,Role,Union} (nothingmuch)
ae8d63f2 234
235 * Moose::Meta::TypeConstraint::Class
ae8d63f2 236 - added the class attribute for introspection purposes
237 (nothingmuch)
238 - added tests for this
4078709c 239
240 * Moose::Meta::TypeConstraint::Enum
6c36eeaa 241 Moose::Meta::TypeConstraint::Role
37905a64 242 - broke these out into their own classes (nothingmuch)
ae8d63f2 243
244 * Moose::Cookbook::Recipe*
245 - fixed references to test file locations in the POD
246 and updated up some text for new Moose features
37905a64 247 (Sartak)
248
249 * Moose::Util
250 - Added &resolve_metaclass_alias, a helper function for finding an actual
251 class for a short name (e.g. in the traits list)
ae8d63f2 252
52338af5 2530.40 Fri. March 14, 2008
6e2840b7 254 - I hate Pod::Coverage
255
e0328ed4 2560.39 Fri. March 14, 2008
8d62bf6d 257 * Moose
258 - documenting the use of '+name' with attributes
259 that come from recently composed roles. It makes
260 sense, people are using it, and so why not just
261 officially support it.
9c10b5ad 262 - fixing the 'extends' keyword so that it will not
263 trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
94075501 264
1321f087 265 * oose
266 - added the perl -Moose=+Class::Name feature to allow
267 monkeypatching of classes in one liners
268
9c10b5ad 269 * Moose::Util
270 - fixing the 'apply_all_roles' keyword so that it will not
271 trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
8d62bf6d 272
48045612 273 * Moose::Meta::Class
274 - added ->create method which now supports roles (thanks to jrockway)
275 - added tests for this
6d5cbd2b 276 - added ->create_anon_class which now supports roles and caching of
277 the results (thanks to jrockway)
278 - added tests for this
81c3738f 279 - made ->does_role a little more forgiving when it is
280 checking a Class::MOP era metaclasses.
48045612 281
94075501 282 * Moose::Meta::Role::Application::ToInstance
283 - it is now possible to pass extra params to be used when
284 a role is applied to an the instance (rebless_params)
285 - added tests for this
286
9f4334a1 287 * Moose::Util::TypeConstraints
4ab662d6 288 - class_type now accepts an optional second argument for a
289 custom message. POD anotated accordingly (groditi)
290 - added tests for this
9f4334a1 291 - it is now possible to make anon-enums by passing 'enum' an
292 ARRAY ref instead of the $name => @values. Everything else
293 works as before.
294 - added tests for this
295
8d62bf6d 296 * t/
297 - making test for using '+name' on attributes consumed
298 from a role, it works and makes sense too.
299
80d955e4 300 * Moose::Meta::Attribute
301 - fix handles so that it doesn't return nothing
302 when the method cannot be found, not sure why
f4f3e701 303 it ever did this originally, this means we now
304 have slightly better support for AUTOLOADed
305 objects
306 - added more delegation tests
587e457d 307 - adding ->does method to this so as to better
308 support traits and their introspection.
309 - added tests for this
1a386a6c 310
311 * Moose::Object
312 - localizing the Data::Dumper configurations so
313 that it does not pollute others (RT #33509)
9b1aa0c3 314 - made ->does a little more forgiving when it is
315 passed Class::MOP era metaclasses.
80d955e4 316
3170.38 Fri. Feb. 15, 2008
c3b81505 318 * Moose::Meta::Attribute
319 - fixed initializer to correctly do
320 type checking and coercion in the
321 callback
322 - added tests for this
323
1a740d8a 324 * t/
325 - fixed some finicky tests (thanks to konobi)
326
80d955e4 3270.37 Thurs. Feb. 14, 2008
688fcdda 328 * Moose
329 - fixed some details in Moose::init_meta
330 and its superclass handling (thanks thepler)
331 - added tests for this (thanks thepler)
a28fe77b 332 - 'has' now dies if you don't pass in name
333 value pairs
2a5e59d0 334 - added the 'make_immutable' keyword as a shortcut
9df136d0 335 to make_immutable
688fcdda 336
337 * Moose::Meta::Class
338 Moose::Meta::Method::Constructor
339 Moose::Meta::Attribute
649b9340 340 - making (init_arg => undef) work here too
341 (thanks to nothingmuch)
be771c43 342
343 * Moose::Meta::Attribute
344 Moose::Meta::Method::Constructor
345 Moose::Meta::Method::Accessor
5fec9b97 346 - make lazy attributes respect attr initializers (rjbs)
be771c43 347 - added tests for this
688fcdda 348
349 * Moose::Util::TypeConstraints
350 Moose::Util::TypeConstraints::OptimizedConstraints
c14746bc 351 Moose::Meta::TypeConstraints
688fcdda 352 Moose::Meta::Attribute
353 Moose::Meta::Method::Constructor
354 Moose::Meta::Method::Accessor
649b9340 355 - making type errors use the
356 assigned message (thanks to Sartak)
357 - added tests for this
358
359 * Moose::Meta::Method::Destructor
360 - making sure DESTROY gets inlined properly
361 with successive DEMOLISH calls (thanks to manito)
688fcdda 362
ab76842e 363 * Moose::Meta::Attribute
364 Moose::Meta::Method::Accessor
365 - fixed handling of undef with type constraints
366 (thanks to Ernesto)
367 - added tests for this
c14746bc 368
369 * Moose::Util
370 - added &get_all_init_args and &get_all_attribute_values
371 (thanks to Sartak and nothingmuch)
ab76842e 372
e472c9a5 3730.36 Sat. Jan. 26, 2008
238b424d 374 * Moose::Role
375 Moose::Meta::Attribute
376 - role type tests now support when roles are
377 applied to non-Moose classes (found by ash)
378 - added tests for this (thanks to ash)
e472c9a5 379 - couple extra tests to boost code coverage
238b424d 380
381 * Moose::Meta::Method::Constructor
382 - improved fix for handling Class::MOP attributes
383 - added test for this
384
385 * Moose::Meta::Class
386 - handled the add_attribute($attribute_meta_object)
387 case correctly
388 - added test for this
389
3285fae9 3900.35 Tues. Jan. 22, 2008
45fd4af3 391 * Moose::Meta::Method::Constructor
392 - fix to make sure even Class::MOP attributes
472b7401 393 are handled correctly (Thanks to Dave Rolsky)
c3b35392 394 - added test for this (also Dave Rolsky)
4498537c 395
396 * Moose::Meta::Class
397 - improved error message on _apply_all_roles,
398 you should now use Moose::Util::apply_all_roles
399 and you shouldnt have been using a _ prefixed
400 method in the first place ;)
45fd4af3 401
fe05ce9c 4020.34 Mon. Jan. 21, 2008
778db3ac 403 ~~~ more misc. doc. fixes ~~~
404 ~~ updated copyright dates ~~
9b28d20b 405
406 Moose is now a postmodern object system :)
8bdc7f13 407 - (see the POD for details)
ccf49e80 408
409 * <<Role System Refactoring>>
410 - this release contains a major reworking and
411 cleanup of the role system
9b28d20b 412 - 100% backwards compat.
413 - Role application now restructured into seperate
414 classes based on type of applicants
415 - Role summation (combining of more than one role)
ccf49e80 416 is much cleaner and anon-classes are no longer
9b28d20b 417 used in this process
ccf49e80 418 - new Composite role metaclass
9b28d20b 419 - runtime application of roles to instances
420 is now more efficient and re-uses generated
421 classes when applicable
ccf49e80 422
9b28d20b 423 * <<New Role composition features>>
ccf49e80 424 - methods can now be excluded from a given role
9b28d20b 425 during composition
ccf49e80 426 - methods can now be aliased to another name (and
427 still retain the original as well)
4734114b 428
429 * Moose::Util::TypeConstraints::OptimizedConstraints
430 - added this module (see above)
431
d7d8a8c7 432 * Moose::Meta::Class
433 - fixed the &_process_attribute method to be called
4734114b 434 by &add_attribute, so that the API is now correct
435
e7c06c1e 436 * Moose::Meta::Method::Accessor
4734114b 437 - fixed bug when passing a list of values to
e7c06c1e 438 an accessor would get (incorrectly) ignored.
439 Thanks to Sartak for finding this ;)
440 - added tests for this (Sartak again)
32dd4a95 441
a4e516f6 442 * Moose::Meta::Method::Accessor
443 Moose::Meta::Method::Constructor
28412c0b 444 Moose::Meta::Attribute
ccf49e80 445 Moose::Meta::TypeConstraint
446 Moose::Meta::TypeCoercion
447 - lots of cleanup of such things as:
28412c0b 448 - generated methods
449 - type constraint handling
ccf49e80 450 - error handling/messages
451 (thanks to nothingmuch)
a4e516f6 452
4734114b 453 * Moose::Meta::TypeConstraint::Parameterizable
454 - added this module to support the refactor
455 in Moose::Meta::TypeConstraint::Parameterized
456
457 * Moose::Meta::TypeConstraint::Parameterized
458 - refactored how these types are handled so they
459 are more generic and not confined to ArrayRef
460 and HashRef only
a4e516f6 461
2de7e794 462 * t/
463 - shortened some file names for better VMS support (RT #32381)
464
25374f01 4650.33 Fri. Dec. 14, 2007
32dd4a95 466 !! Moose now loads 2 x faster !!
467 !! with new Class::MOP 0.49 !!
25374f01 468
f7865ec8 469 ++ new oose.pm module to make command line
25374f01 470 Moose-ness easier (see POD docs for more)
4734114b 471
25374f01 472 * Moose::Meta::Class
473 * Moose::Meta::Role
4734114b 474 - several tweaks to take advantage of the
25374f01 475 new method map caching in Class::MOP
476
39aba5c9 477 * Moose::Meta::TypeConstraint::Parameterized
478 - allow subtypes of ArrayRef and HashRef to
acb8a5db 479 be used as a container (sartak)
4734114b 480 - added tests for this
acb8a5db 481 - basic support for coercion to ArrayRef and
482 HashRef for containers (sartak)
4734114b 483 - added tests for this
484
25374f01 485 * Moose::Meta::TypeCoercion
486 - coercions will now create subtypes as needed
487 so you can now add coercions to parameterized
488 types without having to explictly define them
489 - added tests for this
490
ac211120 491 * Moose::Meta::Method::Accessor
492 - allow subclasses to decide whether we need
493 to copy the value into a new variable (sartak)
39aba5c9 494
dc26a424 4950.32 Tues. Dec. 4, 2007
8de73ff1 496 * Moose::Util::TypeConstraints
497 - fixing how subtype aliases of unions work
498 they should inherit the parent's coercion
499 - added tests for this
4734114b 500 - you can now define multiple coercions on
41e007e4 501 a single type at different times instead of
502 having to do it all in one place
503 - added tests for this
4734114b 504
8de73ff1 505 * Moose::Meta::TypeConstraint
506 - there is now a default constraint of sub { 1 }
507 instead of Moose::Util::TypeConstraints setting
508 this for us
509
4734114b 510 * Moose::Meta::TypeCoercion
511 * Moose::Meta::TypeCoercion::Union
512 - added the &has_coercion_for_type and
513 &add_type_coercions methods to support the
41e007e4 514 new features above (although you cannot add
515 more type coercions for Union types)
516
ffcb48b4 5170.31 Mon. Nov. 26, 2007
f3c4e20e 518 * Moose::Meta::Attribute
4734114b 519 - made the +attr syntax handle extending types with
f3c4e20e 520 parameters. So "has '+foo' => (isa => 'ArrayRef[Int]')"
521 now works if the original foo is an ArrayRef.
522 - added tests for this.
523 - delegation now works even if the attribute does not
524 have a reader method using the get_read_method_ref
4734114b 525 method from Class::MOP::Attribute.
f3c4e20e 526 - added tests for this
527 - added docs for this
4734114b 528
f3c4e20e 529 * Moose::Util::TypeConstraints
4734114b 530 - passing no "additional attribute info" to
531 &find_or_create_type_constraint will no longer
532 attempt to create an __ANON__ type for you,
f3c4e20e 533 instead it will just return undef.
534 - added docs for this
535
1edfdf1c 5360.30 Fri. Nov. 23, 2007
ca168e89 537 * Moose::Meta::Method::Constructor
538 -builder related bug in inlined constructor. (groditi)
539
3822d5ee 540 * Moose::Meta::Method::Accessor
541 - genereate unnecessary calls to predicates and refactor
542 code generation for runtime speed (groditi)
543
5d776bdf 544 * Moose::Util::TypeConstraints
0e0709ea 545 - fix ClassName constraint to introspect symbol table (mst)
a0f8153d 546 - added more tests for this (mst)
547 - fixed it so that subtype 'Foo' => as 'HashRef[Int]' ...
548 with work correctly.
549 - added tests for this
5d776bdf 550
1edfdf1c 551 * Moose::Cookbook
552 - adding the link to Recipie 11 (written by Sartak)
553 - adding test for SYNOPSIS code
554
4734114b 555 * t/
ca168e89 556 - New tests for builder bug. Upon instantiation, if an
557 attribute had a builder, no value and was not lazy the
558 builder default was not getting run, oops. (groditi)
559
b97b9655 5600.29 Tues. Nov. 13, 2007
0b26305c 561 * Moose::Meta::Attribute
5d776bdf 562 - Fix error message on missing builder method (groditi)
0b26305c 563
564 * Moose::Meta::Method::Accessor
5d776bdf 565 - Fix error message on missing builder method (groditi)
0b26305c 566
4734114b 567 * t/
5d776bdf 568 - Add test to check for the correct error message when
569 builder method is missing (groditi)
0b26305c 570
98c4c382 5710.28 Tues. Nov. 13, 2007
4734114b 572 - 0.27 packaged incorrectly (groditi)
98c4c382 573
e134cd19 5740.27 Tues. Nov. 13, 2007
26fbace8 575 * Moose::Meta::Attribute
576 - Added support for the new builder option (groditi)
6af1a927 577 - Added support for lazy_build option (groditi)
1ed0b94f 578 - Changed slot initialization for predicate changes (groditi)
26fbace8 579
580 * Moose::Meta::Method::Accessor
6af1a927 581 - Added support for lazy_build option (groditi)
4734114b 582 - Fix inline methods to work with corrected predicate
28669f89 583 behavior (groditi)
26fbace8 584
7a5b07b3 585 * Moose::Meta::Method::Constructor
586 - Added support for lazy_build option (groditi)
587
26fbace8 588 * t/
28669f89 589 - tests for builder and lazy_build (groditi)
26fbace8 590
4734114b 591 * fixing some misc. bits in the docs that
28669f89 592 got mentioned on CPAN Forum & perlmonks
4734114b 593
e7f8d0c2 594 * Moose::Meta::Role
4734114b 595 - fixed how required methods are handled
e7f8d0c2 596 when they encounter overriden or modified
597 methods from a class (thanks to confound).
598 - added tests for this
5af6a16d 599
3796382a 600 * Moose::Util::TypeConstraint
4734114b 601 - fixed the type notation parser so that
602 the | always creates a union and so is
603 no longer a valid type char (thanks to
604 konobi, mugwump and #moose for working
3796382a 605 this one out.)
606 - added more tests for this
607
77a18c28 6080.26 Thurs. Sept. 27, 2007
609 == New Features ==
4734114b 610
77a18c28 611 * Parameterized Types
4734114b 612 We now support parameterized collection types, such as:
77a18c28 613 ArrayRef[Int] # array or integers
614 HashRef[Object] # a hash with object values
615 They can also be nested:
616 ArrayRef[HashRef[RegExpr]] # an array of hashes with regexpr values
617 And work with the type unions as well:
618 ArrayRef[Int | Str] # array of integers of strings
4734114b 619
77a18c28 620 * Better Framework Extendability
4734114b 621 Moose.pm is now "extendable" such that it is now much
622 easier to extend the framework and add your own keywords
77a18c28 623 and customizations. See the "EXTENDING AND EMBEDDING MOOSE"
624 section of the Moose.pm docs.
4734114b 625
77a18c28 626 * Moose Snacks!
4734114b 627 In an effort to begin documenting some of the various
628 details of Moose as well as some common idioms, we have
629 created Moose::Cookbook::Snacks as a place to find
77a18c28 630 small (easily digestable) nuggets of Moose code.
4734114b 631
77a18c28 632 ====
fb697a87 633 ~ Several doc updates/cleanup thanks to castaway ~
4734114b 634
635 - converted build system to use Module::Install instead of
e46f5cc2 636 Module::Build (thanks to jrockway)
fb697a87 637
d67145ed 638 * Moose
4734114b 639 - added all the meta classes to the immutable list and
d67145ed 640 set it to inline the accessors
4734114b 641 - fix import to allow Sub::Exporter like { into => }
e59a5c29 642 and { into_level => } (perigrin)
4734114b 643 - exposed and documented init_meta() to allow better
e59a5c29 644 embedding and extending of Moose (perigrin)
4734114b 645
e59a5c29 646 * t/
647 - complete re-organization of the test suite
4734114b 648 - added some new tests as well
77a18c28 649 - finally re-enabled the Moose::POOP test since
650 the new version of DBM::Deep now works again
651 (thanks rob)
b468a3d3 652
653 * Moose::Meta::Class
4734114b 654 - fixed very odd and very nasty recursion bug with
b468a3d3 655 inner/augment (mst)
656 - added tests for this (eilara)
d67145ed 657
3726f905 658 * Moose::Meta::Attribute
659 Moose::Meta::Method::Constructor
660 Moose::Meta::Method::Accessor
4734114b 661 - fixed issue with overload::Overloaded getting called
f1917f58 662 on non-blessed items. (RT #29269)
3726f905 663 - added tests for this
4734114b 664
3ccdc84a 665 * Moose::Meta::Method::Accessor
4734114b 666 - fixed issue with generated accessor code making
3ccdc84a 667 assumptions about hash based classes (thanks to dexter)
4734114b 668
3726f905 669 * Moose::Coookbook::Snacks
4734114b 670 - these are bits of documentation, not quite as big as
671 Recipes but which have no clear place in the module docs.
3726f905 672 So they are Snacks! (horray for castaway++)
673
07cde929 674 * Moose::Cookbook::Recipe4
675 - updated it to use the new ArrayRef[MyType] construct
676 - updated the accompanying test as well
677
3726f905 678 +++ Major Refactor of the Type Constraint system +++
679 +++ with new features added as well +++
680
22aed3c0 681 * Moose::Util::TypeConstraint
4734114b 682 - no longer uses package variable to keep track of
22aed3c0 683 the type constraints, now uses the an instance of
684 Moose::Meta::TypeConstraint::Registry to do it
f1917f58 685 - added more sophisticated type notation parsing
686 (thanks to mugwump)
687 - added tests for this
22aed3c0 688
d67145ed 689 * Moose::Meta::TypeConstraint
690 - some minor adjustments to make subclassing easier
4734114b 691 - added the package_defined_in attribute so that we
22aed3c0 692 can track where the type constraints are created
4734114b 693
d67145ed 694 * Moose::Meta::TypeConstraint::Union
4734114b 695 - this is now been refactored to be a subclass of
3726f905 696 Moose::Meta::TypeConstraint
4734114b 697
3726f905 698 * Moose::Meta::TypeCoercion::Union
699 - this has been added to service the newly refactored
4734114b 700 Moose::Meta::TypeConstraint::Union and is itself
3726f905 701 a subclass of Moose::Meta::TypeCoercion
4734114b 702
0fbd4b0a 703 * Moose::Meta::TypeConstraint::Parameterized
d67145ed 704 - added this module (taken from MooseX::AttributeHelpers)
705 to help construct nested collection types
706 - added tests for this
4734114b 707
22aed3c0 708 * Moose::Meta::TypeConstraint::Registry
709 - added this class to keep track of type constraints
d67145ed 710
887169d7 7110.25 Mon. Aug. 13, 2007
8eca434b 712 * Moose
4734114b 713 - Documentation update to reference Moose::Util::TypeConstraints
714 under 'isa' in 'has' for how to define a new type
8eca434b 715 (thanks to shlomif).
716
ab859145 717 * Moose::Meta::Attribute
4734114b 718 - required attributes now will no longer accept undef
ab859145 719 from the constructor, even if there is a default and lazy
720 - added tests for this
4734114b 721 - default subroutines must return a value which passes the
7a5ebc40 722 type constraint
723 - added tests for this
4734114b 724
a909a4df 725 * Moose::Meta::Attribute
726 * Moose::Meta::Method::Constructor
4734114b 727 * Moose::Meta::Method::Accessor
a909a4df 728 - type-constraint tests now handle overloaded objects correctly
729 in the error message
4734114b 730 - added tests for this (thanks to EvanCarroll)
ab859145 731
8eca434b 732 * Moose::Meta::TypeConstraint::Union
4734114b 733 - added (has_)hand_optimized_constraint to this class so that
8eca434b 734 it behaves as the regular Moose::Meta::TypeConstraint does.
735
5868294f 736 * Moose::Meta::Role
887169d7 737 - large refactoring of this code
4734114b 738 - added several more tests
739 - tests for subtle conflict resolition issues
7125b244 740 added, but not currently running
741 (thanks to kolibre)
742
4734114b 743 * Moose::Cookbook::Recipe7
744 - added new recipe for augment/inner functionality
887169d7 745 (still in progress)
7125b244 746 - added test for this
5868294f 747
24a8fe99 748 * Moose::Spec::Role
7125b244 749 - a formal definition of roles (still in progress)
24a8fe99 750
9a641848 751 * Moose::Util
887169d7 752 - utilities for easier working with Moose classes
7125b244 753 - added tests for these
9a641848 754
755 * Test::Moose
887169d7 756 - This contains Moose specific test functions
7125b244 757 - added tests for these
9a641848 758
6b4c1bdd 7590.24 Tues. July 3, 2007
760 ~ Some doc updates/cleanup ~
c84f324f 761
762 * Moose::Meta::Attribute
4734114b 763 - added support for roles to be given as parameters
c84f324f 764 to the 'handles' option.
765 - added tests and docs for this
4734114b 766 - the has '+foo' attribute form now accepts changes to
83cc9094 767 the lazy option, and the addition of a handles option
768 (but not changing the handles option)
769 - added tests and docs for this
c84f324f 770
1db8ecc7 771 * Moose::Meta::Role
772 - required methods are now fetched using find_method_by_name
773 so that required methods can come from superclasses
774 - adjusted tests for this
775
81941e9b 7760.23 Mon. June 18, 2007
73b84d2e 777 * Moose::Meta::Method::Constructor
778 - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
ac2dc464 779 * Moose::Meta::Class
780 - Modify make_immutable to work with the new Class::MOP immutable
781 mechanism + POD + very basic test (groditi)
cbe25729 782 * Moose::Meta::Attribute
4734114b 783 - Fix handles to use goto() so that caller() comes out properly on
cbe25729 784 the other side (perigrin)
ac2dc464 785
db53853c 7860.22 Thurs. May 31, 2007
3969267d 787 * Moose::Util::TypeConstraints
4734114b 788 - fix for prototype undeclared issue when Moose::Util::TypeConstraints
db53853c 789 loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
790 prototypes for functions
4734114b 791 - added the ClassName type constraint, this checks for strings
792 which will respond true to ->isa(UNIVERSAL).
9af1d28b 793 - added tests and docs for this
4734114b 794 - subtyping just in name now works correctly by making the
86629f93 795 default for where be { 1 }
4734114b 796 - added test for this
3969267d 797
d7611a4a 798 * Moose::Meta::Method::Accessor
4734114b 799 - coerce and lazy now work together correctly, thanks to
d7611a4a 800 merlyn for finding this bug
801 - tests added for this
df492bba 802 - fix reader presedence bug in Moose::Meta::Attribute + tests
d7611a4a 803
86629f93 804 * Moose::Object
805 - Foo->new(undef) now gets ignored, it is assumed you meant to pass
4734114b 806 a HASH-ref and missed. This produces better error messages then
86629f93 807 having it die cause undef is not a HASH.
808 - added tests for this
809
74a0a945 8100.21 Thursday, May 2nd, 2007
52c7c330 811 * Moose
812 - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
813 - modified unimport to remove super and inner along with the rest
814 - altered unimport tests to handle this
815
816 * Moose::Role
817 - altered super export to populate SUPER_SLOT
818
819 * Moose::Meta::Class
820 - altered augment and override modifier application to use *_SLOT
821 - modified tests for these to unimport one test class each to test
822
492d4d76 823 * Moose::Meta::Role
824 - fixed issue where custom attribute metaclasses
825 where not handled correctly in roles
826 - added tests for this
4734114b 827
5cb193ed 828 * Moose::Meta::Class
4734114b 829 - fixed issue where extending metaclasses with
5cb193ed 830 roles would blow up. Thanks to Aankhen`` for
831 finding this insidious error, and it's solution.
4734114b 832
833 ~~ lots of spelling and grammer fixes in the docs,
0305961b 834 many many thanks to rlb3 and Aankhen for these :)
492d4d76 835
e518dfb4 8360.20 Friday, April 6th, 2007
a60285b3 837 >> I messed up the SKIP logic in one test
838 so this release is just to fix that.
839
93c435b3 840 * Moose
841 - 'has' now also accepts an ARRAY ref
842 to create multiple attrs (see docs)
843 (thanks to konobi for this)
4734114b 844 - added tests and docs
93c435b3 845
cd7eeaf5 8460.19 Thurs. April 5th, 2007
847 ~~ More documentation updates ~~
848
c899258b 849 * Moose::Util::TypeConstraints
c1935ade 850 - 'type' now supports messages as well
ddbdc0cb 851 thanks to phaylon for finding this
c899258b 852 - added tests for this
4734114b 853 - added &list_all_type_constraints and
c1935ade 854 &list_all_builtin_type_constraints
943596a6 855 functions to facilitate introspection.
4734114b 856
d022f632 857 * Moose::Meta::Attribute
4734114b 858 - fixed regexp 'handles' declarations
d022f632 859 to build the list of delegated methods
4734114b 860 correctly (and not override important
861 things like &new) thanks to ashleyb
ddbdc0cb 862 for finding this
863 - added tests and docs for this
c1935ade 864 - added the 'documentation' attributes
4734114b 865 so that you can actually document your
866 attributes and inspect them through the
ddbdc0cb 867 meta-object.
d022f632 868 - added tests and docs for this
869
c1935ade 870 * Moose::Meta::Class
871 - when loading custom attribute metaclasses
4734114b 872 it will first look in for the class in the
873 Moose::Meta::Attribute::Custom::$name, and
c1935ade 874 then default to just loading $name.
875 - added tests and docs for this
876
900466d6 877 * Moose::Meta::TypeConstraint
878 - type constraints now stringify to their names.
879 - added test for this
880
d022f632 881 * misc.
4734114b 882 - added tests to assure we work with Module::Refresh
883 - added stricter test skip logic in the Moose POOP
ddbdc0cb 884 test, ask Rob Kinyon why.
885 - *cough* DBM::Deep 1.0 backwards compatability sucks *cough* ;)
c899258b 886
af5199c6 8870.18 Sat. March 10, 2007
888 ~~ Many, many documentation updates ~~
ddbdc0cb 889
890 * misc.
4734114b 891 - We now use Class::MOP::load_class to
892 load all classes.
893 - added tests to show types and subtypes
ddbdc0cb 894 working with Declare::Constraints::Simple
895 and Test::Deep as constraint engines.
b77fdbed 896
587ae0d2 8970.18_001
d01f1dab 898 !! You must have Class::MOP 0.37_001 !!
899 !! for this developer release to work !!
900
734d1752 901 This release was primarily adding the immutable
4734114b 902 feature to Moose. An immutable class is one which
903 you promise not to alter. When you set the class
904 as immutable it will perform various bits of
734d1752 905 memoization and inline certain part of the code
4734114b 906 (constructors, destructors and accessors). This
734d1752 907 minimizes (and in some cases totally eliminates)
4734114b 908 one of Moose's biggest performance hits. This
734d1752 909 feature is not on by default, and is 100% optional.
4734114b 910 It has several configurable bits as well, so you
734d1752 911 can pick and choose to your specific needs.
4734114b 912
913 The changes involved in this were fairly wide and
914 highly specific, but 100% backwards compatible, so
915 I am not going to enumerate them here. If you are
916 truely interested in what was changed, please do
734d1752 917 a diff :)
587ae0d2 918
9190.17 Tues. Nov. 14, 2006
920 * Moose::Meta::Method::Accessor
4734114b 921 - bugfix for read-only accessors which
587ae0d2 922 are have a type constraint and lazy.
923 Thanks to chansen for finding it.
924
9250.16 Tues. Nov. 14, 2006
926 ++ NOTE ++
4734114b 927 There are some speed improvements in this release,
587ae0d2 928 but they are only the begining, so stay tuned.
4734114b 929
587ae0d2 930 * Moose::Object
4734114b 931 - BUILDALL and DEMOLISHALL no longer get
587ae0d2 932 called unless they actually need to be.
933 This gave us a signifigant speed boost
4734114b 934 for the cases when there is no BUILD or
587ae0d2 935 DEMOLISH method present.
4734114b 936
587ae0d2 937 * Moose::Util::TypeConstraints
938 * Moose::Meta::TypeConstraint
4734114b 939 - added an 'optimize_as' option to the
587ae0d2 940 type constraint, which allows for a
4734114b 941 hand optimized version of the type
587ae0d2 942 constraint to be used when possible.
943 - Any internally created type constraints
944 now provide an optimized version as well.
945
ecb59493 9460.15 Sun. Nov. 5, 2006
946289d1 947 ++ NOTE ++
4734114b 948 This version of Moose *must* have Class::MOP 0.36 in order
949 to work correctly. A number of small internal tweaks have
946289d1 950 been made in order to be compatible with that release.
571dd39f 951
952 * Moose::Util::TypeConstraints
4734114b 953 - added &unimport so that you can clean out
954 your class namespace of these exported
571dd39f 955 keywords
4734114b 956
37ee30c9 957 * Moose::Meta::Class
4734114b 958 - fixed minor issue which occasionally
959 comes up during global destruction
37ee30c9 960 (thanks omega)
4734114b 961 - moved Moose::Meta::Method::Overriden into
946289d1 962 its own file.
4734114b 963
964 * Moose::Meta::Role
965 - moved Moose::Meta::Role::Method into
946289d1 966 its own file.
4734114b 967
43123819 968 * Moose::Meta::Attribute
4734114b 969 - changed how we do type checks so that
970 we reduce the overall cost, but still
7623f774 971 retain correctness.
946289d1 972 *** API CHANGE ***
4734114b 973 - moved accessor generation methods to
974 Moose::Meta::Method::Accessor to
975 conform to the API changes from
946289d1 976 Class::MOP 0.36
4734114b 977
43123819 978 * Moose::Meta::TypeConstraint
979 - changed how constraints are compiled
980 so that we do less recursion and more
4734114b 981 iteration. This makes the type check
43123819 982 faster :)
946289d1 983 - moved Moose::Meta::TypeConstraint::Union
984 into its own file
4734114b 985
946289d1 986 * Moose::Meta::Method::Accessor
4734114b 987 - created this from methods formerly found in
946289d1 988 Moose::Meta::Attribute
4734114b 989
946289d1 990 * Moose::Meta::Role::Method
991 - moved this from Moose::Meta::Role
4734114b 992
946289d1 993 * Moose::Meta::Method::Overriden
994 - moved this from Moose::Meta::Class
4734114b 995
946289d1 996 * Moose::Meta::TypeConstraint::Union
997 - moved this from Moose::Meta::TypeConstraint
37ee30c9 998
3ec7b7a3 9990.14 Mon. Oct. 9, 2006
4fd69d6c 1000
1001 * Moose::Meta::Attribute
4734114b 1002 - fixed lazy attributes which were not getting
4fd69d6c 1003 checked with the type constraint (thanks ashley)
1004 - added tests for this
4734114b 1005 - removed the over-enthusiastic DWIMery of the
1006 automatic ArrayRef and HashRef defaults, it
3ec7b7a3 1007 broke predicates in an ugly way.
1008 - removed tests for this
4fd69d6c 1009
c0c41f76 10100.13 Sat. Sept. 30, 2006
093b12c2 1011 ++ NOTE ++
4734114b 1012 This version of Moose *must* have Class::MOP 0.35 in order
1013 to work correctly. A number of small internal tweaks have
093b12c2 1014 been made in order to be compatible with that release.
1015
3c2bc5e2 1016 * Moose
1017 - Removed the use of UNIVERSAL::require to be a better
4734114b 1018 symbol table citizen and remove a dependency
093b12c2 1019 (thanks Adam Kennedy)
3c2bc5e2 1020
2a0f3bd3 1021 **~~ removed experimental & undocumented feature ~~**
4734114b 1022 - commented out the 'method' and 'self' keywords, see the
2a0f3bd3 1023 comments for more info.
1024
e95c7c42 1025 * Moose::Cookbook
4734114b 1026 - added a FAQ and WTF files to document frequently
e95c7c42 1027 asked questions and common problems
4734114b 1028
3f7376b0 1029 * Moose::Util::TypeConstraints
0a5bd159 1030 - added GlobRef and FileHandle type constraint
3f7376b0 1031 - added tests for this
4734114b 1032
3f7376b0 1033 * Moose::Meta::Attribute
1034 - if your attribute 'isa' ArrayRef of HashRef, and you have
1035 not explicitly set a default, then make the default DWIM.
4734114b 1036 This will also work for subtypes of ArrayRef and HashRef
94b8bbb8 1037 as well.
1038 - you can now auto-deref subtypes of ArrayRef or HashRef too.
1039 - new test added for this (thanks to ashley)
4734114b 1040
b805c70c 1041 * Moose::Meta::Role
1042 - added basic support for runtime role composition
4734114b 1043 but this is still *highly experimental*, so feedback
0a5bd159 1044 is much appreciated :)
b805c70c 1045 - added tests for this
e95c7c42 1046
0a5bd159 1047 * Moose::Meta::TypeConstraint
1048 - the type constraint now handles the coercion process
4734114b 1049 through delegation, this is to support the coercion
0a5bd159 1050 of unions
4734114b 1051
0a5bd159 1052 * Moose::Meta::TypeConstraint::Union
4734114b 1053 - it is now possible for coercions to be performed
0a5bd159 1054 on a type union
1055 - added tests for this (thanks to konobi)
1056
e95c7c42 1057 * Moose::Meta::TypeCoercion
4734114b 1058 - properly capturing error when type constraint
e95c7c42 1059 is not found
1060
3c2bc5e2 1061 * Build.PL
1062 - Scalar::Util 1.18 is bad on Win32, so temporarily
1063 only require version 1.17 for Win32 and cygwin.
4734114b 1064 (thanks Adam Kennedy)
3c2bc5e2 1065
40e89659 10660.12 Sat. Sept. 1, 2006
2bdd01cd 1067 * Moose::Cookbook
1068 - Recipe5 (subtypes & coercion) has been written
4734114b 1069
2bdd01cd 1070 * Moose
4734114b 1071 - fixed "bad meta" error message to be more descriptive
1072 - fixed &unimport to not remove the &inner and &super
3279ab4a 1073 keywords because we need to localize them.
68efb014 1074 - fixed number of spelling/grammer issues, thanks Theory :)
4734114b 1075
0558683c 1076 **~~ experimental & undocumented feature ~~**
4734114b 1077 - added the method and self keywords, they are basically
68efb014 1078 just sugar, and they may not stay around.
4734114b 1079
f742dfef 1080 * Moose::Object
4734114b 1081 - added &dump method to easily Data::Dumper
68efb014 1082 an object
4734114b 1083
b26e162e 1084 * Moose::Meta::TypeConstraint
1085 - added the &is_a_type_of method to check both the current
1086 and the subtype of a method (similar to &isa with classes)
f008ac1f 1087
68efb014 1088 * Moose::Meta::Role
1089 - this is now a subclass of Class::MOP::Module, and no longer
4734114b 1090 creates the _role_meta ugliness of before.
68efb014 1091 - fixed tests to reflect this change
4734114b 1092
8c835eba 10930.11 Wed. July 12, 2006
31f8ec72 1094 * Moose
1095 - added an &unimport method to remove all the keywords
4734114b 1096 that Moose will import, simply add 'no Moose' to the
1097 bottom of your class file.
1098
31f8ec72 1099 * t/
4734114b 1100 - fixed some test failures caused by a forgotten test
31f8ec72 1101 dependency.
1102
864cd714 11030.10 Thurs. July 6, 2006
01a8e221 1104 * Moose
1105 - improved error message when loading modules so
1106 it is less confusing when you load a role.
4734114b 1107 - added &calculate_all_roles method to
2b14ac61 1108 Moose::Meta::Class and Moose::Meta::Role
4734114b 1109
2b14ac61 1110 NOTE:
1111 This module has been tested against Class::MOP 0.30
4734114b 1112 but it does not yet utilize the optimizations
2b14ac61 1113 it makes available. Stay tuned for that ;)
4734114b 1114
2b14ac61 11150.09_03 Fri. June 23, 2006
715ea0b7 1116 ++ DEVELOPER RELEASE ++
4276ccb4 1117 * Moose
1118 - 'use strict' and 'use warnings' are no longer
4734114b 1119 needed in Moose classes, Moose itself will
4276ccb4 1120 turn them on for you.
1121 - added tests for this
1341f10c 1122 - moved code from exported subs to private methods
1123 in Moose::Meta::Class
4734114b 1124
4276ccb4 1125 * Moose::Role
4734114b 1126 - as with Moose, strict and warnings are
4276ccb4 1127 automatically turned on for you.
4734114b 1128 - added tests for this
1129
e39d707f 1130 * Moose::Meta::Role
1131 - now handles an edge case for override errors
1132 - added tests for this
b7f2d25b 1133 - added some more edge case tests
1341f10c 1134
43d599e5 11350.09_02 Tues. May 16, 2006
715ea0b7 1136 ++ DEVELOPER RELEASE ++
2c0cbef7 1137 * Moose
1138 - added prototypes to the exported subs
43d599e5 1139 - updated docs
4734114b 1140
2c0cbef7 1141 * Moose::Role
4734114b 1142 - added prototypes to the exported subs
43d599e5 1143 - updated docs
4734114b 1144
2c0cbef7 1145 * Moose::Util::TypeConstraints
4734114b 1146 - cleaned up prototypes for the subs
1147 - updated docs
2c0cbef7 1148
72c4f6d1 11490.09_01 Fri. May 12, 2006
1150 ++ DEVELOPER RELEASE ++
4734114b 1151 - This release works in combination with
1152 Class::MOP 0.29_01, it is a developer
1153 release because it uses the a new
72c4f6d1 1154 instance sub-protocol and a fairly
4734114b 1155 complete Role implementation. It has
72c4f6d1 1156 not yet been optimized, so it slower
4734114b 1157 the the previous CPAN version. This
1158 release also lacks good updated docs,
72c4f6d1 1159 the official release will have updated docs.
1160
4734114b 1161 * Moose
98aae381 1162 - refactored the keyword exports
4734114b 1163 - 'with' now checks Role validaity and
db1ab48d 1164 accepts more than one Role at a time
4734114b 1165 - 'extends' makes metaclass adjustments as
98aae381 1166 needed to ensure metaclass compatability
4734114b 1167
72c4f6d1 1168 * Moose::Role
1169 - refactored the keyword exports
4734114b 1170 - 'with' now checks Role validaity and
72c4f6d1 1171 accepts more than one Role at a time
4734114b 1172
98aae381 1173 * Moose::Util::TypeConstraints
4734114b 1174 - added the 'enum' keyword for simple
1175 string enumerations which can be used as
98aae381 1176 type constraints
db1ab48d 1177 - see example of usage in t/202_example.t
4734114b 1178
98aae381 1179 * Moose::Object
1180 - more careful checking of params to new()
4734114b 1181
72c4f6d1 1182 * Moose::Meta::Role
1183 - much work done on the role composition
4734114b 1184 - many new tests for conflict detection
72c4f6d1 1185 and composition edge cases
4734114b 1186 - not enough documentation, I suggest
1187 looking at the tests
1188
98aae381 1189 * Moose::Meta::Instance
4734114b 1190 - added new Instance metaclass to support
98aae381 1191 the new Class::MOP instance protocol
4734114b 1192
98aae381 1193 * Moose::Meta::Class
4734114b 1194 - some small changes to support the new
98aae381 1195 instance protocol
72c4f6d1 1196 - some small additions to support Roles
4734114b 1197
98aae381 1198 * Moose::Meta::Attribute
1199 - some improvements to the accessor generation code
1200 by nothingmuch
4734114b 1201 - some small changes to support the new
98aae381 1202 instance protocol
4734114b 1203 - (still somewhat) experimental delegation support
98aae381 1204 with the 'handles' option
1205 - added several tests for this
db1ab48d 1206 - no docs for this yet
98aae381 1207
35c8b8f2 12080.05 Thurs. April 27, 2006
2d562421 1209 * Moose
1210 - keywords are now exported with Sub::Exporter
1211 thanks to chansen for this commit
4734114b 1212 - has keyword now takes a 'metaclass' option
1213 to support custom attribute meta-classes
590868a3 1214 on a per-attribute basis
4734114b 1215 - added tests for this
daea75c9 1216 - the 'has' keyword not accepts inherited slot
4734114b 1217 specifications (has '+foo'). This is still an
daea75c9 1218 experimental feature and probably not finished
4734114b 1219 see t/038_attribute_inherited_slot_specs.t for
daea75c9 1220 more details, or ask about it on #moose
fcb7afc2 1221 - added tests for this
4734114b 1222
2d562421 1223 * Moose::Role
1224 - keywords are now exported with Sub::Exporter
1225
5204cd52 1226 * Moose::Utils::TypeConstraints
cce8198b 1227 - reorganized the type constraint hierarchy, thanks
4734114b 1228 to nothingmuch and chansen for his help and advice
cce8198b 1229 on this
1230 - added some tests for this
7eaef7ad 1231 - keywords are now exported with Sub::Exporter
35c8b8f2 1232 thanks to chansen for this commit
5204cd52 1233
d500266f 1234 * Moose::Meta::Class
1235 - due to changes in Class::MOP, we had to change
1236 construct_instance (for the better)
4734114b 1237
d500266f 1238 * Moose::Meta::Attribute
4734114b 1239 - due to changes in Class::MOP, we had to add the
d500266f 1240 initialize_instance_slot method (it's a good thing)
4734114b 1241
cce8198b 1242 * Moose::Meta::TypeConstraint
4734114b 1243 - added type constraint unions
c07af9d2 1244 - added tests for this
cce8198b 1245 - added the is_subtype_of predicate method
1246 - added tests for this
d500266f 1247
02a0fb52 12480.04 Sun. April 16th, 2006
1331430a 1249 * Moose::Role
1250 - Roles can now consume other roles
1251 - added tests for this
4734114b 1252 - Roles can specify required methods now with
1331430a 1253 the requires() keyword
1254 - added tests for this
1255
bdabd620 1256 * Moose::Meta::Role
1257 - ripped out much of it's guts ,.. much cleaner now
4734114b 1258 - added required methods and correct handling of
fa1be058 1259 them in apply() for both classes and roles
1260 - added tests for this
4734114b 1261 - no longer adds a does() method to consuming classes
1331430a 1262 it relys on the one in Moose::Object
4734114b 1263 - added roles attribute and some methods to support
1331430a 1264 roles consuming roles
8c9d74e7 1265
1266 * Moose::Meta::Attribute
1267 - added support for triggers on attributes
1268 - added tests for this
4734114b 1269 - added support for does option on an attribute
02a0fb52 1270 - added tests for this
4734114b 1271
8c9d74e7 1272 * Moose::Meta::Class
4734114b 1273 - added support for attribute triggers in the
8c9d74e7 1274 object construction
1275 - added tests for this
4734114b 1276
256903b6 1277 * Moose
4734114b 1278 - Moose no longer creates a subtype for your class
1279 if a subtype of the same name already exists, this
256903b6 1280 should DWIM in 99.9999% of all cases
4734114b 1281
256903b6 1282 * Moose::Util::TypeConstraints
4734114b 1283 - fixed bug where incorrect subtype conflicts were
256903b6 1284 being reported
8c9d74e7 1285 - added test for this
4734114b 1286
8c9d74e7 1287 * Moose::Object
1288 - this class can now be extended with 'use base' if
1289 you need it, it properly loads the metaclass class now
1290 - added test for this
bdabd620 1291
0677220d 12920.03_02 Wed. April 12, 2006
05d9eaf6 1293 * Moose
1294 - you must now explictly use Moose::Util::TypeConstraints
1295 it no longer gets exported for you automatically
4734114b 1296
05d9eaf6 1297 * Moose::Object
1298 - new() now accepts hash-refs as well as key/value lists
0677220d 1299 - added does() method to check for Roles
1300 - added tests for this
05d9eaf6 1301
0677220d 1302 * Moose::Meta::Class
4734114b 1303 - added roles attribute along with the add_role() and
0677220d 1304 does_role() methods
4734114b 1305 - added tests for this
0677220d 1306
1307 * Moose::Meta::Role
4734114b 1308 - now adds a does() method to consuming classes
0677220d 1309 which tests the class's hierarchy for roles
1310 - added tests for this
1311
13120.03_01 Mon. April 10, 2006
e9ec68d6 1313 * Moose::Cookbook
76d37e5a 1314 - added new Role recipe (no content yet, only code)
4734114b 1315
e9ec68d6 1316 * Moose
1317 - added 'with' keyword for Role support
1318 - added test and docs for this
1319 - fixed subtype quoting bug
4734114b 1320 - added test for this
e9ec68d6 1321
1322 * Moose::Role
1323 - Roles for Moose
1324 - added test and docs
76d37e5a 1325
1326 * Moose::Util::TypeConstraints
1327 - added the message keyword to add custom
4734114b 1328 error messages to type constraints
1329
e9ec68d6 1330 * Moose::Meta::Role
1331 - the meta role to support Moose::Role
1332 - added tests and docs
4734114b 1333
e9ec68d6 1334 * Moose::Meta::Class
4734114b 1335 - moved a number of things from Moose.pm
1336 to here, they should have been here
e9ec68d6 1337 in the first place
1338
1339 * Moose::Meta::Attribute
1340 - moved the attribute option macros here
1341 instead of putting them in Moose.pm
e185c027 1342
76d37e5a 1343 * Moose::Meta::TypeConstraint
4734114b 1344 - added the message attributes and the
76d37e5a 1345 validate method
1346 - added tests and docs for this
1347
0ac928d2 13480.03 Thurs. March 30, 2006
e9bb8a31 1349 * Moose::Cookbook
4734114b 1350 - added the Moose::Cookbook with 5 recipes,
e9bb8a31 1351 describing all the stuff Moose can do.
1352
d7f17ebb 1353 * Moose
1354 - fixed an issue with &extends super class loading
4734114b 1355 it now captures errors and deals with inline
1356 packages correctly (bug found by mst, solution
d7f17ebb 1357 stolen from alias)
159da176 1358 - added super/override & inner/augment features
1359 - added tests and docs for these
4734114b 1360
d7f17ebb 1361 * Moose::Object
4734114b 1362 - BUILDALL now takes a reference of the %params
1363 that are passed to &new, and passes that to
d7f17ebb 1364 each BUILD as well.
4734114b 1365
471c4f09 1366 * Moose::Util::TypeConstraints
1367 - Type constraints now survive runtime reloading
1368 - added test for this
d7f17ebb 1369
8339fae2 1370 * Moose::Meta::Class
4734114b 1371 - fixed the way attribute defaults are handled
8339fae2 1372 during instance construction (bug found by chansen)
1373
d7f17ebb 1374 * Moose::Meta::Attribute
1375 - read-only attributes now actually enforce their
4734114b 1376 read-only-ness (this corrected in Class::MOP as
9deed647 1377 well)
d7f17ebb 1378
076c81ed 13790.02 Tues. March 21, 2006
fc5609d2 1380 * Moose
4734114b 1381 - many more tests, fixing some bugs and
b841b2a3 1382 edge cases
b841b2a3 1383 - &extends now loads the base module with
4734114b 1384 UNIVERSAL::require
1385 - added UNIVERSAL::require to the
b841b2a3 1386 dependencies list
6ba6d68c 1387 ** API CHANGES **
4734114b 1388 - each new Moose class will also create
1389 and register a subtype of Object which
1390 correspond to the new Moose class.
1391 - the 'isa' option in &has now only
1392 accepts strings, and will DWIM in
b841b2a3 1393 almost all cases
4734114b 1394
b841b2a3 1395 * Moose::Util::TypeConstraints
1396 - added type coercion features
1397 - added tests for this
4734114b 1398 - added support for this in attributes
b841b2a3 1399 and instance construction
6ba6d68c 1400 ** API CHANGES **
4734114b 1401 - type construction no longer creates a
b841b2a3 1402 function, it registers the type instead.
4734114b 1403 - added several functions to get the
1404 registered types
6ba6d68c 1405
1406 * Moose::Object
4734114b 1407 - BUILDALL and DEMOLISHALL were broken
6ba6d68c 1408 because of a mis-named hash key, Whoops :)
4734114b 1409
b841b2a3 1410 * Moose::Meta::Attribute
1411 - adding support for coercion in the
1412 autogenerated accessors
4734114b 1413
b841b2a3 1414 * Moose::Meta::Class
1415 - adding support for coercion in the
4734114b 1416 instance construction
6ba6d68c 1417
1418 * Moose::Meta::TypeConstraint
1419 * Moose::Meta::TypeCoercion
4734114b 1420 - type constraints and coercions are now
6ba6d68c 1421 full fledges meta-objects
fc5609d2 1422
e522431d 14230.01 Wed. March 15, 2006
900466d6 1424 - Moooooooooooooooooose!!!