1 Revision history for Perl extension Class-MOP.
3 0.97_01 Mon, Jan 4, 2010
5 - Internal refactorings to move shared behavior into new "mixin"
6 classes. This made adding some new features to Moose much
10 * No code changes, just packaging fixes to make this distro installable.
12 0.96 Fri, Dec 18, 2009
14 - Fixed t/082_get_code_info.t so it passes with bleadperl. (Dave Rolsky)
15 - Add XS & C files to no tabs check (Dave Rolsky)
16 - Convert all tests to done_testing. (Florian Ragwitz)
18 0.95 Wed, Nov 19, 2009
20 - Make is_class_loaded without any arguments fail loudly
22 - Make load_class throw more standard error messages when loading single
23 modules (nothingmuch).
26 - Stop add_method from behaving differently under the debugger
31 - Any method which takes a method name as an argument now allows names
32 which are false (like "0"), but the name must be defined and not be an
33 empty string. (Dave Rolsky)
36 - Deprecated get_attribute_map as a public method. You can use a
37 combination of get_attribute_list and get_attribute instead. (Dave
40 0.94 Tue, Sep 22, 2009
41 * Class::MOP::Attribute
42 - Introduce set_raw_value and get_raw_value, side effect free variants
43 of {get,set}_value. These don't do anything useful in Class::MOP but
44 have different behavior that set_value and get_value for Moose
45 attributes. (nothingmuch)
47 0.93 Tue, Sep 15, 2009
49 - The load_class function just returns true, since it's return value was
50 confusing (either a metaclass object or a class name). It either loads
51 a class or dies trying. In the future, this may change to not return
52 anything, since there's no point in checking its return
53 value. Addresses RT #45883. (Dave Rolsky)
55 * Class::MOP::Class::Trait::Immutable
56 - When throwing an error because of an immutable method, include that
57 method's name. Addresses RT #49680. (Shawn M Moore)
60 - Adding the same sub reference to multiple packages failed to update
61 the method map properly. RT #48985. Reported by Paul Mooney. (Dave
63 - The get_method_map method is now private (and called as
64 _full_method_map or _method_map). The public version is available as a
65 deprecated method. (Dave Rolsky)
67 0.92_01 Thu, Sep 10, 2009
69 - Backwards compatibility tweaks to XS for 5.8.1. (Goro Fuji)
72 - Make sure XS code handles magical scalars correctly. (Goro Fuji)
75 - Documented the immutable_options method, which is useful if you need
76 to make a class mutable temporarily, and then nede to restore
77 immutability. (Dave Rolsky)
80 - Deprecated features have been moved to their own module,
81 Class::MOP::Deprecated, for easier deprecation management. (Goro Fuji)
86 - Move get_method_map and its various scaffolding into Package. (hdp)
89 - Allow Class::MOP::Method->wrap to take a Class::MOP::Method object as
90 the first argument, rather than just a coderef. (doy)
92 * Class::MOP::Attribute
94 - Allow attribute names to be false (while still requiring them to be
98 * Class::MOP::Method::Wrapped
99 - Fixing variable usage issues with the patch from previous
100 version, not properly using lexicals in the for
103 0.90 Tue Jul 21, 2009
104 Japan Perl Association has sponsored Goro Fuji to improve startup
105 performance of Class::MOP and Moose. These enhancements may break
106 backwards compatibility if you're doing (or using) complex
107 metaprogramming, so, as always, test your code!
108 http://blog.perlassociation.org/2009/07/jpa-sponsors-moose-class-mop-work.html
112 - Anonymous classes were not completely destroyed when they went
113 out of scope, leading to a memory leak. RT #47480. (Goro
117 - The get_method, has_method, and add_method methods no longer
118 use get_method_map. Method objects are instantiated
119 lazily. This significantly improves Class::MOP's load
123 - Inline fewer metaclass-level constructors since the ones we
124 have are perfectly fine. This reduces the number of string
127 * Class::MOP::Method::Wrapped
128 - If a method modifier set $_, this caused the modifier to blow
129 up, because of some weird internals. (Jeremy Stashewsky)
133 * Class::MOP::Class::Immutable::Trait
134 - Made the Trait act like a role with a bunch of "around"
135 modifiers, rather than sticking it in the inheritance
136 hierarchy. This fixes various problems that caused with
137 metaclass compatibility, which broke Fey::ORM.
140 - Allow a blessed code reference as the method body. Fixes a
141 problem interaction with MooseX::Types. (ash)
143 * Class::MOP::Instance
144 - add inline version of rebless_instance_structure. (doy)
145 - change inline_slot_access to use single quotes (gphat)
147 0.88 Tue, Jun 23, 2009
149 - Moved the __INSTANCE__ parameter to _construct_instance from
151 - Fixed some issues involving metaclasses of metaclasses and
154 0.87 Sun, Jun 21, 2009
156 - Made sure to always local-ize $@ and $SIG{__DIE__} before
157 calling an eval. Fixes RT #45973.
160 - Synced docs about immutability with the current reality (which
161 changed back in 0.82_01)
162 - Removed the immutable_transformer method, which had been
163 returning undef since 0.82_01 anyway.
166 - Got rid of tests which needed Moose and improved testing of
167 constructor/destructor inlining warnings. Fixes RT #47119.
169 0.86 Tue, Jun 16, 2009
171 - If you redefined a subroutine at runtime and then wrapped it
172 with a method modifier, the modifier could in some cases wrap
173 the original version of the subroutine. Fixes RT #46957.
176 - make_immutable issues a warning instead of overriding an
177 existing DESTROY method (Dylan William Hardison). Fixes RT
180 0.85 Sat, Jun 6, 2009
181 * Class::MOP::Attribute
182 - Allow default values to be Class::MOP::Methods. (Florian
184 - Test the above. (Rhesa Rozendaal)
185 - Tweak original commit so the intent matches the accepted
186 behavior (Nicholas Perez)
189 - Localize $SIG{__DIE__} inside _try_load_one_class (Sartak)
192 - Add direct_subclasses method (Sartak)
193 - Tests for subclasses and direct_subclasses (Sartak)
194 - subname is no longer used unconditionally in add_method, but
195 only if the code reference's name is '__ANON__' (nothingmuch)
196 - Add a hook for _superclasses_updated (Sartak)
199 - Remove long, old warning about possibly outdated modules
202 0.84 Tue, May 12, 2009
204 - Depend on Text::Exception 0.27 to avoid failing tests ond old
208 - Made is_class_loaded a little stricter. It was reporting that
209 a class was loaded if it merely had an @ISA variable in its
210 stash. Now it checks that the @ISA var has elements in it.
211 - Deprecate in_global_destruction and subname re-exporting
215 - Explicitly use Devel::GlobalDestruction and Sub::Name
218 * Class::MOP::Package
219 - Disable prototype mismatch warnings for add_package_symbol.
222 - Add test for finding methods from $meta->name->meta before immutable,
225 0.83 Mon, April 27, 2009
227 - Fix segfault when calling get_method_map on a metaclass for an empty
230 0.82_02 Fri, April 24, 2009
231 * Class::MOP::Method::Inlined
232 - Don't inline if the expected method is not defined at all (happens with
233 e.g. Moose::Object::_new is the expected method due to an overridden
236 - Some tests were trying to load Class::MOP::Immutable, which
237 was removed in 0.82_01.
239 0.82_01 Thu, April 23, 2009
240 * Class::MOP::Immutable (and others)
241 - Refactor the immutability system to use a pre-defined class
242 for the immutable metaclass of Class::MOP::Class::Immutable::$class
243 - Rather than generating methods into this class every time, use
244 a Trait (basic mixin) to supply the cached methods
245 - Remove the hack that returns the mutable metaclass for
246 metacircularity in order to provide consistent meta-metaclasses
247 for the Moose compatibility handling code
248 (mst broke it, nothingmuch fixed it)
250 0.82 Mon, April 20, 2009
252 - The deprecation wrappers for some renamed methods were not
253 passing arguments to the new method. (nothingmuch)
255 * Class::MOP::Immutable
256 - Warn during immutablization if the local class provides its own
257 constructor, to parallel the warning in Moose when a superclass
258 provides its own constructor (doy)
260 0.81 Tue, April 7, 2009
263 * Class::MOP::Instance
264 * Class::MOP::Attribute
265 * Class::MOP::Method::Accessor
266 * Class::MOP::Method::Constructor
267 - Include stack traces in the deprecation warnings introduced in
268 0.80_01. (Florian Ragwitz)
271 - Avoid c compiler warnings by declaring some unused function
272 arguments. (Florian Ragwitz)
274 0.80_01 Sun, April 5, 2009
276 - Make sure to preserve any compiler flags already defined in
277 Config.pm. Patch by Vincent Pit. RT #44739.
279 * Many methods have been renamed with a leading underscore, and a
280 few have been deprecated entirely. The methods with a leading
281 underscore are considered "internals only". People writing
282 subclasses or extensions to Class::MOP should feel free to
283 override them, but they are not for "public" use.
286 - construct_class_instance => _construct_class_instance (use new_object)
287 - construct_instance => _construct_instance (use new_object)
288 - check_metaclass_compatibility => _check_metaclass_compatibility
289 - create_meta_instance => _create_meta_instance (use get_meta_instance)
290 - clone_instance => _clone_instance (use clone_object)
291 - compute_all_applicable_methods is deprecated, use get_all_methods
292 - compute_all_applicable_attributes is deprecated, use get_all_attributes
294 - Class::MOP::Instance
295 - bless_instance_structure is deprecated and will be removed
299 - create has been renamed to _instantiate_module. This method
300 does not construct an object, it evals some code that
301 creates the relevant package in Perl's symbol table.
303 - Class::MOP::Method::Accessor
304 - initialize_body => _initialize_body (this is always called
305 when an object is constructed)
306 - /(generate_.*_method(?:_inline)?)/ => '_' . $1
308 - Class::MOP::Method::Constructor
309 - initialize_body => _initialize_body (this is always called
310 when an object is constructed)
311 - /(generate_constructor_method(?:_inline)?)/ => '_' . $1
312 - attributes => _attributes
313 - meta_instance => _meta_instance
315 0.80 Wed, April 1, 2009
317 - Call user_class->meta in fewer places, with the eventual goal
318 of allowing the user to rename or exclude ->meta
319 altogether. Instead uses Class::MOP::class_of. (Sartak)
322 - New class_of function that should be used to retrieve a
323 metaclass. This is unlike get_metaclass_by_name in that it
324 accepts instances, not just class names. (Sartak)
327 - load_first_existing_class didn't actually load the first
328 existing class; instead, it loaded the first existing and
329 compiling class. It now throws an error if a class exists (in
330 @INC) but fails to compile. (hdp)
334 - we had some semi-buggy code that purported to provide a
335 HAS_ISAREV based on whether mro had get_isarev (due to an
336 oversight, it always returned 1). Since mro and MRO::Compat
337 have always had get_isarev, HAS_ISAREV was pointless. This
338 insight simplified the subclasses method by deleting the
339 pure-perl fallback. HAS_ISAREV is now deprecated. (Sartak)
341 0.79 Fri, March 29, 2009
342 * No changes from 0.78_02.
344 0.78_02 Thu, March 26, 2009
346 * Class::MOP::Immutable
347 - A big backwards-incompatible refactoring of the Immutable API,
348 and the make_immutable/make_mutable pieces of the Class
349 API. The core __PACKAGE__->meta->make_immutable API remains
350 the same, however, so this should only affect the most
354 - The XS code used a macro, XSPROTO, that's only in 5.10.x. This
355 has been fixed to be backwards compatible with 5.8.x.
358 - Add a hook for rebless_instance_away (Sartak)
359 - Use blessed instead of ref to get an instance's class name
360 in rebless_instance. (Sartak)
362 0.78_01 Wed, March 18, 2009
364 - Revised and reorganized all of the API documentation. All
365 classes now have (more or less) complete API documentation.
368 * Class::MOP::Instance
369 - Reblessing into a package that supports overloading wasn't
370 properly adding overload magic to the object due to a bug
371 in (at least) 5.8.8. We now use $_[1] directly which seems
372 to set the magic properly. (Sartak)
374 * Class::MOP::Attribute
375 - The process_accessors method is now private. A public alias
376 exists (and will stick around for a few releases), but it
377 warns that calling the public method is deprecated.
379 * Class::MOP::Method::Generated
380 - Removed the new and _new methods, since this is an abstract
381 base class, and all existing subclasses implement their own
385 - Stop is_class_loaded from thinking a class is loaded if it
386 only has an empty GV (Florian Ragwitz).
387 - Add a test for this (Yappo).
388 - Refactor get_all_package_symbols to allow short-circuiting
390 - Use this in is_class_loaded (Florian Ragwitz).
391 - Stop segfaulting when trying to get the name from a sub that's
392 still being compiled (Florian Ragwitz).
393 - Add tests for this (Florian Ragwitz).
394 - Prefix all public symbols with "mop_" (Florian Ragwitz).
395 - Clean up and simplify prehashing of hash keys (Florian Ragwitz).
396 - Simplify creating simple xs reader methods (Florian Ragwitz).
397 - Make everything compile with c++ compilers (Florian Ragwitz).
398 - Upgrade ppport.h from 3.14 to 3.17 (Florian Ragwitz).
401 - Remove optional test plans for tests depending on Sub::Name as
402 we have a hard dependency on Sub::Name anyway (Florian Ragwitz).
405 - Rebuild all c code if mop.h has changed (Florian Ragwitz)
407 0.78 Mon, February 23, 2009
408 * No changes from 0.77_01
410 0.77_01 Sun, February 22, 2009
412 - This package now requires its XS components. Not using
413 Sub::Name lead to different behavior and bugginess in the pure
414 Perl version of the code. A Moose test would fail when run
415 against the pure Perl version of this code.
417 * Class::MOP::Instance
418 - The inline_* methods now quote attribute names themselves, and
419 don't expect to receive a quoted value.
422 0.77 Sat, February 14, 2009
424 - Avoid assertion errors on debugging perls in is_class_loaded
428 - Fixed various corner cases where is_class_loaded incorrectly
429 returned true for a class that wasn't really loaded. (Dave
433 - Add get_all_method_names (Sartak)
434 - Add a wrapped_method_metaclass attribute (Florian Ragwitz)
436 * Class::MOP::Package
437 - Disable deprecated get_all_package_symbols in list
438 context. (Florian Ragwitz)
441 - Make sure we generate a BSD-compatible Makefile (Florian
445 - The misspelled "check_metaclass_compatability" method we've
446 kept around for backwards compat_i_bility will be removed in a
447 near future release. You've been warned.
449 0.76 Thu, January 22, 2009
450 * Class::MOP::Method::Generated
451 - Added new private methods to support code generation, which
452 are being used by Moose and can be used by MooseX
454 - Generated methods are now generated with a #line directive
455 reflecting the source of the generated method. (nothingmuch)
458 - Clarified documentation of methods that return
459 Class::MOP::Method objects. (doy)
462 - Clarified documentation of the metaclass cache methods. (Sartak)
465 - Add test showing how the xs Class::MOP::is_class_loaded can
466 be made to operate differently to the pure perl version (t0m)
468 0.75 Wed, December 31, 2008
470 - A class that was made immutable and then mutable could end up
471 sharing an immutable transformer object
472 (Class::MOP::Immutable) with other classes, leading to all
473 sorts of odd bugs. Reported by t0m. (Dave Rolsky)
475 0.74 Tue, December 25, 2008
477 - Add an xs implementation of Class::MOP::is_class_loaded (closes
478 RT#41862). Based on a patch by Goro Fuji. (Florian Ragwitz)
479 - Changed internals to make prehashing of hash keys easier and less
480 error-prone. (Florian Ragwitz)
482 - Fix documentation to show that around modifiers happen on both
483 sides of the modified method. (Dave Rolsky)
485 0.73 Tue, December 16, 2008
487 - Don't use Perl_mro_meta_init. It's not part of the public perl
488 api. Fixes failures to build on Win32 (RT #41750). (Florian
490 * t/082_get_code_info.t
491 - Add $^P &= ~0x200; (per Ovid's suggestion) in order to not
492 munger anonymous subs when under -d and so making the tests
493 succeed in that case.
495 0.72 Mon, December 8, 2008
496 * Class::MOP::Package
497 - Pass options to _new, so subclass' attributes can be
500 - In the docs, indicate that package_name and name are required
501 when calling ->wrap (Stefan O'Rear)
503 0.71_02 Fri, December 5, 2008
504 * Class::MOP::Immutable
505 - Added a new attribute, inlined_constructor, which is true if
506 the constructor was inlined.
507 * Class::MOP::Package
508 - Make get_all_package_symbols return a hash ref in scalar
509 context and deprecate calling it in list context with a
510 warning. (Florian Ragwitz)
512 - Various improvements and refactoring, making things more robust and
513 easier to maintain. (Florian Ragwitz)
515 0.71_01 Wed, December 3, 2008
517 - Add an "execute" method to invoke the body so
518 we can avoid using the coderef overload (Sartak)
519 * Class::MOP::Immutable
520 - When we memoize methods, get their results lazily
521 to remove some compile-time cost (Sartak)
522 - Small speedup from eliminating several method
525 - Some small internal tweaks to try to reduce the number of
526 times we call get_method_map when bootstrapping the MOP. This
527 might make loading Class::MOP (and Moose) a little
528 faster. (Dave Rolsky)
529 - Implemented an optional XS version of get_method_map. Mostly
530 taken from a patch by Goro Fuji (rt.cpan.org #41080), with
531 help form Florian Ragwitz. (Dave Rolsky)
532 - Make the behaviour of of get_all_package_symbols (and
533 therefore get_method_map) consistent for stub methods. Report
534 and test by Goro Fuji (rt.cpan.org #41255). (Florian Ragwitz)
536 0.71 Wed November 26, 2008
539 - Actual package creation has moved upward from
540 Class to Module so that Moose roles can share
543 0.70_01 Mon, November 19, 2008
545 - Fixes for failures with blead (Florian Ragwitz)
546 - Silenced compiler warnings (Florian Ragwitz)
548 0.70 Fri, November 14, 2008
550 - Fixed an odd corner case where the XS version of
551 get_all_package_symbols could cause a segfault. This only
552 happened with inlined constants in Perl 5.10.0 (Florian
555 0.69 Fri, November 7, 2008
556 * Class::MOP::Method::Wrapped
557 - Added introspection methods for method modifiers (Dave Rolsky)
560 0.68 Fri October 24, 2008
562 - Make load_class require by file name instead of module name.
563 This stops confusing error messages when loading '__PACKAGE__'.
565 - Add load_one_class_of function to enable you to load one of a
566 list of classes, rather than having to call load_class multiple
567 times in an eval. (t0m)
569 0.67 Tue October 14, 2008
571 - Call a method on the class after setting the superclass list
572 so that we can get Perl to detect cycles before MRO::Compat
573 spirals into an infinite loop (sartak)
574 - Reported by Schwern, [rt.cpan.org #39001]
575 - In create(), pass unused options on to initialize()
576 - added test for this
578 0.66 Sat September 20, 2008
579 !! This release has an incompatible change regarding !!
580 introspection of a class's method with Class::MOP::Class !!
583 - We (us maintainers) now run all tests with XS and then without
584 XS, which should help us catch skew between the XS/pure Perl
588 ! The alias_method method has been deprecated. It now simply
589 calls add_method instead. There is no distinction between
590 aliased methods and "real" methods.
592 This means that methods added via alias_method now show up as
593 part of the class's method list/map. This is a backwards
594 incompatible change, but seems unlikely to break any
595 code. Famous last words. (Dave Rolsky)
598 - Fixed the spelling of "compatibility", but we still have a
599 "check_metaclass_compatability" method for backwards
602 0.65 Mon September 1, 2008
603 For those not following the series of dev releases, the changes
604 from 0.64 from 0.65 can mostly be summed up as a lot performance
605 improvements by nothingmuch, including new optional XS versions of
606 some methods. Also, Class::MOP now works _without_ any XS modules,
607 for sad systems without a compiler.
610 - Added name and package_name XS accessors, and make sure all
611 the XS and Perl versions work the same way. (Dave Rolsky)
614 - The XS versions of various methods just returned undef when
615 called class methods, rather than dying like the pure Perl
616 versions. (Dave Rolsky)
618 0.64_07 Fri August 29, 2008
620 - Silenced warnings that managed to break Moose tests when XS
621 was loaded. (Dave Rolsky)
622 - Some XS versions of methods were ignored because of typos in
623 MOP.xs. (Dave Rolsky)
625 0.64_06 Mon August 25, 2008
626 * Class::MOP (MOP.xs)
627 - Another MS VC++ fix, cannot declare a variable in the middle
628 of a scope (Taro Nishino).
630 0.64_05 Sun August 24, 2008
632 - None of the dev releases actually loaded the XS properly, but
633 we silently fell back to the pure Perl version of the
636 * Class::MOP (MOP.xs)
637 - Replaced some code that used functions not available on Visual
638 C++ with some Perl XS API bits (Dave Rolsky).
640 0.64_04 Sat August 23, 2008
642 - Workaround a bug in 5.8.1's goto sub (nothingmuch)
644 * pod.t and pod_coveraget.t
645 - These are no longer shipped with the tarball because of bogus
646 failures from CPAN testers. (Dave Rolsky)
648 0.64_03 Thu August 21, 2008
649 * Class::MOP::Package
650 - Some (legit) code was misparsed by earlier 5.8.x
651 releases. (nothingmuch)
654 - Fix a constant in void context warning (nothingmuch)
656 0.64_02 Thu August 21, 2008
657 * Makefile.PL and Class::MOP
658 - Explicitly require Perl 5.8.0+ (Dave Rolsky)
661 - Add missing prereqs that got lost in the switch away from
664 * Class::MOP::Instance
665 - New method - get_all_attributes (nothingmuch)
667 0.64_01 Wed August 20, 2008
669 - We now check to see if you have a compiler. If you don't, the
670 module installs without some XS bits, but will work the same
671 as with XS. This should make it easier to install on platforms
672 without a compiler (like Windows). (Dave Rolsky)
675 - Perl 6 style attribute naming replaced with sane style ('methods', not
676 '%!methods'). These changes should not impact any existing API uses.
680 - Quite a number of optimizations based on profiling, including
681 allowing constructors to take hash references instead of
682 hashes, duplicating some frequently used code in XS, and
683 making constructors immutable. These changes should not impact
684 any existing API uses. (nothingmuch)
687 - Constructors now respect the meta attributes of their subclasses,
688 facilitating MOP extensibility. More related changes will happen in the
689 next several releases. (nothingmuch)
692 - New method - get_all_methods, replaces the deprecated
693 compute_all_applicable_methods. get_all_attributes provided for
694 consistency (nothingmuch)
695 - New method - wrap_method was refactored out of get_method_map
697 - New API for meta instance invalidation - invalidate_meta_instance,
698 invalidate_meta_instances, add_dependent_meta_instance,
699 remove_dependent_meta_instance, called automatically when attribute
700 definitions change and allows notification of dependent subclasses.
703 0.64 Sun August 3, 2008
704 * Class::MOP::Immutable
705 - fixing subtle edge case in immutable when you
707 - clean up option processing (nothingmuch)
709 * Class::MOP::Instance
710 - inlined initialize slot didn't match
711 non-inlined (nothingmuch)
713 0.63 Mon July 7, 2008
715 - load_class will initialize a metaclass even if
716 the class is already loaded (sartak)
717 - load_class now returns the metaclass instance
718 instead of just 1 (sartak)
721 - better error messages (sartak and Dave Rolsky)
723 0.62 Wed June 18, 2008
724 - in is_class_loaded, recognize scalar references (as opposed to globs) in
725 the symbol table as methods (these are optimized constant subs)
727 0.61 Fri. June 13, 2008
728 - Okay, lets give this another try and see if PAUSE
729 recognizes it correct this time.
731 0.60 Thurs. Jun 12, 2008
732 - Fixed a version number issue by bumping all modules
735 0.59 Thurs. Jun 12, 2008
736 !! Several fixes resulting in yet another 25-30% speedup !!
739 - now stores the instance of the instance
740 metaclass to avoid needless recomputation
741 and deletes it when the cache is blown
742 - introduce methods to query Class::MOP::Class for
743 the options used to make it immutable as well as
744 the proper immutable transformer. (groditi)
746 * Class::MOP::Package
747 - {add, has, get, remove}_package_symbol all
748 now accept a HASH ref argument as well as the
749 string. All internal usages now use the HASH
753 - MOP.xs does sanity checks on the coderef
755 - is_class_loaded check now uses code that
756 was improved in Moose's ClassName type
758 - nonsensical (undef, empty, reference) class
759 names now throw a more direct error in
761 - tests for this and other aspects of
767 Class::MOP::Method::Wrapped
768 Class::MOP::Attribute
769 - switched usage of reftype to ref because
772 0.58 Thurs. May 29, 2008
773 (late night release engineering)--
775 - fixing the version is META.yml, no functional
776 changes in this release
778 0.57 Wed. May 28, 2008
779 !! Several speedups resulting in 20-25% speedups !!
780 || (thanks to konobi, groditi, mst & CataMoose) !!
783 - made get_method_map use list_all_package_symbols
784 instead of manually grabbing each symbol
785 - streamlining &initialize somewhat, since it gets
788 * Class::MOP::Package
789 - made {get, has}_package_symbol not call
791 - inlining a few calls to &name with
792 direct HASH access key access
793 - added get_all_package_symbols to fetch
794 a HASH of items based on a type filter
795 similar to list_all_package_symbols
796 - added tests for this
799 Class::MOP::Method::Constructor
800 Class::MOP::Method::Generated
801 Class::MOP::Method::Accessor
802 - added more descriptive error message to help
803 keep people from wasting time tracking an error
804 that is easily fixed by upgrading.
806 * Class::MOP::Immutable
807 - Don't inline a destructor unless the user actually
809 - added tests for this
811 0.56 Saturday, May 24, 2008
813 - we now get the &check_package_cache_flag
814 function from MRO::Compat
815 - All XS based functionality now has a
816 Pure Perl alternative
817 - the CLASS_MOP_NO_XS environment variable
818 can now be used to force non-XS versions
821 * Class::MOP::Attribute
822 - add has_read_method and has_write_method
823 - get_{read,write}_method_ref now wraps the
824 anon-sub ref in the method metaclass when
826 - added tests for this
828 * Class::MOP::Immutable
829 - added the ability to "wrap" methods when
830 making the class immutable
833 - now handling the edge case of ->meta->identifier
834 dying by wrapping add_package_symbol to specifically
835 allow for it to work.
836 - added tests for this
838 * Class::MOP::Attribute
840 Class::MOP::Immutable
841 - any time a method meta object is constructed
842 we make sure to pass the correct package and
843 method name information
846 Class::MOP::Method::Wrapped
847 Class::MOP::Method::Generated
848 Class::MOP::Method::Accessor
849 Class::MOP::Method::Consructor
850 - the &wrap constructor method now requires that a
851 'package_name' and 'name' attribute are passed. This
852 is to help support the no-XS version, and will
853 throw an error if these are not supplied.
854 - all these classes are now bootstrapped properly
855 and now store the package_name and name attributes
858 ~ Build.PL has been removed since the
859 Module::Install support has been removed
861 0.55 Mon. April 28, 2008
862 - All classes now have proper C3 MRO support
863 - added MRO::Compat as a dependency to allow
864 for the C3 MRO support to Just Work in all
868 - rebless_instance now returns the instance
869 it has just blessed, this is mostly to
871 - set the attr correctly in rebless_instance
872 when it has no init_arg
873 - tweaked &linear_isa and &class_precedence_list
874 to support c3 classes.
876 0.54 Fri. March, 14, 2008
879 - making sure that load_class never gets
880 passed a value from @_ or $_ to squash
881 Ovid's bug (http://use.perl.org/~Ovid/journal/35763)
884 - make_{immutable,mutable} now return 1
886 - improved error handling in ->create method
887 - rebless_instance now takes extra params which
888 will be used to populate values
889 - added tests for this
892 - localizing the Data::Dumper configurations so
893 that it does not pollute others (RT #33509)
899 Class::MOP::Attribute
900 - these classes no longer define their own ->meta,
901 but instead just inherit from Class::MOP::Object
903 * Class::MOP::Instance
904 Class::MOP::Immutable
905 - these classes now inherit from Class::MOP::Object
908 - fixed the filename length on several
909 test files so we install on VMS better
911 - fixed incorrect use of catdir when it
912 should be catfile (RT #32385)
914 0.53 Thurs. Feb. 14, 1008
915 ~~ several doc. fixes and updates ~~
918 Class::MOP::Method::Constructor
919 Class::MOP::Attribute
920 - making init_arg accept an undefined value
921 to indicate that no constructor args can
922 be passed (thanks to nothingmuch)
923 - added tests for this
924 - added attribute initializer attribute (rjbs)
927 - making this use the new init_arg => undef
928 feature instead of the silly hack from
929 before (thanks to nothingmuch)
931 0.52 Tues. Jan. 22, 2008
933 - fixed bug in rebless_instance
936 * Class::MOP::Method::Constructor
937 - removed assumptions about the existence of
940 0.51 Mon. Jan. 14, 2008
941 ~~~ some misc. doc. fixes ~~~
942 ~~ updated copyright dates ~~
945 - now sets the IS_RUNNING_ON_5_10
946 constant so that we can take advantage
947 of some of the nice bits of 5.10
950 - uses the IS_RUNNING_ON_5_10 flag to
951 optimize the &linearized_isa method
952 and avoid the hack/check for circular
953 inheritence in &class_precedence_list
954 - added rebless_instance method (Sartak)
955 - added tests for this
957 * Class::MOP::Immutable
958 - the immutable class now keeps track of
959 the transformer which immutablized it
961 * Class::MOP::Instance
962 - added rebless_instance_structure method (Sartak)
963 - added tests for this
965 0.50 Fri. Dec. 21, 2007
967 - fixed bug in immutable to make sure that
968 transformation arguments are saved
970 - added tests for this
972 * Class::MOP::Immutable
973 - fixed a bug (see above)
975 * Class::MOP::Attribute
978 0.49 Fri. Dec. 14, 2007
979 !! Class::MOP now loads 2 x faster !!
980 !! with XS speedups (thanks konobi) !!
983 - removed the dependency on B
984 - added two XS functions (thanks konobi)
985 - get_code_info($code) which replaces all
986 the B fiddling we were doing with
987 faster/leaner XS level fiddling
988 - check_package_cache_flag($pkg_name) which
989 returns the PL_sub_generation variable to
990 be used to help manage method caching.
993 In 5.10 or greater this will actually
994 use the mro::get_pkg_gen instead to give
995 even more accurate caching information.
996 blblack++ for that stuff :)
999 - added the &subclasses method (thanks rlb)
1000 - added the update_package_cache_flag and
1001 reset_package_cache_flag which help keep
1002 track of when we need to re-fetch the
1004 - Several small improvements to take advantage
1005 of the new method map caching features
1007 0.48 Mon. Nov. 26, 2007
1008 * Class::MOP::Attribute
1009 - fixed get_read/write_method to handle the
1010 HASH ref case, which makes the
1011 get_read/write_method_ref handle it too.
1012 - added more tests for this
1014 0.47 Sat. Nov. 24, 2007
1015 * Class::MOP::Attribute
1016 - fixed misspelling in get_write_method_ref
1017 - added more tests for this
1019 0.46 Fri. Nov. 23, 2007
1021 - added the linearized_isa method instead of constantly
1022 pruning duplicate classes (this will be even more
1023 useful in the 5.10-compat version coming soon)
1025 * Class::MOP::Attribute
1026 - added the get_read_method_ref and get_write_method_ref
1027 methods which allow you to retrieve a CODE ref which
1028 can always be used to read or write an attribute.
1030 0.45 Thurs. Nov. 13, 2007
1031 * Class::MOP::Attribute
1032 - Fix error message on confess (groditi)
1034 0.44 Thurs. Nov. 13, 2007
1035 - Apparently I didn't make dist correctly (groditi)
1037 0.43 Thurs. Nov. 13, 2007
1039 - Add support for the 'builder' attribute (groditi)
1042 - optimise metaclass-already-exists check in
1043 construct_class_instance (groditi)
1044 - duplicate check into initialize to save a
1045 call through (groditi)
1047 * Class::MOP::Attribute
1048 - Add support for the 'builder' attribute (groditi)
1049 - Make predicates check for the existence of a value, not whether
1050 it is defined (groditi)
1052 * Class::MOP::Instance
1053 - Make predicates check for the existence of a value, not whether
1054 it is defined (groditi)
1056 * Class::MOP::Method::Accessor
1057 - made this a subclass of Class::MOP::Method::Generated
1058 - removed the relevant attributes
1060 * Class::MOP::Method::Constructor
1061 - fixed the cached values we had to be more sane
1062 - made this a subclass of Class::MOP::Method::Generated
1063 - fixed generated constructor so it properly handles
1065 - added tests for this
1066 - added the option to allow for both inlined and
1067 non-inlined constructors.
1068 - Update inlined methods for builder and predicate changes (groditi)
1070 * Class::MOP::Method::Generated
1071 - added this class as an abstract base for the
1072 Class::MOP::Method::{Constructor,Accessor} classes
1073 - added tests for this
1076 - Alter tests (005, 014 020, 021) for new builder addition (groditi)
1077 - Tests for new predicate behavior (and corrections to old tests) (groditi)
1080 - Update ArrayRef based class example to work with predicate changes
1082 0.42 Mon. July 16, 2007
1083 !!! Horray for mst, he fixed it !!!
1085 * Class::MOP::Package
1086 - alter symbol table handling to deal with 5.8.x and 5.9.x
1089 - Get rid of the crappy workaround from 0.40/41
1091 0.41 Sun. July 15, 2007
1093 Arghh!!! My TODO test didn't work, so I handle
1094 it manually now so that people can use this
1095 with 5.9.5/bleadperl without issue.
1097 0.40 Tues, July 3, 2007
1099 ~ marked a test in 003_methods.t as TODO
1100 for perl 5.9.5 (this test is irrelvant to
1101 the module functioning on 5.9.5 for the most
1104 0.39 Mon. June 18, 2007
1105 * Class::MOP::Immutable
1106 - added make_metaclass_mutable + docs (groditi)
1107 - removed unused variable
1108 - added create_immutable_transformer
1109 necessary for sane overloading of immutable behavior
1110 - tests for this (groditi)
1113 - Immutability can now be undone,
1114 added make_mutable + tests + docs (groditi)
1115 - Massive changes to the way Immutable is done
1116 for details see comments next to make_immutable
1117 This fixes a bug where custom metaclasses broke
1118 when made immutable. We are now keeping one immutable
1119 metaclass instance per metaclass instead of just one
1120 to prevent isa hierarchy corruption. Memory use will go
1121 up, but I suspect it will be neglible.
1122 - New tests added for this behavior. (groditi)
1124 0.38 Thurs. May 31, 2007
1125 ~~ More documentation updates ~~
1127 * Class::MOP::Package
1128 - we now deal with stub methods properly
1129 - added tests for this
1130 - fixed some tests failing on 5.9.5 (thanks blblack)
1132 * Class::MOP::Attribute
1133 - added get_read_method and get_write_method
1134 thanks to groditi for this code, tests
1136 - added tests and POD for this
1139 - fixed RT issue #27329, clone object now
1140 handles undef values correctly.
1141 - added tests for this
1142 - Corrected anon-class handling so that they
1143 will not get reaped when instances still
1144 exist which need to reference them. This is
1145 the correct behavior, hopefully this is an
1146 obscure enough feature that there are not too
1147 many work arounds out in the wild.
1148 - added tests for this by groditi
1149 - updated docs to explain this
1152 - load custom metaclasses automatically (thanks groditi)
1153 - added tests for this behavior
1155 0.37 Sat. March 10, 2007
1156 ~~ Many, many documentation updates ~~
1159 - added &load_class and &is_class_loaded
1160 - added tests and docs for these
1162 * Class::MOP::Attribute
1163 - default now checks the instance with defined to
1164 avoid setting off bool-overloads (found by Carl Franks)
1168 - bad name in a test, causing meaningless failuress.
1173 ~~ GLOBAL CHANGES ~~
1174 - All attribute names are now consistent and follow Perl 6
1175 style (prefixed with the sigil, and ! as the twigil for
1176 private attrs). This should not affect any code, unless
1177 you broke encapsulation, in which case, it is your problem
1180 !! Class::MOP::Class::Immutable has been removed
1182 * Class::MOP::Method::Constructor
1183 - this has been moved out of Class::MOP::Class::Immutable
1184 and is a proper subclass of Class::MOP::Method now.
1187 - this module now uses Class::MOP::Immutable for the
1188 immutable transformation instead of
1189 Class::MOP::Class::Immutable.
1191 + Class::MOP::Immutable
1192 - this module now controls the transformation from a mutable
1193 to an immutable version of the class. Docs for this will
1194 be coming eventually.
1197 0.36 Sun. Nov. 5, 2006
1199 - added a few 'no warnings' lines to keep annoying
1200 (and meaningless) warnings from chirping during
1204 - some more bootstrapping is now done on the new
1207 * Class::MOP::Class::Immutable
1209 - constructor generation is now handled by
1210 the Class::MOP::Method::Constructor class
1212 * Class::MOP::Method::Constructor
1213 - created this to handle constructor generation
1214 in Class::MOP::Class::Immutable
1216 * Class::MOP::Attribute
1218 - attributes now delegate to the
1219 Class::MOP::Method::Accessor to generate
1222 * Class::MOP::Method::Accessor
1223 - all accessor generation functions from
1224 Class::MOP::Attribute have been moved here
1226 0.35 Sat. Sept. 30, 2006
1228 * scripts/class_browser.pl
1229 - initial prototype of a class browser, more
1230 on this to come. Comments and patches are
1234 - All Class::MOP::* accessors are no longer
1235 re-generated in the bootstrap, instead
1236 they are aliased from the originals
1237 - fixed tests to reflect
1238 - added Class::MOP::Method (and its subclasses)
1240 - adjusted tests for this
1241 - added the Class::MOP::Instance attributes
1244 * Class::MOP::Method
1246 - methods are no longer blessed CODE refs
1247 but are actual objects which can be CODE-ified
1248 - adjusted tests to compensate
1249 - adjusted docs for this
1252 - changed how methods are dealt with to
1253 encapsulate most of the work into the
1254 &get_method_map method
1255 - made several adjustments for the change
1256 in Class::MOP::Method
1257 - &add_attribute now checks if you are adding
1258 a duplicate name, and properly removes the
1259 old one before installing the new one
1260 - added tests for this
1261 - adjusted docs for this
1263 * Class::MOP::Class::Immutable
1264 - added caching of &get_method_map
1265 - fixed issue with &get_package_symbol
1266 - cleaned up the methods that die (patch by David Wheeler)
1268 * Class::MOP::Package
1269 - added filtering capabilities to
1270 &list_all_package_symbols
1272 0.34 Sat. Aug. 26, 2006
1274 - added the %:methods attribute, which like
1275 the $:version and such just actually goes
1276 to the symbol table to get it's stuff.
1277 However, it makes the MOP more complete.
1279 - The &create method now requires that all
1280 but the package name now is passed in as
1281 named parameters. See docs for more info.
1282 - updated docs and tests for this
1284 * Class::MOP::Object
1285 - added &dump method to easily Data::Dumper
1289 - cleaned up the initialization of attributes
1290 which do not store things in the instance
1291 - added the %:methods attribute definition to
1294 ~ lots of misc. test cleanup
1296 0.33 Sat. Aug. 19, 2006
1298 - moved the metaclass cache out of here
1299 and it is now in Class::MOP itself.
1302 - moved all the metaclass cache stuff here
1303 - fixed all tests for this
1305 * Class::MOP::Attribute
1306 - reference values (other than CODE refs)
1307 are no longer allowed for defaults
1308 - added tests for this
1310 * Class::MOP::Package
1311 - fixed an issue with perl 5.8.1 and how it deals
1312 with symbol tables. The namespace hash is now
1313 always reloaded from the symbol table.
1315 ~ lots of misc. documentation cleanup
1317 0.32 Sat. Aug. 12, 2006
1318 + added Class::MOP::Object so that the
1319 metamodel is more complete (and closer
1320 to what Perl 6 will probably be).
1322 * Class::MOP::Package
1323 - refactored entire class, this is now
1324 the primary gateway between the metaclass
1325 and the Perl 5 symbol table
1326 - added many tests for this
1327 - this class is now a subclass of
1329 - added some tests to reflect this
1332 - refactored all symbol table access to
1333 use Class::MOP::Package methods instead
1335 * Class::MOP::Module
1336 - adding the $:version attribute in the bootstrap
1337 so that Module has a version as an attribute
1338 - see comment in Class::MOP for details
1339 - added the $:authority attribute to this module
1340 as well as an &identifier method, to bring us
1341 ever closer to Perl 6 goodness
1342 - I have added $AUTHORITY to all the modules
1343 - added tests for this
1345 * Class::MOP::Instance
1346 - added &deinitialize_slot for removing slots
1348 - added tests for this
1350 * Class::MOP::Attribute
1351 - added support for &deinitialize_slot for removing
1352 slots from an instance
1353 - added tests for this
1355 0.31 Sat. July 15, 2006
1358 - added &find_method_by_name to locate a method
1359 anywhere within the class hierarchy
1361 * Class::MOP::Attribute
1362 - added &set_value and &get_value for getting
1363 the value of the attribute for a particular
1366 0.30 Wed. July 5, 2006
1367 ---------------------------------------
1368 This is the first version of Class::MOP
1369 to introduce the immutable features which
1370 will be used for optimizating the MOP.
1371 This support should still be considered
1372 experimental, but moving towards stability.
1373 ---------------------------------------
1375 * Created Class::MOP::Class::Immutable
1377 * Created the Class::MOP::Package and
1378 Class::MOP::Module classes to more
1379 closely conform to Perl 6's meta-model
1382 - now inherits from Class::MOP::Module
1383 - several methods moved to ::Module and
1384 ::Package and now inherited
1385 - added tests for this
1387 * Class::MOP::Instance
1388 - added an is_inlinable method to allow other
1389 classes to check before they attempt to optimize.
1390 - added an inline_create_instance to inline
1391 instance creation (of course)
1394 - the Class::MOP::Class::*_package_variable
1395 methods are all now methods of Class::MOP::Package
1396 and called *_package_symbol instead. This is
1397 because they are now more general purpose symbol
1398 table manipulation methods.
1400 0.29_02 Thurs. June 22, 2006
1401 ++ DEVELOPER RELEASE ++
1403 - small change in &create so that it behaves
1404 properly when inherited
1405 - small fix to &clone_instance
1407 0.29_01 Fri. May 12, 2006
1408 ++ DEVELOPER RELEASE ++
1409 - This release works in combination with
1410 Moose 0.09_01, it is a developer release
1411 because it introduces a new instance
1412 sub-protocol and has not yet been
1416 - anon-classes are now properly garbage collected
1417 - added tests for this
1418 - improved method modifier wrapping
1420 * Class::MOP::Instance
1421 - added new instance protocol
1422 - added tests for this
1423 - changed all relevant modules and examples
1425 - Class::MOP::Attribute
1429 - you no longer need to specify the metaclass
1430 itself, if it is not there, Class::MOP::Class
1432 - updated tests for this
1435 - added ArrayBasedStorage example to show
1436 instance storage using ARRAY refs instead of
1438 - added tests for this
1439 - InsideOutClass is totally revised using the
1440 new instance protocol
1441 - added more tests for this
1443 0.26 Mon. April 24, 2006
1445 - added find_attribute_by_name method
1446 - added tests and docs for this
1447 - some small optimizations
1449 * Class::MOP::Attribute
1450 - some small optimizations
1452 0.25 Thurs. April 20, 2006
1454 - added create_anon_class for creating anonymous classes
1455 - added tests for this
1456 - added get_all_metaclasses, get_all_metaclass_names
1457 and get_all_metaclass_instances method to allow
1458 access to all the cached metaclass objects.
1459 - attribute slot initialization is now the responsibility
1460 of the attribute itself, and construct_instance now
1461 delegates appropriately
1463 * Class::MOP::Attribute
1464 - attribute slot initialization is now the responsibility
1465 of the attribute itself, so we added a method for it
1466 called initialize_instance_slot
1469 - adjusted all the examples to use the new attribute
1470 initialize_instance_slot method
1472 0.24 Tues. April 11, 2006
1474 - cleaned up how the before/after/around method
1475 modifiers get named with Sub::Name
1477 0.23 Thurs. March 30, 2006
1479 - fixed the way attribute defaults are handled
1480 during instance construction (bug found by chansen)
1482 * Class::MOP::Attribute
1483 - read-only accessors ('reader') will now die if
1484 passed more than one argument (attempting to write
1486 - added tests for this
1487 - adjusted all /example files to comply
1489 0.22 Mon. March 20, 2006
1491 - localized $@ in the *_package_variable functions
1492 because otherwise, it does ugly things in Moose.
1493 - added test case for this
1495 0.21 Wed. March 15, 2006
1497 - fixed issue where metaclasses are reaped from
1498 our cache in global destruction, and so are not
1499 available in DESTORY calls
1501 0.20 Thurs. March 2, 2006
1502 - removed the dependency for Clone since
1503 we no longer to deep-cloning by default.
1505 * Class::MOP::Method
1506 - added &package_name, &name and
1507 &fully_qualified_name methods, some of
1508 which were formerly private subs in
1511 * Class::MOP::Method::Wrapped
1512 - allows for a method to be wrapped with
1513 before, after and around modifiers
1514 - added tests and docs for this feature
1517 - improved &get_package_symbol
1518 - &version and &superclasses now use it
1519 - methods are now blessed into Class::MOP::Method
1521 - added methods to install CLOS-style method modifiers
1522 - &add_before_method_modifier
1523 - &add_after_method_modifier
1524 - &add_around_method_modifier
1525 - added tests and docs for these
1526 - added &find_next_method_by_name which finds the
1527 equivalent of SUPER::method_name
1529 0.12 Thurs. Feb 23, 2006
1530 - reduced the dependency on B, no need to always
1534 - added docs to the C3 method dispatch order test
1535 - fixed missing Algorithm::C3 dependency by making
1536 the test skip if it is not installed
1538 0.11 Mon Feb. 20, 2006
1540 - added example of changing method dispatch order to C3
1543 - changed how clone_instance behaves, it now only does a
1544 shallow clone (see docs for more details)
1545 - added docs and tests
1547 0.10 Tues Feb. 14, 2006
1548 ** This release was mostly about writing more tests and
1549 cleaning out old and dusty code, the MOP should now
1550 be considered "ready to use".
1552 - adding more tests to get coverage up a little higher,
1553 mostly testing errors and edge cases.
1554 - test coverage is now at 99%
1557 - no longer optionally exports to UNIVERSAL::meta or
1558 creates a custom metaclass generator, use the
1559 metaclass pragma instead.
1562 - fixed a number of minor issues which came up in the
1563 error/edge-case tests
1565 * Class::MOP::Attribute
1566 - fixed a number of minor issues which came up in the
1567 error/edge-case tests
1570 - fixing the AttributesWithHistory example, it was broken.
1572 0.06 Thurs Feb. 9, 2006
1574 - adding new metaclass pragma to make setting up the
1575 metaclass a little more straightforward
1578 - clean up bootstrapping to include more complete
1579 attribute definitions for Class::MOP::Class and
1580 Class::MOP::Attribute (accessors, readers, writers,
1581 etc.) ... it is redundant, but is useful meta-info
1585 - fixing minor meta-circularity issue with &meta, it
1586 is now more useful for subclasses
1587 - added &get_attribute_map as an accessor for the
1588 hash of attribute meta objects
1589 - &compute_all_applicable_attributes now just returns
1590 the attribute meta-object, rather than the HASH ref
1591 since all the same info can be gotten from the
1592 attribute meta-object itself
1593 - updated docs & tests to reflect
1594 - added &clone_instance method which does a deep clone
1595 of the instance structure created by &construct_instance
1596 - added docs & tests for this
1597 - added Clone as a dependency
1598 - added &new_object and &clone_object convience methods to
1599 return blessed new or cloned instances
1600 - they handle Class::MOP::Class singletons correctly too
1601 - added docs & tests for this
1602 - cleaned up the &constuct_class_instance so that it behaves
1603 more like &construct_instance (and managed the singletons too)
1604 - added the &check_metaclass_compatibility method to make sure
1605 that metaclasses are upward and downward compatible.
1606 - added tests and docs for this
1609 - adjusting code to use the &Class::MOP::Class::meta
1611 - adjusting code to use the metaclass pragma
1613 0.05 Sat Feb. 4, 2006
1615 - added the &attribute_metaclass and &method_metaclass
1616 attributes which contain a metaclass name to use for
1617 attributes/methods respectively
1620 - bootstrap additional attributes for Class::MOP::Class
1623 - adjusted the example code and tests to use the new
1624 &attribute_metaclass feature of Class::MOP::Class
1625 - added new example:
1628 0.04 Fri Feb. 3, 2006
1630 - some documentation suggestions from #perl6
1632 * Class::MOP::Attribute
1633 - improved error messages
1636 - added new examples:
1637 - AttributesWithHistory
1638 - ClassEncapsultedAttributes
1640 0.03 Fri Feb. 3, 2006
1641 - converted to Module::Build instead of EU::MM
1643 * Class::MOP::Attribute
1644 - refactored method generation code
1645 - attributes are now associated with class directly
1648 - refactored the InsideOut example to take advantage
1649 of the Class::MOP::Attribute refactoring
1650 - changed example files to .pod files and hide thier
1651 package names from PAUSE (I don't want to own these
1652 namespaces really, they are just examples)
1654 0.02 Thurs Feb. 2, 2006
1655 - moving examples from t/lib/* to examples/*
1656 - adding POD documentation to the examples
1658 0.01 Thurs Feb. 2, 2006