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