Changes for version 0.013000 - 2026-01-12

  • Test Suite
    • Add a test for foreign inheritance.
  • Other
    • Added: Attributes now support an undef_tolerant option.
    • Added: Marlin::X::UndefTolerant plugin to automatically apply undef_tolerant option to all attributes in a class or role (except those that don't make sense).
    • If you try to inherit from a class that uses Marlin::XAttribute::Alias in Moose, it will try to load MooseX::Aliases and use that, issuing a warning if the module is missing.
    • If you try to inherit from a class that uses Marlin::XAttribute::Lvalue in Moose, it will try to load MooseX::LvalueAttribute and use that, issuing a warning if the module is missing.
    • Marlin::X::Clone understands about required attributes and undef_tolerant attributes.
    • Moved a lot of the code for Moo/Moose compatibility into MooX::Marlin and MooseX::Marlin, so it clutters up the main Marlin modules less.

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
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