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