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