Changes for version 0.015000 - 2026-01-15
- Bug Fixes
- Constructing a new Marlin::Attribute object with added traits won't cause canonicalize_opts to be called twice.
- Delay installation of DESTROY until after class has finished compiling; otherwise DEMOLISH methods might still not be defined yet.
- Test Suite
- Improved tests for DESTROY.
- Other
- Eliminated dependency on Class::XSAccessor, though it is still listed as a dependency in META.json because it improves runtime speed when installed. In the future, when Class::XSConstructor is able to provide more accessor-like methods, Class::XSAccessor may be listed as a recommendation rather than a requirement.
- Eliminated dependency on Module::Runtime.
- Factor out common parts of Marlin extensions into Marlin::X, a role for use by people writing Marlin extensions.
- Significant internal refactoring and code tidying, including dogfooding a lot of the modules.
Documentation
comparing Moo, Moose, and class with Marlin
getting the most out of Marlin
Modules
🐟 pretty fast class builder with most Moo/Moose features 🐟
Marlin, but it's a role
quickly create struct-like classes
exports a few keywords it's nice to have with Marlin
role for Marlin extensions
Marlin extension to add a clone method to your class.
Marlin extension to make your constructor forgive undefs.
Marlin attribute extension for attribute aliases.
Marlin attribute extension for localizing attribute values.
Marlin attribute extension for lvalue accessors.
🐮 ❤️ 🐟 inherit from Marlin classes in Moo
🫎 ❤️ 🐟 inherit from Marlin classes in Moose
Provides
in lib/Marlin/Attribute.pm
in lib/MooseX/Marlin.pm
in lib/Marlin/TypeConstraint.pm
Examples
- examples/benchmark.pl
- examples/can_haz_xs.pl
- examples/lib/Local/Example/Core.pm
- examples/lib/Local/Example/Marlin.pm
- examples/lib/Local/Example/Moo.pm
- examples/lib/Local/Example/Moose.pm
- examples/lib/Local/Example/Mouse.pm
- examples/lib/Local/Example/Plain.pm
- examples/lib/Local/Example/Tiny.pm
- examples/peek_at_delegations.pl
- examples/test.pl