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