Type-Tiny ========= Created: 2013-03-23 Home page: Bug tracker: Maintainer: Toby Inkster 0.014 2013-06-28 - (Documentation) Updated NEWS file. 0.013_01 2013-06-27 - (Addition) Type::Parser now provides a `extract_type` function which parses a type constraint expression from the head of a string and returns a Type::Tiny object, plus the tail of the string. (This is designed to make it easier to use Type::Parser to parse things like function signatures.) - (Removal) Type::Parser functions no longer accept an arrayref of tokens, as they expect to pull tokens from a stream as required. - (Removal) Type::Parser no longer provides a `tokens` function as it no longer pre-emptively tokenizes the whole string it is given. - Type::Parser's tokenization is now done on a pull basis, allowing one-pass building of the AST. 0.012 2013-06-25 - (Documentation) Updated NEWS file. 0.011_03 2013-06-25 - (Bugfix) Type::Tiny now overloads `cmp`. Necessary because Mouse does a sort on type constraints in a union, and overload's fallback doesn't seem to cover `cmp` on Perl prior to 5.12. 0.011_02 2013-06-25 - (Bugfix) Types::Standard 0.009_02 stopped including 'library' attribute in its types, and thus broke MooX::late. Type::Library modified to make 'library' attribute more automatic, and less reliant on Type::Utils to do the right thing. ++$HAARG 0.011_01 2013-06-25 - (Addition) Types::Standard::to_TypeTiny now accepts any object implementing the Type::API::Constraint or Type::API::Constraint::Coercion interfaces. As Mouse::Meta::TypeConstraint implements this interface, specific support for importing Mouse types has been dropped; the generic Type::API import 'just works' for Mouse types. - (Addition) Types::Standard::to_TypeTiny now accepts unblessed coderefs and converts them to type constraints. This allows things like `Int & sub { $_ < 10 }` to work. - (Bugfix) B::SPECIAL-related fix. Fixes RT#86383 ++$PJFL - (Bugfix) Unions of Type::Tiny and Mouse::Meta::TypeConstraints now work properly. This makes Type::Tiny and MouseX::Types play nice together (much like Type::Tiny already plays nice with MooseX::Types). - Cleanups within Type::Coercion. Necessary because in some places the entire type_coercion_map (including conversion coderefs) was passed through Types::Standard::to_TypeTiny, when really only the type constraints should have been. 0.010 2013-06-24 - (Documentation) Updated NEWS file. 0.009_07 2013-06-24 - (Packaging) Make rt86172.t an 'xt' test case because it's causing random CPAN testers failures unrelated to the feature it's supposed to be testing. - (Packaging) More test cases for interacting with MooseX::Types type constraints. - If a Type::Tiny object is instantiated with a Sub::Quote quoted constraint coderef, and no inlined coderef, then Type::Tiny will use Sub::Quote to make an inlined coderef. - Subclasses of Type::Tiny reject 'inlined' coderef, just like they already reject 'constraint' coderef. - Type::Params no longer uses Type::Utils. - Types::Standard::to_TypeTiny now sets 'display_name' instead of 'name' on generated type constraints. 0.009_06 2013-06-23 - (Bugfix) Careful calling the DOES method (it doesn't exist in Perl 5.8). 0.009_05 2013-06-23 - (Bugfix) Type::Registry does the AUTOLOAD thing, so ought to provide a DESTROY method. 0.009_04 2013-06-23 - (Bugfix) Type::Tiny::Class shouldn't completely trust @ISA when establishing parent class heirarchies. - (Update) Support Type::API interfaces. - Constructors for Type::Tiny subclasses no longer accept the 'constraint' parameter; it doesn't make sense. 0.009_03 2013-06-22 - (Bugfix) Fix Types::Standard compilation errors under Perl 5.8.x. 0.009_02 2013-06-22 - (Bugfix) Fix for compiled_checks for type constraints inheriting from Type::Tiny::Class, etc. Fixes GH#1 ++$RSIMOES - (Regression) Types::Standard types no longer have 'library' attribute set; this subtly breaks Moo type inflation, and breaks the MooX::late test suite which relies on type inflation working correctly. - Types::Standard no longer uses Type::Utils. - Various minor optimizations for Eval::TypeTiny, Type::Tiny, etc. 0.009_01 2013-06-21 - (Addition) Reply::Plugin::TypeTiny. - (Bugfix) Fix error messages from type constraints with null constraint coderefs. 0.008 2013-06-21 - (Documentation) Updated NEWS file. 0.007_10 2013-06-21 - (Addition) Type::Parser now exports a _std_eval function useful for testing. - (Addition) Type::Parser now supports parentheses in its DSL. - (Bugfix) Fixed many small parsing bugs in Type::Parser. - (Bugfix) MooseX::Types objects used in Type::Tiny::Union, Type::Tiny::Intersection and parameterized Type::Tiny type constraints would break in some circumstances, as Types::TypeTiny::to_TypeTiny was failing to convert them to native Type::Tiny type constraints. Fixes RT#86303 - (Documentation) Document status of Type::Registry. - (Packaging) Better test cases for Type::Registry. - (Packaging) Test cases for Type::Parser. - Improved error messages from Type::Parser. 0.007_09 2013-06-18 - (Bugfix) Fix problems inlining Dict deep coercions where the target constraint could not be inlined. Fixes RT#86233 ++$MMCLERIC - (Bugfix) Fix unintuitive Dict deep coercions. Fixes RT#86239 ++$MMCLERIC 0.007_08 2013-06-17 - (Bugfix) Fix problem with interaction between constraints, coercions, and Moose classes that inherit from Moo classes. Fixes RT#86172 ++$PJFL 0.007_07 2013-06-16 - (Bugfix) Partly roll back prototype changes. Now we use `;$` for Perl since 5.14, but `;@`, for older Perls that don't support `;$` so well. 0.007_06 2013-06-16 - (Addition) Type::Exception is now capable of supplying stack traces (requires Devel::StackTrace). - (Documentation) Document the evaluation environment used by Eval::TypeTiny. - (Documentation) Rearranged documentation for Type::Utils, avoiding previous split into Moose-like and non-Moose-like functions. - Better prototypes (was `;@`, now `;$`) for parameterizable type 'constants' exported by type libraries. ++$MSTROUT - Exceptions thrown for Moo isa/coerce now indicate which attribute was involved. - Type::Utils no longer exports 'extends' by default!! 0.007_05 2013-06-12 - (Addition) Add match_on_type and compile_match_on_type to Type::Utils. - (Addition) Test cases for InstanceOf, ConsumerOf, HasMethods and Enum types defined by Types::Standard. - (Documentation) Mention Scalar::Does and Type::Tie in manual. - (Documentation) Vastly improved documentation for Type::Utils. - (Documentation) Vastly improved documentation for Types::Standard. - Support '0' and '1' as shortcuts for Optional[Any] and Any in Type::Params. (Not documented yet.) 0.007_04 2013-06-09 - (Bugfix) Overloading of `$type eq $type` now works in Perl 5.8. Fixes RT#85895 ++$MMCLERIC - (Bugfix) The combination of Dict, Optional and coercions seems to have been broken in certain circumstances. Fixes RT#86001 ++$DJERIUS 0.007_03 2013-06-08 - (Bugfix) Inlining of certain deep Dict, Tuple and Map coercions was broken, but Type::Params attempted to inline them anyway, leading to death. Fixes RT#85911 ++$DJERIUS - (Documentation) Better document Type::Tiny's 'parents' method which differs from the Moose method of the same name. 0.007_02 2013-06-04 - (Addition) New constraints added to Types::Standard: InstanceOf, ConsumerOf, HasMethods and Enum. ++$HAARG - (Documentation) Improvements to Type::Tiny::Manual. - (Documentation) Improvements to Type::Tiny::Manual::Params, including rewritten manual processing section, and processing type constraints in function signatures via Function::Parameters/Attribute::Constract. - (Packaging) Test cases for usage with Function::Parameters. - Allow constraint_generators (for parameterizable type constraints) to return full Type::Tiny objects instead of plain coderefs. - Drop use of Carp in Type::Parser. - Type::Tiny::Class types now have an automatically calculated parent type constraint based on @ISA. - Type::Tiny::Duck types now have a parent type constraint of Types::Standard::Object. - Type::Tiny::Enum types now have a parent type constraint of Types::Standard::Str. - Type::Tiny::Intersection types now have an arbitrary parent type constraint. - Type::Tiny::Role types now have a parent type constraint of Types::Standard::Object. - Type::Tiny::Union types now have an automatically calculated parent type constraint based on the most specific common parent type constraint. 0.007_01 2013-06-01 # Happy birthday to me... - (Addition) Type::Parser. - (Addition) Types::Standard now has LaxNum/StrictNum type constraints, and Num selects between them. - (Bugfix) Fix $VERSION defined in Type::Library. - (Packaging) Generate README from Type::Tiny::Manual instead of Type::Tiny. - Implemented Types::TypeTiny->meta->get_type. - Re-introduce Type::Registry, with improved parsing thanks to Type::Parser. 0.006 2013-05-28 - (Packaging) Exporter::TypeTiny::mkopt_hash now works. 0.005_08 2013-05-28 - (Packaging) Rearrange test cases; add 00-begin.t. - (Update) Use JSON::PP instead of JSON in test cases, because JSON::PP is a core module since Perl 5.14. 0.005_07 2013-05-28 - (Addition) Add pure-Perl Mouse to examples/benchmark-constraints.pl. - (Bugfix) Assertions using the assert_return pattern were triggering FATAL warnings when inlined with Sub::Quote. Inlined assertions are now prefixed with 'no warnings "void";'. 0.005_06 2013-05-26 - (Bugfix) Fix StrMatch to properly support regexps containing slashes. - Fold Types::Standard::DeepCoercion into Types::Standard. 0.005_05 2013-05-24 - (Addition) Type::Tiny now has an assert_return method, which is used in most places in preference to assert_valid. - (Removal) Removed Type::Registry from the release; it will return at a later date. - (Update) Suggest newer version of Validation::Class. - Fix warnings under Perl 5.18. 0.005_04 2013-05-17 - (Addition) Deep explanations for Types::Standard::{Map,Maybe,Ref,Dict,Tuple} type constraint assertion failures. - (Addition) Type::Exception::Compilation. - (Bugfix) Fixed bug in non-inlined code for Types::Standard::MkOpt. - All error conditions now throw exception objects instead of string error messages. - Allow the slurpy tail of a Types::Standard::Tuple to be a treated as a hashref rather than an arrayref. - Improved deep explanations for Types::Standard::{ArrayRef,HashRef,ScalarRef}. - Test::TypeTiny performs more thorough testing if EXTENDED_TESTING environment variable is set. - Throw exception if people attempt to set parent types for Type::Tiny::{Class,Role,Duck,Enum,Union,Intersection}. 0.005_03 2013-05-14 - (Removal) Bytes and Chars type constraints removed from Types::Standard. - (Removal) Decode and Encode coercions removed from Types::Standard. - Many error conditions now throw exception objects instead of string error messages. 0.005_02 2013-05-14 - (Documentation) Fix a typo in declare_coercion in Type::Tiny::Manual::Coercions. ++$MMCLERIC - (Documentation) Link to Type::Tiny::Manual::Libraries instead of non-existing Type::Tiny::Intro. ++$MMCLERIC 0.005_01 2013-05-07 - (Addition) ArrayLike type added to Types::TypeTiny. - (Addition) Type::Registry. - (Bugfix) Type::Library should require Perl 5.8.1, not 5.8.3. 0.004 2013-05-06 - (Bugfix) Eval::Closure now strips line breaks and other unsavoury characters from descriptions. - Minor updates to to_TypeTiny following Validation::Class 7.900048 release. 0.003_16 2013-05-05 - (Documentation) Document that Map[`k,`v] has a deep coercion. - (Documentation) Improve Type::Coercion documentation. - Minor updates to coderef overloading following Moo 1.002000 release. - Rename Types::Standard::AutomaticCoercion -> Types::Standard::DeepCoercion. - Type::Params produces nicer error messages. 0.003_15 2013-05-03 - (Addition) Improvements to to_TypeTiny function, including accepting Validation::Class::Simple objects. 0.003_14 2013-05-03 0.003_13 2013-05-03 - (Bugfix) Don't crash in old versions of Moose that have no Class::MOP::_definition_context() function. - BAIL_OUT in test suite if 00-compile.t or 01-api.t fail. - Better documentation and tests of Moose/Mouse-compatible API. - Fix typo in Type::Params documentation. ++$DJERIUS 0.003_12 2013-05-01 - (Bugfix) Sane behaviour for Types::Standard's 'slurpy' function when it appears mid-list. - Allow people to use Carp::{confess,cluck,carp} with Type::Params validators; default is still croak. - Improved Type::Params documentation. - Type::Params validators now explicitly check the number of arguments passed to them. ++$MMCLERIC 0.003_11 2013-04-30 - (Addition) Test cases for Eval::TypeTiny. - Automatic coercion for parameterized Dict will no longer drop key/value pairs to force a coercion. ++$MMCLERIC - Automatic coercion for parameterized Tuple will no longer drop values to force a coercion. ++$MMCLERIC 0.003_10 2013-04-29 - (Addition) Bundle Type::Params, which had previously appeared on CPAN in a separate developer release. - (Addition) Much of the stringy eval stuff has been factored out to a new module: Eval::TypeTiny. - (Addition) Type::Tiny::SUPPORT_SMARTMATCH constant. - (Documentation) Improve Exporter::TypeTiny documentation. - (Documentation) Improve advice on inlining type constraints and coercions. - (Packaging) Bump version of Test::More dependency fom 0.88 to 0.96. - General code tidy-up. 0.003_09 2013-04-28 - (Addition) 'Tied' type constraint added to Types::Standard. - (Documentation) Document usage with Params::Check and Object::Accessor. - If Mouse is already in memory, Type::Tiny will use its super-fast XS subs to validate values when possible. 0.003_08 2013-04-26 - (Addition) Test case using Exporter::TypeTiny with Sub::Exporter::Lexical. - (Documentation) More Exporter::TypeTiny docs, including usage with Sub::Exporter::Lexical. - ASCII-only strings are now accepted by the Chars constraint in Types::Standard. - Type::Tiny, Type::Coercion and their subclasses no longer call Types::TypeTiny->import method. - Types::TypeTiny lazily loads Exporter::TypeTiny - i.e. it loads Exporter::TypeTiny when Types::TypeTiny->import is first called. 0.003_07 2013-04-26 - (Bugfix) Fix method conflicts when exporting type constraints to roles. ++$BOWTIE - (Documentation) Document usage with Class::InsideOut. - (Documentation) Minor improvements to manual. 0.002 2013-04-26 - (Addition) Chars and Bytes types added to Types::Standard. - (Bugfix) Fix method conflicts when exporting type constraints to roles. ++$BOWTIE - (Bugfix) Prevent warnings (about 'my $val' masking a previously declared variable) when several Str checks are being inlined in close proximity, such as Tuple[Str,Str] - (Documentation) Link from Test::TypeTiny to Test::Deep::Type. - Avoid unnecessarily regenerating parameterized type constraints. - Make Type::Tiny's has_coercion method more DWIM. 0.003_06 2013-04-25 - (Addition) Types::TypeTiny::to_TypeTiny can now coerce from a Mouse::Meta::TypeConstraint. - (Documentation) Add lots of stuff to Type::Tiny::Manual::UsingWithMouse. - (Documentation) Document deep coercions (feature added in 0.003_01). - Add a bunch of stub methods to Type::Tiny and Type::Coercion in order to make it less necessary to inflate to Moose/Mouse meta objects. - No longer need to add '-mouse' when importing types into Mouse libraries. (Same change as what we did for Moose in 0.000_11.) - Various minor changes to Exporter::TypeTiny to make it more Sub::Exporter compatible. 0.003_05 2013-04-19 - (Addition) Allow coercions to accept parameters. - (Addition) Chars and Bytes types added to Types::Standard. - (Addition) Encode, Decode, Join and Split coercions added to Types::Standard. - (Addition) Type::Tiny::Class now has a plus_constructors method. - (Bugfix) Prevent warnings (about 'my $val' masking a previously declared variable) when several Str checks are being inlined in close proximity, such as Tuple[Str,Str] - (Documentation) Document Exporter::TypeTiny. - (Documentation) Type::Tiny::Manual::Coercions. 0.003_04 2013-04-18 - Factor out the sub exporting code scattered around (in Type::Utils, Types::TypeTiny and Type::Library) into a single module, Exporter::TypeTiny. 0.003_03 2013-04-17 - (Addition) Add OptList data type to Types::Standard, plus MkOpt coercion. - Make Type::Tiny's has_coercion method more DWIM. - When inflating Moo type constraints to Moose, don't unnecessarily call 'moose_type' method. 0.003_02 2013-04-16 - (Documentation) Document how to process sub parameters with Type::Tiny, and point people towards Type::Params. - Avoid unnecessarily regenerating parameterized type constraints. 0.003_01 2013-04-16 - (Addition) Allow subtypes to inherit coercions from their parent type constraint. (They do not by default.) - (Addition) Build coercions automatically for certain type parameterized constraints. Say there's a Num->Int coercion defined; then we should be able to coerce ArrayRef[Num]->ArrayRef[Int]. - (Addition) Overload "+" operator for Type::Coercion and Type::Tiny allows coercions to be added to each other, and added to type constraints. - (Addition) Type::Library packages can now include "standalone" Type::Coercion objects, not attached to a type constraint. These can be exported on request. - (Documentation) Link from Test::TypeTiny to Test::Deep::Type. - Allow a Type::Tiny object to "freeze" its coercions. This prevents a Type::Tiny object from becoming out of sync with its equivalent Mouse or Moose constraint objects. 0.001 2013-04-15 # First public release - (Addition) More test cases for Optional[`a] within Dict[`a]. - (Bugfix) Some inline code assumed that it would be compiled in a package that had 'blessed' imported. - (Bugfix) Some inline code wasn't wrapped in parentheses. - (Documentation) Minor improvements. - Improve test names generated by Test::TypeTiny; allow test scripts to provide test names. - Parameterized type constraints in Types::Standard now do some sanity checking on their arguments. - Weaken the reference from a Moose::Meta::TypeConstraint object to its Type::Tiny origin. 0.000_12 2013-04-12 - (Documentation) Fix minor typo. 0.000_11 2013-04-11 - (Bugfix) Fix prototype for Type::Utils::as. - No longer need to pass '-moose' parameter when importing a library into a Moose class; only Mouse needs that treatment now. 0.000_10 2013-04-09 - (Bugfix) Fix incorrect Test::Requires line in 'mouse-coercion.t'. - Improvements to has_coercion_for_{type,value} from Type::Coercion. 0.000_09 2013-04-08 - (Addition) Bundle benchmarking scripts. - (Documentation) Fill in the Usage with Moose section of the fine manual. - (Packaging) Tidy up the 'examples' directory. - (Packaging) When generating Moose/Mouse constraints from Type::Tiny objects, prefer to generate anonymous ones. 0.000_08 2013-04-07 - (Addition) Types::TypeTiny::to_TypeTiny can be used to coerce a Moose type constraint object to Type::Tiny. - Most parts of the API that accept Type::Tiny objects (e.g. Type::Utils::from()) now also accept Moose::Meta::TypeConstraint objects. - Rewrite most of the functions exported by Type::Library-based type libraries to cope better with being used mid-list. 0.000_07 2013-04-06 - (Addition) Type::Coercion::Union - automatically handles coercion to union types. - (Bugfix) Fix inlining for Type::Tiny::Intersection. - (Bugfix) Fix inlining of certain conditionals into coercion code. - (Bugfix) Types within libraries, if accessed directly rather than exported, did not accept parameters. - (Documentation) Document constructor for Type::Tiny::Class. - (Packaging) More test cases. 0.000_06 2013-04-05 - (Addition) In Moo, type assertions and coercions are now inlined. ++$MSTROUT - (Addition) Monkey patch Moose::Meta::TypeConstraint to be able to retrieve Type::Tiny constraints from inflated Moose constraints. - (Addition) Type::Tiny now has an 'inline_assert' function. - (Documentation) Improved documentation of parameterization attributes. - (Documentation) Section in manual comparing Type::Tiny with various other type library frameworks. - (Documentation) Using Type::Tiny with Moo added to manual. - (Packaging) More test cases. - Footprint reduction: Type::Tiny and Type::Coercion no longer use if.pm. - Footprint reduction: Type::Tiny no longer triggers Perl to load its Unicode tables (unless you create a type constraint with a non-ASCII type name). - Footprint reduction: Type::Tiny, Type::Library and Type::Coerce no longer automatically load Types::Standard and Type::Utils. 0.000_05 2013-04-04 - (Addition) Factor out some functions from test suite into a new module: Test::TypeTiny. - (Bugfix) Fix is_parameterized. - (Bugfix) Get Mouse coercions working. - (Packaging) Rearrange test suite slightly. - Allow null type constraints with no parent type (e.g. 'Any' in Types::Standard) to be inlined. - Don't die with full stack trace. - Rename Type::Standard module to Types::Standard. - Sanity checks for type constraint names. - Types::TypeTiny bootstrapping library now takes care of vaious internal type checking requirements. 0.000_04 2013-04-03 - (Addition) Finally implement Type::Coercion's has_coercion_for_type method. - (Addition) Type::Tiny equals/is_subtype_of/is_supertype_of/is_a_type_of methods for type constraint comparisons. - (Addition) Type::Tiny plus_coercions/minus_coercions/no_coercions methods for creating subtypes with different sets of coercions. - Allow coercion code to be expressed as a string; quite a bit faster. - Create and use compiled coercions; somewhat faster. 0.000_03 2013-04-03 - (Addition) Inlined type constraints for all of Type::Standard. - (Addition) Test cases for ScalarRef[`a]. - (Bugfix) Fix the crashing t/moo-inflation.t test case. - (Documentation) Document Type::Coercion's overloading. - Create and use compiled type constraint checks; much faster! - Make sure Type::Standard's Moose-like built-ins get inflated to real Moose built-in types. - Use more unique stringification for %Moo::HandleMoose::TYPE_MAP keys. 0.000_02 2013-04-02 - (Addition) StrMatch added to Type::Standard. - (Addition) use Type::Library -base - (Addition) use Type::Library -declare - (Bugfix) Anchor enum regexps to beginning and end of string. - (Documentation) Beginnings of Type::Tiny::Manual. 0.000_01 2013-04-02 # Developer preview