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