Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

    PaulHowarth/Blog/2022-09-23

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


`

Recent