- defines attributes via import arguments
- generates read-write accessors
- supports lazy attribute defaults
- supports custom accessors
- superclass provides a standard new constructor
- new takes a hash reference or list of key/value pairs
- new supports providing BUILDARGS to customize constructor options
- new calls BUILD for each class from parent to child
- superclass provides a DESTROY method
- DESTROY calls DEMOLISH for each class from child to parent
Multiple-inheritance is possible, with superclass order determined via mro::get_linear_isa.
It uses no non-core modules for any recent Perl. On Perls older than v5.10 it requires MRO::Compat. On Perls older than v5.14, it requires Devel::GlobalDestruction.