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