Marlin ====== Created: 2025-12-11 Home page: Bug tracker: Maintainer: Toby Inkster (TOBYINK) 0.012001 2026-01-11 [ Bug Fixes ] - Better detection if parent classes use Class::XSConstructor directly. 0.012000 2026-01-11 [ Documentation ] - Marlin now has improved inheritance from foreign classes thanks to latest Class::XSConstructor. - Marlin now supports BUILDARGS thanks to latest Class::XSConstructor. - Update copyright years. [ Packaging ] - Require Class::XSConstructor 0.018001. [ Other ] - Updated: Improvements to Class::XSConstructor mean we should never need to generate pure Perl constructors, so stripped out all the code to do that and replaced with a few shims to send the right options to Class::XSConstructor. 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