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