spelling fix
[gitmo/Moose.git] / Changes
CommitLineData
e522431d 1Revision history for Perl extension Moose
2
c899258b 30.19
4 * Moose::Util::TypeConstraints
5 - type now supports messages as well
6 (thanks to phaylon for finding this)
7 - added tests for this
8
af5199c6 90.18 Sat. March 10, 2007
10 ~~ Many, many documentation updates ~~
1eaed09d 11
12 - We now use Class::MOP::load_class to
13 load all classes.
b77fdbed 14
587ae0d2 150.18_001
d01f1dab 16 !! You must have Class::MOP 0.37_001 !!
17 !! for this developer release to work !!
18
734d1752 19 This release was primarily adding the immutable
20 feature to Moose. An immutable class is one which
21 you promise not to alter. When you set the class
22 as immutable it will perform various bits of
23 memoization and inline certain part of the code
24 (constructors, destructors and accessors). This
25 minimizes (and in some cases totally eliminates)
26 one of Moose's biggest performance hits. This
27 feature is not on by default, and is 100% optional.
28 It has several configurable bits as well, so you
29 can pick and choose to your specific needs.
30
31 The changes involved in this were fairly wide and
32 highly specific, but 100% backwards compatible, so
33 I am not going to enumerate them here. If you are
34 truely interested in what was changed, please do
35 a diff :)
587ae0d2 36
370.17 Tues. Nov. 14, 2006
38 * Moose::Meta::Method::Accessor
39 - bugfix for read-only accessors which
40 are have a type constraint and lazy.
41 Thanks to chansen for finding it.
42
430.16 Tues. Nov. 14, 2006
44 ++ NOTE ++
45 There are some speed improvements in this release,
46 but they are only the begining, so stay tuned.
47
48 * Moose::Object
49 - BUILDALL and DEMOLISHALL no longer get
50 called unless they actually need to be.
51 This gave us a signifigant speed boost
52 for the cases when there is no BUILD or
53 DEMOLISH method present.
54
55 * Moose::Util::TypeConstraints
56 * Moose::Meta::TypeConstraint
57 - added an 'optimize_as' option to the
58 type constraint, which allows for a
59 hand optimized version of the type
60 constraint to be used when possible.
61 - Any internally created type constraints
62 now provide an optimized version as well.
63
ecb59493 640.15 Sun. Nov. 5, 2006
946289d1 65 ++ NOTE ++
66 This version of Moose *must* have Class::MOP 0.36 in order
67 to work correctly. A number of small internal tweaks have
68 been made in order to be compatible with that release.
571dd39f 69
70 * Moose::Util::TypeConstraints
71 - added &unimport so that you can clean out
72 your class namespace of these exported
73 keywords
74
37ee30c9 75 * Moose::Meta::Class
76 - fixed minor issue which occasionally
77 comes up during global destruction
78 (thanks omega)
946289d1 79 - moved Moose::Meta::Method::Overriden into
80 its own file.
81
82 * Moose::Meta::Role
83 - moved Moose::Meta::Role::Method into
84 its own file.
85
43123819 86 * Moose::Meta::Attribute
87 - changed how we do type checks so that
7623f774 88 we reduce the overall cost, but still
89 retain correctness.
946289d1 90 *** API CHANGE ***
91 - moved accessor generation methods to
92 Moose::Meta::Method::Accessor to
93 conform to the API changes from
94 Class::MOP 0.36
43123819 95
96 * Moose::Meta::TypeConstraint
97 - changed how constraints are compiled
98 so that we do less recursion and more
99 iteration. This makes the type check
100 faster :)
946289d1 101 - moved Moose::Meta::TypeConstraint::Union
102 into its own file
103
104 * Moose::Meta::Method::Accessor
105 - created this from methods formerly found in
106 Moose::Meta::Attribute
107
108 * Moose::Meta::Role::Method
109 - moved this from Moose::Meta::Role
110
111 * Moose::Meta::Method::Overriden
112 - moved this from Moose::Meta::Class
113
114 * Moose::Meta::TypeConstraint::Union
115 - moved this from Moose::Meta::TypeConstraint
37ee30c9 116
3ec7b7a3 1170.14 Mon. Oct. 9, 2006
4fd69d6c 118
119 * Moose::Meta::Attribute
120 - fixed lazy attributes which were not getting
121 checked with the type constraint (thanks ashley)
122 - added tests for this
3ec7b7a3 123 - removed the over-enthusiastic DWIMery of the
124 automatic ArrayRef and HashRef defaults, it
125 broke predicates in an ugly way.
126 - removed tests for this
4fd69d6c 127
c0c41f76 1280.13 Sat. Sept. 30, 2006
093b12c2 129 ++ NOTE ++
130 This version of Moose *must* have Class::MOP 0.35 in order
131 to work correctly. A number of small internal tweaks have
132 been made in order to be compatible with that release.
133
3c2bc5e2 134 * Moose
135 - Removed the use of UNIVERSAL::require to be a better
093b12c2 136 symbol table citizen and remove a dependency
137 (thanks Adam Kennedy)
3c2bc5e2 138
2a0f3bd3 139 **~~ removed experimental & undocumented feature ~~**
140 - commented out the 'method' and 'self' keywords, see the
141 comments for more info.
142
e95c7c42 143 * Moose::Cookbook
144 - added a FAQ and WTF files to document frequently
145 asked questions and common problems
b805c70c 146
3f7376b0 147 * Moose::Util::TypeConstraints
0a5bd159 148 - added GlobRef and FileHandle type constraint
3f7376b0 149 - added tests for this
150
151 * Moose::Meta::Attribute
152 - if your attribute 'isa' ArrayRef of HashRef, and you have
153 not explicitly set a default, then make the default DWIM.
94b8bbb8 154 This will also work for subtypes of ArrayRef and HashRef
155 as well.
156 - you can now auto-deref subtypes of ArrayRef or HashRef too.
157 - new test added for this (thanks to ashley)
3f7376b0 158
b805c70c 159 * Moose::Meta::Role
160 - added basic support for runtime role composition
0a5bd159 161 but this is still *highly experimental*, so feedback
162 is much appreciated :)
b805c70c 163 - added tests for this
e95c7c42 164
0a5bd159 165 * Moose::Meta::TypeConstraint
166 - the type constraint now handles the coercion process
167 through delegation, this is to support the coercion
168 of unions
169
170 * Moose::Meta::TypeConstraint::Union
171 - it is now possible for coercions to be performed
172 on a type union
173 - added tests for this (thanks to konobi)
174
e95c7c42 175 * Moose::Meta::TypeCoercion
176 - properly capturing error when type constraint
177 is not found
178
3c2bc5e2 179 * Build.PL
180 - Scalar::Util 1.18 is bad on Win32, so temporarily
181 only require version 1.17 for Win32 and cygwin.
093b12c2 182 (thanks Adam Kennedy)
3c2bc5e2 183
40e89659 1840.12 Sat. Sept. 1, 2006
2bdd01cd 185 * Moose::Cookbook
186 - Recipe5 (subtypes & coercion) has been written
187
188 * Moose
3279ab4a 189 - fixed "bad meta" error message to be more descriptive
190 - fixed &unimport to not remove the &inner and &super
191 keywords because we need to localize them.
68efb014 192 - fixed number of spelling/grammer issues, thanks Theory :)
0558683c 193
194 **~~ experimental & undocumented feature ~~**
68efb014 195 - added the method and self keywords, they are basically
196 just sugar, and they may not stay around.
f742dfef 197
198 * Moose::Object
68efb014 199 - added &dump method to easily Data::Dumper
200 an object
b26e162e 201
202 * Moose::Meta::TypeConstraint
203 - added the &is_a_type_of method to check both the current
204 and the subtype of a method (similar to &isa with classes)
f008ac1f 205
68efb014 206 * Moose::Meta::Role
207 - this is now a subclass of Class::MOP::Module, and no longer
208 creates the _role_meta ugliness of before.
209 - fixed tests to reflect this change
210
8c835eba 2110.11 Wed. July 12, 2006
31f8ec72 212 * Moose
213 - added an &unimport method to remove all the keywords
8c835eba 214 that Moose will import, simply add 'no Moose' to the
215 bottom of your class file.
31f8ec72 216
217 * t/
218 - fixed some test failures caused by a forgotten test
219 dependency.
220
864cd714 2210.10 Thurs. July 6, 2006
01a8e221 222 * Moose
223 - improved error message when loading modules so
224 it is less confusing when you load a role.
2b14ac61 225 - added &calculate_all_roles method to
226 Moose::Meta::Class and Moose::Meta::Role
227
228 NOTE:
229 This module has been tested against Class::MOP 0.30
230 but it does not yet utilize the optimizations
231 it makes available. Stay tuned for that ;)
232
2b14ac61 2330.09_03 Fri. June 23, 2006
715ea0b7 234 ++ DEVELOPER RELEASE ++
4276ccb4 235 * Moose
236 - 'use strict' and 'use warnings' are no longer
237 needed in Moose classes, Moose itself will
238 turn them on for you.
239 - added tests for this
1341f10c 240 - moved code from exported subs to private methods
241 in Moose::Meta::Class
4276ccb4 242
243 * Moose::Role
244 - as with Moose, strict and warnings are
245 automatically turned on for you.
246 - added tests for this
e39d707f 247
248 * Moose::Meta::Role
249 - now handles an edge case for override errors
250 - added tests for this
b7f2d25b 251 - added some more edge case tests
1341f10c 252
43d599e5 2530.09_02 Tues. May 16, 2006
715ea0b7 254 ++ DEVELOPER RELEASE ++
2c0cbef7 255 * Moose
256 - added prototypes to the exported subs
43d599e5 257 - updated docs
2c0cbef7 258
259 * Moose::Role
260 - added prototypes to the exported subs
43d599e5 261 - updated docs
2c0cbef7 262
263 * Moose::Util::TypeConstraints
264 - cleaned up prototypes for the subs
43d599e5 265 - updated docs
2c0cbef7 266
72c4f6d1 2670.09_01 Fri. May 12, 2006
268 ++ DEVELOPER RELEASE ++
269 - This release works in combination with
270 Class::MOP 0.29_01, it is a developer
271 release because it uses the a new
272 instance sub-protocol and a fairly
273 complete Role implementation. It has
274 not yet been optimized, so it slower
275 the the previous CPAN version. This
276 release also lacks good updated docs,
277 the official release will have updated docs.
278
98aae381 279 * Moose
280 - refactored the keyword exports
db1ab48d 281 - 'with' now checks Role validaity and
282 accepts more than one Role at a time
98aae381 283 - 'extends' makes metaclass adjustments as
284 needed to ensure metaclass compatability
285
72c4f6d1 286 * Moose::Role
287 - refactored the keyword exports
288 - 'with' now checks Role validaity and
289 accepts more than one Role at a time
290
98aae381 291 * Moose::Util::TypeConstraints
292 - added the 'enum' keyword for simple
293 string enumerations which can be used as
294 type constraints
db1ab48d 295 - see example of usage in t/202_example.t
98aae381 296
297 * Moose::Object
298 - more careful checking of params to new()
299
72c4f6d1 300 * Moose::Meta::Role
301 - much work done on the role composition
302 - many new tests for conflict detection
303 and composition edge cases
304 - not enough documentation, I suggest
305 looking at the tests
306
98aae381 307 * Moose::Meta::Instance
308 - added new Instance metaclass to support
309 the new Class::MOP instance protocol
310
311 * Moose::Meta::Class
312 - some small changes to support the new
313 instance protocol
72c4f6d1 314 - some small additions to support Roles
98aae381 315
316 * Moose::Meta::Attribute
317 - some improvements to the accessor generation code
318 by nothingmuch
319 - some small changes to support the new
320 instance protocol
321 - (still somewhat) experimental delegation support
322 with the 'handles' option
323 - added several tests for this
db1ab48d 324 - no docs for this yet
98aae381 325
35c8b8f2 3260.05 Thurs. April 27, 2006
2d562421 327 * Moose
328 - keywords are now exported with Sub::Exporter
329 thanks to chansen for this commit
590868a3 330 - has keyword now takes a 'metaclass' option
331 to support custom attribute meta-classes
332 on a per-attribute basis
daea75c9 333 - added tests for this
334 - the 'has' keyword not accepts inherited slot
335 specifications (has '+foo'). This is still an
336 experimental feature and probably not finished
337 see t/038_attribute_inherited_slot_specs.t for
338 more details, or ask about it on #moose
fcb7afc2 339 - added tests for this
2d562421 340
341 * Moose::Role
342 - keywords are now exported with Sub::Exporter
343
5204cd52 344 * Moose::Utils::TypeConstraints
cce8198b 345 - reorganized the type constraint hierarchy, thanks
346 to nothingmuch and chansen for his help and advice
347 on this
348 - added some tests for this
7eaef7ad 349 - keywords are now exported with Sub::Exporter
35c8b8f2 350 thanks to chansen for this commit
5204cd52 351
d500266f 352 * Moose::Meta::Class
353 - due to changes in Class::MOP, we had to change
354 construct_instance (for the better)
355
356 * Moose::Meta::Attribute
357 - due to changes in Class::MOP, we had to add the
358 initialize_instance_slot method (it's a good thing)
c07af9d2 359
cce8198b 360 * Moose::Meta::TypeConstraint
c07af9d2 361 - added type constraint unions
362 - added tests for this
cce8198b 363 - added the is_subtype_of predicate method
364 - added tests for this
d500266f 365
02a0fb52 3660.04 Sun. April 16th, 2006
1331430a 367 * Moose::Role
368 - Roles can now consume other roles
369 - added tests for this
370 - Roles can specify required methods now with
371 the requires() keyword
372 - added tests for this
373
bdabd620 374 * Moose::Meta::Role
375 - ripped out much of it's guts ,.. much cleaner now
1331430a 376 - added required methods and correct handling of
fa1be058 377 them in apply() for both classes and roles
378 - added tests for this
1331430a 379 - no longer adds a does() method to consuming classes
380 it relys on the one in Moose::Object
381 - added roles attribute and some methods to support
382 roles consuming roles
8c9d74e7 383
384 * Moose::Meta::Attribute
385 - added support for triggers on attributes
386 - added tests for this
02a0fb52 387 - added support for does option on an attribute
388 - added tests for this
8c9d74e7 389
390 * Moose::Meta::Class
391 - added support for attribute triggers in the
392 object construction
393 - added tests for this
256903b6 394
395 * Moose
396 - Moose no longer creates a subtype for your class
397 if a subtype of the same name already exists, this
398 should DWIM in 99.9999% of all cases
399
400 * Moose::Util::TypeConstraints
401 - fixed bug where incorrect subtype conflicts were
402 being reported
8c9d74e7 403 - added test for this
404
405 * Moose::Object
406 - this class can now be extended with 'use base' if
407 you need it, it properly loads the metaclass class now
408 - added test for this
bdabd620 409
0677220d 4100.03_02 Wed. April 12, 2006
05d9eaf6 411 * Moose
412 - you must now explictly use Moose::Util::TypeConstraints
413 it no longer gets exported for you automatically
414
415 * Moose::Object
416 - new() now accepts hash-refs as well as key/value lists
0677220d 417 - added does() method to check for Roles
418 - added tests for this
05d9eaf6 419
0677220d 420 * Moose::Meta::Class
421 - added roles attribute along with the add_role() and
422 does_role() methods
423 - added tests for this
424
425 * Moose::Meta::Role
426 - now adds a does() method to consuming classes
427 which tests the class's hierarchy for roles
428 - added tests for this
429
4300.03_01 Mon. April 10, 2006
e9ec68d6 431 * Moose::Cookbook
76d37e5a 432 - added new Role recipe (no content yet, only code)
e9ec68d6 433
434 * Moose
435 - added 'with' keyword for Role support
436 - added test and docs for this
437 - fixed subtype quoting bug
438 - added test for this
439
440 * Moose::Role
441 - Roles for Moose
442 - added test and docs
76d37e5a 443
444 * Moose::Util::TypeConstraints
445 - added the message keyword to add custom
446 error messages to type constraints
e9ec68d6 447
448 * Moose::Meta::Role
449 - the meta role to support Moose::Role
450 - added tests and docs
451
452 * Moose::Meta::Class
453 - moved a number of things from Moose.pm
454 to here, they should have been here
455 in the first place
456
457 * Moose::Meta::Attribute
458 - moved the attribute option macros here
459 instead of putting them in Moose.pm
e185c027 460
76d37e5a 461 * Moose::Meta::TypeConstraint
462 - added the message attributes and the
463 validate method
464 - added tests and docs for this
465
0ac928d2 4660.03 Thurs. March 30, 2006
e9bb8a31 467 * Moose::Cookbook
468 - added the Moose::Cookbook with 5 recipes,
469 describing all the stuff Moose can do.
470
d7f17ebb 471 * Moose
472 - fixed an issue with &extends super class loading
473 it now captures errors and deals with inline
474 packages correctly (bug found by mst, solution
475 stolen from alias)
159da176 476 - added super/override & inner/augment features
477 - added tests and docs for these
d7f17ebb 478
479 * Moose::Object
480 - BUILDALL now takes a reference of the %params
481 that are passed to &new, and passes that to
482 each BUILD as well.
471c4f09 483
484 * Moose::Util::TypeConstraints
485 - Type constraints now survive runtime reloading
486 - added test for this
d7f17ebb 487
8339fae2 488 * Moose::Meta::Class
489 - fixed the way attribute defaults are handled
490 during instance construction (bug found by chansen)
491
d7f17ebb 492 * Moose::Meta::Attribute
493 - read-only attributes now actually enforce their
9deed647 494 read-only-ness (this corrected in Class::MOP as
495 well)
d7f17ebb 496
076c81ed 4970.02 Tues. March 21, 2006
fc5609d2 498 * Moose
b841b2a3 499 - many more tests, fixing some bugs and
500 edge cases
b841b2a3 501 - &extends now loads the base module with
502 UNIVERSAL::require
503 - added UNIVERSAL::require to the
504 dependencies list
6ba6d68c 505 ** API CHANGES **
b841b2a3 506 - each new Moose class will also create
507 and register a subtype of Object which
508 correspond to the new Moose class.
b841b2a3 509 - the 'isa' option in &has now only
510 accepts strings, and will DWIM in
511 almost all cases
512
513 * Moose::Util::TypeConstraints
514 - added type coercion features
515 - added tests for this
516 - added support for this in attributes
517 and instance construction
6ba6d68c 518 ** API CHANGES **
b841b2a3 519 - type construction no longer creates a
520 function, it registers the type instead.
521 - added several functions to get the
522 registered types
6ba6d68c 523
524 * Moose::Object
525 - BUILDALL and DEMOLISHALL were broken
526 because of a mis-named hash key, Whoops :)
b841b2a3 527
528 * Moose::Meta::Attribute
529 - adding support for coercion in the
530 autogenerated accessors
531
532 * Moose::Meta::Class
533 - adding support for coercion in the
6ba6d68c 534 instance construction
535
536 * Moose::Meta::TypeConstraint
537 * Moose::Meta::TypeCoercion
538 - type constraints and coercions are now
539 full fledges meta-objects
fc5609d2 540
e522431d 5410.01 Wed. March 15, 2006
542 - Moooooooooooooooooose!!!