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