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