Deprecate, don't remove, Class::MOP::{subname,in_global_destruction}
[gitmo/Class-MOP.git] / Changes
1 Revision history for Perl extension Class-MOP.
2
3     * Class::MOP
4       - Deprecate in_global_destruction and subname re-exporting
5         (perigrin & Sartak)
6     * Class::MOP::Class
7       - Explicitly use Devel::GlobalDestruction and Sub::Name (perigrin)
8     * Class::MOP::Package
9       - Disable prototype mismatch warnings for add_package_symbol.
10         (Florian Ragwitz)
11
12 0.83 Mon, April 27, 2009
13     * Class::MOP::Class
14       - Fix segfault when calling get_method_map on a metaclass for an empty
15         package (doy)
16
17 0.82_02 Fri, April 24, 2009
18     * Class::MOP::Method::Inlined
19       - Don't inline if the expected method is not defined at all (happens with
20         e.g. Moose::Object::_new is the expected method due to an overridden
21         name)
22     * Tests
23       - Some tests were trying to load Class::MOP::Immutable, which
24         was removed in 0.82_01.
25
26 0.82_01 Thu, April 23, 2009
27     * Class::MOP::Immutable (and others)
28       - Refactor the immutability system to use a pre-defined class
29         for the immutable metaclass of Class::MOP::Class::Immutable::$class
30       - Rather than generating methods into this class every time, use
31         a Trait (basic mixin) to supply the cached methods
32       - Remove the hack that returns the mutable metaclass for
33         metacircularity in order to provide consistent meta-metaclasses
34         for the Moose compatibility handling code
35         (mst broke it, nothingmuch fixed it)
36
37 0.82 Mon, April 20, 2009
38     * Various
39       - The deprecation wrappers for some renamed methods were not
40         passing arguments to the new method. (nothingmuch)
41
42     * Class::MOP::Immutable
43       - Warn during immutablization if the local class provides its own
44         constructor, to parallel the warning in Moose when a superclass
45         provides its own constructor (doy)
46
47 0.81 Tue, April 7, 2009
48     * Class::MOP
49     * Class::MOP::Class
50     * Class::MOP::Instance
51     * Class::MOP::Attribute
52     * Class::MOP::Method::Accessor
53     * Class::MOP::Method::Constructor
54       - Include stack traces in the deprecation warnings introduced in
55         0.80_01. (Florian Ragwitz)
56
57     * MOP.xs
58       - Avoid c compiler warnings by declaring some unused function
59         arguments. (Florian Ragwitz)
60
61 0.80_01 Sun, April 5, 2009
62     * Makefile.PL
63       - Make sure to preserve any compiler flags already defined in
64         Config.pm. Patch by Vincent Pit. RT #44739.
65
66     * Many methods have been renamed with a leading underscore, and a
67       few have been deprecated entirely. The methods with a leading
68       underscore are consider "internals only". People writing
69       subclasses or extensions to Class::MOP should feel free to
70       override them, but they are not for "public" use.
71
72       - Class::MOP::Class
73         - construct_class_instance => _construct_class_instance (use new_object)
74         - construct_instance => _construct_instance (use new_object)
75         - check_metaclass_compatibility => _check_metaclass_compatibility
76         - create_meta_instance => _create_meta_instance (use get_meta_instance)
77         - clone_instance => _clone_instance (use clone_object)
78         - compute_all_applicable_methods is deprecated, use get_all_methods
79         - compute_all_applicable_attributes is deprecated, use get_all_attributes
80
81       - Class::MOP::Instance
82         - bless_instance_structure is deprecated and will be removed
83           in a future release
84
85       - Class::MOP::Module
86         - create has been renamed to _instantiate_module. This method
87           does not construct an object, it evals some code that
88           creates the relevant package in Perl's symbol table.
89
90       - Class::MOP::Method::Accessor
91         - initialize_body => _initialize_body (this is always called
92           when an object is constructed)
93         - /(generate_.*_method(?:_inline)?)/ => '_' . $1
94
95       - Class::MOP::Method::Constructor
96         - initialize_body => _initialize_body (this is always called
97           when an object is constructed)
98         - /(generate_constructor_method(?:_inline)?)/ => '_' . $1
99         - attributes => _attributes
100         - meta_instance => _meta_instance
101
102 0.80 Wed, April 1, 2009
103     * Class::MOP::*
104       - Call user_class->meta in fewer places, with the eventual goal
105         of allowing the user to rename or exclude ->meta
106         altogether. Instead uses Class::MOP::class_of. (Sartak)
107
108     * Class::MOP
109       - New class_of function that should be used to retrieve a
110         metaclass. This is unlike get_metaclass_by_name in that it
111         accepts instances, not just class names. (Sartak)
112
113     * Class::MOP
114       - load_first_existing_class didn't actually load the first
115         existing class; instead, it loaded the first existing and
116         compiling class.  It now throws an error if a class exists (in
117         @INC) but fails to compile.  (hdp)
118
119     * Class::MOP
120     * Class::MOP::Class
121       - we had some semi-buggy code that purported to provide a
122         HAS_ISAREV based on whether mro had get_isarev (due to an
123         oversight, it always returned 1). Since mro and MRO::Compat
124         have always had get_isarev, HAS_ISAREV was pointless. This
125         insight simplified the subclasses method by deleting the
126         pure-perl fallback. HAS_ISAREV is now deprecated. (Sartak)
127
128 0.79 Fri, March 29, 2009
129     * No changes from 0.78_02.
130
131 0.78_02 Thu, March 26, 2009
132     * Class::MOP::Class
133     * Class::MOP::Immutable
134       - A big backwards-incompatible refactoring of the Immutable API,
135         and the make_immutable/make_mutable pieces of the Class
136         API. The core __PACKAGE__->meta->make_immutable API remains
137         the same, however, so this should only affect the most
138         guts-digging code.
139
140     * XS code
141       - The XS code used a macro, XSPROTO, that's only in 5.10.x. This
142         has been fixed to be backwards compatible with 5.8.x.
143
144     * Class::MOP::Class
145       - Add a hook for rebless_instance_away (Sartak)
146       - Use blessed instead of ref to get an instance's class name
147         in rebless_instance. (Sartak)
148
149 0.78_01 Wed, March 18, 2009
150     * Class::MOP::*
151       - Revised and reorganized all of the API documentation. All
152         classes now have (more or less) complete API documentation.
153
154     * Class::MOP::Class
155     * Class::MOP::Instance
156       - Reblessing into a package that supports overloading wasn't
157         properly adding overload magic to the object due to a bug
158         in (at least) 5.8.8. We now use $_[1] directly which seems
159         to set the magic properly. (Sartak)
160
161     * Class::MOP::Attribute
162       - The process_accessors method is now private. A public alias
163         exists (and will stick around for a few releases), but it
164         warns that calling the public method is deprecated.
165
166     * Class::MOP::Method::Generated
167       - Removed the new and _new methods, since this is an abstract
168         base class, and all existing subclasses implement their own
169         constructors.
170
171     * MOP.xs
172       - Stop is_class_loaded from thinking a class is loaded if it
173         only has an empty GV (Florian Ragwitz).
174         - Add a test for this (Yappo).
175       - Refactor get_all_package_symbols to allow short-circuiting
176         (Florian Ragwitz).
177         - Use this in is_class_loaded (Florian Ragwitz).
178       - Stop segfaulting when trying to get the name from a sub that's
179         still being compiled (Florian Ragwitz).
180         - Add tests for this (Florian Ragwitz).
181       - Prefix all public symbols with "mop_" (Florian Ragwitz).
182       - Clean up and simplify prehashing of hash keys (Florian Ragwitz).
183       - Simplify creating simple xs reader methods (Florian Ragwitz).
184       - Make everything compile with c++ compilers (Florian Ragwitz).
185       - Upgrade ppport.h from 3.14 to 3.17 (Florian Ragwitz).
186
187     * Tests
188       - Remove optional test plans for tests depending on Sub::Name as
189         we have a hard dependency on Sub::Name anyway (Florian Ragwitz).
190
191     * Makefile.PL
192       - Rebuild all c code if mop.h has changed (Florian Ragwitz)
193
194 0.78 Mon, February 23, 2009
195     * No changes from 0.77_01
196
197 0.77_01 Sun, February 22, 2009
198     * Everything
199       - This package now requires its XS components. Not using
200         Sub::Name lead to different behavior and bugginess in the pure
201         Perl version of the code. A Moose test would fail when run
202         against the pure Perl version of this code.
203
204     * Class::MOP::Instance
205       - The inline_* methods now quote attribute names themselves, and
206         don't expect to receive a quoted value.
207
208
209 0.77 Sat, February 14, 2009
210     * MOP.xs
211       - Avoid assertion errors on debugging perls in is_class_loaded
212         (Florian Ragwitz)
213
214     * Class::MOP
215       - Fixed various corner cases where is_class_loaded incorrectly
216         returned true for a class that wasn't really loaded. (Dave
217         Rolsky)
218
219     * Class::MOP::Class
220       - Add get_all_method_names (Sartak)
221       - Add a wrapped_method_metaclass attribute (Florian Ragwitz)
222
223     * Class::MOP::Package
224       - Disable deprecated get_all_package_symbols in list
225         context. (Florian Ragwitz)
226
227     * Makefile.PL
228       - Make sure we generate a BSD-compatible Makefile (Florian
229         Ragwitz)
230
231     * Class::MOP::Class
232       - The misspelled "check_metaclass_compatability" method we've
233         kept around for backwards compat_i_bility will be removed in a
234         near future release. You've been warned.
235
236 0.76 Thu, January 22, 2009
237     * Class::MOP::Method::Generated
238       - Added new private methods to support code generation, which
239         are being used by Moose and can be used by MooseX
240         authors. (mst)
241       - Generated methods are now generated with a #line directive
242         reflecting the source of the generated method. (nothingmuch)
243
244     * Class::MOP::Class
245       - Clarified documentation of methods that return
246         Class::MOP::Method objects. (doy)
247
248     * Class::MOP
249       - Clarified documentation of the metaclass cache methods. (Sartak)
250
251     * Tests
252       - Add test showing how the xs Class::MOP::is_class_loaded can
253         be made to operate differently to the pure perl version (t0m)
254
255 0.75 Wed, December 31, 2008
256     * Class::MOP::Class
257       - A class that was made immutable and then mutable could end up
258         sharing an immutable transformer object
259         (Class::MOP::Immutable) with other classes, leading to all
260         sorts of odd bugs. Reported by t0m. (Dave Rolsky)
261
262 0.74 Tue, December 25, 2008
263     * MOP.xs
264       - Add an xs implementation of Class::MOP::is_class_loaded (closes
265         RT#41862). Based on a patch by Goro Fuji. (Florian Ragwitz)
266       - Changed internals to make prehashing of hash keys easier and less
267         error-prone. (Florian Ragwitz)
268     * Class::MOP::Class
269       - Fix documentation to show that around modifiers happen on both
270         sides of the modified method. (Dave Rolsky)
271
272 0.73 Tue, December 16, 2008
273     * MOP.xs
274       - Don't use Perl_mro_meta_init. It's not part of the public perl
275         api. Fixes failures to build on Win32 (RT #41750).  (Florian
276         Ragwitz)
277     * t/082_get_code_info.t
278       - Add $^P &= ~0x200; (per Ovid's suggestion) in order to not
279         munger anonymous subs when under -d and so making the tests
280         succeed in that case.
281
282 0.72 Mon, December 8, 2008
283     * Class::MOP::Package
284       - Pass options to _new, so subclass' attributes can be
285         initialized (Sartak)
286     * Class::MOP::Method
287       - In the docs, indicate that package_name and name are required
288         when calling ->wrap (Stefan O'Rear)
289
290 0.71_02 Fri, December 5, 2008
291     * Class::MOP::Immutable
292       - Added a new attribute, inlined_constructor, which is true if
293         the constructor was inlined.
294     * Class::MOP::Package
295       - Make get_all_package_symbols return a hash ref in scalar
296         context and deprecate calling it in list context with a
297         warning. (Florian Ragwitz)
298     * MOP.xs
299       - Various improvements and refactoring, making things more robust and
300         easier to maintain. (Florian Ragwitz)
301
302 0.71_01 Wed, December 3, 2008
303     * Class::MOP::Method
304       - Add an "execute" method to invoke the body so
305         we can avoid using the coderef overload (Sartak)
306     * Class::MOP::Immutable
307       - When we memoize methods, get their results lazily
308         to remove some compile-time cost (Sartak)
309       - Small speedup from eliminating several method
310         calls (Sartak)
311     * Class::MOP::Class
312       - Some small internal tweaks to try to reduce the number of
313         times we call get_method_map when bootstrapping the MOP. This
314         might make loading Class::MOP (and Moose) a little
315         faster. (Dave Rolsky)
316       - Implemented an optional XS version of get_method_map. Mostly
317         taken from a patch by Goro Fuji (rt.cpan.org #41080), with
318         help form Florian Ragwitz. (Dave Rolsky)
319       - Make the behaviour of of get_all_package_symbols (and
320         therefore get_method_map) consistent for stub methods. Report
321         and test by Goro Fuji (rt.cpan.org #41255). (Florian Ragwitz)
322
323 0.71 Wed November 26, 2008
324     * Class::MOP::Class
325     * Class::MOP::Module
326       - Actual package creation has moved upward from
327         Class to Module so that Moose roles can share
328         the code (Sartak)
329
330 0.70_01 Mon, November 19, 2008
331     * Class::MOP
332       - Fixes for failures with blead (Florian Ragwitz)
333       - Silenced compiler warnings (Florian Ragwitz)
334
335 0.70 Fri, November 14, 2008
336     * Class::MOP
337       - Fixed an odd corner case where the XS version of
338         get_all_package_symbols could cause a segfault. This only
339         happened with inlined constants in Perl 5.10.0 (Florian
340         Ragwitz)
341
342 0.69 Fri, November 7, 2008
343     * Class::MOP::Method::Wrapped
344       - Added introspection methods for method modifiers (Dave Rolsky)
345
346
347 0.68 Fri October 24, 2008
348     * Class::MOP
349       - Make load_class require by file name instead of module name.
350         This stops confusing error messages when loading '__PACKAGE__'.
351         (Florian Ragwitz)
352       - Add load_one_class_of function to enable you to load one of a
353         list of classes, rather than having to call load_class multiple
354         times in an eval. (t0m)
355
356 0.67 Tue October 14, 2008
357     * Class::MOP::Class
358       - Call a method on the class after setting the superclass list
359         so that we can get Perl to detect cycles before MRO::Compat
360         spirals into an infinite loop (sartak)
361         - Reported by Schwern, [rt.cpan.org #39001]
362       - In create(), pass unused options on to initialize()
363         - added test for this
364
365 0.66 Sat September 20, 2008
366     !! This release has an incompatible change regarding !!
367        introspection of a class's method with Class::MOP::Class !!
368
369     * Tests and XS
370       - We (us maintainers) now run all tests with XS and then without
371         XS, which should help us catch skew between the XS/pure Perl
372         code. (Dave Rolsky)
373
374     * Class::MOP::Class
375       ! The alias_method method has been deprecated. It now simply
376         calls add_method instead. There is no distinction between
377         aliased methods and "real" methods.
378
379         This means that methods added via alias_method now show up as
380         part of the class's method list/map. This is a backwards
381         incompatible change, but seems unlikely to break any
382         code. Famous last words. (Dave Rolsky)
383
384     * Class::MOP::Class
385       - Fixed the spelling of "compatibility", but we still have a
386         "check_metaclass_compatability" method for backwards
387         compatibility.
388
389 0.65 Mon September 1, 2008
390     For those not following the series of dev releases, the changes
391     from 0.64 from 0.65 can mostly be summed up as a lot performance
392     improvements by nothingmuch, including new optional XS versions of
393     some methods. Also, Class::MOP now works _without_ any XS modules,
394     for sad systems without a compiler.
395
396     * Class::MOP::Method
397       - Added name and package_name XS accessors, and make sure all
398         the XS and Perl versions work the same way. (Dave Rolsky)
399
400     * MOP.xs
401       - The XS versions of various methods just returned undef when
402         called class methods, rather than dying like the pure Perl
403         versions. (Dave Rolsky)
404
405 0.64_07 Fri August 29, 2008
406     * Class::MOP
407       - Silenced warnings that managed to break Moose tests when XS
408         was loaded. (Dave Rolsky)
409       - Some XS versions of methods were ignored because of typos in
410         MOP.xs. (Dave Rolsky)
411
412 0.64_06 Mon August 25, 2008
413     * Class::MOP (MOP.xs)
414       - Another MS VC++ fix, cannot declare a variable in the middle
415         of a scope (Taro Nishino).
416
417 0.64_05 Sun August 24, 2008
418     * Class::MOP
419       - None of the dev releases actually loaded the XS properly, but
420         we silently fell back to the pure Perl version of the
421         code. (Dave Rolsky)
422
423     * Class::MOP (MOP.xs)
424       - Replaced some code that used functions not available on Visual
425         C++ with some Perl XS API bits (Dave Rolsky).
426
427 0.64_04 Sat August 23, 2008
428     * Class::MOP::Class
429       - Workaround a bug in 5.8.1's goto sub (nothingmuch)
430
431     * pod.t and pod_coveraget.t
432       - These are no longer shipped with the tarball because of bogus
433         failures from CPAN testers. (Dave Rolsky)
434
435 0.64_03 Thu August 21, 2008
436     * Class::MOP::Package
437       - Some (legit) code was misparsed by earlier 5.8.x
438         releases. (nothingmuch)
439
440     * Class::MOP
441       - Fix a constant in void context warning (nothingmuch)
442
443 0.64_02 Thu August 21, 2008
444     * Makefile.PL and Class::MOP
445       - Explicitly require Perl 5.8.0+ (Dave Rolsky)
446
447     * Makefile.PL
448       - Add missing prereqs that got lost in the switch away from
449         Module::Install.
450
451     * Class::MOP::Instance
452       - New method - get_all_attributes (nothingmuch)
453
454 0.64_01 Wed August 20, 2008
455     * Makefile.PL
456       - We now check to see if you have a compiler. If you don't, the
457         module installs without some XS bits, but will work the same
458         as with XS. This should make it easier to install on platforms
459         without a compiler (like Windows). (Dave Rolsky)
460
461     * many modules
462       - Perl 6 style attribute naming replaced with sane style ('methods', not
463         '%!methods'). These changes should not impact any existing API uses.
464         (nothingmuch).
465
466     * many modules
467       - Quite a number of optimizations based on profiling, including
468         allowing constructors to take hash references instead of
469         hashes, duplicating some frequently used code in XS, and
470         making constructors immutable. These changes should not impact
471         any existing API uses. (nothingmuch)
472
473     * Many modules
474       - Constructors now respect the meta attributes of their subclasses,
475         facilitating MOP extensibility. More related changes will happen in the
476         next several releases. (nothingmuch)
477
478     * Class::MOP::Class
479       - New method - get_all_methods, replaces the deprecated
480         compute_all_applicable_methods. get_all_attributes provided for
481         consistency (nothingmuch)
482       - New method - wrap_method was refactored out of get_method_map
483         (nothingmuch)
484       - New API for meta instance invalidation - invalidate_meta_instance,
485         invalidate_meta_instances, add_dependent_meta_instance,
486         remove_dependent_meta_instance, called automatically when attribute
487         definitions change and allows notification of dependent subclasses.
488         (nothingmuch)
489
490 0.64 Sun August 3, 2008
491     * Class::MOP::Immutable
492       - fixing subtle edge case in immutable when you
493         call ->meta (stevan)
494       - clean up option processing (nothingmuch)
495
496     * Class::MOP::Instance
497       - inlined initialize slot didn't match
498         non-inlined (nothingmuch)
499
500 0.63 Mon July 7, 2008
501     * Class::MOP
502       - load_class will initialize a metaclass even if
503         the class is already loaded (sartak)
504       - load_class now returns the metaclass instance
505         instead of just 1 (sartak)
506
507     * elsewhere
508       - better error messages (sartak and Dave Rolsky)
509
510 0.62 Wed June 18, 2008
511     - in is_class_loaded, recognize scalar references (as opposed to globs) in
512       the symbol table as methods (these are optimized constant subs)
513
514 0.61 Fri. June 13, 2008
515     - Okay, lets give this another try and see if PAUSE 
516       recognizes it correct this time.
517
518 0.60 Thurs. Jun 12, 2008
519     - Fixed a version number issue by bumping all modules
520       to 0.60.
521
522 0.59 Thurs. Jun 12, 2008
523     !! Several fixes resulting in yet another 25-30% speedup !!
524
525     * Class::MOP::Class
526       - now stores the instance of the instance 
527         metaclass to avoid needless recomputation
528         and deletes it when the cache is blown
529       - introduce methods to query Class::MOP::Class for 
530         the options used to make it immutable as well as
531         the proper immutable transformer. (groditi)        
532
533     * Class::MOP::Package
534       - {add, has, get, remove}_package_symbol all 
535         now accept a HASH ref argument as well as the
536         string. All internal usages now use the HASH
537         ref version.
538
539     * Class::MOP
540       - MOP.xs does sanity checks on the coderef 
541         to avoid a segfault
542       - is_class_loaded check now uses code that
543         was improved in Moose's ClassName type
544         check (Sartak)
545       - nonsensical (undef, empty, reference) class
546         names now throw a more direct error in
547         load_class (Sartak)
548         - tests for this and other aspects of
549           load_class (Sartak)
550     
551     * Class::MOP
552       Class::MOP::Class      
553       Class::MOP::Method
554       Class::MOP::Method::Wrapped
555       Class::MOP::Attribute
556       - switched usage of reftype to ref because 
557         it is much faster
558
559 0.58 Thurs. May 29, 2008
560     (late night release engineering)--
561     
562     - fixing the version is META.yml, no functional 
563       changes in this release
564
565 0.57 Wed. May 28, 2008
566     !! Several speedups resulting in 20-25% speedups !!
567     || (thanks to konobi, groditi, mst & CataMoose) !!
568
569     * Class::MOP::Class
570       - made get_method_map use list_all_package_symbols
571         instead of manually grabbing each symbol
572       - streamlining &initialize somewhat, since it gets
573         called so much
574         
575     * Class::MOP::Package
576       - made {get, has}_package_symbol not call 
577         &namespace so much 
578       - inlining a few calls to &name with 
579         direct HASH access key access
580       - added get_all_package_symbols to fetch 
581         a HASH of items based on a type filter
582         similar to list_all_package_symbols
583         - added tests for this
584
585     * Class::MOP::Method
586       Class::MOP::Method::Constructor
587       Class::MOP::Method::Generated
588       Class::MOP::Method::Accessor
589       - added more descriptive error message to help 
590         keep people from wasting time tracking an error
591         that is easily fixed by upgrading.
592
593     * Class::MOP::Immutable
594       - Don't inline a destructor unless the user actually
595         needs one
596         - added tests for this
597
598 0.56 Saturday, May 24, 2008
599     * Class::MOP
600       - we now get the &check_package_cache_flag
601         function from MRO::Compat
602       - All XS based functionality now has a 
603         Pure Perl alternative
604         - the CLASS_MOP_NO_XS environment variable
605           can now be used to force non-XS versions
606           to always be used
607
608     * Class::MOP::Attribute
609       - add has_read_method and has_write_method
610       - get_{read,write}_method_ref now wraps the
611         anon-sub ref in the method metaclass when
612         possible
613         - added tests for this
614
615     * Class::MOP::Immutable
616       - added the ability to "wrap" methods when
617         making the class immutable
618
619     * Class::MOP::Class
620       - now handling the edge case of ->meta->identifier
621         dying by wrapping add_package_symbol to specifically
622         allow for it to work.
623         - added tests for this
624
625     * Class::MOP::Attribute
626       Class::MOP::Class
627       Class::MOP::Immutable
628       - any time a method meta object is constructed
629         we make sure to pass the correct package and
630         method name information
631
632     * Class::MOP::Method
633       Class::MOP::Method::Wrapped
634       Class::MOP::Method::Generated
635       Class::MOP::Method::Accessor
636       Class::MOP::Method::Consructor
637       - the &wrap constructor method now requires that a 
638         'package_name' and 'name' attribute are passed. This 
639         is to help support the no-XS version, and will 
640         throw an error if these are not supplied.      
641       - all these classes are now bootstrapped properly
642         and now store the package_name and name attributes
643         correctly as well        
644
645     ~ Build.PL has been removed since the 
646       Module::Install support has been removed
647
648 0.55 Mon. April 28, 2008
649     - All classes now have proper C3 MRO support
650       - added MRO::Compat as a dependency to allow
651         for the C3 MRO support to Just Work in all
652         perl versions
653
654     * Class::MOP::Class
655       - rebless_instance now returns the instance
656         it has just blessed, this is mostly to
657         facilitate chaining
658       - set the attr correctly in rebless_instance
659         when it has no init_arg
660       - tweaked &linear_isa and &class_precedence_list
661         to support c3 classes.
662
663 0.54 Fri. March, 14, 2008
664     * Class::MOP
665       metaclass.pm
666       - making sure that load_class never gets
667         passed a value from @_ or $_ to squash
668         Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
669
670     * Class::MOP::Class
671       - make_{immutable,mutable} now return 1
672         (cause Sartak asked)
673       - improved error handling in ->create method
674       - rebless_instance now takes extra params which
675         will be used to populate values
676         - added tests for this
677
678     * Class::MOP::Object
679       - localizing the Data::Dumper configurations so
680         that it does not pollute others (RT #33509)
681
682     * Class::MOP::Class
683       Class::MOP::Package
684       Class::MOP::Module
685       Class::MOP::Method
686       Class::MOP::Attribute
687       - these classes no longer define their own ->meta,
688         but instead just inherit from Class::MOP::Object
689
690     * Class::MOP::Instance
691       Class::MOP::Immutable
692       - these classes now inherit from Class::MOP::Object
693
694     * t/
695       - fixed the filename length on several
696         test files so we install on VMS better
697         (RT #32295)
698       - fixed incorrect use of catdir when it
699         should be catfile (RT #32385)
700
701 0.53 Thurs. Feb. 14, 1008
702     ~~ several doc. fixes and updates ~~
703
704     * Class::MOP::Class
705       Class::MOP::Method::Constructor
706       Class::MOP::Attribute
707         - making init_arg accept an undefined value
708           to indicate that no constructor args can
709           be passed (thanks to nothingmuch)
710           - added tests for this
711         - added attribute initializer attribute (rjbs)
712
713     * Class::MOP.
714         - making this use the new init_arg => undef
715           feature instead of the silly hack from
716           before (thanks to nothingmuch)
717
718 0.52 Tues. Jan. 22, 2008
719     * Class::MOP::Class
720       - fixed bug in rebless_instance
721         (discovered by ash)
722
723     * Class::MOP::Method::Constructor
724       - removed assumptions about the existence of
725         a &meta method
726
727 0.51 Mon. Jan. 14, 2008
728     ~~~ some misc. doc. fixes ~~~
729     ~~ updated copyright dates ~~
730
731     * Class::MOP
732       - now sets the IS_RUNNING_ON_5_10
733         constant so that we can take advantage
734         of some of the nice bits of 5.10
735
736     * Class::MOP::Class
737       - uses the IS_RUNNING_ON_5_10 flag to
738         optimize the &linearized_isa method
739         and avoid the hack/check for circular
740         inheritence in &class_precedence_list
741       - added rebless_instance method (Sartak)
742         - added tests for this
743
744     * Class::MOP::Immutable
745       - the immutable class now keeps track of
746         the transformer which immutablized it
747
748     * Class::MOP::Instance
749       - added rebless_instance_structure method (Sartak)
750         - added tests for this
751
752 0.50 Fri. Dec. 21, 2007
753     * Class::MOP::Class
754       - fixed bug in immutable to make sure that
755         transformation arguments are saved
756         correctly (mst)
757         - added tests for this
758
759     * Class::MOP::Immutable
760       - fixed a bug (see above)
761
762     * Class::MOP::Attribute
763       - some doc updates
764
765 0.49 Fri. Dec. 14, 2007
766     !! Class::MOP now loads 2 x faster  !!
767     !! with XS speedups (thanks konobi) !!
768
769     * Class::MOP
770       - removed the dependency on B
771       - added two XS functions (thanks konobi)
772         - get_code_info($code) which replaces all
773           the B fiddling we were doing with
774           faster/leaner XS level fiddling
775         - check_package_cache_flag($pkg_name) which
776           returns the PL_sub_generation variable to
777           be used to help manage method caching.
778
779           NOTE:
780           In 5.10 or greater this will actually
781           use the mro::get_pkg_gen instead to give
782           even more accurate caching information.
783           blblack++ for that stuff :)
784
785     * Class::MOP::Class
786       - added the &subclasses method (thanks rlb)
787       - added the update_package_cache_flag and
788         reset_package_cache_flag which help keep
789         track of when we need to re-fetch the
790         method map.
791       - Several small improvements to take advantage
792         of the new method map caching features
793
794 0.48 Mon. Nov. 26, 2007
795     * Class::MOP::Attribute
796       - fixed get_read/write_method to handle the
797         HASH ref case, which makes the
798         get_read/write_method_ref handle it too.
799         - added more tests for this
800
801 0.47 Sat. Nov. 24, 2007
802     * Class::MOP::Attribute
803       - fixed misspelling in get_write_method_ref
804         - added more tests for this
805
806 0.46 Fri. Nov. 23, 2007
807     * Class::MOP::Class
808       - added the linearized_isa method instead of constantly
809         pruning duplicate classes (this will be even more
810         useful in the 5.10-compat version coming soon)
811
812     * Class::MOP::Attribute
813       - added the get_read_method_ref and get_write_method_ref
814         methods which allow you to retrieve a CODE ref which
815         can always be used to read or write an attribute.
816
817 0.45 Thurs. Nov. 13, 2007
818     * Class::MOP::Attribute
819       - Fix error message on confess (groditi)
820
821 0.44 Thurs. Nov. 13, 2007
822     - Apparently I didn't make dist correctly (groditi)
823
824 0.43 Thurs. Nov. 13, 2007
825     * Class::MOP
826       - Add support for the 'builder' attribute (groditi)
827
828     * Class::MOP::Class
829       - optimise metaclass-already-exists check in
830         construct_class_instance (groditi)
831       - duplicate check into initialize to save a
832         call through (groditi)
833
834     * Class::MOP::Attribute
835       - Add support for the 'builder' attribute (groditi)
836       - Make predicates check for the existence of a value, not whether
837         it is defined (groditi)
838
839     * Class::MOP::Instance
840       - Make predicates check for the existence of a value, not whether
841         it is defined (groditi)
842
843     * Class::MOP::Method::Accessor
844       - made this a subclass of Class::MOP::Method::Generated
845         - removed the relevant attributes
846
847     * Class::MOP::Method::Constructor
848       - fixed the cached values we had to be more sane
849       - made this a subclass of Class::MOP::Method::Generated
850       - fixed generated constructor so it properly handles
851         subclasses now.
852         - added tests for this
853       - added the option to allow for both inlined and
854         non-inlined constructors.
855       - Update inlined methods for builder and predicate changes (groditi)
856
857     * Class::MOP::Method::Generated
858       - added this class as an abstract base for the
859         Class::MOP::Method::{Constructor,Accessor} classes
860         - added tests for this
861
862     *t/
863       - Alter tests (005, 014 020, 021) for new builder addition (groditi)
864       - Tests for new predicate behavior (and corrections to old tests) (groditi)
865
866     *examples/
867       - Update ArrayRef based class example to work with predicate changes
868
869 0.42 Mon. July 16, 2007
870     !!! Horray for mst, he fixed it !!!
871
872     * Class::MOP::Package
873       - alter symbol table handling to deal with 5.8.x and 5.9.x
874
875     * t/
876       - Get rid of the crappy workaround from 0.40/41
877
878 0.41 Sun. July 15, 2007
879     * t/
880         Arghh!!! My TODO test didn't work, so I handle
881         it manually now so that people can use this
882         with 5.9.5/bleadperl without issue.
883
884 0.40 Tues, July 3, 2007
885     * t/
886       ~ marked a test in 003_methods.t as TODO
887         for perl 5.9.5 (this test is irrelvant to
888         the module functioning on 5.9.5 for the most
889         part anyway)
890
891 0.39 Mon. June 18, 2007
892     * Class::MOP::Immutable
893       - added make_metaclass_mutable + docs (groditi)
894       - removed unused variable
895       - added create_immutable_transformer
896         necessary for sane overloading of immutable behavior
897          - tests for this (groditi)
898
899     * Class::MOP::Class
900       - Immutability can now be undone,
901         added make_mutable + tests + docs (groditi)
902       - Massive changes to the way Immutable is done
903         for details see comments next to make_immutable
904         This fixes a bug where custom metaclasses broke
905         when made immutable. We are now keeping one immutable
906         metaclass instance per metaclass instead of just one
907         to prevent isa hierarchy corruption. Memory use will go
908         up, but I suspect it will be neglible.
909          - New tests added for this behavior.  (groditi)
910
911 0.38 Thurs. May 31, 2007
912     ~~ More documentation updates ~~
913
914     * Class::MOP::Package
915       - we now deal with stub methods properly
916         - added tests for this
917       - fixed some tests failing on 5.9.5 (thanks blblack)
918
919     * Class::MOP::Attribute
920       - added get_read_method and get_write_method
921         thanks to groditi for this code, tests
922         and docs.
923         - added tests and POD for this
924
925     * Class::MOP::Class
926       - fixed RT issue #27329, clone object now
927         handles undef values correctly.
928         - added tests for this
929       - Corrected anon-class handling so that they
930         will not get reaped when instances still
931         exist which need to reference them. This is
932         the correct behavior, hopefully this is an
933         obscure enough feature that there are not too
934         many work arounds out in the wild.
935         - added tests for this by groditi
936         - updated docs to explain this
937
938     * metaclass
939       - load custom metaclasses automatically (thanks groditi)
940         - added tests for this behavior
941
942 0.37 Sat. March 10, 2007
943     ~~ Many, many documentation updates ~~
944
945     * Class::MOP
946       - added &load_class and &is_class_loaded
947         - added tests and docs for these
948
949     * Class::MOP::Attribute
950       - default now checks the instance with defined to
951         avoid setting off bool-overloads (found by Carl Franks)
952
953 0.37_002
954     * /t
955       - bad name in a test, causing meaningless failuress.
956         No other changes.
957
958 0.37_001
959
960     ~~ GLOBAL CHANGES ~~
961     - All attribute names are now consistent and follow Perl 6
962       style (prefixed with the sigil, and ! as the twigil for
963       private attrs). This should not affect any code, unless
964       you broke encapsulation, in which case, it is your problem
965       anyway.
966
967     !! Class::MOP::Class::Immutable has been removed
968
969     * Class::MOP::Method::Constructor
970       - this has been moved out of Class::MOP::Class::Immutable
971         and is a proper subclass of Class::MOP::Method now.
972
973     * Class::MOP::Class
974       - this module now uses Class::MOP::Immutable for the
975         immutable transformation instead of
976         Class::MOP::Class::Immutable.
977
978     + Class::MOP::Immutable
979       - this module now controls the transformation from a mutable
980         to an immutable version of the class. Docs for this will
981         be coming eventually.
982
983
984 0.36 Sun. Nov. 5, 2006
985     * Class::MOP::Class
986       - added a few 'no warnings' lines to keep annoying
987         (and meaningless) warnings from chirping during
988         global destruction.
989
990     * Class::MOP
991       - some more bootstrapping is now done on the new
992         classes
993
994     * Class::MOP::Class::Immutable
995       *** API CHANGE ***
996       - constructor generation is now handled by
997         the Class::MOP::Method::Constructor class
998
999     * Class::MOP::Method::Constructor
1000       - created this to handle constructor generation
1001         in Class::MOP::Class::Immutable
1002
1003     * Class::MOP::Attribute
1004       *** API CHANGE ***
1005       - attributes now delegate to the
1006         Class::MOP::Method::Accessor to generate
1007         accessors
1008
1009     * Class::MOP::Method::Accessor
1010       - all accessor generation functions from
1011         Class::MOP::Attribute have been moved here
1012
1013 0.35 Sat. Sept. 30, 2006
1014
1015     * scripts/class_browser.pl
1016       - initial prototype of a class browser, more
1017         on this to come. Comments and patches are
1018         very much welcome.
1019
1020     * Class::MOP
1021       - All Class::MOP::* accessors are no longer
1022         re-generated in the bootstrap, instead
1023         they are aliased from the originals
1024         - fixed tests to reflect
1025       - added Class::MOP::Method (and its subclasses)
1026         to the bootstrap
1027         - adjusted tests for this
1028       - added the Class::MOP::Instance attributes
1029         to the bootstrap
1030
1031     * Class::MOP::Method
1032       *** API CHANGE ***
1033       - methods are no longer blessed CODE refs
1034         but are actual objects which can be CODE-ified
1035         - adjusted tests to compensate
1036         - adjusted docs for this
1037
1038     * Class::MOP::Class
1039       - changed how methods are dealt with to
1040         encapsulate most of the work into the
1041         &get_method_map method
1042       - made several adjustments for the change
1043         in Class::MOP::Method
1044       - &add_attribute now checks if you are adding
1045         a duplicate name, and properly removes the
1046         old one before installing the new one
1047         - added tests for this
1048         - adjusted docs for this
1049
1050     * Class::MOP::Class::Immutable
1051       - added caching of &get_method_map
1052       - fixed issue with &get_package_symbol
1053       - cleaned up the methods that die (patch by David Wheeler)
1054
1055     * Class::MOP::Package
1056       - added filtering capabilities to
1057         &list_all_package_symbols
1058
1059 0.34 Sat. Aug. 26, 2006
1060     * Class::MOP::Class
1061       - added the %:methods attribute, which like
1062         the $:version and such just actually goes
1063         to the symbol table to get it's stuff.
1064         However, it makes the MOP more complete.
1065      ** API CHANGE **
1066       - The &create method now requires that all
1067         but the package name now is passed in as
1068         named parameters. See docs for more info.
1069         - updated docs and tests for this
1070
1071     * Class::MOP::Object
1072       - added &dump method to easily Data::Dumper
1073         an object
1074
1075     * Class::MOP
1076       - cleaned up the initialization of attributes
1077         which do not store things in the instance
1078       - added the %:methods attribute definition to
1079         the bootstrap
1080
1081     ~ lots of misc. test cleanup
1082
1083 0.33 Sat. Aug. 19, 2006
1084     * Class::MOP::Class
1085       - moved the metaclass cache out of here
1086         and it is now in Class::MOP itself.
1087
1088     * Class::MOP
1089       - moved all the metaclass cache stuff here
1090         - fixed all tests for this
1091
1092     * Class::MOP::Attribute
1093       - reference values (other than CODE refs)
1094         are no longer allowed for defaults
1095         - added tests for this
1096
1097     * Class::MOP::Package
1098       - fixed an issue with perl 5.8.1 and how it deals
1099         with symbol tables. The namespace hash is now
1100         always reloaded from the symbol table.
1101
1102     ~ lots of misc. documentation cleanup
1103
1104 0.32 Sat. Aug. 12, 2006
1105     + added Class::MOP::Object so that the
1106       metamodel is more complete (and closer
1107       to what Perl 6 will probably be).
1108
1109     * Class::MOP::Package
1110       - refactored entire class, this is now
1111         the primary gateway between the metaclass
1112         and the Perl 5 symbol table
1113         - added many tests for this
1114       - this class is now a subclass of
1115         Class::MOP::Object
1116         - added some tests to reflect this
1117
1118     * Class::MOP::Class
1119       - refactored all symbol table access to
1120         use Class::MOP::Package methods instead
1121
1122     * Class::MOP::Module
1123       - adding the $:version attribute in the bootstrap
1124         so that Module has a version as an attribute
1125         - see comment in Class::MOP for details
1126       - added the $:authority attribute to this module
1127         as well as an &identifier method, to bring us
1128         ever closer to Perl 6 goodness
1129         - I have added $AUTHORITY to all the modules
1130         - added tests for this
1131
1132     * Class::MOP::Instance
1133       - added &deinitialize_slot for removing slots
1134         from an instance
1135         - added tests for this
1136
1137     * Class::MOP::Attribute
1138       - added support for &deinitialize_slot for removing
1139         slots from an instance
1140         - added tests for this
1141
1142 0.31 Sat. July 15, 2006
1143
1144     * Class::MOP::Class
1145       - added &find_method_by_name to locate a method
1146         anywhere within the class hierarchy
1147
1148     * Class::MOP::Attribute
1149       - added &set_value and &get_value for getting
1150         the value of the attribute for a particular
1151         instance.
1152
1153 0.30 Wed. July 5, 2006
1154     ---------------------------------------
1155     This is the first version of Class::MOP
1156     to introduce the immutable features which
1157     will be used for optimizating the MOP.
1158     This support should still be considered
1159     experimental, but moving towards stability.
1160     ---------------------------------------
1161
1162     * Created Class::MOP::Class::Immutable
1163
1164     * Created the Class::MOP::Package and
1165       Class::MOP::Module classes to more
1166       closely conform to Perl 6's meta-model
1167
1168     * Class::MOP::Class
1169       - now inherits from Class::MOP::Module
1170       - several methods moved to ::Module and
1171         ::Package and now inherited
1172         - added tests for this
1173
1174     * Class::MOP::Instance
1175       - added an is_inlinable method to allow other
1176         classes to check before they attempt to optimize.
1177       - added an inline_create_instance to inline
1178         instance creation (of course)
1179
1180     ** API CHANGE **
1181       - the Class::MOP::Class::*_package_variable
1182         methods are all now methods of Class::MOP::Package
1183         and called *_package_symbol instead. This is
1184         because they are now more general purpose symbol
1185         table manipulation methods.
1186
1187 0.29_02 Thurs. June 22, 2006
1188     ++ DEVELOPER RELEASE ++
1189     * Class::MOP::Class
1190       - small change in &create so that it behaves
1191         properly when inherited
1192       - small fix to &clone_instance
1193
1194 0.29_01 Fri. May 12, 2006
1195     ++ DEVELOPER RELEASE ++
1196       - This release works in combination with
1197         Moose 0.09_01, it is a developer release
1198         because it introduces a new instance
1199         sub-protocol and has not yet been
1200         optimized.
1201
1202     * Class::MOP::Class
1203       - anon-classes are now properly garbage collected
1204         - added tests for this
1205       - improved method modifier wrapping
1206
1207     * Class::MOP::Instance
1208       - added new instance protocol
1209         - added tests for this
1210       - changed all relevant modules and examples
1211         - Class::MOP::Class
1212         - Class::MOP::Attribute
1213         - examples/*
1214
1215     * metaclass
1216       - you no longer need to specify the metaclass
1217         itself, if it is not there, Class::MOP::Class
1218         is just assumed
1219         - updated tests for this
1220
1221     * examples/
1222       - added ArrayBasedStorage example to show
1223         instance storage using ARRAY refs instead of
1224         HASH refs.
1225         - added tests for this
1226       - InsideOutClass is totally revised using the
1227         new instance protocol
1228         - added more tests for this
1229
1230 0.26 Mon. April 24, 2006
1231     * Class::MOP::Class
1232       - added find_attribute_by_name method
1233         - added tests and docs for this
1234       - some small optimizations
1235
1236     * Class::MOP::Attribute
1237       - some small optimizations
1238
1239 0.25 Thurs. April 20, 2006
1240     * Class::MOP::Class
1241       - added create_anon_class for creating anonymous classes
1242         - added tests for this
1243       - added get_all_metaclasses, get_all_metaclass_names
1244         and get_all_metaclass_instances method to allow
1245         access to all the cached metaclass objects.
1246       - attribute slot initialization is now the responsibility
1247         of the attribute itself, and construct_instance now
1248         delegates appropriately
1249
1250     * Class::MOP::Attribute
1251       - attribute slot initialization is now the responsibility
1252         of the attribute itself, so we added a method for it
1253         called initialize_instance_slot
1254
1255     * examples/
1256       - adjusted all the examples to use the new attribute
1257         initialize_instance_slot method
1258
1259 0.24 Tues. April 11, 2006
1260     * Class::MOP::Class
1261       - cleaned up how the before/after/around method
1262         modifiers get named with Sub::Name
1263
1264 0.23 Thurs. March 30, 2006
1265         * Class::MOP::Class
1266           - fixed the way attribute defaults are handled
1267             during instance construction (bug found by chansen)
1268
1269         * Class::MOP::Attribute
1270           - read-only accessors ('reader') will now die if
1271             passed more than one argument (attempting to write
1272             to them basically)
1273               - added tests for this
1274               - adjusted all /example files to comply
1275
1276 0.22 Mon. March 20, 2006
1277     * Class::MOP::Class
1278       - localized $@ in the *_package_variable functions
1279         because otherwise, it does ugly things in Moose.
1280           - added test case for this
1281
1282 0.21 Wed. March 15, 2006
1283     * Class::MOP::Class
1284       - fixed issue where metaclasses are reaped from
1285         our cache in global destruction, and so are not
1286         available in DESTORY calls
1287
1288 0.20 Thurs. March 2, 2006
1289     - removed the dependency for Clone since
1290       we no longer to deep-cloning by default.
1291
1292     * Class::MOP::Method
1293       - added &package_name, &name and
1294         &fully_qualified_name methods, some of
1295         which were formerly private subs in
1296         Class::MOP::Class
1297
1298     * Class::MOP::Method::Wrapped
1299       - allows for a method to be wrapped with
1300         before, after and around modifiers
1301           - added tests and docs for this feature
1302
1303     * Class::MOP::Class
1304       - improved &get_package_symbol
1305           - &version and &superclasses now use it
1306       - methods are now blessed into Class::MOP::Method
1307         whenever possible
1308       - added methods to install CLOS-style method modifiers
1309          - &add_before_method_modifier
1310          - &add_after_method_modifier
1311          - &add_around_method_modifier
1312              - added tests and docs for these
1313       - added &find_next_method_by_name which finds the
1314         equivalent of SUPER::method_name
1315
1316 0.12 Thurs. Feb 23, 2006
1317     - reduced the dependency on B, no need to always
1318       have the latest
1319
1320     * examples/
1321       - added docs to the C3 method dispatch order test
1322       - fixed missing Algorithm::C3 dependency by making
1323         the test skip if it is not installed
1324
1325 0.11 Mon Feb. 20, 2006
1326     * examples/
1327       - added example of changing method dispatch order to C3
1328
1329     * Class::MOP::Class
1330       - changed how clone_instance behaves, it now only does a
1331         shallow clone (see docs for more details)
1332         - added docs and tests
1333
1334 0.10 Tues Feb. 14, 2006
1335     ** This release was mostly about writing more tests and
1336        cleaning out old and dusty code, the MOP should now
1337        be considered "ready to use".
1338
1339     - adding more tests to get coverage up a little higher,
1340       mostly testing errors and edge cases.
1341       - test coverage is now at 99%
1342
1343     * Class::MOP
1344       - no longer optionally exports to UNIVERSAL::meta or
1345         creates a custom metaclass generator, use the
1346         metaclass pragma instead.
1347
1348     * Class::MOP::Class
1349       - fixed a number of minor issues which came up in the
1350         error/edge-case tests
1351
1352     * Class::MOP::Attribute
1353       - fixed a number of minor issues which came up in the
1354         error/edge-case tests
1355
1356     * examples/
1357       - fixing the AttributesWithHistory example, it was broken.
1358
1359 0.06 Thurs Feb. 9, 2006
1360     * metaclass
1361       - adding new metaclass pragma to make setting up the
1362         metaclass a little more straightforward
1363
1364     * Class::MOP
1365       - clean up bootstrapping to include more complete
1366         attribute definitions for Class::MOP::Class and
1367         Class::MOP::Attribute (accessors, readers, writers,
1368         etc.) ... it is redundant, but is useful meta-info
1369         to have around.
1370
1371     * Class::MOP::Class
1372       - fixing minor meta-circularity issue with &meta, it
1373         is now more useful for subclasses
1374       - added &get_attribute_map as an accessor for the
1375         hash of attribute meta objects
1376       - &compute_all_applicable_attributes now just returns
1377         the attribute meta-object, rather than the HASH ref
1378         since all the same info can be gotten from the
1379         attribute meta-object itself
1380           - updated docs & tests to reflect
1381       - added &clone_instance method which does a deep clone
1382         of the instance structure created by &construct_instance
1383           - added docs & tests for this
1384           - added Clone as a dependency
1385       - added &new_object and &clone_object convience methods to
1386         return blessed new or cloned instances
1387           - they handle Class::MOP::Class singletons correctly too
1388           - added docs & tests for this
1389       - cleaned up the &constuct_class_instance so that it behaves
1390         more like &construct_instance (and managed the singletons too)
1391       - added the &check_metaclass_compatibility method to make sure
1392         that metaclasses are upward and downward compatible.
1393           - added tests and docs for this
1394
1395     * examples/
1396       - adjusting code to use the &Class::MOP::Class::meta
1397         fix detailed above
1398       - adjusting code to use the metaclass pragma
1399
1400 0.05 Sat Feb. 4, 2006
1401     * Class::MOP::Class
1402       - added the &attribute_metaclass and &method_metaclass
1403         attributes which contain a metaclass name to use for
1404         attributes/methods respectively
1405
1406     * Class::MOP
1407       - bootstrap additional attributes for Class::MOP::Class
1408
1409     * examples/
1410       - adjusted the example code and tests to use the new
1411         &attribute_metaclass feature of Class::MOP::Class
1412       - added new example:
1413         - LazyClass
1414
1415 0.04 Fri Feb. 3, 2006
1416     * Class::MOP::Class
1417       - some documentation suggestions from #perl6
1418
1419     * Class::MOP::Attribute
1420       - improved error messages
1421
1422     * examples/
1423       - added new examples:
1424         - AttributesWithHistory
1425         - ClassEncapsultedAttributes
1426
1427 0.03 Fri Feb. 3, 2006
1428     - converted to Module::Build instead of EU::MM
1429
1430     * Class::MOP::Attribute
1431       - refactored method generation code
1432       - attributes are now associated with class directly
1433
1434     * examples/
1435       - refactored the InsideOut example to take advantage
1436         of the Class::MOP::Attribute refactoring
1437       - changed example files to .pod files and hide thier
1438         package names from PAUSE (I don't want to own these
1439         namespaces really, they are just examples)
1440
1441 0.02 Thurs Feb. 2, 2006
1442     - moving examples from t/lib/* to examples/*
1443         - adding POD documentation to the examples
1444
1445 0.01 Thurs Feb. 2, 2006
1446     - Initial release