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