Mite
====
Created: 2011-12-08
Home page: <https://metacpan.org/release/Mite>
Bug tracker: <https://github.com/tobyink/p5-mite/issues>
Maintainer: Toby Inkster (TOBYINK) <tobyink@cpan.org>
0.012000 2022-12-12
- Mite shims should play more nicely with FatPacker and custom require
hooks.
0.011000 2022-11-09
- Added: The `locked` option for arrayref and hashref attributes.
0.010008 2022-08-14
- Added: `mite exec` command which compiles your project in memory to run
a script.
- Allow `!-defaults` in import list to suppress the default imports.
- If you build a MOP for your project, then Moose classes consuming Mite
roles will not have Mite's builtin subs added to them (like
__FINALIZE_APPLICATION__).
- If you build a MOP for your project, then Moose classes extending Mite
classes will know they need to rebuild the constructor when being made
immutable. (And you really should make them immutable!)
- If you use Moose to extend a Mite class and inherit its `DOES`/`does`
method, then the inherited method will now check with Moose to see if
your class does roles.
0.010007 2022-08-14
[ Packaging ]
- Previous release was missing its changelog entry.
0.010006 2022-08-14
- Updated: The goto $__NEXT__ feature implemented in
Mite::Signature::Compiler has been moved into the parent class,
Type::Params::Signature.
0.010005 2022-08-13
[ BACK COMPAT ]
- Mite now uses the PERL_ONLY environment variable to disable XS, not
MITE_PURE_PERL.
[ Documentation ]
- More interesting SYNOPSIS section in Mite.pm.
[ Other ]
- __META__ functions no longer have `no warnings qw(once)` because a
higher scope is already doing that.
0.010004 2022-08-13
- Use $Mite::COMPILING package variable to indicate when Mite is compiling
code, not MITE_COMPILE environment variable. This should be checked via
Your::Project::Shim::_is_compiling() though, if you need to check it at
all which is unlikely.
0.010003 2022-08-12
- Added: Support runtime application of roles to classes/objects.
0.010002 2022-08-12
- Further simplifications to Mite::Shim, bringing its line count down from
325 to 282.
- Move logic for Mite keywords out of Mite::Project and Mite::Shim and
into Mite::Package and the traits which are applied to its subclasses.
0.010001 2022-08-09
- Suppress building the __META__ method in classes which already inherit
it from their parent, like pre-0.010000 Mite did.
0.010000 2022-08-09
- Internal refactoring. Mite::Class is no longer a subclass of Mite::Role;
instead they are both subclasses of Mite::Package compose code from
various Mite::Trait::XYZ roles.
0.009003 2022-08-08
- Major improvements to how Type::Params-style signatures are inlined when
generating code for Sub::HandlesVia.
0.009002 2022-08-08
[ Bug Fixes ]
- Eliminate some void warnings.
[ Other ]
- Ensure that Sub::HandlesVia delegated methods are included when building
MOP.
0.009001 2022-08-08
[ Packaging ]
- Add Regexp::Util dependency. Type::Tiny can inline certain type
constraints better when it's installed.
[ Other ]
- Options hashrefs are now supported by the `extends` keyword. They were
already supported by `with` though that wasn't documented.
- When consuming a role, you can now alias methods.
- When consuming a role, you can now exclude methods.
- When extending a class or consuming a role, you can now specify a
minimum version.
0.009000 2022-08-07
[ Packaging ]
- Require a newer Type::Params, which supports the strictness option.
[ Other ]
- Added: Integrate Sub::HandlesVia support.
0.008003 2022-08-05
- Added: Add STRICT_MODE like Devel::StrictMode to the Mite shim exports.
- Added: Add an autolax mode (configurable in .mite/config) which makes a
lot of argument checking dependent on environment variables, running
fast and loose by default if enabled. I don't necessarily recommend
using this feature, but it now exists.
- Added: Non-XS readers, writers, accessors, clearers, and predicates now
check argument count, though there's also a skip_argc_check attribute
option to disable this. (The XS versions mostly do check though!)
0.008002 2022-08-03
- Added: Support enum => \@values as a shortcut to define enumerated
attributes.
- Added: Support handles => 1 and handles => 2 for enumerated attributes,
like MooseX::Enumeration and MooX::Enumeration.
0.008001 2022-08-03
- Added: Mite can now optionally call triggers when an attribute value is
supplied by defaults/builders.
- Added: Mite can now optionally skip type checks/coercions on attribute
values supplied by defaults/builders.
0.008000 2022-08-01
- Added: Mite attributes keep track of the file name and line number they
were defined on, as well as some other context; this is included in
comments in the generated .mite.pm file, and provided when building
Moose-compatible metaobjects.
- Added: Mite can optionally write a Your::Project::MOP module which
provides Moose integration for your classes and roles.
0.007006 2022-07-21
- If you extend an attribute with a default in a parent class, adding a
builder in the child class, the builder will successfully replace the
default. And vice versa.
- Make previous optimizations for isa => Object or isa =>
InstanceOf['Some::Class'] apply more often.
- Minor changes to some error messages thrown by method signatures.
- Mite will now complain if you attempt to provide both a default and a
builder for the same attribute.
0.007005 2022-07-21
- Builders are now used over defaults if an attribute has both, but you
shouldn't be doing that anyway.
- Check ref($thing) before calling Scalar::Util::weaken($thing).
- Slightly prettier code for isa checks of attributes where isa => Object
or isa => InstanceOf['Some::Class'].
- Slightly prettier code for setting defaults of attributes where isa =>
Bool.
0.007004 2022-07-20
- BUILD methods are now called before strict constructors are enforced.
- Improve comments in generated code.
- Type check error messages for slurpy parameters in method signatures no
longer mention Slurpy[] in the text of the message. (It should still be
clear from the variable name that it's the slurpy parameter which is
failing.)
0.007003 2022-07-17
- signature_for '+parent_class_method'
0.007002 2022-07-17
- Improvements to Mite's ability to self-compile.
0.007001 2022-07-17
- Improvements to the Mite::Type module internally used by Mite.
0.007000 2022-07-17
[ Documentation ]
- Explicitly document that Mite's objects are blessed hashrefs.
[ Other ]
- Added: New `signature_for` keyword, adding Type::Params-like signatures.
- Added: clone_on_read and clone_on_write options for attributes.
0.006013 2022-07-14
[ Documentation ]
- Fix some minor typos in the documentation for the isa option for
attributes.
[ Other ]
- Allow [] and {} as defaults for attributes.
0.006012 2022-07-13
- If a type constraint is a reference but isn't a Type::Tiny object, try
to coerce it to one. Note that the type still needs to be inlineable,
but this allows for MooseX::Types to often work (but then why are you
using Mite?), Sub::Quote, and also often Type::Library::Compiled types.
0.006011 2022-07-12
- Avoid creating do {} blocks in constructors and readers/accessors when
calling a coderef default.
- Avoid creating do {} blocks in the constructor with a temporary variable
when an attribute has no type constraint, but does have an eager default
and an init_arg. This may provide a very small speed boost.
- Ensure that BUILD methods see the original hashref returned by BUILDARGS
instead of altering it when processing aliases.
0.006010 2022-07-12
[ Test Suite ]
- Switch from Fennec to Test2::V0 and Test2::Tools::Spec.
[ Packaging ]
- Add Class::XSAccessor to runtime recommendations.
[ Other ]
- If a Mite class is directly inheriting from another Mite class in this
project, it will no longer define its own BUILDALL, DESTROY, or __META__
methods and instead relies in the inherited methods; if it doesn't
define any attributes it will also inherit its constructor.
0.006009 2022-07-11
[ Documentation ]
- Internally cleaned up the type constraints for the different options
when defining an attribute; documented them better.
0.006008 2022-07-11
- Added: clone option for attributes (stolen from MooseX::Extended).
0.006007 2022-07-11
[ Documentation ]
- Minor tweaks.
[ Other ]
- Minor tidying.
0.006006 2022-07-10
[ Bug Fixes ]
- Eliminate warning from `mite init`.
[ Documentation ]
- Include benchmarking results.
0.006005 2022-07-10
[ Documentation ]
- Minor documentation improvements.
0.006004 2022-07-10
[ Documentation ]
- Change abstracts for some modules
[ Other ]
- Added: Support `has $name => $default;` syntax like Mojo::Base and
Object::Simple.
0.006003 2022-07-10
[ Documentation ]
- Correct abstracts for some modules
0.006002 2022-07-10
[ Bug Fixes ]
- Fix various minor bugs which were causing warnings on older Perls.
[ Documentation ]
- Fix minor typo in documentation for guard keyword.
[ Other ]
- Added: New `mite preview FILENAME` command to preview the Perl code Mite
will generate for a file.
- The Mite development tool now uses Getopt::Kingpin and Module::Pluggable
instead of App::Cmd, as recent versions of App::Cmd dropped support for
Perl older than 5.20, limiting the versions of Perl the Mite development
tool could run under. The Mite development tool now runs on Perl 5.10.1
or above, and projects compiled with it run on Perl 5.8.1 and above.
0.006001 2022-07-09
[ Bug Fixes ]
- Eliminate some 'used only once' warnings from compiled mite.pm files.
[ Other ]
- Added: Make the guard function from the Mite shim exportable.
0.006000 2022-07-09
[ Documentation ]
- Split the long Mite::Manual::Syntax pod into three smaller documents:
Mite::Manual::Keywords, Mite::Manual::Attributes, and
Mite::Manual::Features.
[ Other ]
- Added: local_writer option for attributes.
- Added: lvalue option for attributes.
0.005004 2022-07-08
- Attributes are now aware of which class/role they're currently being
compiled into, in case they need to reach out to it for any information.
- More concise attribute initialization code in constructors; this mostly
makes a difference to attributes with a type check/coercion that have
both an init_arg and an eager default/builder.
- Support %s in attribute reader/writer/etc method names as a placeholder
for the attribute's name.
0.005003 2022-07-07
- Added: Provide blessed.
- Added: Support -all for imports.
- Dumps of references auto-generated by croak/carp/confess will no longer
use indentation.
- Improvements to the self-compiling process -- that is, the process that
Mite uses to compile Mite.
- Minor improvements to the Mite shim.
0.005002 2022-07-07
- Added: Provide carp/croak/confess.
- Added: does for attributes.
- Mite::Shim tidy-ups.
0.005001 2022-07-06
- Added: Mite::Shim will now inject namespace::autoclean into your
class/role if it is installed and you haven't opted out.
0.005000 2022-07-05
- Added: Attribute `isa` options can now refer to types in a project-wide
type library, without introducing a dependency on Type::Library for your
project.
<https://github.com/tobyink/p5-mite/issues/17>
- Added: Roles now have a `requires` keyword, and method modifiers in
roles implicitly require the methods they are modifying.
<https://github.com/tobyink/p5-mite/issues/13>
- Allow classes to extend non-Mite classes.
<https://github.com/tobyink/p5-mite/issues/16>
- Restore the separate BUILDALL method which had previously been removed
in Mite 0.001006.
0.004000 2022-07-04
- Added: Provide constants `ro`, `rw`, `rwp`, `lazy`, and `bare` constants
as an opt-in feature.
- Added: Provide constants `true` and `false` constants as an opt-in
feature.
- Added: Support `param` and `field` like MooseX::Extended as an opt-in
feature.
- Make the Mite::Shim import method smarter, allowing you to opt-in and
opt-out of features.
0.003001 2022-07-03
[ Bug Fixes ]
- Workaround for how Role::Tiny roles are applied to Mite classes
affecting Role::Hooks.
[ Other ]
- An error is now thrown if you use `is` when modifying an attribute with
a + sign.
- Attribute initialization in the constructor changed from alphabetical
order to declaration order, with attributes in parent classes
initialized before attributes in child classes. Attributes modified with
a + sign are treated as a new declaration, so initialized later.
0.003000 2022-07-03
[ Bug Fixes ]
- Fix method modifiers applying to inherited methods.
[ Packaging ]
- Remove dependency on version.pm.
[ Other ]
- Added: Mite classes and roles can consume Role::Tiny roles.
<https://github.com/tobyink/p5-mite/issues/10>
0.002004 2022-07-03
[ Documentation ]
- Fixed a couple of typos in the documentation for `accessor`.
[ Other ]
- Compiled .mite.pm files no longer require Perl 5.10.1 but should work on
Perl 5.8.1+ as long as MRO::Compat is installed.
<https://github.com/tobyink/p5-mite/issues/7>
- Mite::Shim will print a warning on Perl older than 5.14 if
Devel::GlobalDestruction isn't installed.
- More reliable (and tidier) quoting of strings in compiled .mite.pm
files.
<https://github.com/tobyink/p5-mite/issues/11>
0.002003 2022-07-02
[ Packaging ]
- Removed the TODO file and put the tasks in the issue tracker.
[ Other ]
- Added: Allow attribute defaults to be expressed as a reference to a
string of Perl code.
<https://github.com/tobyink/p5-mite/issues/4>
- More efficient implementation of strict constructors.
- Removed: Removed some code related to the unimplemented idea of dataref
attribtue defaults.
0.002002 2022-07-01
- Change how __FINALIZE_APPLICATION__ gets called for indirect role
applications.
0.002001 2022-07-01
[ Bug Fixes ]
- Fix for on-demand loading of roles and parent classes.
0.002000 2022-07-01
[ Documentation ]
- Mite::Manual::Missing is a new pod file that documents features found in
Moose/Moo which are not available in Mite.
[ Other ]
- Added: Roles
0.001013 2022-06-30
[ Documentation ]
- Documented what the default for is is.
- Improved documentation for alias.
[ Test Suite ]
- Add tests for is=>lazy.
[ Other ]
- Minor code cleanups, especially around alias.
0.001012 2022-06-30
[ Bug Fixes ]
- Cope with alias=>[] (and also alias=>undef).
[ Other ]
- Minor improvements in whitespace in output files.
0.001011 2022-06-30
- Also set $USES_MITE while Mite is compiling your class.
0.001010 2022-06-29
[ Documentation ]
- Document that writers/clearers are chainable.
[ Other ]
- Added: Set a $USES_MITE package variable in all classes built with Mite.
0.001009 2022-06-29
[ Bug Fixes ]
- Try fixing that error again.
0.001008 2022-06-29
[ Bug Fixes ]
- Don't explicitly disable warnings with `no warnings 'redundant'` as that
category won't work on older Perls
0.001007 2022-06-29
[ Packaging ]
- Fix changelog
[ Other ]
- Added: alias for attributes
<https://github.com/tobyink/p5-mite/issues/1>
0.001006 2022-06-29
- Added: DESTROY/DEMOLISH methods
- Added: Method modifiers
- Removed: The BUILDALL method was removed in favour of inlining it within
new
0.001005 2022-06-29
[ Documentation ]
- Minor improvements
[ Test Suite ]
- Improve tests for handles
0.001004 2022-06-29
[ Bug Fixes ]
- Strict constructor feature should use init_arg rather than attribute
names
[ Documentation ]
- Add Mite::Manual::Workflow and Mite::Manual::Syntax
0.001003 2022-06-29
[ Bug Fixes ]
- Fix regexp used to rewrite shim pod
0.001002 2022-06-29
[ Documentation ]
- Add stub pod to all modules
[ Packaging ]
- Hide the MY package from CPAN indexer
0.001001 2022-06-29
[ Packaging ]
- Switch to Dist::Inkt
[ Other ]
- Added: documentation for attributes
- Added: handles for attributes
0.001000 2022-06-28
[ Packaging ]
- Added version numbers to more modules. (Everything except the shim.)
- Changed version numbering scheme.
[ Other ]
- Mite is now self-hosting! It no longer requires Moo.
v0.0.9 2022-06-28
[ Bug Fixes ]
- Mite::Class shouldn't accidentally try to use Try::Tiny::XS to implement
strict constructors
[ Documentation ]
- Fix minor pod formatting inconsistency
[ Other ]
- Don't internally use roles, as the aim is to eventually be able to have
Mite use Mite instead of Moo, and Mite doesn't provide roles.
- Rename the `extends` method in Mite::Class to `superclasses` to avoid
confusion with the exported `extends` function
- Require Type::Tiny 1.014000
v0.0.8 2022-06-24
[ Bug Fixes ]
- Mite::Shim now copes better with + prefix on attribute names
[ Other ]
- Added: BUILD/BUILDALL
- Added: BUILDARGS
- Added: trigger for attributes
- Child classes no longer re-implement accessors for attributes defined in
parent classes, unless they have altered the attribute in some way
- has \@names is now supported, like Moose and Moo
v0.0.7 2022-06-23
- Avoid Mite::Shim and Type::Tiny from appearing in compiled modules so
they don't confuse the CPAN indexer.
v0.0.6 2022-06-23
- Added: coerce for attributes
- Added: perltidy option in .mite/config
- Added: weak_ref for attributes
- Allow type => $blessed_type for has. Using it will void your warranty.
- Clearers, setters, and accessors used as setters are now chainable
- Output accessor code in a stable order instead of hash order
- Support Types::Common::Numeric types
- Support Types::Common::String types
v0.0.5 2022-06-22
[ Bug Fixes ]
- Fix inlining type constraints
[ Other ]
- Hide Mite::Shim embedded in Mite projects from CPAN indexer
v0.0.4 2022-06-22
- Added: builder for attributes
- Added: is => lazy like Moo
- Added: isa for attributes
- Added: lazy for attributes
v0.0.3 2022-06-21
[ Bug Fixes ]
- Bugfixes
[ Other ]
- Added: accessor for attributes
- Added: clearer for attributes
- Added: is => rwp like Moo
- Added: predicate for attributes
- Added: reader for attributes
- Added: writer for attributes
v0.0.2 2022-06-21
[ Packaging ]
- New maintainer: TOBYINK
[ Other ]
- Added: Strict constructors
- Added: init_arg for attributes
- Added: required attributes
- Port from Mouse to Moo
v0.0.1 2014-07-19 Initial release