diff options
Diffstat (limited to 'lib/Moose/Cookbook/Basics/Immutable.pod')
-rw-r--r-- | lib/Moose/Cookbook/Basics/Immutable.pod | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/lib/Moose/Cookbook/Basics/Immutable.pod b/lib/Moose/Cookbook/Basics/Immutable.pod new file mode 100644 index 0000000..c8dacbd --- /dev/null +++ b/lib/Moose/Cookbook/Basics/Immutable.pod @@ -0,0 +1,99 @@ +# PODNAME: Moose::Cookbook::Basics::Immutable +# ABSTRACT: Making Moose fast by making your class immutable + +__END__ + +=pod + +=encoding UTF-8 + +=head1 NAME + +Moose::Cookbook::Basics::Immutable - Making Moose fast by making your class immutable + +=head1 VERSION + +version 2.1405 + +=head1 SYNOPSIS + + package Point; + use Moose; + + has 'x' => ( isa => 'Int', is => 'ro' ); + has 'y' => ( isa => 'Int', is => 'rw' ); + + __PACKAGE__->meta->make_immutable; + +=head1 DESCRIPTION + +The Moose metaclass API provides a C<make_immutable()> method. Calling +this method does two things to your class. First, it makes it +faster. In particular, object construction and destruction are +effectively "inlined" in your class, and no longer invoke the meta +API. + +Second, you can no longer make changes via the metaclass API, such as +adding attributes. In practice, this won't be a problem, as you rarely +need to do this after first loading the class. + +=head1 CONCLUSION + +We strongly recommend you make your classes immutable. It makes your +code much faster, with a small compile-time cost. This will be +especially noticeable when creating many objects. + +=head1 AUTHORS + +=over 4 + +=item * + +Stevan Little <stevan.little@iinteractive.com> + +=item * + +Dave Rolsky <autarch@urth.org> + +=item * + +Jesse Luehrs <doy@tozt.net> + +=item * + +Shawn M Moore <code@sartak.org> + +=item * + +יובל קוג'מן (Yuval Kogman) <nothingmuch@woobling.org> + +=item * + +Karen Etheridge <ether@cpan.org> + +=item * + +Florian Ragwitz <rafl@debian.org> + +=item * + +Hans Dieter Pearcey <hdp@weftsoar.net> + +=item * + +Chris Prather <chris@prather.org> + +=item * + +Matt S Trout <mst@shadowcat.co.uk> + +=back + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2006 by Infinity Interactive, Inc.. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=cut |