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