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