Changes:
0.59 Tue October 14, 2008
* Moose
- Add abridged documentation for builder/default/initializer/
predicate, and link to more details sections in
Class::MOP::Attribute. (t0m)
* Moose::Util::TypeConstraints
- removed prototypes from all but the &-based stuff (mst)
* Moose::Util::TypeConstraints
- Creating a anonymous subtype with both a constraint and a
message failed with a very unhelpful error, but should just
work. Reported by t0m. (Dave Rolsky)
* Tests
- Some tests that used Test::Warn if it was available failed
with older versions of Test::Warn. Reported by Fayland. (Dave
Rolsky)
- Test firing behavior of triggers in relation to builder/default/
lazy_build. (t0m)
- Test behavior of equals/is_a_type_of/is_a_subtype_of for all
kinds of supported type. (t0m)
* Moose::Meta::Class
- In create(), do not pass "roles" option to the superclass
- added related test that creates an anon metaclass with
a required attribute
* Moose::Meta::TypeConstraint::Class
* Moose::Meta::TypeConstraint::Role
- Unify behavior of equals/is_a_type_of/is_a_subtype_of with
other types (as per change in 0.55_02). (t0m)
* Moose::Meta::TypeConstraint::Registry
- Fix warning when dealing with unknown type names (t0m)
* Moose::Util::TypeConstraints
- Reverted changes from 0.58 related to handle parameterized
types. This caused random failures on BSD and Win32 systems,
apparently related to the regex engine. This means that Moose
can no longer parse structured type constraints like
ArrayRef[Int,Int] or HashRef[name=>Str]. This will be
supported in a slightly different way via MooseX::Types some
time in the future. (Dave Rolsky)
to trigger/signal a rebuild for the transition 5.8.8 -> 5.10.0.
The list of packages is computed by finding all packages which end
up having either of PERL5_USE_PACKLIST, BUILDLINK_API_DEPENDS.perl,
or PERL5_PACKLIST defined in their make setup (tested via
"make show-vars VARNAMES=...").
Changes:
0.58
!! This release has an incompatible change regarding !!
!! how roles add methods to a class !!
* Roles and role application
! Roles now add methods by calling add_method, not
alias_method. They make sure to always provide a method
object, which will be cloned internally. This means that it is
now possible to track the source of a method provided by a
role, and even follow its history through intermediate roles.
This means that methods added by a role now show up when
looking at a class's method list/map. (Dave Rolsky)
* Makefile.PL
- From this release on, we'll try to maintain a list of
conflicting modules, and warn you if you have one
installed. For example, this release conflicts with ...
- MooseX::Singleton <= 0.11
- MooseX::Params::Validate <= 0.05
- Fey::ORM <= 0.10
In general, we try to not break backwards compatibility for
most Moose users, but MooseX modules and other code which
extends Moose's metaclasses is often affected by very small
changes in the Moose internals.
* Moose::Meta::Method::Delegation
* Moose::Meta::Attribute
- Delegation methods now have their own method class. (Dave
Rolsky)
* Moose::Meta::TypeConstraint::Parameterizable
- Added a new method 'parameterize' which is basically a factory
for the containing constraint. This makes it easier to create
new types of parameterized constraints. (jnapiorkowski)
* Moose::Meta::TypeConstraint::Union
- Changed the way Union types canonicalize their names to follow
the normalized TC naming rules, which means we strip all
whitespace. (jnapiorkowski)
* Moose::Util::TypeConstraints
- Parameter and Union args are now sorted, this makes Int|Str
the same constraint as Str|Int. (jnapiorkowski)
- Changes to the way Union types are parsed to more correctly
stringify their names. (jnapiorkowski)
- When creating a parameterized type, we now use the new
parameterize method. (jnapiorkowski)
- Incoming type constraint strings are now normalized to remove
all whitespace differences. (jnapiorkowski)
- Changed the way we parse type constraint strings so that we now
match TC[Int,Int,...] and TC[name=>Str] as parameterized type
constraints. This lays the foundation for more flexible type
constraint implementations.
* Tests and docs for all the above. (jnapiorkowski)
* Moose::Exporter
* Moose
- Moose::Exporter will no longer remove a subroutine that the
exporting package re-exports. Moose re-exports the
Carp::confess function, among others. The reasoning is that we
cannot know whether you have also explicitly imported those
functions for your own use, so we err on the safe side and
always keep them. (Dave Rolsky)
- added tests for this (rafl)
* Moose::Meta::Class
- Changes to how we fix metaclass compatibility that are much
too complicated to go into. The summary is that Moose is much
less likely to complain about metaclass incompatibility
now. In particular, if two metaclasses differ because
Moose::Util::MetaRole was used on the two corresponding
classes, then the difference in roles is reconciled for the
subclass's metaclass. (Dave Rolsky)
- Squashed an warning in _process_attribute (thepler)
* Moose::Meta::Role
- throw exceptions (sooner) for invalid attribute names (thepler)
- added tests for this (thepler)
* Moose::Util::MetaRole
- If you explicitly set a constructor or destructor class for a
metaclass object, and then applied roles to the metaclass,
that explicitly set class would be lost and replaced with the
default.
* Moose::Meta::Class
* Moose::Meta::Attribute
* Moose::Meta::Method
* Moose
* Moose::Object
* Moose::Error::Default
* Moose::Error::Croak
* Moose::Error::Confess
- All instances of confess() changed to use overridable
C<throw_error> method. This method ultimately calls a class
constructor, and you can change the class being called. In
addition, errors now pass more information than just a string.
The default C<error_class> behaves like C<Carp::confess>, so
the behavior is not visibly different for end users.
Package changes: add all required Perl modules for test target as
build dependencies
Changes:
0.57 Wed September 3, 2008
* Moose::Intro
- A new bit of doc intended to introduce folks familiar with
"standard" Perl 5 OO to Moose concepts. (Dave Rolsky)
* Moose::Unsweetened
- Shows examples of two classes, each done first with and then
without Moose. This makes a nice parallel to
Moose::Intro. (Dave Rolsky)
* Moose::Util::TypeConstraints
- Fixed a bug in find_or_parse_type_constraint so that it
accepts a Moose::Meta::TypeConstraint object as the parent
type, not just a name (jnapiorkowski)
- added tests (jnapiorkowski)
* Moose::Exporter
- If Sub::Name was not present, unimporting failed to actually
remove some sugar subs, causing test failures (Dave Rolsky)
0.56 Mon September 1, 2008
For those not following the series of dev releases, there are
several major changes in this release of Moose.
! Moose::init_meta should now be called as a method. See the
docs for details.
- Major performance improvements by nothingmuch.
- New modules for extension writers, Moose::Exporter and
Moose::Util::MetaRole by Dave Rolsky.
- Lots of doc improvements and additions, especially in the
cookbook sections.
- Various bug fixes.
* Removed all references to the experimental-but-no-longer-needed
Moose::Meta::Role::Application::ToMetaclassInstance.
* Require Class::MOP 0.65.
0.55_04 Sat August 30, 2008
* Moose::Util::MetaRole
* Moose::Cookbook::Extending::Recipe2
- This simplifies the application of roles to any meta class, as
well as the base object class. Reimplemented metaclass traits
using this module. (Dave Rolsky)
* Moose::Cookbook::Extending::Recipe1
- This a new recipe, an overview of various ways to write Moose
extensions (Dave Rolsky)
* Moose::Cookbook::Extending::Recipe3
* Moose::Cookbook::Extending::Recipe4
- These used to be Extending::Recipe1 and Extending::Recipe2,
respectively.
0.55_03 Fri August 29, 2008
* No changes from 0.55_02 except increasing the Class::MOP
dependency to 0.64_07.
0.55_02 Fri August 29, 2008
* Makefile.PL and Moose.pm
- explicitly require Perl 5.8.0+ (Dave Rolsky)
* Moose::Util::TypeConstraints
- Fix warnings from find_type_constraint if the type is not
found (t0m).
* Moose::Meta::TypeConstraint
- Predicate methods (equals/is_a_type_of/is_subtype_of) now
return false if the type you specify cannot be found in the
type registry, rather than throwing an unhelpful and
coincidental exception. (t0m).
- added docs & test for this (t0m)
* Moose::Meta::TypeConstraint::Registry
- add_type_constraint now throws an exception if a parameter is
not supplied (t0m).
- added docs & test for this (t0m)
* Moose::Cookbook::FAQ
- Added a faq entry on the difference between "role" and "trait"
(t0m)
* Moose::Meta::Role
- Fixed a bug that caused role composition to not see a required
method when that method was provided by another role being
composed at the same time. (Dave Rolsky)
- test and bug finding (tokuhirom)
0.55_01 Wed August 20, 2008
!! Calling Moose::init_meta as a function is now !!
!! deprecated. Please see the Moose.pm docs for details. !!
* Moose::Meta::Method::Constructor
- Fix inlined constructor so that values produced by default
or builder methods are coerced as required. (t0m)
- added test for this (t0m)
* Moose::Meta::Attribute
- A lazy attribute with a default or builder did not attempt to
coerce the default value. The immutable code _did_
coerce. (t0m)
- added test for this (t0m)
* Moose::Exporter
- This is a new helper module for writing "Moose-alike"
modules. This should make the lives of MooseX module authors
much easier. (Dave Rolsky)
* Moose
* Moose::Cookbook::Meta::Recipe5
- Implemented metaclass traits (and wrote a recipe for it):
use Moose -traits => 'Foo'
This should make writing small Moose extensions a little
easier (Dave Rolsky)
* Moose::Cookbook::Basics::Recipe1
- Removed any examples of direct hashref access, and applied an
editorial axe to reduce verbosity. (Dave Rolsky)
* Moose::Cookbook::Basics::Recipe1
- Also applied an editorial axe here. (Dave Rolsky)
* Moose
* Moose::Cookbook::Extending::Recipe1
* Moose::Cookbook::Extending::Recipe2
- Rewrote extending and embedding moose documentation and
recipes to use Moose::Exporter (Dave Rolsky)
* Moose
* Moose::Role
- These two modules now warn when you load them from the main
package "main" package, because we will not export sugar to
main. Previously it just did nothing. (Dave Rolsky)
* Moose::Role
- Now provide an init_meta method just like Moose.pm, and you
can call this to provide an alternate role metaclass. (Dave
Rolsky and nothingmuch)
- get_method_map now respects the package cache flag (nothingmuch)
* Moose::Meta::Role
- Two new methods - add_method and wrap_method_body
(nothingmuch)
* many modules
- Optimizations including allowing constructors to accept hash
refs, making many more classes immutable, and making
constructors immutable. (nothingmuch)
(while here adjust MASTER_SITES).
Changes:
0.55 Sun August 3, 2008
* Moose::Meta::Attribute
- breaking down the way 'handles' methods are
created so that the process can be more easily
overridden by subclasses (stevan)
* Moose::Meta::TypeConstraint
- fixing what is passed into a ->message with
the type constraints (RT #37569)
- added tests for this (Charles Alderman)
* Moose::Util::TypeConstraints
- fix coerce to accept anon types like subtype can (mst)
* Moose::Cookbook
- reorganized the recipes into sections - Basics, Roles, Meta,
Extending - and wrote abstracts for each section (Dave Rolsky)
* Moose::Cookbook::Basics::Recipe10
- A new recipe that demonstrates operator overloading
in combination with Moose. (bluefeet)
* Moose::Cookbook::Meta::Recipe1
- an introduction to what meta is and why you'd want to make
your own metaclass extensions (Dave Rolsky)
* Moose::Cookbook::Meta::Recipe4
- a very simple metaclass example (Dave Rolsky)
* Moose::Cookbook::Extending::Recipe1
- how to write a Moose-alike module to use your own object base
class (Dave Rolsky)
* Moose::Cookbook::Extending::Recipe2
- how to write modules with an API just like C<Moose.pm> (Dave
Rolsky)
* all documentation
- Tons of fixes, both syntactical and grammatical (Dave
Rolsky, Paul Fenwick)
Packages Collection.
Moose is an extension of the Perl 5 object system.
The main goal of Moose is to make Perl 5 Object Oriented programming
easier, more consistent and less tedious. With Moose you can to
think more about what you want to do and less about the mechanics
of OOP.
Additionally, Moose is built on top of Class::MOP, which is a
metaclass system for Perl 5. This means that Moose not only makes
building normal Perl 5 objects better, but it provides the power
of metaclass programming as well.