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