Blame Changes

Packit 42cdad
0.42     2017-11-04
Packit 42cdad
Packit 42cdad
- The Perl library claimed it provided types named LaxVersionStr and
Packit 42cdad
  StrictVersionStr but they were really named LaxVersion and
Packit 42cdad
  StrictVersion. The names have now been fixed to match the documentation, so
Packit 42cdad
  they are LaxVersionStr and StrictVersionStr.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.41     2017-11-04
Packit 42cdad
Packit 42cdad
- Fixed checks for whether a class is loaded in light of upcoming optimization
Packit 42cdad
  in Perl 5.28. Fixed by Sprout (GH #12).
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.40     2017-08-03
Packit 42cdad
Packit 42cdad
- Fixed more bugs with {any,object}_{can,does,isa}_type. When passed a glob
Packit 42cdad
  (not a globref) they would die in their type check. On Perl 5.16 or earlier,
Packit 42cdad
  passing a number to an any_* type would also die.
Packit 42cdad
Packit 42cdad
- Fixed subification overloading. If Sub::Quote was loaded, this would be
Packit 42cdad
  used, but any environment variables needed for the closure would not be
Packit 42cdad
  included. This broke enums, among other things.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.39     2017-08-02
Packit 42cdad
Packit 42cdad
- Many bug fixes and improves to the types created by
Packit 42cdad
  {any,object}_{can,does,isa}_type. In some cases, an invalid value could
Packit 42cdad
  cause an exception in type check itself. In other cases, a value which
Packit 42cdad
  failed a type check would cause an exception when generating a message
Packit 42cdad
  describing the failure. These cases have all been fixed.
Packit 42cdad
Packit 42cdad
- The messages describing a failure for all of these types have been improved.
Packit 42cdad
Packit 42cdad
- You can now create anonymous *_does and *_isa types using the exports from
Packit 42cdad
  Specio::Declare.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.38     2017-07-01
Packit 42cdad
Packit 42cdad
- Simplify checks for overloading to not call overload::Overloaded(). Just
Packit 42cdad
  checking the return value of overload::Method() is sufficient.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.37     2017-05-09
Packit 42cdad
Packit 42cdad
- Possible fix for very weird failures seen under threaded Perls with some
Packit 42cdad
  modules that use Specio.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.36     2017-02-19
Packit 42cdad
Packit 42cdad
- Inlined coercions would attempt to coerce for every type which matched the
Packit 42cdad
  value given, instead of stopping after the first type. Fixed by Graham Knop
Packit 42cdad
  (GH #11).
Packit 42cdad
Packit 42cdad
- Inlined coercions did not include the inline environment variables needed by
Packit 42cdad
  the type from which the coercion was being performed. Fixed by Graham Knop
Packit 42cdad
  (GH #8).
Packit 42cdad
Packit 42cdad
- When you use the same type repeatedly as coderef (for example, as a
Packit 42cdad
  constraint with Moo), it will only generated its subified form once, rather
Packit 42cdad
  than regenerating it each time it is de-referenced.
Packit 42cdad
Packit 42cdad
- Added an API to Specio::Subs to allow you to combine type libraries and
Packit 42cdad
  helper subs in one package for exporting. See the Specio::Exporter docs for
Packit 42cdad
  more details.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.35     2017-02-12
Packit 42cdad
Packit 42cdad
- Added Specio::Subs, a module which allows you to turn one or more library's
Packit 42cdad
  types into subroutines like is_Int() and to_Int().
Packit 42cdad
Packit 42cdad
- Added an inline_coercion method to Specio constraints.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.34     2017-01-29
Packit 42cdad
Packit 42cdad
- Packages with Specio::Exporter as their parent can now specify additional
Packit 42cdad
  arbitrary subs to exporter. See the Specio::Exporter docs for details.
Packit 42cdad
Packit 42cdad
- Importing the same library twice in a given package would throw an
Packit 42cdad
  exception. The second attempt to import is now ignored.
Packit 42cdad
Packit 42cdad
- Added an alpha implementation of structured types. See
Packit 42cdad
  Specio::Library::Structured for details.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.33     2017-01-24
Packit 42cdad
Packit 42cdad
- Fixed a mistake in the SYNOPSIS for Specio::Declare. The example for the
Packit 42cdad
  *_isa_type helpers was not correct.
Packit 42cdad
Packit 42cdad
- Removed the alpha warning from the docs. This is being used by enough of my
Packit 42cdad
  modules on CPAN that I don't plan on doing any big breaking changes without
Packit 42cdad
  a deprecation first.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.32     2017-01-12
Packit 42cdad
Packit 42cdad
- Fixed a bug in the inlining for types create by any_can_type() and
Packit 42cdad
  object_can_type(). This inlining mostly worked by accident because of some
Packit 42cdad
  List::Util XS magic, but this broke under the debugger. Reported by
Packit 42cdad
  Christian Walde (GH #6) and Chan Wilson
Packit 42cdad
  (https://github.com/houseabsolute/DateTime.pm/issues/49).
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.31     2016-11-05
Packit 42cdad
Packit 42cdad
- The stack trace contained by Specio::Exception objects no longer includes a
Packit 42cdad
  stack frames for the Specio::Exception package.
Packit 42cdad
Packit 42cdad
- Made the inline_environment() and description() methods public on type and
Packit 42cdad
  coercion objects.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.30     2016-10-15
Packit 42cdad
Packit 42cdad
- Fix a bug with the Sub::Quoted sub returned by $type->coercion_sub. If a
Packit 42cdad
  type had more than one coercion, the generated sub could end up coercing the
Packit 42cdad
  value to undef some of the time. Depending on hash key ordering, this could
Packit 42cdad
  end up being a heisenbug that only occured some of the time.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.29     2016-10-09
Packit 42cdad
Packit 42cdad
- Doc Specio::PartialDump because you may want to use it as part of the
Packit 42cdad
  failure message generation code for a type.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.28     2016-10-02
Packit 42cdad
Packit 42cdad
- Added a Test::Specio module to provide helpers for testing Specio libraries.
Packit 42cdad
Packit 42cdad
- Fixed another bug with a subtype of special types and inlining.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.27     2016-10-01
Packit 42cdad
Packit 42cdad
- Cloning a type with coercions defined on it would cause an exception.
Packit 42cdad
Packit 42cdad
- Creating a subtype of a special type created by *_isa_type, *_can_type, or
Packit 42cdad
  *_does_type, or enum would die when trying to inline the type constraint.
Packit 42cdad
Packit 42cdad
- Removed the never-documented Any type.
Packit 42cdad
Packit 42cdad
- Added documentation for each type in Specio::Library::Builtins.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.26     2016-09-24
Packit 42cdad
Packit 42cdad
- Require Role::Tiny 1.003003. This should fix the test failures some
Packit 42cdad
  CPANTesters reported with this error:
Packit 42cdad
Packit 42cdad
    Can't resolve method "???" overloading "&{}" in package
Packit 42cdad
    "Specio::Constraint::Simple" at Specio::Constraint::Simple->new line 35.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.25     2016-09-04
Packit 42cdad
Packit 42cdad
- Calling {any,object}_{isa,does}_type repeatedly in a package with the same
Packit 42cdad
  class or role name would die. These subs are now special-cased to simply
Packit 42cdad
  return an existing type for the given name when they receive a single
Packit 42cdad
  argument (the name of the class or role). This could come up if you had two
Packit 42cdad
  attributes both of which required an object of the same type.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.24     2016-06-20
Packit 42cdad
Packit 42cdad
- Fix a bizarre failure on Perl before 5.14. AFAICT this was a test problem,
Packit 42cdad
  not a library problem.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.23     2016-06-20
Packit 42cdad
Packit 42cdad
- Added intersection types.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.22     2016-06-18
Packit 42cdad
Packit 42cdad
- Require version.pm 0.83. I know 0.77 doesn't work but I'm not sure exactly
Packit 42cdad
  which version fixed the problem, since I cannot install older
Packit 42cdad
  versions. Reported by Slaven Rezic. RT #115418.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.21     2016-06-18
Packit 42cdad
Packit 42cdad
- Don't load Sub::Quote, but use it if it's already loaded. Since Moo uses it,
Packit 42cdad
  this should make Specio constraints just work with Moo.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.20     2016-06-18
Packit 42cdad
Packit 42cdad
- Removed test dependency on namespace::autoclean.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.19     2016-06-17
Packit 42cdad
Packit 42cdad
- Removed dependency on Devel::PartialDump by making a copy of just the bits
Packit 42cdad
  we need. Gross but effective.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.18     2016-06-15
Packit 42cdad
Packit 42cdad
- Added union types.
Packit 42cdad
Packit 42cdad
- If a subtype's parent could be inlined and the subtype itself did not
Packit 42cdad
  specify any additional constraints (inlinable or not), then the subtype was
Packit 42cdad
  not being inlined, even though it could be.
Packit 42cdad
Packit 42cdad
- This distro now works with Perl 5.8 (though it was only tested with 5.8.8).
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.17     2016-06-01
Packit 42cdad
Packit 42cdad
- Change "use v5.10" to "use 5.010". The former appears to cause warnings on
Packit 42cdad
  older Perls.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.16     2016-05-30
Packit 42cdad
Packit 42cdad
- Remove use of Class::Load and Module::Runtime.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.15     2016-05-30
Packit 42cdad
Packit 42cdad
- The Num and Int type now accepts numbers in scientific notation such as 1e10
Packit 42cdad
  or -1.2e-5.
Packit 42cdad
Packit 42cdad
- Removed various prereqs that weren't really needed.
Packit 42cdad
Packit 42cdad
- Added three new libraries, Specio::Library::String, ::Numeric, and
Packit 42cdad
  ::Perl. These provide additional commonly used string and numeric types, as
Packit 42cdad
  well as some types related to Perl syntax.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.14     2016-05-22
Packit 42cdad
Packit 42cdad
- Added an inline_assert method for constraint objects. This makes certain
Packit 42cdad
  types of inlining tasks easier.
Packit 42cdad
Packit 42cdad
- Parameterized constraint objects now have a default name based on the parent
Packit 42cdad
  type and contained type.
Packit 42cdad
Packit 42cdad
- Rewrote the code used for inlined types so that the generated inline code is
Packit 42cdad
  optimized to check the most common cases first.
Packit 42cdad
Packit 42cdad
- Fixed a bug where two enum types could not be inlined together in the same
Packit 42cdad
  sub.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.13     2016-05-15
Packit 42cdad
Packit 42cdad
- Parameterizing a type which generated inline parameterized constraints (like
Packit 42cdad
  the ArrayRef and HashRef builtins) now dies if given a parameter which
Packit 42cdad
  cannot itself be inlined. Mixing inlinable and non-inlinable constraints
Packit 42cdad
  previously caused very confusing errors.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.12     2015-12-19
Packit 42cdad
Packit 42cdad
- Fixed tests that failed if Moose wasn't installed. Reported by Karen
Packit 42cdad
  Etheridge. RT #109247.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.11     2014-05-27
Packit 42cdad
Packit 42cdad
- Remove a Perl 5.14-ism.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.10     2014-05-26
Packit 42cdad
Packit 42cdad
- Added Class::Method::Modifiers to prereqs.
Packit 42cdad
Packit 42cdad
- Made Specio classes faster by inlining all accessors and constructors.
Packit 42cdad
Packit 42cdad
- Added support for Moo. Specio constraints now overloading sub-ification so
Packit 42cdad
  you can pass them as "isa" values for Moo attributes. Also added a new
Packit 42cdad
  $type->coercion_sub() method which returns a sub ref suitable for the
Packit 42cdad
  "coerce" value. These all use Sub::Quote so that the returned sub refs can
Packit 42cdad
  be inlined.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.09     2014-05-25
Packit 42cdad
Packit 42cdad
- Reimplemented entirely without Moose. This module now implements its own
Packit 42cdad
  half-assed (really, more like eighth-assed) OO system.
Packit 42cdad
Packit 42cdad
* TODO: Integrate cleanly with Moo and Moose.
Packit 42cdad
Packit 42cdad
* TODO: Improve the internal OO system to do some eighth-assed inlining so
Packit 42cdad
  creating type objects is faster.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.08     2013-06-08
Packit 42cdad
Packit 42cdad
- Removed the use of the encoding pragma from the tests. This pragma is
Packit 42cdad
  deprecated in 5.18.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.07     2013-03-03
Packit 42cdad
Packit 42cdad
- Disabled the tests that rely on an as-yet-unreleased Moose. These were
Packit 42cdad
  mostly disabled but some cpan testers boxes were set up in a way that made
Packit 42cdad
  them run.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.06     2013-03-02
Packit 42cdad
Packit 42cdad
- Renamed Type to Specio.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.05     2012-10-14
Packit 42cdad
Packit 42cdad
- This module didn't really need XS. It turns out that 5.10 added
Packit 42cdad
  re::is_regexp() so we can use that instead. Thanks to Jesse Luehrs for
Packit 42cdad
  pointing this out.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.04     2012-09-30
Packit 42cdad
Packit 42cdad
- Added any_does_type and object_does_type declaration helpers. These check
Packit 42cdad
  whether a class and/or object does a given role. They work with Moose,
Packit 42cdad
  Mouse, and Role::Tiny.
Packit 42cdad
Packit 42cdad
- Fixed implementation of any_isa_type and object_isa_type to match docs. If
Packit 42cdad
  given more than one argument, the docs said they expected named parameters
Packit 42cdad
  but internally the code expected positional parameters.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.03     2012-09-30
Packit 42cdad
Packit 42cdad
- Various hacks to make Specio::Constraint objects play nice with Moose. Needs
Packit 42cdad
  changes to Moose to work properly, however.
Packit 42cdad
Packit 42cdad
- The message generator sub is no longer called as a method. It is called as a
Packit 42cdad
  sub so it doesn't receive the type as an argument.
Packit 42cdad
Packit 42cdad
- The inline environment variable names used for each type are now
Packit 42cdad
  unique. This means that types will not step on each other if you want to
Packit 42cdad
  inline more than one type check in the same scope.
Packit 42cdad
Packit 42cdad
- Non-inlined type coercions were completely broken.
Packit 42cdad
Packit 42cdad
- Added $type->is_same_type_as and $type->is_a_type_of methods.
Packit 42cdad
Packit 42cdad
- The Maybe type was a subtype of Ref in the code, which is wrong. It is now a
Packit 42cdad
  subtype of Item.
Packit 42cdad
Packit 42cdad
- This module now explicitly requires Perl 5.10.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.02     2012-05-14
Packit 42cdad
Packit 42cdad
- Now with lots more documentation, but this is still very alpha. Feedback
Packit 42cdad
  from potential users is welcome.
Packit 42cdad
Packit 42cdad
Packit 42cdad
0.01     2012-05-13
Packit 42cdad
Packit 42cdad
- First release upon an unsuspecting world. This is very alpha and subject to
Packit 42cdad
  change. I'm mostly releasing it to get some feedback on the design. Do not
Packit 42cdad
  use this in your code yet, unless you promise not to complain about the lack
Packit 42cdad
  of docs or the fact that the next release breaks your code.