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