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