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