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