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