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