The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for Object-Pad

0.19    2020-04-04
        [CHANGES]
         * More sanity checking of HASH-based foreign superclass constructor
         * More unit testing of reliable destruction of constructor and
           BUILDARGS arguments

        [BUGFIXES]
         * Allow classic Perl superclass constructors to invoke methods on
           instances (RT132263)
         * Fix SP pointer discipline during method calls in generated
           constructor

0.18    2020-03-30
        [CHANGES]
         * Implement the BUILDARGS part of constructor protocol
         * Apply the :method attribute to all method subs

0.17    2020-03-27
        [CHANGES]
         * Add some style suggestions for code authors using the module
         * Updated for XS::Parse::Sublike 0.06 API

        [BUGFIXES]
         * Create a new slot pad for every method instead of reusing one;
           avoids some refcounting issues that cause segfaults (RT132249)

0.16    2020-03-26
        [CHANGES]
         * Always generate the slots AV even with no slots because otherwise
           METHSTART gets upset about no-slot subclasses
         * Capture the `async method` unit tests from Future-AsyncAwait

        [BUGFIXES]
         * Ensure that object refs or slot values don't hang around in method
           lexicals after they've returned (RT132228)
         * Use OP_STUB to ensure no-slot subclasses don't crash OP_PUSH on
           perls 5.18 to 5.22 (thanks ilmari)

0.15    2020-03-19
        [CHANGES]
         * Use XS::Parse::Sublike 0.04
            + Provides bugfixes for parameters in sub signatures with defaults

        [BUGFIXES]
         * Handle class-scoped regular lexicals and outer captures

0.14    2020-03-17
        [CHANGES]
         * Use XS::Parse::Sublike 0.02's `register_xs_parse_sublike()` ability

0.13    2020-03-15
        [CHANGES]
         * Use XS::Parse::Sublike for the bulk of the `method` parsing work

        [BUGFIXES]
         * Inline the code for Perl_package_version() because it isn't
           exported API so not actually visible on non-ELF platforms

0.12    2020-03-10
        [CHANGES]
         * Minor adjustments to order of operations in method keyword parsing
           to closer match core's parser

        [BUGFIXES]
         * Rename t/80dynamically+Object::Pad.t to use a hyphen because colons
           confuse MSWin32 (RT132087)

0.11    2020-03-07
        [CHANGES]
         * More efficient method enter on perl 5.22 onwards by detecting which
           slots are being used per method and only set those ones up

        [BUGFIXES]
         * Fix some C99isms in XS code (RT131417)
         * Avoid a C++-style comment in hax/lexer-additions.c.inc

0.10    2019-11-20
        [BUGFIXES]
         * Back-compat fixes for perl 5.16, 5.20

0.09    2019-11-20
        [CHANGES]
         * Accept optional version number for `class` declaration and
           `extends` base class
         * Provide a default `BUILDALL` method which invokes all the available
           `BUILD` methods of component packages
         * Unit-test that Syntax::Keyword::Dynamically works correctly with
           object slots and document the fact that `local` does not

        [BUGFIXES]
         * Generate the constructor as an XSUB so we can find the superclass
           for derived subclasses better and avoid an infinite recusion loop
           on double-subclassing.

0.08    2019-11-10
        [CHANGES]
         * Accept `class Name;` to introduce a toplevel class scope
         * Attempt to `require` the relevant module for `extends` if it
           doesn't appear to be loaded

0.07    2019-10-25
        [CHANGES]
         * Allow subclassing of non-Object::Pad base classes, provided they
           are HASH-based
        [BUGFIXES]
         * Correct handling of UTF-8 package and slot names (thanks ilmari)

0.06    2019-10-23
        [CHANGES]
         * First attempt at `has $slot = DEFAULT` expressions. Only accepts
           compiletime constants and only on scalar slots

0.05    2019-10-20
        [CHANGES]
         * Implement single-inheriance subclassing

0.04    2019-10-19
        [CHANGES]
         * Croak on attempts to invoke methods on non-instances, non-derived
           classes, etc...
         * Support perls back to 5.16 by various trickery
         * Store array and hash slot variables via RV so the instances are
           well-behaved as perl data structures

0.03    2019-10-18
        [CHANGES]
         * Implement sub signatures
         * Apply automatic pragmata - strict, warnings, -indirect

0.02    2019-10-17
        [CHANGES]
         * `method name :lvalue` and (maybe) other attributes
         * Support perls back to 5.22 due to wrap_keyword_plugin hax

0.01    2019-10-17
        First version, released on an unsuspecting world.