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