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