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