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