Changes for version 1.999_013 - 2022-09-23

  • Documentation
    • Document usage with Class::Plain.
    • Fix pod typo in manual. Florian Schlichting++
    • Improvements to Type::Params documentation.
  • Test Suite
    • Test usage with Class::Plain.
  • Other
    • Type::Params signature_for will respect inheritance when looking for methods to wrap, when the `method` option is true.

Changes for version 1.999_012 - 2022-09-21

  • Documentation
    • Document in Type::Tie that Type::Tie is implicitly loaded when you tie a variable to a Type::Tiny type constraint. (It was already documented in the manual.)
    • Document the Type::Tie::BASE `type` method.
    • Removed stub pod from a bunch of internal modules. They're internal, so nobody should be expecting pod.
  • Test Suite
    • Bundle a (renamed) copy of Type::Nano in the test suite for some tests combining Type::Nano and Type::Tiny type constraints, and converting Type::Nano to Type::Tiny.
    • Improved test cases for Type::Tie with an aim at 100% coverage.
  • Packaging
    • Add Class::XSAccessor to Type::Tiny's recommendations.
  • Other
    • Adding a type constraint to a type library will now also add it to the library's type registry. (Even though this registry is unlikely to be used.)
    • Rewrite much of Type::Tie to no longer use inside-out objects and avoid a dependency on Hash::Util::FieldHash or alternative implementations of fieldhashes.
    • Type::Parser's internal packages now have version numbers.
    • Type::Tie now supports variables being cloned with Clone::clone(). It already supported Storable::dclone().
    • Type::Tie will now try to load Class::XSAccessor::Array for a speed-up.
    • Using Type::Utils to declare a named type will now automatically add the type to the caller's type registry.

Changes for version 1.999_011 - 2022-09-20

  • Added: Bundle Type::Tie which was previously in a separate distribution on the CPAN.

Changes for version 1.999_010 - 2022-09-18

  • Test Suite
    • More tests.
  • Other
    • Eval::TypeTiny::CodeAccumulator now supports $coderef->compile(alias => 1).
    • If the `ws parameter is set to true in parameterized DelimitedStr type constraints, leading and trailing whitespace will now be permitted.
    • Non-parameterized DelimitedStr now has a coercion from ArrayRef[Str].
    • The ${^TYPE_PARAMS_MULTISIG} magic global variable is now called ${^_TYPE_PARAMS_MULTISIG}. The old name will still be supported for at least six months after the next stable release.

Changes for version 1.999_009 - 2022-09-16

  • Test Suite
    • Another test for `-base`.
  • Other
    • Added: Types::Common::String now has a DelimitedStr type.
    • Improve cache key generation for parameterized types.
    • Minor improvements to the default name generator, used to generate the display_name for parameterized type constraints.

Changes for version 1.999_008 - 2022-09-14

  • Bug Fixes
    • More sensible error message trying to import a type constraint using -declare outside a type library. Diab Jerius++
  • Other
    • Added: Type::Tiny now has an exportables_by_tag method.
    • Added: Type::Tiny::_DeclaredType is now a separate module. (It was previously defined inline in Type/Library.pm.)
    • Eval::TypeTiny::type_to_coderef() can now handle being passed undef as a type constraint and will create a Type::Tiny::_DeclaredType object to wrap instead.
    • If a type library has been made immutable, you can no longer add new types and coercions to it.
    • Type::Params `signature_for` will now delay most of the signature compilation until the function is called for the first time, like `wrap_subs`/`wrap_methods` used to do. It still does enough up-front to detect some common errors in signatures.
    • Various Type::Library cleanups.

Changes for version 1.999_007 - 2022-09-13

  • Documentation
    • Fix pod formatting issue in Type::Params.
  • Test Suite
    • Improved test cases; now 100% coverage on coveralls.io.
  • Other
    • Minor refactoring, mostly to make things more easily testable.

Changes for version 1.999_006 - 2022-09-12

  • BACK COMPAT
    • If none of a multisig's alternative sigs match the parameter list ${^TYPE_PARAMS_MULTISIG} will be explicitly set to undef, instead of being left as-is.
    • The Eval::TypeTiny::HAS_LEXICAL_VARS constant no longer exists. It was deprecated in Type-Tiny-1.004000 (2018-07-27).
  • Other
    • Get the `multiple` option working with the `signature_for` function from Type::Params.
    • Improved test cases and miscellaneous small bugfixes for slurpy parameters in Type::Params.

Changes for version 1.999_005 - 2022-09-11

  • Bug Fixes
    • What was supposed to be a warning for slurpy+default in Type::Params was throwing an exception. Corrected to be a warning.
  • Documentation
    • Minor improvements to Type::Params documentation.
  • Other
    • The functionality provided by Type::Params::multisig() is now provided in the Type::Params v2 API. (And is slightly more functional!)

Changes for version 1.999_004 - 2022-09-09

  • Documentation
    • Minor documentation clarifications around new constructor methods for Type::Tiny subclasses.
  • Test Suite
    • Add versions of tests for the new Type::Params v2 API which don't rely on Perl 5.20 features.
    • More tests for Type::Tiny::{Class,Duck,Enum,Role} exporting.
  • Packaging
    • Require Exporter::Tiny 1.004001.
  • Other
    • Type::Tiny::{Class,Duck,Enum,Role} subclass Exporter::Tiny instead of handling exports manually.

Changes for version 1.999_003 - 2022-09-09

  • Bug Fixes
    • Setting a default for a slurpy parameter in Type::Params now warns and ignores the default instead of failing to compile because of a syntax error. Zhtwn++
  • Other
    • Added: Move two helper subs out of Type::Library and into Eval::TypeTiny, clean them up, and document them as part of the API (set_subname and type_to_coderef).
    • Added: Type::Tiny now has an `exportables` method which provides a list of functions that the type can export. Type libraries now defer to this when deciding what they can export.
    • Added: Type::Tiny::Class is now an exporter.
    • Added: Type::Tiny::Duck is now an exporter.
    • Added: Type::Tiny::Enum has an is_word_safe method which indicates whether all values in the enumeration are 'words' (i.e. contain only word characters).
    • Added: Type::Tiny::Enum is now an exporter.
    • Added: Type::Tiny::Role is now an exporter.
    • Added: Word-safe enumerations export constants for each value. Branislav Zahradník++
    • Major simplifications of Type::Library internals.
    • The NICE_PROTOTYPES constant has been moved from Type::Library to Eval::TypeTiny, though a copy of it is still available in Type::Library for backwards compatibility.
    • The intersection of two Type::Tiny::Enum objects is now a Type::Tiny::Enum instead of a Type::Tiny::Intersection. Branislav Zahradník++
    • The union of two Type::Tiny::Enum objects is now a Type::Tiny::Enum instead of a Type::Tiny::Union.
    • Type::Params will call default coderefs as a method for signatures where method => 1.

Changes for version 1.999_002 - 2022-09-07

  • Bug Fixes
    • Types::Common was not correctly handling the -sigs export tag.
  • Documentation
    • Fix up some heading levels in the pod for Type::Params.
    • Update NEWS.
  • Test Suite
    • Better tests for `strictness` option in Type::Params.
    • Improved tests for slurpy handling in Type::Params.
    • The internal module Type::Params::Signature now has some tests of its own.
  • Other
    • Minor bugfixes and improvements to slurpy handling in Type::Params.
    • The type_default method will accept parameters, and sort-of curry them.

Changes for version 1.999_001 - 2022-09-05

  • Documentation
    • Fix misspelling of 'GitHub' in documentation.
    • Further revisions of Type::Manual.
    • Update the SYNOPSIS for Types::Standard and Type::Tiny.
  • Test Suite
    • Tests for the `type_default` of all builtin types.
  • Other
    • Changes to the `type_default` for a few parameterized types.
    • Types::Common now also extends Types::TypeTiny.

Changes for version 1.999_000 - 2022-09-04

  • Documentation
    • Updated Type::Tiny::Manual to cover new features.
  • Other
    • %Error::TypeTiny::CarpInternal is now an alias for %Carp::CarpInternal.
    • Added: Type::Tiny `type_default` method.
    • Added: Type::Tiny overloads `/`.
    • Added: Types::Common module.
    • The Type::Params API has had a major overhaul, introducing `signature` and `signature_for` functions. The `compile`, `compile_named`, `compile_named_oo`, `validate`, `validate_named`, `wrap_subs`, and `wrap_methods` functions are now considered the legacy API. There are no plans to drop support for the legacy API in the foreseeable future.
    • Updated: Dropping support for Perl 5.6.1 (which was released in April 2001), 5.6.2 (November 2003), and Perl 5.8.0 (July 2002). Type::Tiny now requires at least Perl 5.8.1.
    • Updated: Require Exporter::Tiny 1.004000+. (Previously required Exporter::Tiny 1.000000.)

Documentation

an overview of Type::Tiny
alphabetical list of all type constraints bundled with Type::Tiny
advanced information on coercions
contributing to Type::Tiny development.
how to install Type::Tiny
defining your own type libraries
Type::Tiny in non-object-oriented code
squeeze the most out of your CPU
advanced information on Type::Params
Type::Tiny policies
use of Type::Tiny with Class::Tiny
how to use Type::Tiny with Mite
basic use of Type::Tiny with Moo
advanced use of Type::Tiny with Moo
alternative use of Type::Tiny with Moo
how to use Type::Tiny with Moose
how to use Type::Tiny with Mouse
using Type::Tiny with Class::InsideOut, Params::Check, and Object::Accessor.
Type::Tiny for test suites

Modules

exceptions for Type::Tiny and friends
exception when a value fails a type constraint
exception for Eval::TypeTiny
exception for Type::Params
utility to evaluate a string of Perl code in a clean environment
alternative API for Eval::TypeTiny
improved type constraint exceptions in Reply
useful functions for testing the efficacy of type constraints
a set of coercions to a particular target type constraint
a set of coercions borrowed from Moose
a set of coercions to a union type constraint
tiny, yet Moo(se)-compatible type libraries
sub signature validation using Type::Tiny type constraints and coercions
parse type constraint strings
a glorified hashref for looking up type constraints
tie a variable to a type constraint
tiny, yet Moo(se)-compatible type constraint
type constraints based on the "isa" method
shared behavour for Type::Tiny::Class, etc
type constraints based on the "can" method
string enum type constraints
intersection type constraints
type constraints based on the "DOES" method
union type constraints
half-defined type constraint
half-completed overloaded operation
utility functions to make defining and using type constraints a little easier
the one stop shop
drop-in replacement for MooseX::Types::Common::Numeric
drop-in replacement for MooseX::Types::Common::String
bundled set of built-in types for Type::Tiny
type constraints used internally by Type::Tiny

Provides

in lib/Devel/TypeTiny/Perl58Compat.pm
in lib/Type/Params/Alternatives.pm
in lib/Type/Params/Parameter.pm
in lib/Type/Params/Signature.pm
in lib/Type/Parser.pm
in lib/Type/Parser.pm
in lib/Type/Parser.pm
in lib/Type/Tie.pm
in lib/Type/Tie.pm
in lib/Type/Tie.pm
in lib/Type/Tie.pm
in lib/Types/Standard/ArrayRef.pm
in lib/Types/Standard/CycleTuple.pm
in lib/Types/Standard/Dict.pm
in lib/Types/Standard/HashRef.pm
in lib/Types/Standard/Map.pm
in lib/Types/Standard/ScalarRef.pm
in lib/Types/Standard/StrMatch.pm
in lib/Types/Standard/Tied.pm
in lib/Types/Standard/Tuple.pm