Type::T...olicies(3)

๐Ÿ’– Type::Tiny::Manual::Policies ๐Ÿ’–

okay bestie, welcome to Type::Tiny::Manual::Policies โ€” section 3 of the manual, and honestly? it's the โœจrules pageโœจ. no cap, this is where Toby tells you what's stable, what's still cooking, and what's lowkey gonna change on you. let's get into it ๐Ÿซถ


๐ŸŒธ MANUAL ๐ŸŒธ

๐Ÿ’… Type::Tiny Stability Policy

so like, Type::Tiny 1.000000 and up is considered stable. if anything changes in the API in a big enough way that it would need changes to the test suite, you get a six month notice period first. periodt. but there are a few exceptions where we're just gonna do it:

  • any changes that are necessary to keep compatibility with new releases of Moose, Moo, and other software that Type::Tiny needs to integrate with.
  • changes to maintain compatibility with future versions of Perl itself.
  • where a change fixes a contradiction between the implementation and documentation of Type::Tiny. (documentation said one thing, code did another, we're fixing it ๐Ÿ’€)
  • where a feature is explicitly documented as being "experimental" or "unstable". iykyk.
  • improvements to the text of error messages. yes those count as exceptions, sorry bestie.

๐Ÿ”ฎ Notice: Planned Changes in Type::Tiny 3

Type::Tiny 3 is expected to be released in the second half of 2026. it's likely to introduce coercions to some common type constraints such as HashRef, ArrayRef, and Str. so if your code specifically relies on these types not having coercions, you may need to change your code. (good news tho: the no_coercions method can give you a copy of any type minus all coercions. handy ๐ŸŽ€)

๐Ÿงช Experimental and Unstable Type::Tiny Features

the following list is currently non-exhaustive. translation: there might be more, this is just what we're telling you about rn.

  • the following type checks result may vary based on your version of Perl and whether Type::Tiny::XS is installed. their outcome is currently considered undefined, and may change in future versions.
    • using Object and similar type checks on unblessed regular expression references, the outcome is undefined.
    • on all current versions of Perl, false (!!0) stringifies to the empty string (but using Devel::Peek you can tell the difference between this value and a normal empty string), so Int and subtypes of Int do not consider it to be an integer. if Perl's behaviour ever changes, you might not be able to rely on this outcome. true (!!1) stringifies as 1, so is considered an integer.
    • a glob (not a globref but an actual glob) currently passes the StringLike type constraint but not the Str type constraint. the way thatโ€ฆ okay just don't rely on it.
    • the BoolLike type is intended to extend Bool to cover overloaded boolean objects, but the exact mechanism it uses may change. ๐Ÿ™ˆ
  • Type::Tiny's my_methods attribute and the functionality it provides is experimental.
  • the parameterizable coercion API is subject to change.
  • the interaction of deep coercions and mutable coercions currently results in ill-defined behaviour. this could change at any time. ๐Ÿ˜ญ
  • Type::Registry's ability to import MooseX::Types and MouseX::Types type libraries is experimental.
  • the signature_for_func and signature_for_method keywords provided by Type::Params may change their behaviour slightly in the future. once stable, they are expected to be added to Types::Common's exports. manifesting that tbh โœจ
  • the Types::Standard::Dict::combine function.
  • these modules are considered part of Type::Tiny's internals, and not covered by the stability policy: Devel::TypeTiny::Perl58Compat, Type::Coercion::FromMoose, Type::Params::Alternatives, Type::Params::Parameter, Type::Params::Signature, Type::Tiny::_HalfOp, Types::Standard::ArrayRef, Types::Standard::CycleTuple, Types::Standard::Dict, Types::Standard::HashRef, Types::Standard::Map, Types::Standard::ScalarRef, Types::Standard::StrMatch, Types::Standard::Tied, and Types::Standard::Tuple. touch at your own risk bestie ๐Ÿ’€
  • the use of some of the modules in the previous list item as exporters of shortcuts for parameterized types is not stable yet.
  • Reply::Plugin::TypeTiny is not covered by the stability policy.

๐Ÿ” Type::Tiny Security Policy

the latest stable release on CPAN <https://metacpan.org/release/Type-Tiny> is supported for security updates. (by convention, releases with an underscore in their version number are not considered to be stable releases. okay noted ๐Ÿ’…)

if you are using an older release, you are advised to upgrade. seriously. do it.

a list of changes between versions can be found in the Changes file on CPAN <https://metacpan.org/changes/distribution/Type-Tiny> with security-related changes tagged "SECURITY" in capital letters. look for the all-caps moment, that's the one ๐Ÿ”ฅ

๐Ÿšจ Reporting a Vulnerability

please report any issues via GitHub Issues <https://github.com/tobyink/p5-type-tiny/issues>.

if you are concerned that some of the details of your report may lead to an exploit being made public, then keep your issue report vague, and email the details to me directly. my email address can be found on my GitHub profile <https://github.com/tobyink>. (sneaky and responsible, we love that ๐Ÿซถ)

๐Ÿ”ข Type::Tiny Versioning Policy

as of 1.000000, this distribution follows a versioning scheme similar to Moo, which is based on a semver <http://semver.org/>-like three component version number, but with the last two components each represented by three decimal digits in the fractional part of the version number. that is, version 1.003002 of the software represents "1.3.2". maths but make it cute โœจ

additionally, releases where the second component is an odd number will be considered unstable/trial releases. (these will also include an underscore in the version number as per the usual CPAN convention.) so if you see an odd number in the middle, you're on the experimental train ๐Ÿš‚

๐Ÿช Perl Version Support

  • Type::Tiny 0.000_01 to Type::Tiny 0.015_04 required Perl 5.8.1.
  • Type::Tiny 0.015_05+ and Type::Tiny 1.000000+ requires Perl 5.6.1.
  • Type::Tiny 2.000000+ will require Perl 5.8.1.

๐ŸŒˆ NEXT STEPS ๐ŸŒˆ

here's your next step, bestie โ€” just one, main character energy:

  • Type::Tiny::Manual::Contributing
    • contributing to Type::Tiny development.

๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

Toby Inkster <tobyink@cpan.org>.


this software is copyright (c) 2013-2014, 2017-2025 by Toby Inkster.

this is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. slay ๐Ÿ’–


โš ๏ธ DISCLAIMER OF WARRANTIES โš ๏ธ

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. (all caps because it's serious, not because i'm yelling at you i promise ๐Ÿ˜ญ)


and that's the whole vibe check ๐Ÿฆ‹ this page is Type::Tiny::Manual::Policies from the perl v5.42.0 docs, dated 2026-01-17, and you can find it under Type::T...olicies(3). go forth and be stable, or experimental, whichever you prefer ๐Ÿ’…โœจ
๐Ÿ“ฆ where this page comes from