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