Sub-HandlesVia
==============

Created:      2020-01-18
Home page:    <https://metacpan.org/release/Sub-HandlesVia>
Bug tracker:  <https://github.com/tobyink/p5-sub-handlesvia/issues>
Maintainer:   Toby Inkster (TOBYINK) <tobyink@cpan.org>

0.053003	2026-01-31

 - A lot of the array handlers which accepted a coderef which operated on
   $_ would also pass $_ to the coderef in @_. There were no test cases for
   this and it was undocumented (apart from for_each). This feature has
   been removed (apart from for_each).
 - Added: The new for_each2 array handler only makes the array element
   available as $_, not in @_.

0.053002	2026-01-30

 - Updated: Don't use Sub::HandlesVia::XS versions older than 0.002000 as
   they are buggy.
 - Use Sub::HandlesVia::XS for some Enum and String handlers.

0.053001	2026-01-28

 [ Packaging ]
 - Add Sub::HandlesVia::XS as a runtime recommends dependency.

 [ Other ]
 - Updated: Don't use Sub::HandlesVia::XS versions older than 0.001004 as
   they are buggy.

0.053000	2026-01-28

 - Added: Array:peek and Array:peekend.
 - Added: Code generators can set a never_shift_self attribute to prevent
   handlers from trying to shift the invocant off @_, which they sometimes
   do for efficiency reasons.
 - Use Sub::HandlesVia::XS when it is available. Currently only the Moo
   handler uses it, and Sub::HandlesVia::XS only has implementations for
   some Array-related methods. You can include no_SHVXS=>1 in an Moo
   attribute definition if it's causing issues.

0.052000	2025-11-21

 [ Bug Fixes ]
 - The Hash `exists` check was checking definedness. It now properly tests
   slot existence.
   <https://github.com/tobyink/p5-sub-handlesvia/issues/20>

 [ Test Suite ]
 - In Object::Pad tests, use the `field` keyword rather than deprecated
   `has` keyword.
   <https://github.com/tobyink/p5-sub-handlesvia/issues/17>
 - Include tests for interaction with MooX::Tag::TO_HASH.
   <https://github.com/tobyink/p5-sub-handlesvia/issues/14>

 [ Other ]
 - Use Class::Method::Modifiers to wrap Moo `has`.
   <https://github.com/tobyink/p5-sub-handlesvia/issues/14>
 - Use Class::Method::Modifiers to wrap Moo `has`.
   <https://github.com/tobyink/p5-sub-handlesvia/issues/14>

0.050007	2025-11-15

 [ Test Suite ]
 - Some of the Corinna test cases accidentally required Moo.
   <https://github.com/tobyink/p5-sub-handlesvia/issues/18>

0.050006	2025-11-10

 [ Documentation ]
 - Document usage with the Perl 5.38+ `class` keyword (Corinna).

 [ Test Suite ]
 - Test with Perl 5.38+ `class` keyword (Corinna).

0.050005	2025-11-10

 - Bug fix for pathological case exposed by Hydrogen.

0.050004	2025-11-10

 - Array:for_each, Hash:for_each_key, and Hash:for_each_value now support
   $_.

0.050002	2025-03-23

 [ SECURITY ]
 - Fix: Rebuild using Mite 0.013000.

 [ Other ]
 - Added: ArrayRef:indexed.
 - Added: Number:ceil and Number:floor.
 - Added: Scalar:get and Scalar:set.
 - Added: String:trim.

0.050001	2025-03-23

 [ Documentation ]
 - Update documentation which is out of date due to Object::Pad dropping
   the `has` keyword.

 [ Other ]
 - Updated: Fix test cases which failed due to Object::Pad dropping the
   `has` keyword.
 - Updated: Fix test cases which will fail due to changed error messages in
   next release of Type::Tiny.

0.050000	2023-04-05

 [ Documentation ]
 - Add a few missing references to the
   Sub::HandlesVia::HandlerLibrary::Enum module to the documentation.
 - Mention potential load-order bugs when importing multiple extensions for
   Moo into the same package.
 - Update Sub::HandlesVia::Manual::Comparison.

 [ Packaging ]
 - Change versioning scheme.

0.046	2022-12-16

 - Added: Sub::HandlesVia::HandlerLibrary::Enum module.
 - Handler libraries can now provide constants for shortcuts.
 - Updated: Rebuild with latest Mite.

0.045	2022-11-08

 [ Bug Fixes ]
 - Fix for `with qw(Role1 Role2)` in Moose where at least one role uses
   Sub::HandlesVia.
   Bartosz Jarzyna++
   <https://github.com/tobyink/p5-sub-handlesvia/issues/6>
 - Support attributes declared with `has '+name'`.
   Bartosz Jarzyna++
   <https://github.com/tobyink/p5-sub-handlesvia/issues/7>

 [ Documentation ]
 - Document that `with qw(Role1 Role2)` in Mouse is currently broken if
   either role uses Sub::HandlesVia.
   <https://github.com/tobyink/p5-sub-handlesvia/issues/9>

 [ Test Suite ]
 - Test that `with qw(Role1 Role2)` in Moo works if either role uses
   Sub::HandlesVia.

 [ Other ]
 - Added: Add a `generator_for_prelude` attribute to
   Sub::HandlesVia::CodeGenerator.
   <https://github.com/tobyink/p5-sub-handlesvia/issues/8>

0.044	2022-10-31

 [ Documentation ]
 - Moved a lot of pod out of Sub::HandlesVia and into
   Sub::HandlesVia::Manual::*.

0.043	2022-10-31

 - Added: Sub::HandlesVia::HandlerLibrary methods: handler_names,
   has_handler, and get_handler.
 - Added: Sub::HandlesVia::HandlerLibrary::Blessed.

0.042	2022-10-30

 - Added: Sub::HandlesVia::Declare for compile-time declaration of
   Sub::HandlesVia delegations.
 - Improved support for Object::Pad, including support for non-scalar
   fields.

0.041	2022-10-29

 - Added: Experimental support for Object::Pad.

0.040	2022-10-27

 [ Bug Fixes ]
 - Stricter detection of Moo::Role roles to prevent some false positives
   when given Mouse::Role and Moose::Role roles.
   Bartosz Jarzyna++
   <https://github.com/tobyink/p5-sub-handlesvia/issues/4>

 [ Test Suite ]
 - Add a test using Sub::HandlesVia when Beam::Wire is loaded.
   Bartosz Jarzyna++
   <https://github.com/tobyink/p5-sub-handlesvia/issues/5>

0.039	2022-10-26

 [ Bug Fixes ]
 - Fix application of Sub::HandlesVia Moose/Mouse traits to metaobjects
   that have other traits applied to them.
   Bartosz Jarzyna++
   <https://github.com/tobyink/p5-sub-handlesvia/issues/3>

 [ Test Suite ]
 - Mite has supported Perl 5.8.x for a while now, so Mite-related tests
   shouldn't be restricted to running on Perl 5.10.1+.

0.038	2022-10-21

 [ Documentation ]
 - Minor changes to documentation for Hash:accessor and Array:accessor.

0.037	2022-09-26

 [ Bug Fixes ]
 - Fix test case broken by Type::Tiny v2.
   Peter Mottram++
   <https://github.com/tobyink/p5-sub-handlesvia/issues/2>
 - Hash:set shouldn't hardcode use of Carp::croak. Instead a CodeGenerator
   should decide how to deal with error messages.

0.036	2022-08-26

 [ Bug Fixes ]
 - Fix integration issues with newer versions of Mite.

 [ Documentation ]
 - Examples for a few methods.
 - More tests for a few methods.

 [ Other ]
 - Added: Add a delete_where method for hashes.
 - Added: Add execute_list, execute_scalar, execute_void, and corresponding
   _method variants for coderefs.
 - Added: The flatten_deep, natatime, and first_index methods for arrayrefs
   no longer use callbacks.

0.035	2022-08-12

 - Sub::HandlesVia::CodeGenerator method_installer is now a rw attribute as
   Sub::Accessor::Small was relying on that.

0.034	2022-08-07

 - Sub::HandlesVia::CodeGenerator now handles generating code for type
   assertions and coercions instead of relying on handlers to do it.
 - Sub::HandlesVia::CodeGenerator now has a configurable sandbox package.
 - Updated: Sub::HandlesVia::Toolkit::Mite supports recent Mite features
   such as lvalue accessors and new ways of specifying defaults.

0.033	2022-07-12

 - Optimizations to Sub::HandlesVia::CodeGenerator.
 - Updated: Recompile with newer Mite.

0.032	2022-07-12

 [ Packaging ]
 - Require newer version of Role::Hooks.

0.031	2022-07-09

 [ Packaging ]
 - Add dependencies on MRO::Compat and Devel::GlobalDestruction, but only
   on very old Perls.

0.030	2022-07-09

 [ Packaging ]
 - Drop dependency on Scope::Guard.

0.029	2022-07-09

 [ Packaging ]
 - Use Mite internally, dropping the dependency on Class::Tiny.

0.028	2022-07-02

 [ Test Suite ]
 - Lots more tests for using Sub::HandlesVia with Mite.

 [ Other ]
 - Updated: Support for Mite roles.

0.027	2022-06-30

 [ Test Suite ]
 - Skip Mite test on Perl < 5.10.1

0.026	2022-06-30

 - Added: Support classes built with Mite.

0.025	2022-06-16

 - Internally shift off the method invocant sometimes as benchmarking shows
   that to be faster.

0.024	2022-06-15

 [ Documentation ]
 - Explicitly document that Sub::HandlesVia needs to be imported AFTER
   Moo/Moose/Mouse so that it can detect the class/role builder being used.

 [ Test Suite ]
 - Test that Sub::HandlesVia works okay with MooseX::Extended.

0.023	2022-06-14

 [ Documentation ]
 - Minor documentation improvements.

 [ Packaging ]
 - Changed minimum required Perl from 5.8.0 to 5.8.1.

 [ Other ]
 - Major Sub::HandlesVia::CodeGenerator cleanups.
 - Move some code from Sub::HandlesVia::Toolkit::Plain to its base class.
 - Removed: Sub::HandlesVia::CodeGenerator's simple_set concept has been
   removed; this was vestigial and had no effect.

0.022	2022-06-14

 [ Documentation ]
 - Additional Array example: push and shift.
 - Document Sub::HandlesVia::Handler and Sub::HandlesVia::CodeGenerator.
 - Other documentation improvements.

 [ Other ]
 - Cleaned up Sub::HandlesVia::Handler and moved a lot of code into a new
   class Sub::HandlesVia::CodeGenerator, which replaces the big hash of
   callbacks which was passed around everywhere.

0.021	2022-06-12

 [ Documentation ]
 - Provide extended examples in HandlerLibrary pod.

 [ Test Suite ]
 - Additional tests based on extended examples.

0.020	2022-06-11

 [ Documentation ]
 - Improve and document the Sub::HandlesVia::HandlerLibrary::Scalar module.

 [ Test Suite ]
 - Additional tests based on pod examples.

0.019	2022-06-11

 [ Documentation ]
 - Include more examples in pod for HandlerLibrary modules.

0.018	2022-06-11

 [ Documentation ]
 - Generated pod for the HandlerLibrary modules.

 [ Other ]
 - Added: Sub::HandlesVia::Handler objects now have a `documentation`
   attribute.

0.017	2022-06-11

 - Added: Case-insensitive versions of string comparison methods.
 - Added: Numeric comparison methods.
 - Added: String comparison methods.
 - Added: String match_i method.
 - Added: String starts_with, ends_with, and contains methods, plus
   case-insensitive versions of them.
 - Added: String uc, lc, and fc methods.

0.016	2020-09-20

 [ Bug Fixes ]
 - Fix load order issue where handles_via is used in a Moo::Role when
   Moo.pm isn't loaded yet.

0.015	2020-09-12

 - Added: `reset` method for Array.
 - Added: `reset` method for Hash.
 - Plain toolkit (used by non-Moo/Moose/Mouse classes) now supports
   defaults/builders.

0.014	2020-08-25

 [ Bug Fixes ]
 - Fix compilation errors caused by value coercions under some
   circumstances.

0.013	2020-02-04

 [ Test Suite ]
 - Skip Moo tests on very old Moo.

0.012	2020-02-02

 - Added: Add missing methods from List::Util to Array. (These are mostly
   untested, but probably don't have bugs as they are simple non-mutator
   methods.)

0.011	2020-01-27

 [ Documentation ]
 - Document which aliases MouseX::NativeTraits provides.

 [ Other ]
 - Added: `any` method for Array.

0.010	2020-01-27

 - Added: `apply` method for Array.
 - Added: `for_each_key` method for Hash.
 - Added: `for_each_pair` method for Array.
 - Added: `for_each_pair` method for Hash.
 - Added: `for_each_value` method for Hash.
 - Added: `for_each` method for Array.
 - Added: `pick_random` method for Array.

0.009	2020-01-27

 [ Test Suite ]
 - Revert MooX::TypeTiny test verbosity from 0.008_xxx.
 - Skip Array trait tests under Mouse if Mouse is not using XS due to
   Mouse::PurePerl bug.

 [ Packaging ]
 - Revert testing dependency additions from 0.008_xxx.

0.008_003	2020-01-27

 [ Test Suite ]
 - Skip t/03moo_mxtt/trait_hash.t if Type::Tiny is not using XS.

0.008_002	2020-01-27

 [ Test Suite ]
 - Spew even more output in t/03moo_mxtt/trait_hash.t.

0.008_001	2020-01-26

 [ Test Suite ]
 - Load Carp::Always for failing test case.

0.008_000	2020-01-26

 [ Test Suite ]
 - Spew some output in t/03moo_mxtt/trait_hash.t.

 [ Packaging ]
 - Require MooX::TypeTiny and Moo.

0.007	2020-01-25	Bond... James Bond

 [ Bug Fixes ]
 - Better handling for non-hashref-based Moose instances.

 [ Other ]
 - Added: `scalar_ref` method for Scalar.

0.006	2020-01-23

 [ Test Suite ]
 - Output some version numbers and environment variables in test suite.

0.005	2020-01-23

 [ Bug Fixes ]
 - Stop accidentally setting coerce=>'' for some Moo attributes. It
   confuses Moo.

 [ Other ]
 - Added: `head` method for Array.
 - Added: `tail` method for Array.

0.004	2020-01-22

 - Support for Moo::Role, Moose::Role, and Mouse::Role.

0.003	2020-01-21

 [ Documentation ]
 - Document API for how Sub::HandlesVia interacts with OO frameworks.

 [ Other ]
 - A lot of refactoring, reducing duplication in Moo, Moose, and Mouse
   integration.

0.002	2020-01-21

 [ Documentation ]
 - Fix some typos.
 - Remove some outdated information.

 [ Packaging ]
 - Add missing dependency on Class::Tiny.

 [ Other ]
 - Drop dependency on List::MoreUtils by including our own copies of
   `natatime` and `firstidx`.

0.001	2020-01-21	Initial release
