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