#acl PaulHowarth:read,write,admin,revert,delete All:read === Friday 23rd September 2022 === ==== Local Packages ==== * Updated `perl-Type-Tiny` to 2.000000: . '''Back Compat''' * If none of a multisig's alternative sigs match the parameter list, `${^TYPE_PARAMS_MULTISIG}` will explicitly be 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) * More sensible error message trying to import a type constraint using `-declare` outside a type library . '''Bug Fixes''' * `Types::Common` was not correctly handling the `-sigs` export tag * 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 * What was supposed to be a warning for slurpy+default in `Type::Params` was throwing an exception: corrected to be a warning . '''Documentation''' * Document usage with `Class::Plain` * Updated `Type::Tiny::Manual` to cover new features * Fix misspelling of 'GitHub' in documentation * Updated the `SYNOPSIS` for `Types::Standard` and `Type::Tiny` * Improvements to `Type::Params` documentation * Update `NEWS` * Minor documentation clarifications around new constructor methods for `Type::Tiny` subclasses * 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 . '''Packaging''' * Add `Class::XSAccessor` to `Type::Tiny`'s recommendations . '''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 * Major simplifications of `Type::Library` internals * Updated: Require `Exporter::Tiny` 1.004001+ (previously required `Exporter::Tiny` 1.000000) * `Types::Common` now also extends `Types::TypeTiny` * Minor bugfixes and improvements to slurpy handling in `Type::Params` * Added: move two helper subs (`set_subname` and `type_to_coderef`) out of `Type::Library` and into `Eval::TypeTiny`, clean them up, and document them as part of the API * Added: `Type::Tiny` now has an '`exportables`' method that 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` is now an exporter * Added: `Type::Tiny::Role` is now an exporter * `Type::Tiny::{Class,Duck,Enum,Role}` subclass `Exporter::Tiny` instead of handling exports manually * Added: `Type::Tiny::Enum` has an `is_word_safe` method that indicates whether all values in the enumeration are 'words' (i.e. contain only word characters) * Added: Word-safe enumerations export constants for each value * 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` * 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` * The functionality provided by `Type::Params::multisig()` is now provided in the `Type::Params` v2 API (and is slightly more functional!) * 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` * Minor refactoring, mostly to make things more easily testable * 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` clean-ups * 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 * `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 * Added: Bundle `Type::Tie`, which was previously in a separate distribution on the CPAN * 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 * `Type::Params` `signature_for` will respect inheritance when looking for methods to wrap, when the '`method`' option is true . '''Test Suite''' * More tests * Tests for the '`type_default`' of all built-in types * 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 * Add versions of tests for the new `Type::Params` v2 API that don't rely on Perl 5.20 features * More tests for `Type::Tiny::{Class,Duck,Enum,Role}` exporting * Improved test cases; now 100% coverage on `coveralls.io` * Another test for '`-base`' * 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 * Test usage with `Class::Plain` ---- `