MooX-Press
==========

Created:      2019-10-22
Home page:    <https://metacpan.org/release/MooX-Press>
Bug tracker:  <https://github.com/tobyink/p5-moox-press/issues>
Maintainer:   Toby Inkster (TOBYINK) <tobyink@cpan.org>

0.086	2022-07-19

 [ Packaging ]
 - Raise the minimum versions of certain required dependencies.

 [ Other ]
 - Updated: Cope with changes to Slurpy in latest
   Type::Params/Types::Standard. This actually simplifies things.

0.085	2022-06-19

 [ Bug Fixes ]
 - Optimized signatures were sometimes causing a goto(HashRef) to happen.

0.084	2022-06-16

 [ Packaging ]
 - Raise the minimum versions of certain required dependencies.

0.083	2020-11-06

 - Updated: Special support for default=>Ask::Q(...)

0.082	2020-10-13

 - Allow certain features previously only supported in classes and roles
   (`with`, `extends`, `can`, `constant`, `multimethod`, `symmethod`) to
   work for the factory itself.

0.081	2020-10-10

 - Added: Support for Sub::SymMethod.
 - When MooX::Press attempts to build a child class before a parent class,
   it will now notice and hopefully build the parent class first.

0.080	2020-10-09

 - Updated: Support for Sub::MultiMethod 0.901+.

0.079	2020-09-30

 [ Bug Fixes ]
 - Fix for Type::Registry->for_class being called before Type::Registry was
   loaded.

0.078	2020-09-23

 - Added: Factories now have get_class() and get_role() methods.

0.077	2020-09-23

 [ Bug Fixes ]
 - Correct a couple of typos in code.

0.076	2020-09-23

 - MooX::Press now supports a `definition_context` in
   class/role/attribute/method specs.
 - Zydeco::Lite `class`, `role`, `interface`, `abstract_class`, `has`,
   `method`, `factory`, `multi_method`, and `multi_factory` keywords now
   include a `definition_context` in the specs they generate.

0.075	2020-09-19

 [ Bug Fixes ]
 - Prevent type library from complaining about type constraints for 'tag'
   roles being added multiple times.

0.074	2020-09-18

 [ Documentation ]
 - Add Zydeco::Lite extended example.
 - Update Zydeco::Lite formal syntax.

 [ Packaging ]
 - Dynamically calculate dependency list during build process.

 [ Other ]
 - MooX::Press will load MooseX::NonMoose when it's needed.
 - MooX::Press will load MouseX::Foreign when it's needed.
 - MooX::Press will load UNIVERSAL::DOES on Perl older than v5.10.
 - Zydeco::Lite allows apps, classes, roles, abstract classes, and
   interfaces to take a scalar reference as their name, like methods can.

0.073	2020-09-18

 - MooX::Press now creates type constraints for 'tag' roles.

0.072	2020-09-17

 - Added: Zydeco::Lite now supports anonymous methods.

0.071	2020-09-17

 [ Bug Fixes ]
 - Fix occasional errors figuring out the type name for classes named with
   a leading + sign.

0.070	2020-09-17

 [ Bug Fixes ]
 - Generator packages if called with leading :: should strip it before
   continuing.

0.069	2020-09-17

 [ Documentation ]
 - Documentation of scoping in Zydeco::Lite.

 [ Other ]
 - Allow many keywords to appear outside an app in Zydeco::Lite.
 - MooX::Press->patch_package now supports `extends`.

0.068	2020-09-16

 [ Bug Fixes ]
 - MooX::press now strips leading `main::` when generating type constraint
   names.

 [ Documentation ]
 - Better documentation of `coerce` in Zydeco::Lite.
 - Document importing functions from Zydeco::Lite.

 [ Other ]
 - MooX::Press now forbids roles from having a multifactory. (They could
   already not have factories, so this was an inconsistency.)
 - Zydeco::Lite's before_apply and after_apply now get passed 'role' or
   'class' as an argument indicating what kind of package the role is being
   applied to.

0.067	2020-09-15

 - Added: MooX::Press::make_absolute_package_name() function.
 - Treat leading `main::` like leading `::`.

0.066	2020-09-15

 [ Bug Fixes ]
 - Ensure Moose/Mouse classes are mutable before attempting to add
   attributes to them.

 [ Test Suite ]
 - Fix for Perl 5.8.

 [ Other ]
 - Refactor code for run-time modification of packages, moving code from
   Zydeco::Lite to MooX::Press so it can be shared with Zydeco.

0.065	2020-09-14

 - Added: Brand new Zydeco::Lite module.
 - Added: Factory packages now support before/after/around.
 - Added: Multi factories are now supported.

0.064	2020-09-03

 - Added: Class and role generators can generate multimethods.
 - Added: Role generators can generate before_apply/after_apply hooks.
 - Refactor how :coerce / :coercion attributes are handled.
 - Refactor how factory methods are installed.

0.063	2020-09-01

 - Added: Factories are now exporters and can export factory methods on
   request. The exported subs curry the invocant so are not called as
   methods.

0.062	2020-08-25

 - Added: Support :coerce / :coercion attributes on methods, multimethods,
   and factory methods to also install them as a coercion.

0.061	2020-04-28

 [ Bug Fixes ]
 - Fix regexps for extracting method bodies.

0.060	2020-04-25

 [ Bug Fixes ]
 - Eliminate closure warnings.
 - Eliminate printf warnings.
 - Stop wrapping method bodies in do blocks because it conflicts with
   lvalue methods in versions of Perl too old to optimize the do block
   away.

0.059	2020-04-25

 - Use MooX::TypeTiny again, but only versions 0.002001 and higher.

0.058	2020-04-08

 - Stop using MooX::TypeTiny for now; it introduces some weird coercion
   bugs.

0.057	2020-02-24

 - Eliminate some warnings when `make_attribute` is called to add an
   attribute to an existing class.

0.056	2020-02-24

 - The `is` option for attributes now defaults to 'ro', but you can change
   the default using a `default_is` option.

0.055	2020-02-20

 [ Bug Fixes ]
 - Eliminate 'used only once' warning from some roles.

 [ Packaging ]
 - Require latest stable Type::Params.

0.054	2020-02-18

 - Refactoring of `_make_package` to split out attribute handling into a
   separate `install_attributes` method.

0.053	2020-02-18

 - Added: Role::Hooks support.
 - MooX::Press now throws an error if you use certain options in classes
   that make no sense, like `requires`.
 - The `begin` and `end` options are now allowed to be arrayrefs.

0.052	2020-02-17

 - Added: The factory package now has a %PACKAGES variable.

0.051	2020-02-17

 [ Bug Fixes ]
 - Remove a debugging line that was included in 0.049.

 [ Other ]
 - Allow multiple `use MooX::Press` statements to have the same prefix.

0.050	2020-02-16

 - MooX::Press will now interpret `handles => ARRAYREF` as if the array
   were a hash, instead of relying on the underlying delegation
   implementation to interpret it.
 - Public attribtues can now have private (lexical) accessors and
   delegations.

0.049	2020-02-16

 - Module::Runtime and Import::Into were already dependencies, so make more
   use of them instead of just putting `use` statements in stringy eval.

0.048	2020-02-15

 - Don't issue warning about 'Local' factory if it was specified
   explicitly; assume they know what they're doing.

0.047	2020-02-15

 - Improve defaults of `prefix` and `factory_package`, especially when
   caller is `main`.

0.046	2020-02-14

 [ Packaging ]
 - Require Lexical::Accessor 0.012 to avoid Hash::FieldHash requirement.
 - Require Moo 2 because Moo 1 is just so old.

0.045	2020-02-14

 - Added: Integrate Lexical::Accessor support.

0.044	2020-02-12

 [ Packaging ]
 - Bump minimum required version of Sub::HandlesVia.
 - Make Sub::MultiMethod required rather than an optional dependency, so
   that other modules using MooX::Press and MooX::Pression don't need to
   depend on it explicitly.

0.043	2020-02-12

 [ Bug Fixes ]
 - If methods or method modifiers were given as a hashref rather than a
   coderef, MooX::Press would assume that meant there was a signature and
   later complain about the signature being undef, but there are other
   reasons to sometimes give a method or method modifier as a hashref, so
   this assumption is no longer made.

 [ Test Suite ]
 - Test that bare attributes work.

 [ Other ]
 - Added: MooX::Press::keywords now exports `bare` like `rw`, `ro`, `rwp`,
   and `lazy`.

0.042	2020-02-11

 - If a signature includes `head` and `tail` options, reify any string type
   constraints found there. This feature assumes you're using Type::Params
   1.009002 or above.
 - The `confess` exported by MooX::Press::Keywords no longer passes a
   single argument through sprintf; only calling sprintf when multiple
   arguments are given.

0.041	2020-02-09

 - Added: Factory packages now have a `qualify` method allowing them to
   translate unprefixed class names to fully-qualified ones.
 - Added: MooX::XSConstructor is loaded and used if it's installed.

0.040	2020-02-01

 [ Bug Fixes ]
 - Remove some Data::Dumper stuff mistakenly included in last release.

0.039	2020-02-01

 [ Bug Fixes ]
 - In the last few releases (since 0.032?), method signatures were
   mistakenly being recompiled every method call, which was SLOW.

0.038	2020-02-01

 - Abstract base classes throw exceptions from `BUILD` instead of `new`.

0.037	2020-01-31

 - Process `with` much later to ensure that methods (including accessors,
   delegated methods, multimethods, and constants) have been installed
   which might be needed to satisfy role requirements.

0.036	2020-01-31

 - Added: Abstract base classes.
 - Added: Interfaces.
 - Using class-specific things like `factory` in a role now results in an
   error instead of being silently ignored.

0.035	2020-01-28

 [ Bug Fixes ]
 - Don't install multimethod dispatchers into roles.

0.034	2020-01-28

 [ Bug Fixes ]
 - Skip trying to just-in-time look for a role definition if the role ends
   in a question mark; that role will already be built just-in-time.

0.033	2020-01-28

 - Added: Sub::MultiMethod support (optional dependency).
 - Added: Support `overload` in classes.
 - Build roles in an intelligent order.
 - Process role generators before class generators.

0.032	2020-01-24

 - Added: MooX::Press->wrap_coderef utility.

0.031	2020-01-23

 [ Bug Fixes ]
 - Fix broken signatures-as-coderefs feature.

 [ Documentation ]
 - Document signatures-as-coderefs feature.

 [ Other ]
 - Added: Add `optimize` feature for method signatures.

0.030	2020-01-23

 [ Bug Fixes ]
 - Bugfix for `import`.

0.029	2020-01-23

 - Allow `import` option to apply to class/role generators.
 - Removed: MooX::Press::Keywords no longer imports Try::Tiny for you.

0.028	2020-01-23

 [ Packaging ]
 - Require Sub::HandlesVia 0.004.

 [ Other ]
 - Added: Add an `import` option.
 - Smooth over differences between `has` in Moo, Moose, and Mouse.

0.027	2020-01-21

 - Added: Support for Sub::HandlesVia.

0.026	2020-01-18

 [ Bug Fixes ]
 - Fix `has` for Moose/Mouse classes and roles.

 [ Other ]
 - Better handling of type lookups from class/role generators.

0.025	2020-01-17

 - Saner API for slurpies in signatures.

0.024	2020-01-17

 - Added: Class and role generators now have generate_bleh methods in the
   factory.

0.023	2020-01-17

 - Added: class_generator and role_generator.

0.022	2020-01-16

 - Added: Integration with MooX::Enumeration/MooseX::Enumeration.
 - Added: Roles now have `requires`.

0.021	2020-01-15

 [ Bug Fixes ]
 - Prevent global options from overriding per-package options.

 [ Other ]
 - Added: Method modifiers now support signatures.
 - String 'from' types in coercions are now interpreted as type names
   instead of class/role names. This is for consistency with signatures.

0.020	2020-01-13

 - Added: Provide a `begin` option to run callback early in class/role
   definition.
 - Smarter Type::Registry stuff.

0.019	2020-01-10

 [ Documentation ]
 - Better type constratin documentation.

 [ Other ]
 - Added: Method signatures.
 - Allow roles listed under `with` to be suffixed with a question mark.
 - Default `factory_package` to `prefix` instead of `caller`.

0.018	2020-01-08

 [ Documentation ]
 - Fix typo.

0.017	2020-01-08

 - Added: MooX::Press::Keywords

0.016	2020-01-08

 [ Documentation ]
 - Documentation of @ and % sigils for `isa`.
 - Other improvements to type constraint related documentation.

 [ Other ]
 - Added: factory_package_can
 - Added: type_library_can

0.015	2020-01-07

 [ Bug Fixes ]
 - Fix interaction of automatic package prefixes and sigils.

0.014	2020-01-07

 - Added: Allow type names given as strings to be prefixed with @ or % to
   indicate ArrayRef of or HashRef of.

0.013	2019-11-06

 - Added: Allow classes to have multiple factories to create them.

0.012	2019-11-06

 [ Bug Fixes ]
 - Fix for newer versions of Moo::Role.

0.011	2019-11-05	Treason

 - Added: Support `type` in attribute specs.

0.010	2019-11-05	Gunpowder

 [ Bug Fixes ]
 - Fixes for methods being redefined in subclasses.

 [ Other ]
 - Added: Allow coderefs to be used to modify multiple methods in
   before/after/around, like Moo does.
 - Added: Top-level shortcuts for creating classes and roles.
 - Internal cleanups.

0.009	2019-10-31

 [ Documentation ]
 - Fix tree/leaf example.

0.008	2019-10-30

 - Added: Give each class a FACTORY method to return the factory package
   name.
 - Added: Give the factory package a type_library method to return the type
   library name.

0.007	2019-10-25

 [ Bug Fixes ]
 - Fixes for Moo 2.003_005 which changes how Moo's keyword subs are
   tracked.

0.006	2019-10-24

 [ Documentation ]
 - Document that multiple inheritance is supported.
 - Fix example in pod.

 [ Other ]
 - Less hacky way of calling Moo's has, extends, and with functions.
 - Throw an error if people try to use extends in roles.
 - You can now add a '+' before a class name to indicate that it should be
   prefixed by the parent class name.

0.005	2019-10-24

 [ Bug Fixes ]
 - Fixes for undef type_library.

 [ Documentation ]
 - Bundle a simple example, HTTP::Tiny::Objects.

 [ Other ]
 - Suppress loading MooX::TypeTiny if it's not needed.

0.004	2019-10-23

 [ Packaging ]
 - Declare dependency on namespace::autoclean.

 [ Other ]
 - Added: Set $VERSION and $AUTHORITY in generated packages.
 - Better handling of caller option.

0.003	2019-10-23

 [ Packaging ]
 - Remove old test script from tarball.

0.002	2019-10-23

 [ Bug Fixes ]
 - Fix syntax for Perl < 5.22.

0.001	2019-10-23	Initial release
