Kavorka
=======

Created:      2013-09-23
Home page:    <https://metacpan.org/release/Kavorka>
Bug tracker:  <http://rt.cpan.org/Dist/Display.html?Queue=Kavorka>
Maintainer:   Toby Inkster (TOBYINK) <tobyink@cpan.org>

0.039	2018-07-27

 [ Test Suite ]
 - Cope with minor regression in Type::Tiny exceptions.

0.038	2018-06-26

 [ Documentation ]
 - Add note about Devel::CallParser issue to documentation.

 [ Other ]
 - 98undefer.t now requires Moops 0.035
   Fixes RT#124827.
   Slaven Rezić++
   <https://rt.cpan.org/Ticket/Display.html?id=124827>

0.037	2017-01-31

 [ Bug Fixes ]
 - Eliminate dependency on Data::Alias in modern versions of Perl.
   Daniel Dehennin++
   <https://github.com/tobyink/p5-kavorka/issues/18>

0.036	2014-11-01

 [ Bug Fixes ]
 - Avoid inadvertantly autovivifying things in Sub::Defer's big hash of
   deferred subs.
   Chris Tijerina++

0.035	2014-09-30

 [ Test Suite ]
 - Add a test case for Sub::Defer-related weirdness.
   <http://purl.org/NET/cpan-uri/rt/ticket/95786>

 [ Other ]
 - Make it easier to do weird things subclassing Kavorka::Multi.

0.034	2014-09-07

 - Avoid triggering RT#98666.
 - Updated: Switch from Sub::Name+Sub::Identify to the shiny new Sub::Util.

0.033	2014-08-22

 [ Bug Fixes ]
 - Type::Registry::DWIM changed its API. (Kavorka probably shouldn't be
   using it anyway because it's an undocumented internal part of
   Type::Utils.)
   SpiceMan++

0.032	2014-08-13

 [ Bug Fixes ]
 - Work around a bug in Moo(?) or maybe the Perl keyword API(?) by
   undeferring Moo's deferred subs.
   Fixes RT#95786.
   Jonathan Cast++
   <https://rt.cpan.org/Ticket/Display.html?id=95786>

0.031	2014-08-13

 [ Bug Fixes ]
 - Add `multi` to @EXPORT_OK.
   Thibaut Le Page++
 - Fix link to Kavorka::Manual::Signatures.
   Thibaut Le Page++

 [ Documentation ]
 - Update benchmarks given that Type::Tiny::XS is hellishly fast.

 [ Packaging ]
 - Recommend Type::Tiny::XS.

 [ Other ]
 - Updated: Bump required version of Return::Type.
 - Updated: Cope with changes to Exporter::Tiny; avoid triggering warnings.

0.030	2014-03-20

 [ Bug Fixes ]
 - Eliminate dependency on Devel::Pragma, which fixes Kavorka on threaded
   Perls.
   Fixes RT#94015.
   Piers Cawley++
   <https://rt.cpan.org/Ticket/Display.html?id=94015>

 [ Test Suite ]
 - Add test using Kavorka on threaded Perls.
   Aaron James Trevena++
   <http://purl.org/NET/cpan-uri/rt/ticket/94015>

 [ Other ]
 - Added: Introduce `f` as an alternative to `fun`.

0.029	2014-02-26

 - Added: Kavorka::TraitFor::Sub::begin.

0.028	2014-02-21	The 'perlsub-compat' Release

 [ Test Suite ]
 - Add test cases covering bare @ and % sigils.

 [ Other ]
 - Allow attributes to *precede* signatures.
 - Make parsing of parameter defaults laxer so that an equals sign followed
   by no expression is allowed.

0.027	2014-01-30

 - Minor change to the hook allowing keywords to deal with calls that
   bypass the Perl keyword API.

0.026	2014-01-30

 - Allow keywords to detect when the keyword sub has been called in a way
   that bypasses the Perl keyword API's custom parsing (e.g. using a
   prototype, or as a coderef). By default, keywords croak when this is
   detected.
 - Method modifier keywords can now detect when the keyword sub has been
   called bypassing custom parsing, and act sanely rather than croaking.

0.025	2013-12-23

 [ Bug Fixes ]
 - Value constraints for parameters without type constraints were being
   ignored.

 [ Test Suite ]
 - Tests for value constraints.

 [ Other ]
 - Added: Support non-block form of value constraints, taken from Perl 6 /
   Method::Signatures.

0.024	2013-12-18

 [ Bug Fixes ]
 - s/namespace::clean/namespace::sweep/

0.023	2013-12-17

 [ Bug Fixes ]
 - Fix test case - should not depend on Moops!
   Syohei Yoshida++
   <https://github.com/tobyink/p5-kavorka/issue/2>

0.022	2013-12-16

 [ Documentation ]
 - Fix typos in Kavorka::Manual::MultiSubs.
   Grzegorz Rożniecki++
   <https://github.com/tobyink/p5-kavorka/pull/1>

 [ Other ]
 - Added: Kavorka::TraitFor::Sub::fresh.
 - Added: Kavorka::TraitFor::Sub::override.

0.021	2013-11-30

 [ Documentation ]
 - Rearrange some of the traits documentation.

 [ Other ]
 - Added: Implement a `ref_alias` trait, inspired by Method::Signatures.
 - Disallow the `assumed` parameter trait for multi subs.
 - Split out most of the implementation for the `optional` trait (except
   for special parsing rules) into Kavorka::TraitFor::ReturnType::optional.
 - Split out some sanity_check stuff into the trait modules.

0.020	2013-11-27

 [ Documentation ]
 - Explain different ways to extend Kavorka.

 [ Other ]
 - Added: Kavorka::TraitFor::Parameter::assumed.
 - Can now use 'but' as another alias for 'is'/'does'.
 - Split out the assumed trait for return types as
   Kavorka::TraitFor::ReturnType::assumed.
 - Subs can now have traits.

0.019	2013-11-23

 - Added: Provide an `augment` keyword which will work in Moose/Mouse, but
   not Moo.
 - Added: Provide an `override` keyword which will work in Moose/Mouse, but
   not Moo.
 - Allow named parameters to be passed in as a hashref rather than a hash.
 - Split out some of the Kavorka::Parameter features (aliases, locked
   hashrefs, read-only parameters) into parameter traits.

0.018	2013-11-18

 - Allow non-Type::Tiny type constraints to be returned by type constraint
   expressions, provided they can be converted to Type::Tiny objects via
   Types::TypeTiny::to_TypeTiny.

0.017	2013-11-18

 - Extensibility via parameter traits.
 - Rename Kavorka::Signature::Parameter -> Kavorka::Parameter.
 - Rename Kavorka::Signature::ReturnType -> Kavorka::ReturnType.

0.016	2013-11-07

 [ Bug Fixes ]
 - Bypass the Internals::SvREADONLY prototype because handling of the ($;$)
   prototype changed in 5.16.0 and we were relying on the new behaviour.

0.015	2013-11-07

 [ BACK COMPAT ]
 - Change the syntax of lexical functions and methods to include the `my`
   keyword in their declaration.

 [ Bug Fixes ]
 - $sub->signature now returns undef if no signature was given in the
   declaration.
 - Most of the closure issues associated with Parse::Keyword are now worked
   around.

 [ Documentation ]
 - Document that fun ($x, $y=$x) {...} doesn't work how you might expect it
   to, and some work-arounds.

 [ Test Suite ]
 - Tidy up some of the closure tests.

 [ Other ]
 - Checking if @_ < 0 is silly; stop doing that.

0.014	2013-11-05	Gunpowder, treason and plot

 - Added: Lexical functions and methods.
 - Added: Return types, optionally with coercion.
 - Updated: Work with (and indeed require Type::Tiny 0.032).

0.013	2013-10-27

 [ Bug Fixes ]
 - Compiled dispatchers introduced in Kavorka 0.012 are essentially a form
   of cache. No cache invalidation was in place, leading to issues when
   adding extra same-named multi method candidates to parent classes after
   a multi method had already been invoked in a child class. Cache
   invalidation now works.

 [ Test Suite ]
 - Test for cache invalidation of compiled multi sub dispatchers.
 - Test that definition of multi subs happens at runtime, and definition
   can continue even after the multi sub has been invoked.

0.012	2013-10-26

 [ Documentation ]
 - Various documentation improvements.

 [ Other ]
 - Optimization: avoid double type checks in multi subs.
 - Optimization: compile dispatchers for multi subs on demand.

0.011	2013-10-25

 [ Documentation ]
 - Split up documentation into a manual with bite-sized chunks.

 [ Other ]
 - Allow multiple method names to be modified with a single method
   modifier.
 - Rename ${^NEXT} variable to $next for `around` method modifiers.
 - Support Perl 5.20 style :prototype(...) attribute.

0.010	2013-10-23

 - Allow package variables such as $Foo::Bar in signatures.
 - General refactoring of variable name parsing.
 - Support 'my' and 'our' prefixes to variable names in signatures.

0.009	2013-10-22

 [ Documentation ]
 - Minor fix to KavorkaX::Dancer2 example extension module.

 [ Packaging ]
 - Package my TODO list.

0.008	2013-10-17

 [ Documentation ]
 - Include an example of extending Kavorka to cover some Dancer2 concepts.
 - Minor documentation fixes.

 [ Other ]
 - Make subclassing Kavorka.pm itself a little easier.

0.007	2013-10-16

 - Allow named parameters to have multiple "outside" names.
 - Make the parentheses surrounding long named parameters optional.
 - Refactor Kavorka::Sub.

0.006	2013-10-15

 [ Documentation ]
 - Document interplay between multi subs and multiple inheritance.

 [ Test Suite ]
 - Test cases for multi subs versus multiple inheritance.

 [ Other ]
 - Use invocant as starting point for searching for multi method
   candidates.

0.005	2013-10-13

 [ Bug Fixes ]
 - Fix error parsing `where` clauses.

 [ Documentation ]
 - Included fibonnacci.pl example of using multi subs.

 [ Other ]
 - $parameter->constraints is now an arrayref of coderefs rather than an
   arrayref of strings of Perl code.
 - Changed error message resulting from failed value constraint.

0.004	2013-10-13

 [ Documentation ]
 - Correct minor typo.

 [ Other ]
 - Added: Implement multi subs and multi methods.

0.003	2013-10-12

 - Allow @_ and %_ to be used in signatures.
 - Improve sanity checking for signatures.

0.002	2013-10-11

 - Added: Kavorka::Signature now provides args_min and args_max methods.
 - Refactor some of the code generation in Kavorka::Signature.

0.001	2013-10-09	First public release

0.000_11	2013-10-09

 [ Documentation ]
 - Document Kavorka's exports.
 - Fix MooseX::KavorkaInfo SYNOPSIS.
 - Provide an example script using MooseX::KavorkaInfo.

 [ Test Suite ]
 - Check that it's possible to define a method called `method`.

 [ Other ]
 - Throw an exception if people use method modifier keywords to define
   anonymous functions.

0.000_10	2013-10-09

 [ Documentation ]
 - Minor documentation improvements.

 [ Other ]
 - Added: MooseX::KavorkaInfo provides Kavorka->info data through Moose
   meta objects.
 - Allow Function::Parameters-style type constraint expressions.

0.000_09	2013-10-08

 [ Documentation ]
 - Document the yadayada operator.

 [ Test Suite ]
 - Tests for lvalue subs.

 [ Other ]
 - Better support for subroutine attributes.
 - Change parsing technique for named subs.

0.000_08	2013-10-08

 [ Documentation ]
 - Documented Kavorka::Signature.
 - Documented Kavorka::Signature::Parameter.
 - Documented Kavorka::Sub.
 - Improve 'Introspection API' section of documentation for Kavorka.pm
   itself.

 [ Test Suite ]
 - Add tests for introspection API.

 [ Other ]
 - Function objects doing the Kavorka::Sub role now keep track of which
   keyword they were declared with.
 - Tidy up and improve the Kavorka::Signature API.
 - Tidy up the Kavorka::Sub API.

0.000_07	2013-10-08

 [ Documentation ]
 - Documented an 'rw' trait which is just a no-op.
 - Documented traits better.

 [ Test Suite ]
 - Add tests for various traits.

 [ Other ]
 - Implemented the 'alias' trait.
 - Implemented the 'locked' trait.
 - Implemented the 'ro' trait.
 - Long overdue refactoring of the code-generating internals of
   Kavorka::Signature::Parameter.

0.000_06	2013-10-07

 [ Bug Fixes ]
 - Fix installing of method modifiers into Moo::Role roles.

 [ Test Suite ]
 - Add tests for method modifiers in Class::Tiny/Role::Tiny.
 - Add tests for method modifiers in Moo.
 - Add tests for method modifiers in Moose.
 - Add tests for method modifiers in Mouse.

0.000_05	2013-10-07

 [ Bug Fixes ]
 - Fix off-by-one bug failing to populate a slurpy array/arrayref if it
   would only have one item.
 - Fix warning assigning odd number of items to %_ which should have been
   fatal instead.

 [ Test Suite ]
 - Add tests for non-inlinable type constraints.
 - Add tests for type coercions.

0.000_04	2013-10-06

 [ Test Suite ]
 - Add tests for invocants.
 - Add tests for slurpy parameters.

 [ Other ]
 - Allow anonymous slurpy parameters.
 - Also populate the %_ hash for functions with a hash(ref) slurpy but zero
   named parameters.
 - Minor speed-ups.

0.000_03	2013-10-05

 [ Bug Fixes ]
 - Error message for unknown named parameters isn't unintentionally always
   thrown for all named parameters except the first.

 [ Documentation ]
 - Include my TODO file.

 [ Test Suite ]
 - Add tests for named parameters.
 - Add tests for positional parameters.
 - Add tests for the `method` keyword.

 [ Other ]
 - The `default` attribute of Kavorka::Signature::Parameter is now a
   coderef rather than a string.

0.000_02	2013-10-04

 [ Bug Fixes ]
 - Fix error finding the position to start slurping from in signatures that
   have a slurpy after zero positional parameters.
 - Fix syntax error compiling functions using non-inlinable type
   constraints in the signature.

 [ Documentation ]
 - Include benchmarking script as an example.

 [ Test Suite ]
 - Add some rudimentary tests for type constraints.

0.000_01	2013-10-03	Preview release