Changes for version 0.016000 - 2026-01-16
- Bug Fixes
- Marlin::Attribute sometimes thought its link back to the package it was defined in was called `marlin` and sometimes `_marlin`; fix it to always be the former.
- Documentation
- Minor changes and reformatting of extended examples to make things cleaner.
- Other
- An attribute that creates lexical accessors in a parent class won't automatically create matching ones in child classes.
- In Perl versions too old to support lexical subs, use namespace::clean to clean away any non-lexical ones we wanted to be lexical.
- Marlin now checks for conflicts between methods and init_args used by different attributes, so you can't (for example) have two attributes that have the same-named reader method.
- Use attr=>{extends=>true} or Moose-like +attr to extend an inherited attribute.
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/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