massive refactoring begun for Moose::Meta::Role
[gitmo/Moose.git] / Changes
CommitLineData
e522431d 1Revision history for Perl extension Moose
2
f44ae52f 30.25
9cca2e9e 4 * Moose
5 - (Docs) referenced Moose::Util::TypeConstraints under 'isa' in 'has'
f44ae52f 6 for how to define a new type.
9cca2e9e 7
6b4c1bdd 80.24 Tues. July 3, 2007
9 ~ Some doc updates/cleanup ~
c84f324f 10
11 * Moose::Meta::Attribute
12 - added support for roles to be given as parameters
13 to the 'handles' option.
14 - added tests and docs for this
83cc9094 15 - the has '+foo' attribute form now accepts changes to
16 the lazy option, and the addition of a handles option
17 (but not changing the handles option)
18 - added tests and docs for this
c84f324f 19
1db8ecc7 20 * Moose::Meta::Role
21 - required methods are now fetched using find_method_by_name
22 so that required methods can come from superclasses
23 - adjusted tests for this
24
81941e9b 250.23 Mon. June 18, 2007
73b84d2e 26 * Moose::Meta::Method::Constructor
27 - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
ac2dc464 28 * Moose::Meta::Class
29 - Modify make_immutable to work with the new Class::MOP immutable
30 mechanism + POD + very basic test (groditi)
cbe25729 31 * Moose::Meta::Attribute
32 - Fix handles to use goto() so that caller() comes out properly on
33 the other side (perigrin)
ac2dc464 34
db53853c 350.22 Thurs. May 31, 2007
3969267d 36 * Moose::Util::TypeConstraints
db53853c 37 - fix for prototype undeclared issue when Moose::Util::TypeConstraints
38 loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
39 prototypes for functions
9af1d28b 40 - added the ClassName type constraint, this checks for strings
41 which will respond true to ->isa(UNIVERSAL).
42 - added tests and docs for this
86629f93 43 - subtyping just in name now works correctly by making the
44 default for where be { 1 }
45 - added test for this
3969267d 46
d7611a4a 47 * Moose::Meta::Method::Accessor
48 - coerce and lazy now work together correctly, thanks to
49 merlyn for finding this bug
50 - tests added for this
df492bba 51 - fix reader presedence bug in Moose::Meta::Attribute + tests
d7611a4a 52
86629f93 53 * Moose::Object
54 - Foo->new(undef) now gets ignored, it is assumed you meant to pass
55 a HASH-ref and missed. This produces better error messages then
56 having it die cause undef is not a HASH.
57 - added tests for this
58
74a0a945 590.21 Thursday, May 2nd, 2007
52c7c330 60 * Moose
61 - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
62 - modified unimport to remove super and inner along with the rest
63 - altered unimport tests to handle this
64
65 * Moose::Role
66 - altered super export to populate SUPER_SLOT
67
68 * Moose::Meta::Class
69 - altered augment and override modifier application to use *_SLOT
70 - modified tests for these to unimport one test class each to test
71
492d4d76 72 * Moose::Meta::Role
73 - fixed issue where custom attribute metaclasses
74 where not handled correctly in roles
75 - added tests for this
5cb193ed 76
77 * Moose::Meta::Class
78 - fixed issue where extending metaclasses with
79 roles would blow up. Thanks to Aankhen`` for
80 finding this insidious error, and it's solution.
b7c751dc 81
0305961b 82 ~~ lots of spelling and grammer fixes in the docs,
83 many many thanks to rlb3 and Aankhen for these :)
492d4d76 84
e518dfb4 850.20 Friday, April 6th, 2007
a60285b3 86 >> I messed up the SKIP logic in one test
87 so this release is just to fix that.
88
93c435b3 89 * Moose
90 - 'has' now also accepts an ARRAY ref
91 to create multiple attrs (see docs)
92 (thanks to konobi for this)
93 - added tests and docs
94
cd7eeaf5 950.19 Thurs. April 5th, 2007
96 ~~ More documentation updates ~~
97
c899258b 98 * Moose::Util::TypeConstraints
c1935ade 99 - 'type' now supports messages as well
ddbdc0cb 100 thanks to phaylon for finding this
c899258b 101 - added tests for this
c1935ade 102 - added &list_all_type_constraints and
103 &list_all_builtin_type_constraints
943596a6 104 functions to facilitate introspection.
d022f632 105
106 * Moose::Meta::Attribute
107 - fixed regexp 'handles' declarations
108 to build the list of delegated methods
109 correctly (and not override important
ddbdc0cb 110 things like &new) thanks to ashleyb
111 for finding this
112 - added tests and docs for this
c1935ade 113 - added the 'documentation' attributes
ddbdc0cb 114 so that you can actually document your
115 attributes and inspect them through the
116 meta-object.
d022f632 117 - added tests and docs for this
118
c1935ade 119 * Moose::Meta::Class
120 - when loading custom attribute metaclasses
121 it will first look in for the class in the
122 Moose::Meta::Attribute::Custom::$name, and
123 then default to just loading $name.
124 - added tests and docs for this
125
900466d6 126 * Moose::Meta::TypeConstraint
127 - type constraints now stringify to their names.
128 - added test for this
129
d022f632 130 * misc.
ddbdc0cb 131 - added tests to assure we work with Module::Refresh
132 - added stricter test skip logic in the Moose POOP
133 test, ask Rob Kinyon why.
134 - *cough* DBM::Deep 1.0 backwards compatability sucks *cough* ;)
c899258b 135
af5199c6 1360.18 Sat. March 10, 2007
137 ~~ Many, many documentation updates ~~
ddbdc0cb 138
139 * misc.
140 - We now use Class::MOP::load_class to
141 load all classes.
142 - added tests to show types and subtypes
143 working with Declare::Constraints::Simple
144 and Test::Deep as constraint engines.
b77fdbed 145
587ae0d2 1460.18_001
d01f1dab 147 !! You must have Class::MOP 0.37_001 !!
148 !! for this developer release to work !!
149
734d1752 150 This release was primarily adding the immutable
151 feature to Moose. An immutable class is one which
152 you promise not to alter. When you set the class
153 as immutable it will perform various bits of
154 memoization and inline certain part of the code
155 (constructors, destructors and accessors). This
156 minimizes (and in some cases totally eliminates)
157 one of Moose's biggest performance hits. This
158 feature is not on by default, and is 100% optional.
159 It has several configurable bits as well, so you
160 can pick and choose to your specific needs.
161
162 The changes involved in this were fairly wide and
163 highly specific, but 100% backwards compatible, so
164 I am not going to enumerate them here. If you are
165 truely interested in what was changed, please do
166 a diff :)
587ae0d2 167
1680.17 Tues. Nov. 14, 2006
169 * Moose::Meta::Method::Accessor
170 - bugfix for read-only accessors which
171 are have a type constraint and lazy.
172 Thanks to chansen for finding it.
173
1740.16 Tues. Nov. 14, 2006
175 ++ NOTE ++
176 There are some speed improvements in this release,
177 but they are only the begining, so stay tuned.
178
179 * Moose::Object
180 - BUILDALL and DEMOLISHALL no longer get
181 called unless they actually need to be.
182 This gave us a signifigant speed boost
183 for the cases when there is no BUILD or
184 DEMOLISH method present.
185
186 * Moose::Util::TypeConstraints
187 * Moose::Meta::TypeConstraint
188 - added an 'optimize_as' option to the
189 type constraint, which allows for a
190 hand optimized version of the type
191 constraint to be used when possible.
192 - Any internally created type constraints
193 now provide an optimized version as well.
194
ecb59493 1950.15 Sun. Nov. 5, 2006
946289d1 196 ++ NOTE ++
197 This version of Moose *must* have Class::MOP 0.36 in order
198 to work correctly. A number of small internal tweaks have
199 been made in order to be compatible with that release.
571dd39f 200
201 * Moose::Util::TypeConstraints
202 - added &unimport so that you can clean out
203 your class namespace of these exported
204 keywords
205
37ee30c9 206 * Moose::Meta::Class
207 - fixed minor issue which occasionally
208 comes up during global destruction
209 (thanks omega)
946289d1 210 - moved Moose::Meta::Method::Overriden into
211 its own file.
212
213 * Moose::Meta::Role
214 - moved Moose::Meta::Role::Method into
215 its own file.
216
43123819 217 * Moose::Meta::Attribute
218 - changed how we do type checks so that
7623f774 219 we reduce the overall cost, but still
220 retain correctness.
946289d1 221 *** API CHANGE ***
222 - moved accessor generation methods to
223 Moose::Meta::Method::Accessor to
224 conform to the API changes from
225 Class::MOP 0.36
43123819 226
227 * Moose::Meta::TypeConstraint
228 - changed how constraints are compiled
229 so that we do less recursion and more
230 iteration. This makes the type check
231 faster :)
946289d1 232 - moved Moose::Meta::TypeConstraint::Union
233 into its own file
234
235 * Moose::Meta::Method::Accessor
236 - created this from methods formerly found in
237 Moose::Meta::Attribute
238
239 * Moose::Meta::Role::Method
240 - moved this from Moose::Meta::Role
241
242 * Moose::Meta::Method::Overriden
243 - moved this from Moose::Meta::Class
244
245 * Moose::Meta::TypeConstraint::Union
246 - moved this from Moose::Meta::TypeConstraint
37ee30c9 247
3ec7b7a3 2480.14 Mon. Oct. 9, 2006
4fd69d6c 249
250 * Moose::Meta::Attribute
251 - fixed lazy attributes which were not getting
252 checked with the type constraint (thanks ashley)
253 - added tests for this
3ec7b7a3 254 - removed the over-enthusiastic DWIMery of the
255 automatic ArrayRef and HashRef defaults, it
256 broke predicates in an ugly way.
257 - removed tests for this
4fd69d6c 258
c0c41f76 2590.13 Sat. Sept. 30, 2006
093b12c2 260 ++ NOTE ++
261 This version of Moose *must* have Class::MOP 0.35 in order
262 to work correctly. A number of small internal tweaks have
263 been made in order to be compatible with that release.
264
3c2bc5e2 265 * Moose
266 - Removed the use of UNIVERSAL::require to be a better
093b12c2 267 symbol table citizen and remove a dependency
268 (thanks Adam Kennedy)
3c2bc5e2 269
2a0f3bd3 270 **~~ removed experimental & undocumented feature ~~**
271 - commented out the 'method' and 'self' keywords, see the
272 comments for more info.
273
e95c7c42 274 * Moose::Cookbook
275 - added a FAQ and WTF files to document frequently
276 asked questions and common problems
b805c70c 277
3f7376b0 278 * Moose::Util::TypeConstraints
0a5bd159 279 - added GlobRef and FileHandle type constraint
3f7376b0 280 - added tests for this
281
282 * Moose::Meta::Attribute
283 - if your attribute 'isa' ArrayRef of HashRef, and you have
284 not explicitly set a default, then make the default DWIM.
94b8bbb8 285 This will also work for subtypes of ArrayRef and HashRef
286 as well.
287 - you can now auto-deref subtypes of ArrayRef or HashRef too.
288 - new test added for this (thanks to ashley)
3f7376b0 289
b805c70c 290 * Moose::Meta::Role
291 - added basic support for runtime role composition
0a5bd159 292 but this is still *highly experimental*, so feedback
293 is much appreciated :)
b805c70c 294 - added tests for this
e95c7c42 295
0a5bd159 296 * Moose::Meta::TypeConstraint
297 - the type constraint now handles the coercion process
298 through delegation, this is to support the coercion
299 of unions
300
301 * Moose::Meta::TypeConstraint::Union
302 - it is now possible for coercions to be performed
303 on a type union
304 - added tests for this (thanks to konobi)
305
e95c7c42 306 * Moose::Meta::TypeCoercion
307 - properly capturing error when type constraint
308 is not found
309
3c2bc5e2 310 * Build.PL
311 - Scalar::Util 1.18 is bad on Win32, so temporarily
312 only require version 1.17 for Win32 and cygwin.
093b12c2 313 (thanks Adam Kennedy)
3c2bc5e2 314
40e89659 3150.12 Sat. Sept. 1, 2006
2bdd01cd 316 * Moose::Cookbook
317 - Recipe5 (subtypes & coercion) has been written
318
319 * Moose
3279ab4a 320 - fixed "bad meta" error message to be more descriptive
321 - fixed &unimport to not remove the &inner and &super
322 keywords because we need to localize them.
68efb014 323 - fixed number of spelling/grammer issues, thanks Theory :)
0558683c 324
325 **~~ experimental & undocumented feature ~~**
68efb014 326 - added the method and self keywords, they are basically
327 just sugar, and they may not stay around.
f742dfef 328
329 * Moose::Object
68efb014 330 - added &dump method to easily Data::Dumper
331 an object
b26e162e 332
333 * Moose::Meta::TypeConstraint
334 - added the &is_a_type_of method to check both the current
335 and the subtype of a method (similar to &isa with classes)
f008ac1f 336
68efb014 337 * Moose::Meta::Role
338 - this is now a subclass of Class::MOP::Module, and no longer
339 creates the _role_meta ugliness of before.
340 - fixed tests to reflect this change
341
8c835eba 3420.11 Wed. July 12, 2006
31f8ec72 343 * Moose
344 - added an &unimport method to remove all the keywords
8c835eba 345 that Moose will import, simply add 'no Moose' to the
346 bottom of your class file.
31f8ec72 347
348 * t/
349 - fixed some test failures caused by a forgotten test
350 dependency.
351
864cd714 3520.10 Thurs. July 6, 2006
01a8e221 353 * Moose
354 - improved error message when loading modules so
355 it is less confusing when you load a role.
2b14ac61 356 - added &calculate_all_roles method to
357 Moose::Meta::Class and Moose::Meta::Role
358
359 NOTE:
360 This module has been tested against Class::MOP 0.30
361 but it does not yet utilize the optimizations
362 it makes available. Stay tuned for that ;)
363
2b14ac61 3640.09_03 Fri. June 23, 2006
715ea0b7 365 ++ DEVELOPER RELEASE ++
4276ccb4 366 * Moose
367 - 'use strict' and 'use warnings' are no longer
368 needed in Moose classes, Moose itself will
369 turn them on for you.
370 - added tests for this
1341f10c 371 - moved code from exported subs to private methods
372 in Moose::Meta::Class
4276ccb4 373
374 * Moose::Role
375 - as with Moose, strict and warnings are
376 automatically turned on for you.
377 - added tests for this
e39d707f 378
379 * Moose::Meta::Role
380 - now handles an edge case for override errors
381 - added tests for this
b7f2d25b 382 - added some more edge case tests
1341f10c 383
43d599e5 3840.09_02 Tues. May 16, 2006
715ea0b7 385 ++ DEVELOPER RELEASE ++
2c0cbef7 386 * Moose
387 - added prototypes to the exported subs
43d599e5 388 - updated docs
2c0cbef7 389
390 * Moose::Role
391 - added prototypes to the exported subs
43d599e5 392 - updated docs
2c0cbef7 393
394 * Moose::Util::TypeConstraints
395 - cleaned up prototypes for the subs
43d599e5 396 - updated docs
2c0cbef7 397
72c4f6d1 3980.09_01 Fri. May 12, 2006
399 ++ DEVELOPER RELEASE ++
400 - This release works in combination with
401 Class::MOP 0.29_01, it is a developer
402 release because it uses the a new
403 instance sub-protocol and a fairly
404 complete Role implementation. It has
405 not yet been optimized, so it slower
406 the the previous CPAN version. This
407 release also lacks good updated docs,
408 the official release will have updated docs.
409
98aae381 410 * Moose
411 - refactored the keyword exports
db1ab48d 412 - 'with' now checks Role validaity and
413 accepts more than one Role at a time
98aae381 414 - 'extends' makes metaclass adjustments as
415 needed to ensure metaclass compatability
416
72c4f6d1 417 * Moose::Role
418 - refactored the keyword exports
419 - 'with' now checks Role validaity and
420 accepts more than one Role at a time
421
98aae381 422 * Moose::Util::TypeConstraints
423 - added the 'enum' keyword for simple
424 string enumerations which can be used as
425 type constraints
db1ab48d 426 - see example of usage in t/202_example.t
98aae381 427
428 * Moose::Object
429 - more careful checking of params to new()
430
72c4f6d1 431 * Moose::Meta::Role
432 - much work done on the role composition
433 - many new tests for conflict detection
434 and composition edge cases
435 - not enough documentation, I suggest
436 looking at the tests
437
98aae381 438 * Moose::Meta::Instance
439 - added new Instance metaclass to support
440 the new Class::MOP instance protocol
441
442 * Moose::Meta::Class
443 - some small changes to support the new
444 instance protocol
72c4f6d1 445 - some small additions to support Roles
98aae381 446
447 * Moose::Meta::Attribute
448 - some improvements to the accessor generation code
449 by nothingmuch
450 - some small changes to support the new
451 instance protocol
452 - (still somewhat) experimental delegation support
453 with the 'handles' option
454 - added several tests for this
db1ab48d 455 - no docs for this yet
98aae381 456
35c8b8f2 4570.05 Thurs. April 27, 2006
2d562421 458 * Moose
459 - keywords are now exported with Sub::Exporter
460 thanks to chansen for this commit
590868a3 461 - has keyword now takes a 'metaclass' option
462 to support custom attribute meta-classes
463 on a per-attribute basis
daea75c9 464 - added tests for this
465 - the 'has' keyword not accepts inherited slot
466 specifications (has '+foo'). This is still an
467 experimental feature and probably not finished
468 see t/038_attribute_inherited_slot_specs.t for
469 more details, or ask about it on #moose
fcb7afc2 470 - added tests for this
2d562421 471
472 * Moose::Role
473 - keywords are now exported with Sub::Exporter
474
5204cd52 475 * Moose::Utils::TypeConstraints
cce8198b 476 - reorganized the type constraint hierarchy, thanks
477 to nothingmuch and chansen for his help and advice
478 on this
479 - added some tests for this
7eaef7ad 480 - keywords are now exported with Sub::Exporter
35c8b8f2 481 thanks to chansen for this commit
5204cd52 482
d500266f 483 * Moose::Meta::Class
484 - due to changes in Class::MOP, we had to change
485 construct_instance (for the better)
486
487 * Moose::Meta::Attribute
488 - due to changes in Class::MOP, we had to add the
489 initialize_instance_slot method (it's a good thing)
c07af9d2 490
cce8198b 491 * Moose::Meta::TypeConstraint
c07af9d2 492 - added type constraint unions
493 - added tests for this
cce8198b 494 - added the is_subtype_of predicate method
495 - added tests for this
d500266f 496
02a0fb52 4970.04 Sun. April 16th, 2006
1331430a 498 * Moose::Role
499 - Roles can now consume other roles
500 - added tests for this
501 - Roles can specify required methods now with
502 the requires() keyword
503 - added tests for this
504
bdabd620 505 * Moose::Meta::Role
506 - ripped out much of it's guts ,.. much cleaner now
1331430a 507 - added required methods and correct handling of
fa1be058 508 them in apply() for both classes and roles
509 - added tests for this
1331430a 510 - no longer adds a does() method to consuming classes
511 it relys on the one in Moose::Object
512 - added roles attribute and some methods to support
513 roles consuming roles
8c9d74e7 514
515 * Moose::Meta::Attribute
516 - added support for triggers on attributes
517 - added tests for this
02a0fb52 518 - added support for does option on an attribute
519 - added tests for this
8c9d74e7 520
521 * Moose::Meta::Class
522 - added support for attribute triggers in the
523 object construction
524 - added tests for this
256903b6 525
526 * Moose
527 - Moose no longer creates a subtype for your class
528 if a subtype of the same name already exists, this
529 should DWIM in 99.9999% of all cases
530
531 * Moose::Util::TypeConstraints
532 - fixed bug where incorrect subtype conflicts were
533 being reported
8c9d74e7 534 - added test for this
535
536 * Moose::Object
537 - this class can now be extended with 'use base' if
538 you need it, it properly loads the metaclass class now
539 - added test for this
bdabd620 540
0677220d 5410.03_02 Wed. April 12, 2006
05d9eaf6 542 * Moose
543 - you must now explictly use Moose::Util::TypeConstraints
544 it no longer gets exported for you automatically
545
546 * Moose::Object
547 - new() now accepts hash-refs as well as key/value lists
0677220d 548 - added does() method to check for Roles
549 - added tests for this
05d9eaf6 550
0677220d 551 * Moose::Meta::Class
552 - added roles attribute along with the add_role() and
553 does_role() methods
554 - added tests for this
555
556 * Moose::Meta::Role
557 - now adds a does() method to consuming classes
558 which tests the class's hierarchy for roles
559 - added tests for this
560
5610.03_01 Mon. April 10, 2006
e9ec68d6 562 * Moose::Cookbook
76d37e5a 563 - added new Role recipe (no content yet, only code)
e9ec68d6 564
565 * Moose
566 - added 'with' keyword for Role support
567 - added test and docs for this
568 - fixed subtype quoting bug
569 - added test for this
570
571 * Moose::Role
572 - Roles for Moose
573 - added test and docs
76d37e5a 574
575 * Moose::Util::TypeConstraints
576 - added the message keyword to add custom
577 error messages to type constraints
e9ec68d6 578
579 * Moose::Meta::Role
580 - the meta role to support Moose::Role
581 - added tests and docs
582
583 * Moose::Meta::Class
584 - moved a number of things from Moose.pm
585 to here, they should have been here
586 in the first place
587
588 * Moose::Meta::Attribute
589 - moved the attribute option macros here
590 instead of putting them in Moose.pm
e185c027 591
76d37e5a 592 * Moose::Meta::TypeConstraint
593 - added the message attributes and the
594 validate method
595 - added tests and docs for this
596
0ac928d2 5970.03 Thurs. March 30, 2006
e9bb8a31 598 * Moose::Cookbook
599 - added the Moose::Cookbook with 5 recipes,
600 describing all the stuff Moose can do.
601
d7f17ebb 602 * Moose
603 - fixed an issue with &extends super class loading
604 it now captures errors and deals with inline
605 packages correctly (bug found by mst, solution
606 stolen from alias)
159da176 607 - added super/override & inner/augment features
608 - added tests and docs for these
d7f17ebb 609
610 * Moose::Object
611 - BUILDALL now takes a reference of the %params
612 that are passed to &new, and passes that to
613 each BUILD as well.
471c4f09 614
615 * Moose::Util::TypeConstraints
616 - Type constraints now survive runtime reloading
617 - added test for this
d7f17ebb 618
8339fae2 619 * Moose::Meta::Class
620 - fixed the way attribute defaults are handled
621 during instance construction (bug found by chansen)
622
d7f17ebb 623 * Moose::Meta::Attribute
624 - read-only attributes now actually enforce their
9deed647 625 read-only-ness (this corrected in Class::MOP as
626 well)
d7f17ebb 627
076c81ed 6280.02 Tues. March 21, 2006
fc5609d2 629 * Moose
b841b2a3 630 - many more tests, fixing some bugs and
631 edge cases
b841b2a3 632 - &extends now loads the base module with
633 UNIVERSAL::require
634 - added UNIVERSAL::require to the
635 dependencies list
6ba6d68c 636 ** API CHANGES **
b841b2a3 637 - each new Moose class will also create
638 and register a subtype of Object which
639 correspond to the new Moose class.
b841b2a3 640 - the 'isa' option in &has now only
641 accepts strings, and will DWIM in
642 almost all cases
643
644 * Moose::Util::TypeConstraints
645 - added type coercion features
646 - added tests for this
647 - added support for this in attributes
648 and instance construction
6ba6d68c 649 ** API CHANGES **
b841b2a3 650 - type construction no longer creates a
651 function, it registers the type instead.
652 - added several functions to get the
653 registered types
6ba6d68c 654
655 * Moose::Object
656 - BUILDALL and DEMOLISHALL were broken
657 because of a mis-named hash key, Whoops :)
b841b2a3 658
659 * Moose::Meta::Attribute
660 - adding support for coercion in the
661 autogenerated accessors
662
663 * Moose::Meta::Class
664 - adding support for coercion in the
6ba6d68c 665 instance construction
666
667 * Moose::Meta::TypeConstraint
668 * Moose::Meta::TypeCoercion
669 - type constraints and coercions are now
670 full fledges meta-objects
fc5609d2 671
e522431d 6720.01 Wed. March 15, 2006
900466d6 673 - Moooooooooooooooooose!!!