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