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