foo
[gitmo/Moose.git] / Changes
1 Revision history for Perl extension Moose
2
3 0.16
4     ~~ NOTE:
5     ~~ some speed improvements in this release, 
6     ~~ this is only the begining, so stay tuned   
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
24 0.15 Sun. Nov. 5, 2006
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.
29
30     * Moose::Util::TypeConstraints
31       - added &unimport so that you can clean out 
32         your class namespace of these exported 
33         keywords
34     
35     * Moose::Meta::Class
36       - fixed minor issue which occasionally 
37         comes up during global destruction 
38         (thanks omega)
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               
46     * Moose::Meta::Attribute
47       - changed how we do type checks so that 
48         we reduce the overall cost, but still 
49         retain correctness.
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
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 :)
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
76
77 0.14 Mon. Oct. 9, 2006
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
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
87
88 0.13 Sat. Sept. 30, 2006
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
94     * Moose
95       - Removed the use of UNIVERSAL::require to be a better
96         symbol table citizen and remove a dependency 
97         (thanks Adam Kennedy)
98
99       **~~ removed experimental & undocumented feature ~~**
100       - commented out the 'method' and 'self' keywords, see the 
101         comments for more info.
102
103     * Moose::Cookbook
104       - added a FAQ and WTF files to document frequently 
105         asked questions and common problems
106         
107     * Moose::Util::TypeConstraints
108       - added GlobRef and FileHandle type constraint
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.
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)
118         
119     * Moose::Meta::Role
120       - added basic support for runtime role composition
121         but this is still *highly experimental*, so feedback 
122         is much appreciated :)
123         - added tests for this
124
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
135     * Moose::Meta::TypeCoercion
136       - properly capturing error when type constraint 
137         is not found
138
139     * Build.PL
140       - Scalar::Util 1.18 is bad on Win32, so temporarily
141         only require version 1.17 for Win32 and cygwin.
142         (thanks Adam Kennedy)        
143
144 0.12 Sat. Sept. 1, 2006
145     * Moose::Cookbook
146       - Recipe5 (subtypes & coercion) has been written
147       
148     * Moose
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.
152       - fixed number of spelling/grammer issues, thanks Theory :)
153       
154       **~~ experimental & undocumented feature ~~**
155       - added the method and self keywords, they are basically 
156         just sugar, and they may not stay around.
157         
158     * Moose::Object
159       - added &dump method to easily Data::Dumper 
160         an object
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)
165
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     
171 0.11 Wed. July 12, 2006
172     * Moose
173       - added an &unimport method to remove all the keywords
174         that Moose will import, simply add 'no Moose' to the 
175         bottom of your class file. 
176         
177     * t/
178       - fixed some test failures caused by a forgotten test 
179         dependency.
180
181 0.10 Thurs. July 6, 2006
182     * Moose
183       - improved error message when loading modules so
184         it is less confusing when you load a role.
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     
193 0.09_03 Fri. June 23, 2006
194     ++ DEVELOPER RELEASE ++
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
200       - moved code from exported subs to private methods
201         in Moose::Meta::Class
202          
203     * Moose::Role
204       - as with Moose, strict and warnings are 
205         automatically turned on for you.
206          - added tests for this        
207         
208     * Moose::Meta::Role
209       - now handles an edge case for override errors
210         - added tests for this
211       - added some more edge case tests
212
213 0.09_02 Tues. May 16, 2006
214     ++ DEVELOPER RELEASE ++
215     * Moose
216       - added prototypes to the exported subs
217       - updated docs
218       
219     * Moose::Role
220       - added prototypes to the exported subs      
221       - updated docs
222       
223     * Moose::Util::TypeConstraints
224       - cleaned up prototypes for the subs      
225       - updated docs      
226
227 0.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
239     * Moose 
240       - refactored the keyword exports
241         - 'with' now checks Role validaity and 
242           accepts more than one Role at a time
243         - 'extends' makes metaclass adjustments as 
244            needed to ensure metaclass compatability
245           
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           
251     * Moose::Util::TypeConstraints
252       - added the 'enum' keyword for simple 
253         string enumerations which can be used as 
254         type constraints
255         - see example of usage in t/202_example.t
256         
257     * Moose::Object
258       - more careful checking of params to new()
259       
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       
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
274       - some small additions to support Roles
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
284         - no docs for this yet
285
286 0.05 Thurs. April 27, 2006
287     * Moose
288       - keywords are now exported with Sub::Exporter
289         thanks to chansen for this commit
290       - has keyword now takes a 'metaclass' option 
291         to support custom attribute meta-classes 
292         on a per-attribute basis
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
299         - added tests for this
300         
301     * Moose::Role
302       - keywords are now exported with Sub::Exporter
303
304     * Moose::Utils::TypeConstraints
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
309       - keywords are now exported with Sub::Exporter
310         thanks to chansen for this commit
311
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)
319         
320     * Moose::Meta::TypeConstraint
321       - added type constraint unions 
322         - added tests for this
323       - added the is_subtype_of predicate method
324         - added tests for this
325
326 0.04 Sun. April 16th, 2006
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
334     * Moose::Meta::Role
335       - ripped out much of it's guts ,.. much cleaner now
336       - added required methods and correct handling of 
337         them in apply() for both classes and roles
338         - added tests for this
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
343
344     * Moose::Meta::Attribute
345       - added support for triggers on attributes
346         - added tests for this
347       - added support for does option on an attribute 
348         - added tests for this
349         
350     * Moose::Meta::Class
351       - added support for attribute triggers in the 
352         object construction
353         - added tests for this
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
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
369
370 0.03_02 Wed. April 12, 2006
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
377       - added does() method to check for Roles
378         - added tests for this
379
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
390 0.03_01 Mon. April 10, 2006
391     * Moose::Cookbook
392       - added new Role recipe (no content yet, only code)
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
403
404     * Moose::Util::TypeConstraints
405       - added the message keyword to add custom
406         error messages to type constraints        
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
420
421     * Moose::Meta::TypeConstraint
422       - added the message attributes and the 
423         validate method
424         - added tests and docs for this
425
426 0.03 Thurs. March 30, 2006
427     * Moose::Cookbook
428       - added the Moose::Cookbook with 5 recipes, 
429         describing all the stuff Moose can do.
430
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)
436       - added super/override & inner/augment features
437         - added tests and docs for these
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.
443         
444     * Moose::Util::TypeConstraints
445       - Type constraints now survive runtime reloading
446         - added test for this
447
448         * Moose::Meta::Class
449           - fixed the way attribute defaults are handled 
450             during instance construction (bug found by chansen)
451
452     * Moose::Meta::Attribute
453       - read-only attributes now actually enforce their
454         read-only-ness (this corrected in Class::MOP as 
455         well)
456
457 0.02 Tues. March 21, 2006
458     * Moose
459       - many more tests, fixing some bugs and  
460         edge cases
461       - &extends now loads the base module with
462         UNIVERSAL::require 
463         - added UNIVERSAL::require to the 
464           dependencies list
465       ** API CHANGES **
466       - each new Moose class will also create 
467         and register a subtype of Object which 
468         correspond to the new Moose class.      
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
478       ** API CHANGES **
479       - type construction no longer creates a 
480         function, it registers the type instead.
481         - added several functions to get the 
482           registered types 
483
484     * Moose::Object
485       - BUILDALL and DEMOLISHALL were broken 
486         because of a mis-named hash key, Whoops :)
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
494         instance construction  
495
496     * Moose::Meta::TypeConstraint
497     * Moose::Meta::TypeCoercion
498           - type constraints and coercions are now 
499             full fledges meta-objects
500
501 0.01 Wed. March 15, 2006
502     - Moooooooooooooooooose!!!