Marlin
======

Created:      2025-12-11
Home page:    <https://metacpan.org/release/Marlin>
Bug tracker:  <https://github.com/tobyink/p5-marlin/issues>
Maintainer:   Toby Inkster (TOBYINK) <tobyink@cpan.org>

0.011002	2026-01-09

 [ Bug Fixes ]
 - Certain setup steps were not running correctly for roles.
 - The before/after/around keywords exported to roles were ones only
   suitable for classes; they have been replaced with ones which work for
   roles.

 [ Documentation ]
 - Update benchmark script; compare some more simple classes too.

 [ Packaging ]
 - Require Sub::Accessor::Small 1.000003.

0.011001	2026-01-08

 [ Bug Fixes ]
 - Marlin::XAttribute::Alias pod syntax fix.

 [ Documentation ]
 - Marlin::X::Clone documentation improvements.

 [ Packaging ]
 - Require Class::XSAccessor 0.016002.

 [ Other ]
 - Check that code is actually compiling before using B::Hooks::AtRuntime,
   otherwise just run stuff immediately.
 - Marlin::X::Clone is now aware of Marlin::XAttribute::Alias.
 - Marlin::X::Clone now supports more on_clone options.
 - Marlin::X::Clone performance improvements.

0.011000	2026-01-07

 [ Packaging ]
 - Require Class::XSAccessor 0.016001.
 - Require Type::Tiny 2.010000.

 [ Other ]
 - Added: Provide MooseX::Marlin and MooX::Marlin to allow Moose and Moo to
   inherit from Marlin classes and compose Marlin roles.
 - Marlin::Struct's magical coercion from arrayrefs is now aware of
   ':Alias'.
 - Marlin::XAttribute::Alias no longer forces PP constructors to be
   generated.
 - Move some attribute logic from Marlin to Marlin::Attribute making it
   easier for attribute extensions to override.
 - Support inheritance from Class::Tiny classes.
 - Support inheritance from Mite classes and composing Mite roles.
 - Support inheritance from Mouse classes and composing Mouse roles.
 - Updated: Changes to work with newest Class::XSAccessor.

0.010000	2025-12-29

 [ Documentation ]
 - Show how easy it is to switch from Class::Tiny to Marlin.

 [ Other ]
 - Added: Marlin::XAttribute::Alias is bundled as a demonstration of the
   extension API (and because it can be useful).
 - Added: Marlin::XAttribute::LocalWriter is bundled as a demonstration of
   the extension API (and because it can be useful).
 - Added: Marlin::XAttribute::Lvalue is bundled as a demonstration of the
   extension API (and because it can be useful).
 - Marlin now provides a rudimentary API for attribute extension modules.

0.009000	2025-12-28

 - Added: Marlin::X::Clone is bundled as a demonstration of the extension
   API (and because it can be useful).
 - Marlin now provides a rudimentary API for extension modules.
 - Stop using `mkopt` to parse parameters; do it more manually to allow
   some options to take a simple string as their value instead of requiring
   a reference.

0.008000	2025-12-23

 [ Documentation ]
 - Better documentation of Marlin::Struct.
 - Document API.
 - Omit -strict from examples as that is now the default.

 [ Other ]
 - Classes built with Marlin::Struct now provide a default stringification
   and arrayrefification.
 - Internally use Clone::clone() instead of Storage::dclone() as it can
   cope with coderefs.
 - Marlin can now inherit from Moose and Moo classes and compose Moose and
   Moo roles.
 - Provide some useful utility API methods.
 - Various small improvements to Marlin::Struct.

0.007001	2025-12-22

 [ Bug Fixes ]
 - Get Marlin::Struct working on Perl older than 5.12.0.

0.007000	2025-12-21

 - Added: Marlin::Struct.
 - Make strict constructors the default.

0.006001	2025-12-19

 [ Test Suite ]
 - Restore test case which was marked TODO.

 [ Other ]
 - Use a newer version of Class::XSConstructor which fixes broken test
   case.

0.006000	2025-12-19

 [ Test Suite ]
 - Changes upstream in Class::XSConstructor have broken one test in the
   test suite, so this has been marked TODO for now.

 [ Other ]
 - Use a newer version of Class::XSConstructor with support for trigger,
   weak_ref, and init_arg.

0.005000	2025-12-18

 - Use a newer version of Class::XSConstructor with support for
   destructors.
 - Use a newer version of Sub::Accessor::Small with improvements for
   triggers.

0.004000	2025-12-17

 - Added: Allow attribute declarations to tweak how the attribute will be
   stored, including allowing inside-out attributes.
 - Added: Implement constant attributes.

0.003001	2025-12-16

 - Use a newer version of Class::XSConstructor with fixes for BUILD
   methods.
 - Use a newer version of Sub::Accessor::Small with fixes for builder
   methods.

0.003000	2025-12-15

 - Use a newer version of Class::XSConstructor which allows for type
   coercion and defaults/builders to run in the constructor.

0.002005	2025-12-15

 [ Bug Fixes ]
 - Remove usage of // operator from test case too.

0.002004	2025-12-15

 [ Bug Fixes ]
 - Remove usage of // operator.

0.002003	2025-12-15

 [ Bug Fixes ]
 - Fix case of MRO::Compat dependency on Perl older than v5.10.0.

0.002002	2025-12-13

 [ Documentation ]
 - Minor pod fix.

0.002001	2025-12-13

 [ Documentation ]
 - Minor pod fix.

0.002000	2025-12-13

 - Added: Marlin::Role.

0.001001	2025-12-13

 [ Documentation ]
 - Include Class::Tiny in examples/benchmark.

0.001000	2025-12-12	Initial release
