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