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