The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

Changes for version 0.79

  • No changes from 0.78_02.

Changes for version 0.78_02

  • Class::MOP::Class
  • Class::MOP::Immutable
    • A big backwards-incompatible refactoring of the Immutable API, and the make_immutable/make_mutable pieces of the Class API. The core __PACKAGE__->meta->make_immutable API remains the same, however, so this should only affect the most guts-digging code.
  • XS code
    • The XS code used a macro, XSPROTO, that's only in 5.10.x. This has been fixed to be backwards compatible with 5.8.x.
  • Class::MOP::Class
    • Add a hook for rebless_instance_away (Sartak)
    • Use blessed instead of ref to get an instance's class name in rebless_instance. (Sartak)

Changes for version 0.78_01

  • Class::MOP::*
    • Revised and reorganized all of the API documentation. All classes now have (more or less) complete API documentation.
  • Class::MOP::Class
  • Class::MOP::Instance
    • Reblessing into a package that supports overloading wasn't properly adding overload magic to the object due to a bug in (at least) 5.8.8. We now use $_[1] directly which seems to set the magic properly. (Sartak)
  • Class::MOP::Attribute
    • The process_accessors method is now private. A public alias exists (and will stick around for a few releases), but it warns that calling the public method is deprecated.
  • Class::MOP::Method::Generated
    • Removed the new and _new methods, since this is an abstract base class, and all existing subclasses implement their own constructors.
  • MOP.xs
    • Stop is_class_loaded from thinking a class is loaded if it only has an empty GV (Florian Ragwitz).
      • Add a test for this (Yappo).
    • Refactor get_all_package_symbols to allow short-circuiting (Florian Ragwitz).
      • Use this in is_class_loaded (Florian Ragwitz).
    • Stop segfaulting when trying to get the name from a sub that's still being compiled (Florian Ragwitz).
      • Add tests for this (Florian Ragwitz).
    • Prefix all public symbols with "mop_" (Florian Ragwitz).
    • Clean up and simplify prehashing of hash keys (Florian Ragwitz).
    • Simplify creating simple xs reader methods (Florian Ragwitz).
    • Make everything compile with c++ compilers (Florian Ragwitz).
    • Upgrade ppport.h from 3.14 to 3.17 (Florian Ragwitz).
  • Tests
    • Remove optional test plans for tests depending on Sub::Name as we have a hard dependency on Sub::Name anyway (Florian Ragwitz).
  • Makefile.PL
    • Rebuild all c code if mop.h has changed (Florian Ragwitz)

Modules

A Meta Object Protocol for Perl 5
Attribute Meta Object
Class Meta Object
A class to transform Class::MOP::Class metaclasses
Instance Meta Object
Method Meta Object
Method Meta Object for accessors
Method Meta Object for constructors
Abstract base class for generated methods
Method Meta Object for methods with before/after/around modifiers
Module Meta Object
Base class for metaclasses
Package Meta Object
a pragma for installing and using Class::MOP metaclasses