Type-Tiny ========= Created: 2013-03-23 Home page: Home page: Bug tracker: Maintainer: Toby Inkster (TOBYINK) 2.010001 2026-01-06 [ Bug Fixes ] - Fix for $LIST_SEPARATOR changes breaking Type::Coercion, Types::Common, Types::Standard. 2.010000 2025-12-30 [ Documentation ] - Update NEWS file. - Update Type::Tiny::Manual::Policies with planned changes for Type::Tiny 3. [ Test Suite ] - Skip t/20-modules/Type-Tie/06clone.t on very old Perls. 2.009_003 2025-12-22 [ Documentation ] - Fix syntax in some of the documentation for Type::Params. - Update documentation to potential future changes to coercions in Types::Standard. 2.009_002 2025-12-22 [ Documentation ] - Add security policy to Type::Tiny::Manual::Policies. - Document that Type::Tiny::Enum defines its own sorter. [ Packaging ] - Add test suggestion dependencies on Devel::Hide and namespace::clean. [ Other ] - If you lexically import `t` from Type::Registry, then it will no longer be tied to the caller's per-package type registry. - Type::Tiny::Enum now throws an exception if you try to pass a sorter coderef to the constructor. 2.009_001 2025-12-09 - Added: Add `check_coerce` method to Type::Coercion. - Added: Add `check_coerce` method to Type::Tiny. 2.009_000 2025-12-08 - Added: Add environment variables to affect how `signature_for` checks appear in stack traces, debugging, and profiling. - Added: Type::Params args objects now provide __TO_LIST__, __TO_ARRAYREF__, and __TO_HASHREF__ methods. - Added: Type::Params now provides hooks for the event of wrapping a sub in a signature. - Minor optimization to avoid wrapping certain inlined checks in do {...} blocks. 2.008006 2025-11-26 - Minor optimization for non-XS type check code for Enum types: if there are only a small number of valid strings (five or under), check using `eq` and `or` operators instead of compiling a regexp to check against them all at once. This can be controlled by passing the `use_eq` attribute to the Type::Tiny::Enum constructor, but is otherwise automatic. 2.008005 2025-11-20 - Minor optimization for Type::Params: sometimes it would construct an arrayref of hashref from the slurpy arguments to a function and then check that they arrayref it created was an arrayref, or check the hashref it created was a hashref. Those checks seem unnecessary; if they had ever failed it would indicate something deeply wrong with Perl itself. These superfluous checks are now avoided. - Minor optimization for Type::Params: sometimes it would wrap a `goto` in a `do` block for no reason. That could potentially slow down the call as Perl might create a new lexical context unnecessarily. It is unlikely to make a measurable difference. 2.008004 2025-10-17 [ Documentation ] - Type::Tiny pod syntax fix. [ Other ] - Added: Type::Tiny::Duck (used by HasMethods) now includes a new_intersection constructor. 2.008003 2025-09-02 [ Bug Fixes ] - Make sure methods fake-inherited from Moose (if it's loaded) are a last resort. Robert Moore++ [ Other ] - Slightly streamlined `Type::Tiny::can` and `Type::Tiny::AUTOLOAD`. - When dumping structures via Data::Dumper (mostly in error messages) suppress any warnings Data::Dumper would emit. Diab Jerius++ 2.008002 2025-04-30 [ Bug Fixes ] - MooseX-Types 0.51 broke Type::Tiny's ability to reliably detect if Moose types were being used. This release fixes that. Graham Knop++ 2.008001 2025-04-15 [ Bug Fixes ] - The Optional type constraint on its own, will now be treated the same as Optional[Any]. Previously when used for named parameters, it would fail to generate predicate methods. 2.008000 2025-03-31 [ Packaging ] - Repackaged with a stable version number. 2.007_010 2025-03-23 [ Bug Fixes ] - Warnings for unknown Type::Params signature options introduced in 2.007_008 broke Mite, which passes it a `is_wrapper` option and checks no warnings are thrown in its test suite. That option is now silently allowed, even though Type::Params makes no use of it. 2.007_009 2025-03-21 [ Bug Fixes ] - Warnings for unknown Type::Params signature options introduced in 2.007_008 broke Mite, which passes it a `mite_signature` option and checks no warnings are thrown in its test suite. That option is now silently allowed, even though Type::Params makes no use of it. [ Documentation ] - Fix documentation for the coercion_generator attribute of Type::Tiny. [ Other ] - Added: Type::Params now has a per-parameter `default_on_undef` option. - Added: Types::Standard::ArrayRef can now export shortcuts for parameterized versions of the ArrayRef type constraint. - Added: Types::Standard::CycleTuple can now export shortcuts for parameterized versions of the CycleTuple type constraint. - Added: Types::Standard::Dict can now export shortcuts for parameterized versions of the Dict type constraint. - Added: Types::Standard::HashRef can now export shortcuts for parameterized versions of the HashRef type constraint. - Added: Types::Standard::Map can now export shortcuts for parameterized versions of the Map type constraint. - Added: Types::Standard::ScalarRef can now export shortcuts for parameterized versions of the ScalarRef type constraint. - Added: Types::Standard::StrMatch can now export shortcuts for parameterized versions of the StrMatch type constraint. - Added: Types::Standard::Tuple can now export shortcuts for parameterized versions of the Tuple type constraint. - Added: When creating 'multi' signatures with Type::Params, the different alternatives can now be given a string identifier. 2.007_008 2025-03-20 [ Bug Fixes ] - Expressing return types for Type::Params as strings now works as documented. [ Documentation ] - Use Perl's new `try` feature instead of Try::Tiny in SYNOPSIS for Error::TypeTiny. [ Test Suite ] - Improved tests for the `ArgsObject` type constraint which is optionally exported by Type::Params. - Improved tests for the `goto_next` feature of Type::Params. [ Other ] - Added: Error::TypeTiny::WrongNumberOfParameters now has a `target` attribute indicating what thing you provided the wrong number of parameters for. - Added: There's now a Type::Tiny::check_parameter_count_for_parameterized_type utility function intended to be used for parameterizable types to throw an error when parameterized with the wrong number of parameters. - Parameterizable types defined by Types::Standard, Types::Common::String, Types::Common::Numeric, and Type::Params will throw an Error::TypeTiny::WrongNumberOfParameters exception if parameterized with the wrong number of parameters. - Passing unknown options to Type::Params functions will now result in warnings. 2.007_007 2025-03-18 [ Bug Fixes ] - Localize $@ before stringifying Error::TypeTiny objects. Karen Etheridge++ 2.007_006 2025-03-14 - Added: Types::Standard::Dict::combine() function. Branislav Zahradník++ - Type::Params named_to_list option now accepts blessed boolean objects. Certain other options should be more permissive accepting them too. XSven++ - Types::TypeTiny::BoolLike now accepts boolean.pm's bools. Benct Philip Jonsson++ 2.007_005 2025-03-07 [ Documentation ] - Minor fixes and improvements for `Type::Params` documentation. 2.007_004 2025-03-07 [ Bug Fixes ] - Avoid the `//` operator in `Type::Params::Parameter` as it isn't supported in Perl 5.8. Fixes bug introduced in 2.007_003. - Use `List::Util::sum` instead of `List::Util::sum0` which doesn't exist in some older versions of List::Util. Fixes bug introduced in 2.007_003. [ Documentation ] - Major rewrite of `Type::Params` documentation to prioritize `signature_for` and modern Perl, and some corresponding adjustments to `Type::Tiny::Manual`. [ Other ] - The `goto_next` option in `Type::Params` is now just called `next`. The original name is still supported for backwards compatibility. 2.007_003 2025-03-06 [ Documentation ] - Minor pod fixed and improvements. - Update copyright dates to 2025. [ Other ] - Added: New Type::Params feature allow_dash automatically supports `-foo` as an alias for `foo`. - Added: New Type::Params feature list_to_named automatically extracts named parameters from a list of positional arguments. - Added: Type::Params optionally exports two shortcut keywords: `signature_for_func` and `signature_for_method`. The exact behaviour of these may change in the future. 2.007_002 2024-12-23 [ Documentation ] - Update most examples to use features (postfix derefs, sub signatures) from more modern versions of Perl that allow for cleaner, tidier code. 2.007_001 2024-11-24 [ Bug Fixes ] - If Perl has been built with -Dusequadmath then cowardly refuse to use Type::Tiny::XS's implementation of is_Int. Andreas J König++ 2.007_000 2024-10-20 - Added: The `signature_for` function in Type::Params now includes most of the functionality of Return::Type (a separate CPAN distribution not bundled with Type::Tiny). - Added: The `signature_for` function in Type::Params now returns a value, though in most contexts you'll probably want to call it in void context anyway. 2.006000 2024-09-24 [ Documentation ] - Update NEWS. [ Packaging ] - Repackage as stable. (See also the changelog for 2.005_001 and 2.005_002.) 2.005_002 2024-09-08 [ Bug Fixes ] - Fix uninitialized warning messages from Error::TypeTiny when processing very shallow stack traces. Diab Jerius++ [ Documentation ] - Fix minor typo in documentation for named parameters in `Type::Params`. - Update copyright notices in files to 2024. [ Other ] - Improved initialization of variables when they are tied to a type constraint; initialization to explicit values will work even when not tied via the `ttie` wrapper function; if no explicit values are provided, tied scalars will be initialized to the type's `type_default`. So for example, `tie( my $title, Str )` will initialize `$title` to the empty string instead of undef, and `tie( my $title, Str, 'Foo' )` will initialize the variable to 'Foo' as was already implied by documentation. Daniel Mita++ XSven++ - Inlining `Int` now calls the XS implementation when available. (The speed improvement is negligible, but it also may result in small memory savings.) Zaki Mughal++ - Removed: Support for the ${^TYPE_PARAMS_MULTISIG} global variable has been dropped. Using this global variable was deprecated in trial version 1.999_010 and stable version 2.000000, both of which are nearly two years old. Use ${^_TYPE_PARAMS_MULTISIG} instead. 2.005_001 2024-09-07 [ Documentation ] - Fixes for various typos. Yoshikazu Sawa++ - Improve documentation for the initialization of the `coercion` attribute for `Type::Tiny`. Diab Jerius++ [ Other ] - Updated: Smartmatch discontinued beginning perl-5.41.3; Type::Tiny will no longer attempt to support smartmatch if the Perl version is too high. James E Keenan++ 2.004000 2023-04-05 [ Documentation ] - Document that the `BoolLike` type is unstable. - Minor pod changes to Types::Standard. [ Packaging ] - Summarized the change log for versions prior to Type::Tiny 2.000000. If you need more information, see the Changes file included with Type::Tiny 2.002001. 2.003_000 2023-04-02 [ Documentation ] - Add SYNOPSIS for Type::Tiny::Class. - Add SYNOPSIS for Type::Tiny::Duck. - Add SYNOPSIS for Type::Tiny::Enum. - Add SYNOPSIS for Type::Tiny::Intersection. - Add SYNOPSIS for Type::Tiny::Role. - Add SYNOPSIS for Type::Tiny::Union. - Add documentation and tests for the combination of the `goto_next` and `multiple` options when used with `signature_for`. - Add example of `signature_for` applying a signature to multiple functions at once. - Document changes to `make_immutable` in Type::Library v2.x. [ Other ] - Added: Type::Tiny now has an `exception_class` attribute, allowing a type to throw exceptions using a custom class. These classes should usually be a subclass of Error::TypeTiny::Assertion. - Added: Type::Tiny::Bitfield class. - Added: Types::TypeTiny::BoolLike type constraint. 2.002001 2023-01-20 [ Bug Fixes ] - Bugfix for Type::Tie+Storable issue affecting 32-bit builds of Perl. 2.002000 2023-01-01 Happy Fibonacci Day! 1/1/23 [ Bug Fixes ] - When Foo is a parameterized StrMatch type, ensure is_Foo always returns a single boolean value, even in list context. Diab Jerius++ [ Documentation ] - Update NEWS. - Update copyright dates to 2023. [ Packaging ] - Repackage as stable. 2.001_002 2022-12-03 [ Test Suite ] - Test `t/20-modules/Type-Tiny-Enum/exporter_lexical.t` will now run on older versions of Perl, provided Lexical::Sub is installed. [ Packaging ] - Depend on Exporter::Tiny 1.006000 which offers lexical export support for older versions of Perl, provided Lexical::Sub is installed. [ Other ] - If Type::Params signatures receive multiple unrecognized named arguments, the error message now lists them using Type::Utils::english_list() instead of just joining them with commas. This means that the error message will include 'and' before the last unrecognized named argument. If Type::Tiny::AvoidCallbacks is set to true while the signature is compiled, the old behaviour will be retained. - Type::Params no longer attempts to figure out the maximum number of expected arguments to functions which take key-value pairs. This allows `yourfunc(y=>1,y=>2)` to behave more intuitively, with the function just seeing the second value for `y`, instead of it throwing an exception complaining about too many arguments. 2.001_001 2022-10-19 [ Documentation ] - Typo fix in Type::Tiny::Manual::UsingWithMoo. [ Other ] - Type::Library will better detect if two types result in functions with the same name. - Type::Tiny::XS will now provide XS implementations of some parameterized ArrayLike/HashLike types. - When importing `use Type::Library -util`, Type::Library will now pass some relevant import options to Type::Utils. 2.001_000 2022-09-29 [ Bug Fixes ] - Avoid uninitialized warnings when creating a union between an Enum type and a non-Enum type. Diab Jerius++ [ Documentation ] - Clearer documentation of Types::TypeTiny::to_TypeTiny. [ Test Suite ] - No longer report Type::Tie version at start of test suite, as Type::Tie is now bundled. [ Other ] - Added: Type::Library now has an undocumented, but tested and hopefully stable `_remove_type` method. - Added: Type::Tiny now has a `definition_context` attribute/method indicating the file and line number where a type constraint was first defined. - The list of packages Type::Tiny considers to be 'internal' has been moved from Error::TypeTiny to Type::Tiny. - Type::Tiny will now mark particular parts of its guts as readonly. Currently this is mainly used to prevent people pushing to and popping from type constraints which overload `@{}`. 2.000001 2022-09-29 [ Bug Fixes ] - Avoid uninitialized warnings when creating a union between an Enum type and a non-Enum type. Diab Jerius++ [ Documentation ] - Clearer documentation of Types::TypeTiny::to_TypeTiny. [ Test Suite ] - No longer report Type::Tie version at start of test suite, as Type::Tie is now bundled. 2.000000 2022-09-23 [ Test Suite ] - Minor fix for Class::Plain-related tests. [ Packaging ] - Repackage Type-Tiny 1.999_013 as a stable release. 1.999_013 2022-09-23 Type::Tiny 2.0 Preview N 1.999_012 2022-09-21 Type::Tiny 2.0 Preview M 1.999_011 2022-09-20 Type::Tiny 2.0 Preview L 1.999_010 2022-09-18 Type::Tiny 2.0 Preview K 1.999_009 2022-09-16 Type::Tiny 2.0 Preview J 1.999_008 2022-09-14 Type::Tiny 2.0 Preview I 1.999_007 2022-09-13 Type::Tiny 2.0 Preview H 1.999_006 2022-09-12 Type::Tiny 2.0 Preview G 1.999_005 2022-09-11 Type::Tiny 2.0 Preview F 1.999_004 2022-09-09 Type::Tiny 2.0 Preview E 1.999_003 2022-09-09 Type::Tiny 2.0 Preview D 1.999_002 2022-09-07 Type::Tiny 2.0 Preview C 1.999_001 2022-09-05 Type::Tiny 2.0 Preview B 1.999_000 2022-09-04 Type::Tiny 2.0 Preview A 1.016010 2022-08-31 1.016009 2022-08-27 1.016008 2022-08-14 1.016007 2022-08-04 1.016006 2022-07-25 1.016005 2022-07-23 1.016004 2022-07-22 1.016003 2022-07-22 1.016002 2022-07-19 1.016001 2022-07-18 1.016000 2022-07-16 1.015_003 2022-07-16 1.015_002 2022-07-16 1.015_001 2022-07-16 1.015_000 2022-07-16 1.014000 2022-06-27 1.013_001 2022-06-23 1.013_000 2022-06-09 1.012005 2022-06-07 1.012004 2021-07-29 1.012003 2021-05-09 1.012002 2021-05-02 1.012001 2021-01-10 1.012000 2020-10-28 1.011_011 2020-10-16 1.011_010 2020-10-16 1.011_009 2020-10-09 1.011_008 2020-10-07 1.011_007 2020-10-06 1.011_006 2020-10-02 1.011_005 2020-09-30 1.011_004 2020-09-30 1.011_003 2020-09-25 1.011_002 2020-09-22 1.011_001 2020-09-21 1.011_000 2020-09-15 1.010006 2020-09-04 1.010005 2020-08-26 1.010004 2020-08-18 1.010003 2020-08-08 The Crazy 88 1.010002 2020-05-01 Mayday 1.010001 2020-03-16 1.010000 2020-02-19 1.009_003 2020-02-11 1.009_002 2020-02-11 1.009_001 2020-02-06 1.009_000 2020-02-04 1.008005 2020-01-30 1.008004 2020-01-29 1.008003 2020-01-13 1.008002 2020-01-11 1.008001 2019-12-28 1.008000 2019-12-11 1.007_015 2019-12-10 1.007_014 2019-12-10 1.007_013 2019-12-10 1.007_012 2019-12-10 1.007_011 2019-12-09 1.007_010 2019-12-08 1.007_009 2019-12-06 1.007_008 2019-12-05 1.007_007 2019-12-03 1.007_006 2019-12-02 1.007_005 2019-12-01 1.007_004 2019-11-30 1.007_003 2019-11-27 1.007_002 2019-11-26 1.007_001 2019-11-23 1.007_000 2019-11-17 1.006000 2019-11-12 1.005_004 2019-11-11 1.005_003 2019-02-26 1.005_002 2019-01-29 1.005_001 2019-01-23 1.005_000 2019-01-20 1.004004 2019-01-08 1.004003 2019-01-08 1.004002 2018-07-29 1.004001 2018-07-28 1.004000 2018-07-27 1.003_010 2018-07-25 1.003_009 2018-07-24 1.003_008 2018-07-16 1.003_007 2018-07-12 1.003_006 2018-07-08 1.003_005 2018-07-05 1.003_004 2018-06-12 1.003_003 2018-06-10 1.003_002 2018-05-28 1.003_001 2018-05-22 1.003_000 2018-05-20 1.002001 2017-06-08 1.002000 2017-06-01 1.001_016 2017-05-30 1.001_015 2017-05-20 1.001_014 2017-05-19 1.001_013 2017-05-18 Kittiversary 1.001_012 2017-05-17 1.001_011 2017-05-17 1.001_010 2017-05-16 Puppiversary 1.001_009 2017-05-13 1.001_008 2017-05-10 1.001_007 2017-05-04 May the fourth be with you 1.001_006 2017-04-30 1.001_005 2017-04-19 1.001_004 2017-02-06 1.001_003 2017-02-02 1.001_002 2014-10-25 1.001_001 2014-09-19 1.001_000 2014-09-07 1.000006 2017-01-30 1.000005 2014-10-25 1.000004 2014-09-02 1.000003 2014-08-28 1.000002 2014-08-18 1.000001 2014-08-18 1.000000 2014-08-16 Happy CPAN Day! 0.047_09 2014-08-12 0.047_08 2014-08-05 Sanity++ 0.047_07 2014-08-04 0.047_06 2014-07-31 What made the Queen go all ice crazy? 0.047_05 2014-07-29 Sanity++ 0.047_04 2014-07-28 The 98% Coverage Release 0.047_03 2014-07-26 The 96% Coverage Release 0.047_02 2014-07-23 The 92% Coverage Release 0.047_01 2014-07-21 The 87% Coverage Release 0.046 2014-07-18 0.045_05 2014-07-18 0.045_04 2014-07-15 0.045_03 2014-07-11 0.045_02 2014-07-10 0.045_01 2014-06-30 0.044 2014-06-03 0.043_05 2014-05-21 0.043_04 2014-05-21 0.043_03 2014-05-06 0.043_02 2014-04-11 0.043_01 2014-04-06 0.042 2014-04-02 0.041_04 2014-03-31 0.041_03 2014-03-28 0.041_02 2014-03-26 0.041_01 2014-03-17 0.040 2014-03-17 0.039_13 2014-03-15 0.039_12 2014-03-12 0.039_11 2014-03-11 0.039_10 2014-03-10 0.039_09 2014-02-25 0.039_08 2014-02-24 0.039_07 2014-02-17 0.039_06 2014-02-17 0.039_05 2014-02-15 0.039_04 2014-02-05 0.039_03 2014-02-05 0.039_02 2014-01-25 0.039_01 2014-01-21 0.038 2014-01-01 0.037_03 2013-12-30 0.037_02 2013-12-29 0.037_01 2013-12-24 0.036 2013-12-21 0.035_01 2013-12-17 0.034 2013-12-09 0.033_04 2013-12-06 0.033_03 2013-11-26 0.033_02 2013-11-26 0.033_01 2013-11-07 0.032 2013-11-05 Remember, remember the fifth of November 0.031_05 2013-11-04 0.031_04 2013-11-03 0.031_03 2013-11-03 0.031_02 2013-11-03 0.031_01 2013-10-28 0.030 2013-10-18 0.029_04 2013-10-17 0.029_03 2013-10-17 0.029_02 2013-10-11 0.029_01 2013-09-26 0.028 2013-09-26 0.027_09 2013-09-20 0.027_08 2013-09-19 0.027_07 2013-09-18 0.027_06 2013-09-18 0.027_05 2013-09-15 0.027_04 2013-09-09 0.027_03 2013-09-09 0.027_02 2013-09-08 0.027_01 2013-09-07 0.026 2013-09-05 0.025_03 2013-09-04 0.025_02 2013-09-02 0.025_01 2013-09-02 0.024 2013-08-27 0.023_03 2013-08-23 0.023_02 2013-08-23 0.023_01 2013-08-16 0.022 2013-08-06 0.021_04 2013-07-30 0.021_03 2013-07-30 0.021_02 2013-07-26 0.021_01 2013-07-24 0.020 2013-07-23 0.019_01 2013-07-23 0.018 2013-07-21 0.017_02 2013-07-20 0.017_01 2013-07-19 0.016 2013-07-16 0.015_05 2013-07-15 0.015_04 2013-07-13 0.015_03 2013-07-08 0.015_02 2013-07-06 0.015_01 2013-07-05 0.014 2013-06-28 0.013_01 2013-06-27 0.012 2013-06-25 0.011_03 2013-06-25 0.011_02 2013-06-25 0.011_01 2013-06-25 0.010 2013-06-24 0.009_07 2013-06-24 0.009_06 2013-06-23 0.009_05 2013-06-23 0.009_04 2013-06-23 0.009_03 2013-06-22 0.009_02 2013-06-22 0.009_01 2013-06-21 0.008 2013-06-21 0.007_10 2013-06-21 0.007_09 2013-06-18 0.007_08 2013-06-17 0.007_07 2013-06-16 0.007_06 2013-06-16 0.007_05 2013-06-12 0.007_04 2013-06-09 0.007_03 2013-06-08 0.007_02 2013-06-04 0.007_01 2013-06-01 Happy birthday to me... 0.006 2013-05-28 0.005_08 2013-05-28 0.005_07 2013-05-28 0.005_06 2013-05-26 0.005_05 2013-05-24 0.005_04 2013-05-17 0.005_03 2013-05-14 0.005_02 2013-05-14 0.005_01 2013-05-07 0.004 2013-05-06 0.003_16 2013-05-05 0.003_15 2013-05-03 0.003_14 2013-05-03 0.003_13 2013-05-03 0.003_12 2013-05-01 0.003_11 2013-04-30 0.003_10 2013-04-29 0.003_09 2013-04-28 0.003_08 2013-04-26 0.003_07 2013-04-26 0.003_06 2013-04-25 0.003_05 2013-04-19 0.003_04 2013-04-18 0.003_03 2013-04-17 0.003_02 2013-04-16 0.003_01 2013-04-16 0.002 2013-04-26 0.001 2013-04-15 First public release 0.000_12 2013-04-12 0.000_11 2013-04-11 0.000_10 2013-04-09 0.000_09 2013-04-08 0.000_08 2013-04-07 0.000_07 2013-04-06 0.000_06 2013-04-05 0.000_05 2013-04-04 0.000_04 2013-04-03 0.000_03 2013-04-03 0.000_02 2013-04-02 0.000_01 2013-04-02 Developer preview