Sub-HandlesVia ============== Created: 2020-01-18 Home page: Bug tracker: Maintainer: Toby Inkster (TOBYINK) 0.053005 2026-02-04 [ Test Suite ] - Make t/99shvxs.t into an author-only test. Set the AUTHOR_TESTING environment variable to true if you really want to run it. 0.053004 2026-02-01 [ Documentation ] - Document exactly which methods may be accelerated by installing Sub::HandlesVia::XS. [ Other ] - Added: Array:none. - Added: XS implemention of Array:not_all_true. 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. [ Test Suite ] - In Object::Pad tests, use the `field` keyword rather than deprecated `has` keyword. - Include tests for interaction with MooX::Tag::TO_HASH. [ Other ] - Use Class::Method::Modifiers to wrap Moo `has`. - Use Class::Method::Modifiers to wrap Moo `has`. 0.050007 2025-11-15 [ Test Suite ] - Some of the Corinna test cases accidentally required Moo. 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++ - Support attributes declared with `has '+name'`. Bartosz Jarzyna++ [ Documentation ] - Document that `with qw(Role1 Role2)` in Mouse is currently broken if either role uses Sub::HandlesVia. [ 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. 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++ [ Test Suite ] - Add a test using Sub::HandlesVia when Beam::Wire is loaded. Bartosz Jarzyna++ 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++ [ 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++ - 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