bump version to 0.56 and update changes for release
[gitmo/Moose.git] / Changes
CommitLineData
e522431d 1Revision history for Perl extension Moose
2
3d24a30e 30.56 Mon September 1, 2008
4 For those not following the series of dev releases, there are
5 several major changes in this release of Moose.
6 ! Moose::init_meta should now be called as a method. See the
7 docs for details.
8
9 - Major performance improvements by nothingmuch.
10
11 - New modules for extension writers, Moose::Exporter and
12 Moose::Util::MetaRole by Dave Rolsky.
13
14 - Lots of doc improvements and additions, especially in the
15 cookbook sections.
16
17 - Various bug fixes.
18
19 * Removed all references to the experimental-but-no-longer-needed
20 Moose::Meta::Role::Application::ToMetaclassInstance.
21
22 * Require Class::MOP 0.65.
23
6ae2afc2 240.55_04 Sat August 30, 2008
3f567f44 25 * Moose::Util::MetaRole
6ae2afc2 26 * Moose::Cookbook::Extending::Recipe2
3f567f44 27 - This simplifies the application of roles to any meta class, as
28 well as the base object class. Reimplemented metaclass traits
29 using this module. (Dave Rolsky)
30
6ae2afc2 31 * Moose::Cookbook::Extending::Recipe1
32 - This a new recipe, an overview of various ways to write Moose
33 extensions (Dave Rolsky)
34
35 * Moose::Cookbook::Extending::Recipe3
36 * Moose::Cookbook::Extending::Recipe4
37 - These used to be Extending::Recipe1 and Extending::Recipe2,
38 respectively.
39
975411b2 400.55_03 Fri August 29, 2008
41 * No changes from 0.55_02 except increasing the Class::MOP
42 dependency to 0.64_07.
43
23045c64 440.55_02 Fri August 29, 2008
c068e9a0 45 * Makefile.PL and Moose.pm
46 - explicitly require Perl 5.8.0+ (Dave Rolsky)
47
9758af8a 48 * Moose::Util::TypeConstraints
49 - Fix warnings from find_type_constraint if the type is not
50 found (t0m).
51
52 * Moose::Meta::TypeConstraint
23045c64 53 - Predicate methods (equals/is_a_type_of/is_subtype_of) now
9758af8a 54 return false if the type you specify cannot be found in the
23045c64 55 type registry, rather than throwing an unhelpful and
56 coincidental exception. (t0m).
9758af8a 57 - added docs & test for this (t0m)
58
59 * Moose::Meta::TypeConstraint::Registry
60 - add_type_constraint now throws an exception if a parameter is
61 not supplied (t0m).
62 - added docs & test for this (t0m)
23045c64 63
64 * Moose::Cookbook::FAQ
65 - Added a faq entry on the difference between "role" and "trait"
66 (t0m)
67
68 * Moose::Meta::Role
69 - Fixed a bug that caused role composition to not see a required
70 method when that method was provided by another role being
71 composed at the same time. (Dave Rolsky)
72 - test and bug finding (tokuhirom)
9758af8a 73
0d87d86c 740.55_01 Wed August 20, 2008
b3a7e860 75
76 !! Calling Moose::init_meta as a function is now !!
77 !! deprecated. Please see the Moose.pm docs for details. !!
78
c7a43a7a 79 * Moose::Meta::Method::Constructor
80 - Fix inlined constructor so that values produced by default
b3a7e860 81 or builder methods are coerced as required. (t0m)
82 - added test for this (t0m)
c7a43a7a 83
f92cd300 84 * Moose::Meta::Attribute
b3a7e860 85 - A lazy attribute with a default or builder did not attempt to
86 coerce the default value. The immutable code _did_
87 coerce. (t0m)
88 - added test for this (t0m)
f92cd300 89
5e6c2b88 90 * Moose::Exporter
91 - This is a new helper module for writing "Moose-alike"
92 modules. This should make the lives of MooseX module authors
93 much easier. (Dave Rolsky)
94
ce265cc3 95 * Moose
d190db8b 96 * Moose::Cookbook::Meta::Recipe5
97 - Implemented metaclass traits (and wrote a recipe for it):
d5c18ef0 98
99 use Moose -traits => 'Foo'
100
101 This should make writing small Moose extensions a little
102 easier (Dave Rolsky)
103
b3a7e860 104 * Moose::Cookbook::Basics::Recipe1
105 - Removed any examples of direct hashref access, and applied an
106 editorial axe to reduce verbosity. (Dave Rolsky)
107
108 * Moose::Cookbook::Basics::Recipe1
109 - Also applied an editorial axe here. (Dave Rolsky)
110
d5c18ef0 111 * Moose
3e1e774e 112 * Moose::Cookbook::Extending::Recipe1
ce265cc3 113 * Moose::Cookbook::Extending::Recipe2
3e1e774e 114 - Rewrote extending and embedding moose documentation and
115 recipes to use Moose::Exporter (Dave Rolsky)
116
7ff56534 117 * Moose
3e1e774e 118 * Moose::Role
119 - These two modules now warn when you load them from the main
120 package "main" package, because we will not export sugar to
121 main. Previously it just did nothing. (Dave Rolsky)
7ff56534 122
b3a7e860 123 * Moose::Role
124 - Now provide an init_meta method just like Moose.pm, and you
125 can call this to provide an alternate role metaclass. (Dave
126 Rolsky and nothingmuch)
4f136178 127 - get_method_map now respects the package cache flag (nothingmuch)
b3a7e860 128
129 * Moose::Meta::Role
130 - Two new methods - add_method and wrap_method_body
131 (nothingmuch)
132
133 * many modules
134 - Optimizations including allowing constructors to accept hash
135 refs, making many more classes immutable, and making
136 constructors immutable. (nothingmuch)
137
7e8c0685 1380.55 Sun August 3, 2008
330dbb07 139 * Moose::Meta::Attribute
7e8c0685 140 - breaking down the way 'handles' methods are
141 created so that the process can be more easily
330dbb07 142 overridden by subclasses (stevan)
143
d5598ade 144 * Moose::Meta::TypeConstraint
7e8c0685 145 - fixing what is passed into a ->message with
d5598ade 146 the type constraints (RT #37569)
147 - added tests for this (Charles Alderman)
148
470b518a 149 * Moose::Util::TypeConstraints
7e8c0685 150 - fix coerce to accept anon types like subtype can (mst)
470b518a 151
021b8139 152 * Moose::Cookbook
f254fa03 153 - reorganized the recipes into sections - Basics, Roles, Meta,
154 Extending - and wrote abstracts for each section (Dave Rolsky)
155
156 * Moose::Cookbook::Basics::Recipe10
157 - A new recipe that demonstrates operator overloading
158 in combination with Moose. (bluefeet)
021b8139 159
7c36d1d5 160 * Moose::Cookbook::Meta::Recipe1
161 - an introduction to what meta is and why you'd want to make
162 your own metaclass extensions (Dave Rolsky)
163
f254fa03 164 * Moose::Cookbook::Meta::Recipe4
165 - a very simple metaclass example (Dave Rolsky)
166
d5e84b86 167 * Moose::Cookbook::Extending::Recipe1
168 - how to write a Moose-alike module to use your own object base
169 class (Dave Rolsky)
170
f254fa03 171 * Moose::Cookbook::Extending::Recipe2
172 - how to write modules with an API just like C<Moose.pm> (Dave
173 Rolsky)
c2a0627f 174
7e8c0685 175 * all documentation
176 - Tons of fixes, both syntactical and grammatical (Dave
177 Rolsky, Paul Fenwick)
178
713b0244 1790.54 Thurs. July 3, 2008
180 ... this is not my day today ...
181
182 * Moose::Meta::Attribute
183 - fixed legal_options_for_inheritance such that
184 clone_and_inherit options still works for
185 Class::MOP::Attribute objects and therefore
186 does not break MooseX::AttributeHelpers
187 (stevan)
93cc8330 188
6d20aa6d 1890.53 Thurs. July 3, 2008
190 * Whoops, I guess I should run 'make manifest' before
191 actually releasing the module. No actual changes
192 in this release, except the fact that it includes
193 the changes that I didn't include in the last
194 release. (stevan--)
03e7dbec 195
68b6146c 1960.52 Thurs. July 3, 2008
47b19570 197 * Moose
198 - added "FEATURE REQUESTS" section to the Moose docs
977a86ba 199 to properly direct people (stevan) (RT #34333)
200 - making 'extends' croak if it is passed a Role since
201 this is not ever something you want to do
202 (fixed by stevan, found by obra)
203 - added tests for this (stevan)
19fabdd3 204
68b6146c 205 * Moose::Object
206 - adding support for DOES (as in UNIVERSAL::DOES)
207 (nothingmuch)
208 - added test for this
209
210 * Moose::Meta::Attribute
211 - added legal_options_for_inheritance (wreis)
212 - added tests for this (wreis)
213
214 * Moose::Cookbook::Snacks::*
215 - removed some of the unfinished snacks that should
216 not have been released yet. Added some more examples
217 to the 'Keywords' snack. (stevan)
218
47b19570 219 * Moose::Cookbook::Style
220 - added general Moose "style guide" of sorts to the
221 cookbook (nothingmuch) (RT #34335)
19fabdd3 222
977a86ba 223 * t/
224 - added more BUILDARGS tests (stevan)
225
07b0f1a5 2260.51 Thurs. Jun 26, 2008
d31f9614 227 * Moose::Role
0db4f1d7 228 - add unimport so "no Moose::Role" actually does
229 something (sartak)
230
db9476b1 231 * Moose::Meta::Role::Application::ToRole
232 - when RoleA did RoleB, and RoleA aliased a method from RoleB in
233 order to provide its own implementation, that method still got
234 added to the list of required methods for consumers of
235 RoleB. Now an aliased method is only added to the list of
236 required methods if the role doing the aliasing does not
237 provide its own implementation. See Recipe 11 for an example
6164d955 238 of all this. (Dave Rolsky)
db9476b1 239 - added tests for this
0db4f1d7 240
93e98578 241 * Moose::Meta::Method::Constructor
242 - when a single argument that wasn't a hashref was provided to
243 an immutabilized constructor, the error message was very
244 unhelpful, as opposed to the non-immutable error. Reported by
6164d955 245 dew. (Dave Rolsky)
246 - added test for this (Dave Rolsky)
d31f9614 247
0db4f1d7 248 * Moose::Meta::Attribute
249 - added support for meta_attr->does("ShortAlias") (sartak)
250 - added tests for this (sartak)
17ee2ee0 251 - moved the bulk of the `handles` handling to the new
d3e7fe85 252 install_delegation method (Stevan)
0db4f1d7 253
254 * Moose::Object
210caeb6 255 - Added BUILDARGS, a new step in new()
256
0206f6d6 257 * Moose::Meta::Role::Application::RoleSummation
258 - fix typos no one ever sees (sartak)
0db4f1d7 259
17ee2ee0 260 * Moose::Util::TypeConstraints
261 * Moose::Meta::TypeConstraint
262 * Moose::Meta::TypeCoercion
263 - Attempt to work around the ??{ } vs. threads issue
47b19570 264 (not yet fixed)
17ee2ee0 265 - Some null_constraint optimizations
266
eaa35e6e 2670.50 Thurs. Jun 11, 2008
268 - Fixed a version number issue by bumping all modules
269 to 0.50.
270
4cf89c74 2710.49 Thurs. Jun 11, 2008
eaa35e6e 272 !! This version now approx. 20-25% !!
273 !! faster with new Class::MOP 0.59 !!
274
21f1e231 275 * Moose::Meta::Attribute
276 - fixed how the is => (ro|rw) works with
277 custom defined reader, writer and accessor
278 options.
279 - added docs for this (TODO).
280 - added tests for this (Thanks to Penfold)
281 - added the custom attribute alias for regular
282 Moose attributes which is "Moose"
09b8cb41 283 - fix builder and default both being used
284 (groditi)
21f1e231 285
286 * Moose
287 Moose::Meta::Class
288 Moose::Meta::Attribute
289 Moose::Meta::Role
290 Moose::Meta::Role::Composite
291 Moose::Util::TypeConstraints
f93f7be9 292 - switched usage of reftype to ref because
293 it is much faster
294
8371f6e1 295 * Moose::Meta::Role
296 - changing add_package_symbol to use the new
297 HASH ref form
298
f93f7be9 299 * Moose::Object
300 - fixed how DEMOLISHALL is called so that it
301 can be overrided in subclasses (thanks to Sartak)
302 - added test for this (thanks to Sartak)
21f1e231 303
e151db23 304 * Moose::Util::TypeConstraints
305 - move the ClassName type check code to
306 Class::MOP::is_class_loaded (thanks to Sartak)
307
09b8cb41 308 * Moose::Cookbook::Recipe11
309 - add tests for this (thanks to tokuhirom)
310
695d1c68 3110.48 Thurs. May 29, 2008
312 (early morning release engineering)--
313
314 - fixing the version in Moose::Meta::Method::Destructor
315 which was causing the indexer to choke
316
2391ba89 3170.47 Thurs. May 29, 2008
318 (late night release engineering)--
319
320 - fixing the version is META.yml, no functional
321 changes in this release
322
bd364604 3230.46 Wed. May 28, 2008
324 !! This version now approx. 20-25% !!
325 !! faster with new Class::MOP 0.57 !!
326
327 * Moose::Meta::Class
328 - some optimizations of the &initialize method
329 since it is called so often by &meta
330
0addec44 331 * Moose::Meta::Class
332 Moose::Meta::Role
333 - now use the get_all_package_symbols from the
334 updated Class::MOP, test suite is now 10 seconds
335 faster
d3308256 336
337 * Moose::Meta::Method::Destructor
bd364604 338 - is_needed can now also be called as a class
339 method for immutablization to check if the
340 destructor object even needs to be created
341 at all
342
343 * Moose::Meta::Method::Destructor
d3308256 344 Moose::Meta::Method::Constructor
345 - added more descriptive error message to help
346 keep people from wasting time tracking an error
347 that is easily fixed by upgrading.
0addec44 348
c998012c 3490.45 Saturday, May 24, 2008
1b2aea39 350 * Moose
351 - Because of work in Class::MOP 0.56, all
352 XS based functionality is now optional
353 and a Pure Perl version is supplied
354 - the CLASS_MOP_NO_XS environment variable
355 can now be used to force non-XS versions
356 to always be used
357 - several of the packages have been tweaked
358 to take care of this, mostly we added
359 support for the package_name and name
360 variables in all the Method metaclasses
408f2665 361 - before/around/after method modifiers now
362 support regexp matching of names
363 (thanks to Takatoshi Kitano)
364 - tests added for this
088f372b 365 - NOTE: this only works for classes, it
366 is currently not supported in roles,
367 but, ... patches welcome
b8926b8c 368 - All usage of Carp::confess have been replaced
369 by Carp::croak in the "keyword" functions since
370 the stack trace is usually not helpful
371
372 * Moose::Role
373 - All usage of Carp::confess have been replaced
374 by Carp::croak in the "keyword" functions since
375 the stack trace is usually not helpful
376 - The 'has' keyword for roles now accepts the
377 same array ref form that Moose.pm does
378 (has [qw/foo bar/] => (is => 'rw', ...))
379 - added test for this
380
0b7df53c 381 * Moose::Meta::Attribute
382 - trigger on a ro-attribute is no longer an
383 error, as it's useful to trigger off of the
384 constructor
385
8453c358 386 * Moose::Meta::Class
387 - added same 'add_package_symbol' fix as in
388 Class::MOP 0.56
389
390 * Moose::Util
391 - does_role now handles non-Moose classes
392 more gracefully
393 - added tests for this
408f2665 394 - added the 'add_method_modifier' function
395 (thanks to Takatoshi Kitano)
8453c358 396
a84a89ba 397 * Moose::Util::TypeConstraints
398 - subtypes of parameterizable types now are
399 themselves parameterizable types
400
1b55c340 401 * Moose::Meta::Method::Constructor
402 - fixed bug where trigger was not being
403 called by the inlined immutable
404 constructors
405 - added test for this (thanks to Caelum)
406
407 * Moose::Meta::Role::Application::ToInstance
408 - now uses the metaclass of the instance
409 (if possible) to create the anon-class
410 (thanks Jonathan Rockway)
411
b8926b8c 412 * Moose::Cookbook::Recipe22
413 - added the meta-attribute trait recipe
414 (thanks to Sartak)
415
1b55c340 416 * t/
417 - fixed hash-ordering test bug that was
b8926b8c 418 causing occasional cpantester failures
419 - renamed the t/000_recipe/*.t tests to be
420 more descriptive (thanks to Sartak)
1b55c340 421
3a0c064a 4220.44 Sat. May 10, 2008
c0b37457 423 * Moose
3a0c064a 424 - made make_immutable warning cluck to
ca0e380d 425 show where the error is (thanks mst)
3a0c064a 426
427 * Moose::Object
428 - BUILDALL and DEMOLISHALL now call
429 ->body when looping through the
430 methods, to avoid the overloaded
431 method call.
ca0e380d 432 - fixed issue where DEMOLISHALL was
433 eating the $@ values, and so not
434 working correctly, it still kind of
435 eats them, but so does vanilla perl
436 - added tests for this
3a0c064a 437
ceb8945d 438 * Moose::Cookbook::Recipe7
3a0c064a 439 - added new recipe for immutable
440 functionality (thanks Dave Rolsky)
441
ceb8945d 442 * Moose::Cookbook::Recipe9
3a0c064a 443 - added new recipe for builder and
444 lazy_build (thanks Dave Rolsky)
445
37332f31 446 * Moose::Cookbook::Recipe11
3a0c064a 447 - added new recipe for method aliasing
448 and exclusion with Roles (thanks Dave Rolsky)
449
450 * t/
ca0e380d 451 - fixed Win32 test failure (thanks spicyjack)
ceb8945d 452
1a28289d 453 ~ removed Build.PL and Module::Build compat
454 since Module::Install has done that.
455
27cabcda 4560.43 Wed. April, 30, 2008
cbd141ca 457 * NOTE TO SELF:
458 drink more coffee before
459 doing release engineering
460
461 - whoops, forgot to do the smolder tests,
462 and we broke some of the custom meta-attr
463 modules. This fixes that.
464
c93e8e7d 4650.42 Mon. April 28, 2008
466 - some bad tests slipped by, nothing else
467 changed in this release (cpantesters++)
468
469 - upped the Class::MOP dependency to 0.55
470 since we have tests which need the C3
471 support
472
a5e883ae 4730.41 Mon. April 28, 2008
004222dc 474 ~~ numerous documentation updates ~~
547dda77 475
476 - Changed all usage of die to Carp::croak for better
477 error reporting (initial patch by Tod Hagan)
004222dc 478
c2922d69 479 ** IMPORTANT NOTE **
480 - the make_immutable keyword is now deprecated, don't
481 use it in any new code and please fix your old code
482 as well. There will be 2 releases, and then it will
483 be removed.
484
6c36eeaa 485 * Moose
486 Moose::Role
487 Moose::Meta::Class
488 - refactored the way inner and super work to avoid
489 any method/@ISA cache penalty (nothingmuch)
490
4078709c 491 * Moose::Meta::Class
492 - fixing &new_object to make sure trigger gets the
493 coerced value (spotted by Charles Alderman on the
494 mailing list)
495 - added test for this
496
51c107ef 497 * Moose::Meta::Method::Constructor
498 - immutable classes which had non-lazy attributes were calling
499 the default generating sub twice in the constructor. (bug
500 found by Jesse Luehrs, fixed by Dave Rolsky)
501 - added tests for this (Dave Rolsky)
ae8d63f2 502 - fix typo in initialize_body method (nothingmuch)
503
504 * Moose::Meta::Method::Destructor
505 - fix typo in initialize_body method (nothingmuch)
51c107ef 506
6c36eeaa 507 * Moose::Meta::Method::Overriden
508 Moose::Meta::Method::Augmented
509 - moved the logic for these into their own
510 classes (nothingmuch)
511
5e98d2b6 512 * Moose::Meta::Attribute
aed87761 513 - inherited attributes may now be extended without
2ea379cb 514 restriction on the type ('isa', 'does') (Sartak)
cf12a691 515 - added tests for this (Sartak)
547dda77 516 - when an attribute property is malformed (such as lazy without
517 a default), give the name of the attribute in the error
518 message (Sartak)
88f23977 519 - added the &applied_traits and &has_applied_traits methods
520 to allow introspection of traits
521 - added tests for this
37905a64 522 - moved 'trait' and 'metaclass' argument handling to here from
523 Moose::Meta::Class
524 - clone_and_inherit_options now handles 'trait' and 'metaclass' (has
525 '+foo' syntax) (nothingmuch)
526 - added tests for this (t0m)
7c60f730 527
528 * Moose::Object
529 - localize $@ inside DEMOLISHALL to avoid it
530 eating $@ (found by Ernesto)
531 - added test for this (thanks to Ernesto)
cf12a691 532
ae8d63f2 533 * Moose::Util::TypeConstraints
534 - &find_type_constraint now DWIMs when given an
6c36eeaa 535 type constraint object or name (nothingmuch)
37905a64 536 - &find_or_create_type_constraint superseded with a number of more
537 specific functions:
538 - find_or_create_{isa,does}_type_constraint
539 - find_or_parse_type_constraint
ae8d63f2 540
541 * Moose::Meta::TypeConstraint
4078709c 542 Moose::Meta::TypeConstraint::Class
37905a64 543 Moose::Meta::TypeConstraint::Role
4078709c 544 Moose::Meta::TypeConstraint::Enum
545 Moose::Meta::TypeConstraint::Union
546 Moose::Meta::TypeConstraint::Parameterized
547 - added the &equals method for comparing two type
548 constraints (nothingmuch)
549 - added tests for this (nothingmuch)
550
551 * Moose::Meta::TypeConstraint
ae8d63f2 552 - add the &parents method, which is just an alias to &parent.
37905a64 553 Useful for polymorphism with TC::{Class,Role,Union} (nothingmuch)
ae8d63f2 554
555 * Moose::Meta::TypeConstraint::Class
ae8d63f2 556 - added the class attribute for introspection purposes
557 (nothingmuch)
558 - added tests for this
4078709c 559
560 * Moose::Meta::TypeConstraint::Enum
6c36eeaa 561 Moose::Meta::TypeConstraint::Role
37905a64 562 - broke these out into their own classes (nothingmuch)
ae8d63f2 563
564 * Moose::Cookbook::Recipe*
565 - fixed references to test file locations in the POD
566 and updated up some text for new Moose features
37905a64 567 (Sartak)
568
569 * Moose::Util
570 - Added &resolve_metaclass_alias, a helper function for finding an actual
571 class for a short name (e.g. in the traits list)
ae8d63f2 572
52338af5 5730.40 Fri. March 14, 2008
6e2840b7 574 - I hate Pod::Coverage
575
e0328ed4 5760.39 Fri. March 14, 2008
8d62bf6d 577 * Moose
578 - documenting the use of '+name' with attributes
579 that come from recently composed roles. It makes
580 sense, people are using it, and so why not just
581 officially support it.
9c10b5ad 582 - fixing the 'extends' keyword so that it will not
583 trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
94075501 584
1321f087 585 * oose
586 - added the perl -Moose=+Class::Name feature to allow
587 monkeypatching of classes in one liners
588
9c10b5ad 589 * Moose::Util
590 - fixing the 'apply_all_roles' keyword so that it will not
591 trigger Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
8d62bf6d 592
48045612 593 * Moose::Meta::Class
594 - added ->create method which now supports roles (thanks to jrockway)
595 - added tests for this
6d5cbd2b 596 - added ->create_anon_class which now supports roles and caching of
597 the results (thanks to jrockway)
598 - added tests for this
81c3738f 599 - made ->does_role a little more forgiving when it is
600 checking a Class::MOP era metaclasses.
48045612 601
94075501 602 * Moose::Meta::Role::Application::ToInstance
603 - it is now possible to pass extra params to be used when
604 a role is applied to an the instance (rebless_params)
605 - added tests for this
606
9f4334a1 607 * Moose::Util::TypeConstraints
4ab662d6 608 - class_type now accepts an optional second argument for a
609 custom message. POD anotated accordingly (groditi)
610 - added tests for this
9f4334a1 611 - it is now possible to make anon-enums by passing 'enum' an
612 ARRAY ref instead of the $name => @values. Everything else
613 works as before.
614 - added tests for this
615
8d62bf6d 616 * t/
617 - making test for using '+name' on attributes consumed
618 from a role, it works and makes sense too.
619
80d955e4 620 * Moose::Meta::Attribute
621 - fix handles so that it doesn't return nothing
622 when the method cannot be found, not sure why
f4f3e701 623 it ever did this originally, this means we now
624 have slightly better support for AUTOLOADed
625 objects
626 - added more delegation tests
587e457d 627 - adding ->does method to this so as to better
628 support traits and their introspection.
629 - added tests for this
1a386a6c 630
631 * Moose::Object
632 - localizing the Data::Dumper configurations so
633 that it does not pollute others (RT #33509)
9b1aa0c3 634 - made ->does a little more forgiving when it is
635 passed Class::MOP era metaclasses.
80d955e4 636
6370.38 Fri. Feb. 15, 2008
c3b81505 638 * Moose::Meta::Attribute
639 - fixed initializer to correctly do
640 type checking and coercion in the
641 callback
642 - added tests for this
643
1a740d8a 644 * t/
645 - fixed some finicky tests (thanks to konobi)
646
80d955e4 6470.37 Thurs. Feb. 14, 2008
688fcdda 648 * Moose
649 - fixed some details in Moose::init_meta
650 and its superclass handling (thanks thepler)
651 - added tests for this (thanks thepler)
a28fe77b 652 - 'has' now dies if you don't pass in name
653 value pairs
2a5e59d0 654 - added the 'make_immutable' keyword as a shortcut
9df136d0 655 to make_immutable
688fcdda 656
657 * Moose::Meta::Class
658 Moose::Meta::Method::Constructor
659 Moose::Meta::Attribute
649b9340 660 - making (init_arg => undef) work here too
661 (thanks to nothingmuch)
be771c43 662
663 * Moose::Meta::Attribute
664 Moose::Meta::Method::Constructor
665 Moose::Meta::Method::Accessor
5fec9b97 666 - make lazy attributes respect attr initializers (rjbs)
be771c43 667 - added tests for this
688fcdda 668
669 * Moose::Util::TypeConstraints
670 Moose::Util::TypeConstraints::OptimizedConstraints
c14746bc 671 Moose::Meta::TypeConstraints
688fcdda 672 Moose::Meta::Attribute
673 Moose::Meta::Method::Constructor
674 Moose::Meta::Method::Accessor
649b9340 675 - making type errors use the
676 assigned message (thanks to Sartak)
677 - added tests for this
678
679 * Moose::Meta::Method::Destructor
680 - making sure DESTROY gets inlined properly
681 with successive DEMOLISH calls (thanks to manito)
688fcdda 682
ab76842e 683 * Moose::Meta::Attribute
684 Moose::Meta::Method::Accessor
685 - fixed handling of undef with type constraints
686 (thanks to Ernesto)
687 - added tests for this
c14746bc 688
689 * Moose::Util
690 - added &get_all_init_args and &get_all_attribute_values
691 (thanks to Sartak and nothingmuch)
ab76842e 692
e472c9a5 6930.36 Sat. Jan. 26, 2008
238b424d 694 * Moose::Role
695 Moose::Meta::Attribute
696 - role type tests now support when roles are
697 applied to non-Moose classes (found by ash)
698 - added tests for this (thanks to ash)
e472c9a5 699 - couple extra tests to boost code coverage
238b424d 700
701 * Moose::Meta::Method::Constructor
702 - improved fix for handling Class::MOP attributes
703 - added test for this
704
705 * Moose::Meta::Class
706 - handled the add_attribute($attribute_meta_object)
707 case correctly
708 - added test for this
709
3285fae9 7100.35 Tues. Jan. 22, 2008
45fd4af3 711 * Moose::Meta::Method::Constructor
712 - fix to make sure even Class::MOP attributes
472b7401 713 are handled correctly (Thanks to Dave Rolsky)
c3b35392 714 - added test for this (also Dave Rolsky)
4498537c 715
716 * Moose::Meta::Class
717 - improved error message on _apply_all_roles,
718 you should now use Moose::Util::apply_all_roles
719 and you shouldnt have been using a _ prefixed
720 method in the first place ;)
45fd4af3 721
fe05ce9c 7220.34 Mon. Jan. 21, 2008
778db3ac 723 ~~~ more misc. doc. fixes ~~~
724 ~~ updated copyright dates ~~
9b28d20b 725
726 Moose is now a postmodern object system :)
8bdc7f13 727 - (see the POD for details)
ccf49e80 728
729 * <<Role System Refactoring>>
730 - this release contains a major reworking and
731 cleanup of the role system
9b28d20b 732 - 100% backwards compat.
733 - Role application now restructured into seperate
734 classes based on type of applicants
735 - Role summation (combining of more than one role)
ccf49e80 736 is much cleaner and anon-classes are no longer
9b28d20b 737 used in this process
ccf49e80 738 - new Composite role metaclass
9b28d20b 739 - runtime application of roles to instances
740 is now more efficient and re-uses generated
741 classes when applicable
ccf49e80 742
9b28d20b 743 * <<New Role composition features>>
ccf49e80 744 - methods can now be excluded from a given role
9b28d20b 745 during composition
ccf49e80 746 - methods can now be aliased to another name (and
747 still retain the original as well)
4734114b 748
749 * Moose::Util::TypeConstraints::OptimizedConstraints
750 - added this module (see above)
751
d7d8a8c7 752 * Moose::Meta::Class
753 - fixed the &_process_attribute method to be called
4734114b 754 by &add_attribute, so that the API is now correct
755
e7c06c1e 756 * Moose::Meta::Method::Accessor
4734114b 757 - fixed bug when passing a list of values to
e7c06c1e 758 an accessor would get (incorrectly) ignored.
759 Thanks to Sartak for finding this ;)
760 - added tests for this (Sartak again)
32dd4a95 761
a4e516f6 762 * Moose::Meta::Method::Accessor
763 Moose::Meta::Method::Constructor
28412c0b 764 Moose::Meta::Attribute
ccf49e80 765 Moose::Meta::TypeConstraint
766 Moose::Meta::TypeCoercion
767 - lots of cleanup of such things as:
28412c0b 768 - generated methods
769 - type constraint handling
ccf49e80 770 - error handling/messages
771 (thanks to nothingmuch)
a4e516f6 772
4734114b 773 * Moose::Meta::TypeConstraint::Parameterizable
774 - added this module to support the refactor
775 in Moose::Meta::TypeConstraint::Parameterized
776
777 * Moose::Meta::TypeConstraint::Parameterized
778 - refactored how these types are handled so they
779 are more generic and not confined to ArrayRef
780 and HashRef only
a4e516f6 781
2de7e794 782 * t/
783 - shortened some file names for better VMS support (RT #32381)
784
25374f01 7850.33 Fri. Dec. 14, 2007
32dd4a95 786 !! Moose now loads 2 x faster !!
787 !! with new Class::MOP 0.49 !!
25374f01 788
f7865ec8 789 ++ new oose.pm module to make command line
25374f01 790 Moose-ness easier (see POD docs for more)
4734114b 791
25374f01 792 * Moose::Meta::Class
793 * Moose::Meta::Role
4734114b 794 - several tweaks to take advantage of the
25374f01 795 new method map caching in Class::MOP
796
39aba5c9 797 * Moose::Meta::TypeConstraint::Parameterized
798 - allow subtypes of ArrayRef and HashRef to
acb8a5db 799 be used as a container (sartak)
4734114b 800 - added tests for this
acb8a5db 801 - basic support for coercion to ArrayRef and
802 HashRef for containers (sartak)
4734114b 803 - added tests for this
804
25374f01 805 * Moose::Meta::TypeCoercion
806 - coercions will now create subtypes as needed
807 so you can now add coercions to parameterized
808 types without having to explictly define them
809 - added tests for this
810
ac211120 811 * Moose::Meta::Method::Accessor
812 - allow subclasses to decide whether we need
813 to copy the value into a new variable (sartak)
39aba5c9 814
dc26a424 8150.32 Tues. Dec. 4, 2007
8de73ff1 816 * Moose::Util::TypeConstraints
817 - fixing how subtype aliases of unions work
818 they should inherit the parent's coercion
819 - added tests for this
4734114b 820 - you can now define multiple coercions on
41e007e4 821 a single type at different times instead of
822 having to do it all in one place
823 - added tests for this
4734114b 824
8de73ff1 825 * Moose::Meta::TypeConstraint
826 - there is now a default constraint of sub { 1 }
827 instead of Moose::Util::TypeConstraints setting
828 this for us
829
4734114b 830 * Moose::Meta::TypeCoercion
831 * Moose::Meta::TypeCoercion::Union
832 - added the &has_coercion_for_type and
833 &add_type_coercions methods to support the
41e007e4 834 new features above (although you cannot add
835 more type coercions for Union types)
836
ffcb48b4 8370.31 Mon. Nov. 26, 2007
f3c4e20e 838 * Moose::Meta::Attribute
4734114b 839 - made the +attr syntax handle extending types with
f3c4e20e 840 parameters. So "has '+foo' => (isa => 'ArrayRef[Int]')"
841 now works if the original foo is an ArrayRef.
842 - added tests for this.
843 - delegation now works even if the attribute does not
844 have a reader method using the get_read_method_ref
4734114b 845 method from Class::MOP::Attribute.
f3c4e20e 846 - added tests for this
847 - added docs for this
4734114b 848
f3c4e20e 849 * Moose::Util::TypeConstraints
4734114b 850 - passing no "additional attribute info" to
851 &find_or_create_type_constraint will no longer
852 attempt to create an __ANON__ type for you,
f3c4e20e 853 instead it will just return undef.
854 - added docs for this
855
1edfdf1c 8560.30 Fri. Nov. 23, 2007
ca168e89 857 * Moose::Meta::Method::Constructor
858 -builder related bug in inlined constructor. (groditi)
859
3822d5ee 860 * Moose::Meta::Method::Accessor
861 - genereate unnecessary calls to predicates and refactor
862 code generation for runtime speed (groditi)
863
5d776bdf 864 * Moose::Util::TypeConstraints
0e0709ea 865 - fix ClassName constraint to introspect symbol table (mst)
a0f8153d 866 - added more tests for this (mst)
867 - fixed it so that subtype 'Foo' => as 'HashRef[Int]' ...
868 with work correctly.
869 - added tests for this
5d776bdf 870
1edfdf1c 871 * Moose::Cookbook
872 - adding the link to Recipie 11 (written by Sartak)
873 - adding test for SYNOPSIS code
874
4734114b 875 * t/
ca168e89 876 - New tests for builder bug. Upon instantiation, if an
877 attribute had a builder, no value and was not lazy the
878 builder default was not getting run, oops. (groditi)
879
b97b9655 8800.29 Tues. Nov. 13, 2007
0b26305c 881 * Moose::Meta::Attribute
5d776bdf 882 - Fix error message on missing builder method (groditi)
0b26305c 883
884 * Moose::Meta::Method::Accessor
5d776bdf 885 - Fix error message on missing builder method (groditi)
0b26305c 886
4734114b 887 * t/
5d776bdf 888 - Add test to check for the correct error message when
889 builder method is missing (groditi)
0b26305c 890
98c4c382 8910.28 Tues. Nov. 13, 2007
4734114b 892 - 0.27 packaged incorrectly (groditi)
98c4c382 893
e134cd19 8940.27 Tues. Nov. 13, 2007
26fbace8 895 * Moose::Meta::Attribute
896 - Added support for the new builder option (groditi)
6af1a927 897 - Added support for lazy_build option (groditi)
1ed0b94f 898 - Changed slot initialization for predicate changes (groditi)
26fbace8 899
900 * Moose::Meta::Method::Accessor
6af1a927 901 - Added support for lazy_build option (groditi)
4734114b 902 - Fix inline methods to work with corrected predicate
28669f89 903 behavior (groditi)
26fbace8 904
7a5b07b3 905 * Moose::Meta::Method::Constructor
906 - Added support for lazy_build option (groditi)
907
26fbace8 908 * t/
28669f89 909 - tests for builder and lazy_build (groditi)
26fbace8 910
4734114b 911 * fixing some misc. bits in the docs that
28669f89 912 got mentioned on CPAN Forum & perlmonks
4734114b 913
e7f8d0c2 914 * Moose::Meta::Role
4734114b 915 - fixed how required methods are handled
e7f8d0c2 916 when they encounter overriden or modified
917 methods from a class (thanks to confound).
918 - added tests for this
5af6a16d 919
3796382a 920 * Moose::Util::TypeConstraint
4734114b 921 - fixed the type notation parser so that
922 the | always creates a union and so is
923 no longer a valid type char (thanks to
924 konobi, mugwump and #moose for working
3796382a 925 this one out.)
926 - added more tests for this
927
77a18c28 9280.26 Thurs. Sept. 27, 2007
929 == New Features ==
4734114b 930
77a18c28 931 * Parameterized Types
4734114b 932 We now support parameterized collection types, such as:
77a18c28 933 ArrayRef[Int] # array or integers
934 HashRef[Object] # a hash with object values
935 They can also be nested:
936 ArrayRef[HashRef[RegExpr]] # an array of hashes with regexpr values
937 And work with the type unions as well:
938 ArrayRef[Int | Str] # array of integers of strings
4734114b 939
77a18c28 940 * Better Framework Extendability
4734114b 941 Moose.pm is now "extendable" such that it is now much
942 easier to extend the framework and add your own keywords
77a18c28 943 and customizations. See the "EXTENDING AND EMBEDDING MOOSE"
944 section of the Moose.pm docs.
4734114b 945
77a18c28 946 * Moose Snacks!
4734114b 947 In an effort to begin documenting some of the various
948 details of Moose as well as some common idioms, we have
949 created Moose::Cookbook::Snacks as a place to find
77a18c28 950 small (easily digestable) nuggets of Moose code.
4734114b 951
77a18c28 952 ====
fb697a87 953 ~ Several doc updates/cleanup thanks to castaway ~
4734114b 954
955 - converted build system to use Module::Install instead of
e46f5cc2 956 Module::Build (thanks to jrockway)
fb697a87 957
d67145ed 958 * Moose
4734114b 959 - added all the meta classes to the immutable list and
d67145ed 960 set it to inline the accessors
4734114b 961 - fix import to allow Sub::Exporter like { into => }
e59a5c29 962 and { into_level => } (perigrin)
4734114b 963 - exposed and documented init_meta() to allow better
e59a5c29 964 embedding and extending of Moose (perigrin)
4734114b 965
e59a5c29 966 * t/
967 - complete re-organization of the test suite
4734114b 968 - added some new tests as well
77a18c28 969 - finally re-enabled the Moose::POOP test since
970 the new version of DBM::Deep now works again
971 (thanks rob)
b468a3d3 972
973 * Moose::Meta::Class
4734114b 974 - fixed very odd and very nasty recursion bug with
b468a3d3 975 inner/augment (mst)
976 - added tests for this (eilara)
d67145ed 977
3726f905 978 * Moose::Meta::Attribute
979 Moose::Meta::Method::Constructor
980 Moose::Meta::Method::Accessor
4734114b 981 - fixed issue with overload::Overloaded getting called
f1917f58 982 on non-blessed items. (RT #29269)
3726f905 983 - added tests for this
4734114b 984
3ccdc84a 985 * Moose::Meta::Method::Accessor
4734114b 986 - fixed issue with generated accessor code making
3ccdc84a 987 assumptions about hash based classes (thanks to dexter)
4734114b 988
3726f905 989 * Moose::Coookbook::Snacks
4734114b 990 - these are bits of documentation, not quite as big as
991 Recipes but which have no clear place in the module docs.
3726f905 992 So they are Snacks! (horray for castaway++)
993
07cde929 994 * Moose::Cookbook::Recipe4
995 - updated it to use the new ArrayRef[MyType] construct
996 - updated the accompanying test as well
997
3726f905 998 +++ Major Refactor of the Type Constraint system +++
999 +++ with new features added as well +++
1000
22aed3c0 1001 * Moose::Util::TypeConstraint
4734114b 1002 - no longer uses package variable to keep track of
22aed3c0 1003 the type constraints, now uses the an instance of
1004 Moose::Meta::TypeConstraint::Registry to do it
f1917f58 1005 - added more sophisticated type notation parsing
1006 (thanks to mugwump)
1007 - added tests for this
22aed3c0 1008
d67145ed 1009 * Moose::Meta::TypeConstraint
1010 - some minor adjustments to make subclassing easier
4734114b 1011 - added the package_defined_in attribute so that we
22aed3c0 1012 can track where the type constraints are created
4734114b 1013
d67145ed 1014 * Moose::Meta::TypeConstraint::Union
4734114b 1015 - this is now been refactored to be a subclass of
3726f905 1016 Moose::Meta::TypeConstraint
4734114b 1017
3726f905 1018 * Moose::Meta::TypeCoercion::Union
1019 - this has been added to service the newly refactored
4734114b 1020 Moose::Meta::TypeConstraint::Union and is itself
3726f905 1021 a subclass of Moose::Meta::TypeCoercion
4734114b 1022
0fbd4b0a 1023 * Moose::Meta::TypeConstraint::Parameterized
d67145ed 1024 - added this module (taken from MooseX::AttributeHelpers)
1025 to help construct nested collection types
1026 - added tests for this
4734114b 1027
22aed3c0 1028 * Moose::Meta::TypeConstraint::Registry
1029 - added this class to keep track of type constraints
d67145ed 1030
887169d7 10310.25 Mon. Aug. 13, 2007
8eca434b 1032 * Moose
4734114b 1033 - Documentation update to reference Moose::Util::TypeConstraints
1034 under 'isa' in 'has' for how to define a new type
8eca434b 1035 (thanks to shlomif).
1036
ab859145 1037 * Moose::Meta::Attribute
4734114b 1038 - required attributes now will no longer accept undef
ab859145 1039 from the constructor, even if there is a default and lazy
1040 - added tests for this
4734114b 1041 - default subroutines must return a value which passes the
7a5ebc40 1042 type constraint
1043 - added tests for this
4734114b 1044
a909a4df 1045 * Moose::Meta::Attribute
1046 * Moose::Meta::Method::Constructor
4734114b 1047 * Moose::Meta::Method::Accessor
a909a4df 1048 - type-constraint tests now handle overloaded objects correctly
1049 in the error message
4734114b 1050 - added tests for this (thanks to EvanCarroll)
ab859145 1051
8eca434b 1052 * Moose::Meta::TypeConstraint::Union
4734114b 1053 - added (has_)hand_optimized_constraint to this class so that
8eca434b 1054 it behaves as the regular Moose::Meta::TypeConstraint does.
1055
5868294f 1056 * Moose::Meta::Role
887169d7 1057 - large refactoring of this code
4734114b 1058 - added several more tests
1059 - tests for subtle conflict resolition issues
7125b244 1060 added, but not currently running
1061 (thanks to kolibre)
1062
4734114b 1063 * Moose::Cookbook::Recipe7
1064 - added new recipe for augment/inner functionality
887169d7 1065 (still in progress)
7125b244 1066 - added test for this
5868294f 1067
24a8fe99 1068 * Moose::Spec::Role
7125b244 1069 - a formal definition of roles (still in progress)
24a8fe99 1070
9a641848 1071 * Moose::Util
887169d7 1072 - utilities for easier working with Moose classes
7125b244 1073 - added tests for these
9a641848 1074
1075 * Test::Moose
887169d7 1076 - This contains Moose specific test functions
7125b244 1077 - added tests for these
9a641848 1078
6b4c1bdd 10790.24 Tues. July 3, 2007
1080 ~ Some doc updates/cleanup ~
c84f324f 1081
1082 * Moose::Meta::Attribute
4734114b 1083 - added support for roles to be given as parameters
c84f324f 1084 to the 'handles' option.
1085 - added tests and docs for this
4734114b 1086 - the has '+foo' attribute form now accepts changes to
83cc9094 1087 the lazy option, and the addition of a handles option
1088 (but not changing the handles option)
1089 - added tests and docs for this
c84f324f 1090
1db8ecc7 1091 * Moose::Meta::Role
1092 - required methods are now fetched using find_method_by_name
1093 so that required methods can come from superclasses
1094 - adjusted tests for this
1095
81941e9b 10960.23 Mon. June 18, 2007
73b84d2e 1097 * Moose::Meta::Method::Constructor
1098 - fix inlined constructor for hierarchy with multiple BUILD methods (mst)
ac2dc464 1099 * Moose::Meta::Class
1100 - Modify make_immutable to work with the new Class::MOP immutable
1101 mechanism + POD + very basic test (groditi)
cbe25729 1102 * Moose::Meta::Attribute
4734114b 1103 - Fix handles to use goto() so that caller() comes out properly on
cbe25729 1104 the other side (perigrin)
ac2dc464 1105
db53853c 11060.22 Thurs. May 31, 2007
3969267d 1107 * Moose::Util::TypeConstraints
4734114b 1108 - fix for prototype undeclared issue when Moose::Util::TypeConstraints
db53853c 1109 loaded before consumers (e.g. Moose::Meta::Attribute) by predeclaring
1110 prototypes for functions
4734114b 1111 - added the ClassName type constraint, this checks for strings
1112 which will respond true to ->isa(UNIVERSAL).
9af1d28b 1113 - added tests and docs for this
4734114b 1114 - subtyping just in name now works correctly by making the
86629f93 1115 default for where be { 1 }
4734114b 1116 - added test for this
3969267d 1117
d7611a4a 1118 * Moose::Meta::Method::Accessor
4734114b 1119 - coerce and lazy now work together correctly, thanks to
d7611a4a 1120 merlyn for finding this bug
1121 - tests added for this
df492bba 1122 - fix reader presedence bug in Moose::Meta::Attribute + tests
d7611a4a 1123
86629f93 1124 * Moose::Object
1125 - Foo->new(undef) now gets ignored, it is assumed you meant to pass
4734114b 1126 a HASH-ref and missed. This produces better error messages then
86629f93 1127 having it die cause undef is not a HASH.
1128 - added tests for this
1129
74a0a945 11300.21 Thursday, May 2nd, 2007
52c7c330 1131 * Moose
1132 - added SUPER_SLOT and INNER_SLOT class hashes to support unimport
1133 - modified unimport to remove super and inner along with the rest
1134 - altered unimport tests to handle this
1135
1136 * Moose::Role
1137 - altered super export to populate SUPER_SLOT
1138
1139 * Moose::Meta::Class
1140 - altered augment and override modifier application to use *_SLOT
1141 - modified tests for these to unimport one test class each to test
1142
492d4d76 1143 * Moose::Meta::Role
1144 - fixed issue where custom attribute metaclasses
1145 where not handled correctly in roles
1146 - added tests for this
4734114b 1147
5cb193ed 1148 * Moose::Meta::Class
4734114b 1149 - fixed issue where extending metaclasses with
5cb193ed 1150 roles would blow up. Thanks to Aankhen`` for
1151 finding this insidious error, and it's solution.
4734114b 1152
1153 ~~ lots of spelling and grammer fixes in the docs,
0305961b 1154 many many thanks to rlb3 and Aankhen for these :)
492d4d76 1155
e518dfb4 11560.20 Friday, April 6th, 2007
a60285b3 1157 >> I messed up the SKIP logic in one test
1158 so this release is just to fix that.
1159
93c435b3 1160 * Moose
1161 - 'has' now also accepts an ARRAY ref
1162 to create multiple attrs (see docs)
1163 (thanks to konobi for this)
4734114b 1164 - added tests and docs
93c435b3 1165
cd7eeaf5 11660.19 Thurs. April 5th, 2007
1167 ~~ More documentation updates ~~
1168
c899258b 1169 * Moose::Util::TypeConstraints
c1935ade 1170 - 'type' now supports messages as well
ddbdc0cb 1171 thanks to phaylon for finding this
c899258b 1172 - added tests for this
4734114b 1173 - added &list_all_type_constraints and
c1935ade 1174 &list_all_builtin_type_constraints
943596a6 1175 functions to facilitate introspection.
4734114b 1176
d022f632 1177 * Moose::Meta::Attribute
4734114b 1178 - fixed regexp 'handles' declarations
d022f632 1179 to build the list of delegated methods
4734114b 1180 correctly (and not override important
1181 things like &new) thanks to ashleyb
ddbdc0cb 1182 for finding this
1183 - added tests and docs for this
c1935ade 1184 - added the 'documentation' attributes
4734114b 1185 so that you can actually document your
1186 attributes and inspect them through the
ddbdc0cb 1187 meta-object.
d022f632 1188 - added tests and docs for this
1189
c1935ade 1190 * Moose::Meta::Class
1191 - when loading custom attribute metaclasses
4734114b 1192 it will first look in for the class in the
1193 Moose::Meta::Attribute::Custom::$name, and
c1935ade 1194 then default to just loading $name.
1195 - added tests and docs for this
1196
900466d6 1197 * Moose::Meta::TypeConstraint
1198 - type constraints now stringify to their names.
1199 - added test for this
1200
d022f632 1201 * misc.
4734114b 1202 - added tests to assure we work with Module::Refresh
1203 - added stricter test skip logic in the Moose POOP
ddbdc0cb 1204 test, ask Rob Kinyon why.
1205 - *cough* DBM::Deep 1.0 backwards compatability sucks *cough* ;)
c899258b 1206
af5199c6 12070.18 Sat. March 10, 2007
1208 ~~ Many, many documentation updates ~~
ddbdc0cb 1209
1210 * misc.
4734114b 1211 - We now use Class::MOP::load_class to
1212 load all classes.
1213 - added tests to show types and subtypes
ddbdc0cb 1214 working with Declare::Constraints::Simple
1215 and Test::Deep as constraint engines.
b77fdbed 1216
587ae0d2 12170.18_001
d01f1dab 1218 !! You must have Class::MOP 0.37_001 !!
1219 !! for this developer release to work !!
1220
734d1752 1221 This release was primarily adding the immutable
4734114b 1222 feature to Moose. An immutable class is one which
1223 you promise not to alter. When you set the class
1224 as immutable it will perform various bits of
734d1752 1225 memoization and inline certain part of the code
4734114b 1226 (constructors, destructors and accessors). This
734d1752 1227 minimizes (and in some cases totally eliminates)
4734114b 1228 one of Moose's biggest performance hits. This
734d1752 1229 feature is not on by default, and is 100% optional.
4734114b 1230 It has several configurable bits as well, so you
734d1752 1231 can pick and choose to your specific needs.
4734114b 1232
1233 The changes involved in this were fairly wide and
1234 highly specific, but 100% backwards compatible, so
1235 I am not going to enumerate them here. If you are
1236 truely interested in what was changed, please do
734d1752 1237 a diff :)
587ae0d2 1238
12390.17 Tues. Nov. 14, 2006
1240 * Moose::Meta::Method::Accessor
4734114b 1241 - bugfix for read-only accessors which
587ae0d2 1242 are have a type constraint and lazy.
1243 Thanks to chansen for finding it.
1244
12450.16 Tues. Nov. 14, 2006
1246 ++ NOTE ++
4734114b 1247 There are some speed improvements in this release,
587ae0d2 1248 but they are only the begining, so stay tuned.
4734114b 1249
587ae0d2 1250 * Moose::Object
4734114b 1251 - BUILDALL and DEMOLISHALL no longer get
587ae0d2 1252 called unless they actually need to be.
1253 This gave us a signifigant speed boost
4734114b 1254 for the cases when there is no BUILD or
587ae0d2 1255 DEMOLISH method present.
4734114b 1256
587ae0d2 1257 * Moose::Util::TypeConstraints
1258 * Moose::Meta::TypeConstraint
4734114b 1259 - added an 'optimize_as' option to the
587ae0d2 1260 type constraint, which allows for a
4734114b 1261 hand optimized version of the type
587ae0d2 1262 constraint to be used when possible.
1263 - Any internally created type constraints
1264 now provide an optimized version as well.
1265
ecb59493 12660.15 Sun. Nov. 5, 2006
946289d1 1267 ++ NOTE ++
4734114b 1268 This version of Moose *must* have Class::MOP 0.36 in order
1269 to work correctly. A number of small internal tweaks have
946289d1 1270 been made in order to be compatible with that release.
571dd39f 1271
1272 * Moose::Util::TypeConstraints
4734114b 1273 - added &unimport so that you can clean out
1274 your class namespace of these exported
571dd39f 1275 keywords
4734114b 1276
37ee30c9 1277 * Moose::Meta::Class
4734114b 1278 - fixed minor issue which occasionally
1279 comes up during global destruction
37ee30c9 1280 (thanks omega)
4734114b 1281 - moved Moose::Meta::Method::Overriden into
946289d1 1282 its own file.
4734114b 1283
1284 * Moose::Meta::Role
1285 - moved Moose::Meta::Role::Method into
946289d1 1286 its own file.
4734114b 1287
43123819 1288 * Moose::Meta::Attribute
4734114b 1289 - changed how we do type checks so that
1290 we reduce the overall cost, but still
7623f774 1291 retain correctness.
946289d1 1292 *** API CHANGE ***
4734114b 1293 - moved accessor generation methods to
1294 Moose::Meta::Method::Accessor to
1295 conform to the API changes from
946289d1 1296 Class::MOP 0.36
4734114b 1297
43123819 1298 * Moose::Meta::TypeConstraint
1299 - changed how constraints are compiled
1300 so that we do less recursion and more
4734114b 1301 iteration. This makes the type check
43123819 1302 faster :)
946289d1 1303 - moved Moose::Meta::TypeConstraint::Union
1304 into its own file
4734114b 1305
946289d1 1306 * Moose::Meta::Method::Accessor
4734114b 1307 - created this from methods formerly found in
946289d1 1308 Moose::Meta::Attribute
4734114b 1309
946289d1 1310 * Moose::Meta::Role::Method
1311 - moved this from Moose::Meta::Role
4734114b 1312
946289d1 1313 * Moose::Meta::Method::Overriden
1314 - moved this from Moose::Meta::Class
4734114b 1315
946289d1 1316 * Moose::Meta::TypeConstraint::Union
1317 - moved this from Moose::Meta::TypeConstraint
37ee30c9 1318
3ec7b7a3 13190.14 Mon. Oct. 9, 2006
4fd69d6c 1320
1321 * Moose::Meta::Attribute
4734114b 1322 - fixed lazy attributes which were not getting
4fd69d6c 1323 checked with the type constraint (thanks ashley)
1324 - added tests for this
4734114b 1325 - removed the over-enthusiastic DWIMery of the
1326 automatic ArrayRef and HashRef defaults, it
3ec7b7a3 1327 broke predicates in an ugly way.
1328 - removed tests for this
4fd69d6c 1329
c0c41f76 13300.13 Sat. Sept. 30, 2006
093b12c2 1331 ++ NOTE ++
4734114b 1332 This version of Moose *must* have Class::MOP 0.35 in order
1333 to work correctly. A number of small internal tweaks have
093b12c2 1334 been made in order to be compatible with that release.
1335
3c2bc5e2 1336 * Moose
1337 - Removed the use of UNIVERSAL::require to be a better
4734114b 1338 symbol table citizen and remove a dependency
093b12c2 1339 (thanks Adam Kennedy)
3c2bc5e2 1340
2a0f3bd3 1341 **~~ removed experimental & undocumented feature ~~**
4734114b 1342 - commented out the 'method' and 'self' keywords, see the
2a0f3bd3 1343 comments for more info.
1344
e95c7c42 1345 * Moose::Cookbook
4734114b 1346 - added a FAQ and WTF files to document frequently
e95c7c42 1347 asked questions and common problems
4734114b 1348
3f7376b0 1349 * Moose::Util::TypeConstraints
0a5bd159 1350 - added GlobRef and FileHandle type constraint
3f7376b0 1351 - added tests for this
4734114b 1352
3f7376b0 1353 * Moose::Meta::Attribute
1354 - if your attribute 'isa' ArrayRef of HashRef, and you have
1355 not explicitly set a default, then make the default DWIM.
4734114b 1356 This will also work for subtypes of ArrayRef and HashRef
94b8bbb8 1357 as well.
1358 - you can now auto-deref subtypes of ArrayRef or HashRef too.
1359 - new test added for this (thanks to ashley)
4734114b 1360
b805c70c 1361 * Moose::Meta::Role
1362 - added basic support for runtime role composition
4734114b 1363 but this is still *highly experimental*, so feedback
0a5bd159 1364 is much appreciated :)
b805c70c 1365 - added tests for this
e95c7c42 1366
0a5bd159 1367 * Moose::Meta::TypeConstraint
1368 - the type constraint now handles the coercion process
4734114b 1369 through delegation, this is to support the coercion
0a5bd159 1370 of unions
4734114b 1371
0a5bd159 1372 * Moose::Meta::TypeConstraint::Union
4734114b 1373 - it is now possible for coercions to be performed
0a5bd159 1374 on a type union
1375 - added tests for this (thanks to konobi)
1376
e95c7c42 1377 * Moose::Meta::TypeCoercion
4734114b 1378 - properly capturing error when type constraint
e95c7c42 1379 is not found
1380
3c2bc5e2 1381 * Build.PL
1382 - Scalar::Util 1.18 is bad on Win32, so temporarily
1383 only require version 1.17 for Win32 and cygwin.
4734114b 1384 (thanks Adam Kennedy)
3c2bc5e2 1385
40e89659 13860.12 Sat. Sept. 1, 2006
2bdd01cd 1387 * Moose::Cookbook
1388 - Recipe5 (subtypes & coercion) has been written
4734114b 1389
2bdd01cd 1390 * Moose
4734114b 1391 - fixed "bad meta" error message to be more descriptive
1392 - fixed &unimport to not remove the &inner and &super
3279ab4a 1393 keywords because we need to localize them.
68efb014 1394 - fixed number of spelling/grammer issues, thanks Theory :)
4734114b 1395
0558683c 1396 **~~ experimental & undocumented feature ~~**
4734114b 1397 - added the method and self keywords, they are basically
68efb014 1398 just sugar, and they may not stay around.
4734114b 1399
f742dfef 1400 * Moose::Object
4734114b 1401 - added &dump method to easily Data::Dumper
68efb014 1402 an object
4734114b 1403
b26e162e 1404 * Moose::Meta::TypeConstraint
1405 - added the &is_a_type_of method to check both the current
1406 and the subtype of a method (similar to &isa with classes)
f008ac1f 1407
68efb014 1408 * Moose::Meta::Role
1409 - this is now a subclass of Class::MOP::Module, and no longer
4734114b 1410 creates the _role_meta ugliness of before.
68efb014 1411 - fixed tests to reflect this change
4734114b 1412
8c835eba 14130.11 Wed. July 12, 2006
31f8ec72 1414 * Moose
1415 - added an &unimport method to remove all the keywords
4734114b 1416 that Moose will import, simply add 'no Moose' to the
1417 bottom of your class file.
1418
31f8ec72 1419 * t/
4734114b 1420 - fixed some test failures caused by a forgotten test
31f8ec72 1421 dependency.
1422
864cd714 14230.10 Thurs. July 6, 2006
01a8e221 1424 * Moose
1425 - improved error message when loading modules so
1426 it is less confusing when you load a role.
4734114b 1427 - added &calculate_all_roles method to
2b14ac61 1428 Moose::Meta::Class and Moose::Meta::Role
4734114b 1429
2b14ac61 1430 NOTE:
1431 This module has been tested against Class::MOP 0.30
4734114b 1432 but it does not yet utilize the optimizations
2b14ac61 1433 it makes available. Stay tuned for that ;)
4734114b 1434
2b14ac61 14350.09_03 Fri. June 23, 2006
715ea0b7 1436 ++ DEVELOPER RELEASE ++
4276ccb4 1437 * Moose
1438 - 'use strict' and 'use warnings' are no longer
4734114b 1439 needed in Moose classes, Moose itself will
4276ccb4 1440 turn them on for you.
1441 - added tests for this
1341f10c 1442 - moved code from exported subs to private methods
1443 in Moose::Meta::Class
4734114b 1444
4276ccb4 1445 * Moose::Role
4734114b 1446 - as with Moose, strict and warnings are
4276ccb4 1447 automatically turned on for you.
4734114b 1448 - added tests for this
1449
e39d707f 1450 * Moose::Meta::Role
1451 - now handles an edge case for override errors
1452 - added tests for this
b7f2d25b 1453 - added some more edge case tests
1341f10c 1454
43d599e5 14550.09_02 Tues. May 16, 2006
715ea0b7 1456 ++ DEVELOPER RELEASE ++
2c0cbef7 1457 * Moose
1458 - added prototypes to the exported subs
43d599e5 1459 - updated docs
4734114b 1460
2c0cbef7 1461 * Moose::Role
4734114b 1462 - added prototypes to the exported subs
43d599e5 1463 - updated docs
4734114b 1464
2c0cbef7 1465 * Moose::Util::TypeConstraints
4734114b 1466 - cleaned up prototypes for the subs
1467 - updated docs
2c0cbef7 1468
72c4f6d1 14690.09_01 Fri. May 12, 2006
1470 ++ DEVELOPER RELEASE ++
4734114b 1471 - This release works in combination with
1472 Class::MOP 0.29_01, it is a developer
1473 release because it uses the a new
72c4f6d1 1474 instance sub-protocol and a fairly
4734114b 1475 complete Role implementation. It has
72c4f6d1 1476 not yet been optimized, so it slower
4734114b 1477 the the previous CPAN version. This
1478 release also lacks good updated docs,
72c4f6d1 1479 the official release will have updated docs.
1480
4734114b 1481 * Moose
98aae381 1482 - refactored the keyword exports
4734114b 1483 - 'with' now checks Role validaity and
db1ab48d 1484 accepts more than one Role at a time
4734114b 1485 - 'extends' makes metaclass adjustments as
98aae381 1486 needed to ensure metaclass compatability
4734114b 1487
72c4f6d1 1488 * Moose::Role
1489 - refactored the keyword exports
4734114b 1490 - 'with' now checks Role validaity and
72c4f6d1 1491 accepts more than one Role at a time
4734114b 1492
98aae381 1493 * Moose::Util::TypeConstraints
4734114b 1494 - added the 'enum' keyword for simple
1495 string enumerations which can be used as
98aae381 1496 type constraints
db1ab48d 1497 - see example of usage in t/202_example.t
4734114b 1498
98aae381 1499 * Moose::Object
1500 - more careful checking of params to new()
4734114b 1501
72c4f6d1 1502 * Moose::Meta::Role
1503 - much work done on the role composition
4734114b 1504 - many new tests for conflict detection
72c4f6d1 1505 and composition edge cases
4734114b 1506 - not enough documentation, I suggest
1507 looking at the tests
1508
98aae381 1509 * Moose::Meta::Instance
4734114b 1510 - added new Instance metaclass to support
98aae381 1511 the new Class::MOP instance protocol
4734114b 1512
98aae381 1513 * Moose::Meta::Class
4734114b 1514 - some small changes to support the new
98aae381 1515 instance protocol
72c4f6d1 1516 - some small additions to support Roles
4734114b 1517
98aae381 1518 * Moose::Meta::Attribute
1519 - some improvements to the accessor generation code
1520 by nothingmuch
4734114b 1521 - some small changes to support the new
98aae381 1522 instance protocol
4734114b 1523 - (still somewhat) experimental delegation support
98aae381 1524 with the 'handles' option
1525 - added several tests for this
db1ab48d 1526 - no docs for this yet
98aae381 1527
35c8b8f2 15280.05 Thurs. April 27, 2006
2d562421 1529 * Moose
1530 - keywords are now exported with Sub::Exporter
1531 thanks to chansen for this commit
4734114b 1532 - has keyword now takes a 'metaclass' option
1533 to support custom attribute meta-classes
590868a3 1534 on a per-attribute basis
4734114b 1535 - added tests for this
daea75c9 1536 - the 'has' keyword not accepts inherited slot
4734114b 1537 specifications (has '+foo'). This is still an
daea75c9 1538 experimental feature and probably not finished
4734114b 1539 see t/038_attribute_inherited_slot_specs.t for
daea75c9 1540 more details, or ask about it on #moose
fcb7afc2 1541 - added tests for this
4734114b 1542
2d562421 1543 * Moose::Role
1544 - keywords are now exported with Sub::Exporter
1545
5204cd52 1546 * Moose::Utils::TypeConstraints
cce8198b 1547 - reorganized the type constraint hierarchy, thanks
4734114b 1548 to nothingmuch and chansen for his help and advice
cce8198b 1549 on this
1550 - added some tests for this
7eaef7ad 1551 - keywords are now exported with Sub::Exporter
35c8b8f2 1552 thanks to chansen for this commit
5204cd52 1553
d500266f 1554 * Moose::Meta::Class
1555 - due to changes in Class::MOP, we had to change
1556 construct_instance (for the better)
4734114b 1557
d500266f 1558 * Moose::Meta::Attribute
4734114b 1559 - due to changes in Class::MOP, we had to add the
d500266f 1560 initialize_instance_slot method (it's a good thing)
4734114b 1561
cce8198b 1562 * Moose::Meta::TypeConstraint
4734114b 1563 - added type constraint unions
c07af9d2 1564 - added tests for this
cce8198b 1565 - added the is_subtype_of predicate method
1566 - added tests for this
d500266f 1567
02a0fb52 15680.04 Sun. April 16th, 2006
1331430a 1569 * Moose::Role
1570 - Roles can now consume other roles
1571 - added tests for this
4734114b 1572 - Roles can specify required methods now with
1331430a 1573 the requires() keyword
1574 - added tests for this
1575
bdabd620 1576 * Moose::Meta::Role
1577 - ripped out much of it's guts ,.. much cleaner now
4734114b 1578 - added required methods and correct handling of
fa1be058 1579 them in apply() for both classes and roles
1580 - added tests for this
4734114b 1581 - no longer adds a does() method to consuming classes
1331430a 1582 it relys on the one in Moose::Object
4734114b 1583 - added roles attribute and some methods to support
1331430a 1584 roles consuming roles
8c9d74e7 1585
1586 * Moose::Meta::Attribute
1587 - added support for triggers on attributes
1588 - added tests for this
4734114b 1589 - added support for does option on an attribute
02a0fb52 1590 - added tests for this
4734114b 1591
8c9d74e7 1592 * Moose::Meta::Class
4734114b 1593 - added support for attribute triggers in the
8c9d74e7 1594 object construction
1595 - added tests for this
4734114b 1596
256903b6 1597 * Moose
4734114b 1598 - Moose no longer creates a subtype for your class
1599 if a subtype of the same name already exists, this
256903b6 1600 should DWIM in 99.9999% of all cases
4734114b 1601
256903b6 1602 * Moose::Util::TypeConstraints
4734114b 1603 - fixed bug where incorrect subtype conflicts were
256903b6 1604 being reported
8c9d74e7 1605 - added test for this
4734114b 1606
8c9d74e7 1607 * Moose::Object
1608 - this class can now be extended with 'use base' if
1609 you need it, it properly loads the metaclass class now
1610 - added test for this
bdabd620 1611
0677220d 16120.03_02 Wed. April 12, 2006
05d9eaf6 1613 * Moose
1614 - you must now explictly use Moose::Util::TypeConstraints
1615 it no longer gets exported for you automatically
4734114b 1616
05d9eaf6 1617 * Moose::Object
1618 - new() now accepts hash-refs as well as key/value lists
0677220d 1619 - added does() method to check for Roles
1620 - added tests for this
05d9eaf6 1621
0677220d 1622 * Moose::Meta::Class
4734114b 1623 - added roles attribute along with the add_role() and
0677220d 1624 does_role() methods
4734114b 1625 - added tests for this
0677220d 1626
1627 * Moose::Meta::Role
4734114b 1628 - now adds a does() method to consuming classes
0677220d 1629 which tests the class's hierarchy for roles
1630 - added tests for this
1631
16320.03_01 Mon. April 10, 2006
e9ec68d6 1633 * Moose::Cookbook
76d37e5a 1634 - added new Role recipe (no content yet, only code)
4734114b 1635
e9ec68d6 1636 * Moose
1637 - added 'with' keyword for Role support
1638 - added test and docs for this
1639 - fixed subtype quoting bug
4734114b 1640 - added test for this
e9ec68d6 1641
1642 * Moose::Role
1643 - Roles for Moose
1644 - added test and docs
76d37e5a 1645
1646 * Moose::Util::TypeConstraints
1647 - added the message keyword to add custom
4734114b 1648 error messages to type constraints
1649
e9ec68d6 1650 * Moose::Meta::Role
1651 - the meta role to support Moose::Role
1652 - added tests and docs
4734114b 1653
e9ec68d6 1654 * Moose::Meta::Class
4734114b 1655 - moved a number of things from Moose.pm
1656 to here, they should have been here
e9ec68d6 1657 in the first place
1658
1659 * Moose::Meta::Attribute
1660 - moved the attribute option macros here
1661 instead of putting them in Moose.pm
e185c027 1662
76d37e5a 1663 * Moose::Meta::TypeConstraint
4734114b 1664 - added the message attributes and the
76d37e5a 1665 validate method
1666 - added tests and docs for this
1667
0ac928d2 16680.03 Thurs. March 30, 2006
e9bb8a31 1669 * Moose::Cookbook
4734114b 1670 - added the Moose::Cookbook with 5 recipes,
e9bb8a31 1671 describing all the stuff Moose can do.
1672
d7f17ebb 1673 * Moose
1674 - fixed an issue with &extends super class loading
4734114b 1675 it now captures errors and deals with inline
1676 packages correctly (bug found by mst, solution
d7f17ebb 1677 stolen from alias)
159da176 1678 - added super/override & inner/augment features
1679 - added tests and docs for these
4734114b 1680
d7f17ebb 1681 * Moose::Object
4734114b 1682 - BUILDALL now takes a reference of the %params
1683 that are passed to &new, and passes that to
d7f17ebb 1684 each BUILD as well.
4734114b 1685
471c4f09 1686 * Moose::Util::TypeConstraints
1687 - Type constraints now survive runtime reloading
1688 - added test for this
d7f17ebb 1689
8339fae2 1690 * Moose::Meta::Class
4734114b 1691 - fixed the way attribute defaults are handled
8339fae2 1692 during instance construction (bug found by chansen)
1693
d7f17ebb 1694 * Moose::Meta::Attribute
1695 - read-only attributes now actually enforce their
4734114b 1696 read-only-ness (this corrected in Class::MOP as
9deed647 1697 well)
d7f17ebb 1698
076c81ed 16990.02 Tues. March 21, 2006
fc5609d2 1700 * Moose
4734114b 1701 - many more tests, fixing some bugs and
b841b2a3 1702 edge cases
b841b2a3 1703 - &extends now loads the base module with
4734114b 1704 UNIVERSAL::require
1705 - added UNIVERSAL::require to the
b841b2a3 1706 dependencies list
6ba6d68c 1707 ** API CHANGES **
4734114b 1708 - each new Moose class will also create
1709 and register a subtype of Object which
1710 correspond to the new Moose class.
1711 - the 'isa' option in &has now only
1712 accepts strings, and will DWIM in
b841b2a3 1713 almost all cases
4734114b 1714
b841b2a3 1715 * Moose::Util::TypeConstraints
1716 - added type coercion features
1717 - added tests for this
4734114b 1718 - added support for this in attributes
b841b2a3 1719 and instance construction
6ba6d68c 1720 ** API CHANGES **
4734114b 1721 - type construction no longer creates a
b841b2a3 1722 function, it registers the type instead.
4734114b 1723 - added several functions to get the
1724 registered types
6ba6d68c 1725
1726 * Moose::Object
4734114b 1727 - BUILDALL and DEMOLISHALL were broken
6ba6d68c 1728 because of a mis-named hash key, Whoops :)
4734114b 1729
b841b2a3 1730 * Moose::Meta::Attribute
1731 - adding support for coercion in the
1732 autogenerated accessors
4734114b 1733
b841b2a3 1734 * Moose::Meta::Class
1735 - adding support for coercion in the
4734114b 1736 instance construction
6ba6d68c 1737
1738 * Moose::Meta::TypeConstraint
1739 * Moose::Meta::TypeCoercion
4734114b 1740 - type constraints and coercions are now
6ba6d68c 1741 full fledges meta-objects
fc5609d2 1742
e522431d 17430.01 Wed. March 15, 2006
900466d6 1744 - Moooooooooooooooooose!!!