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