# Type::Tiny::Manual::Installation - phpMan

## NAME
    [Type::Tiny::Manual::Installation] - how to install [Type::Tiny]

## MANUAL
    Installing Type-Tiny should be straightforward.

  Installation with cpanminus
    If you have cpanm, you only need one line:

      % cpanm [Type::Tiny]

    If you are installing into a system-wide directory, you may need to pass
    the "-S" flag to cpanm, which uses sudo to install the module:

      % cpanm -S [Type::Tiny]

  Installation with the CPAN Shell
    Alternatively, if your CPAN shell is set up, you should just be able to
    do:

      % cpan [Type::Tiny]

  Manual Installation
    As a last resort, you can manually install it. Download the tarball and
    unpack it.

    Consult the file META.json for a list of pre-requisites. Install these
    first.

    To build Type-Tiny:

      % perl Makefile.PL
      % make && make test

    Then install it:

      % make install

    If you are installing into a system-wide directory, you may need to run:

      % sudo make install

  Dependencies
    [Type::Tiny] requires at least Perl 5.6.1, though certain Unicode-related
    features (e.g. non-ASCII type constraint names) may work better in newer
    versions of Perl.

    [Type::Tiny] requires [Exporter::Tiny], a module that was previously bundled
    in this distribution, but has since been spun off as a separate
    distribution. Don't worry - it's quick and easy to install.

    At run-time, [Type::Tiny] also requires the following modules: B,
    [B::Deparse], Carp, [Data::Dumper], [Scalar::Util], [Text::Balanced], overload,
    strict and warnings. All of these come bundled with Perl itself. Prior
    to Perl 5.8, [Scalar::Util] and [Text::Balanced] do not come bundled with
    Perl and will need installing separately from the CPAN.

    Certain features require additional modules. Tying a variable to a type
    constraint (e.g. "tie my $count, Int") requires [Type::Tie]; stack traces
    on exceptions require [Devel::StackTrace]. The [Reply::Plugin::TypeTiny]
    plugin for Reply requires Reply (obviously). [Devel::LexAlias] may
    *slightly* increase the speed of some of [Type::Tiny]'s compiled coderefs.

    [Type::Tiny::XS] is not required, but if available provides a speed boost
    for some type checks. (Setting the environment variable
    "PERL_TYPE_TINY_XS" to false, or setting "PERL_ONLY" to true will
    suppress the use of [Type::Tiny::XS], even if it is available.)

    The test suite additionally requires [Test::More], [Test::Fatal] and
    [Test::Requires]. [Test::More] comes bundled with Perl, but if you are using
    a version of Perl older than 5.14, you will need to upgrade to at least
    [Test::More] version 0.96. [Test::Requires] and [Test::Fatal] (plus [Try::Tiny]
    which [Test::Fatal] depends on) are bundled with [Type::Tiny] in the "inc"
    directory, so you do not need to install them separately.

    If using [Type::Tiny] in conjunction with Moo, then at least Moo 1.006000
    is recommended. If using [Type::Tiny] with Moose, then at least Moose
    2.0000 is recommended. If using [Type::Tiny] with Mouse, then at least
    Mouse 1.00 is recommended. [Type::Tiny] is mostly untested against older
    versions of these packages.

   [Type::Tiny] and cperl
    cperl <<http://perl11.org/cperl/>> is an extended version of Perl with
    various incompatible changes from the official Perl 5 releases.

    As of [Type::Tiny] 1.010001, cperl is a supported platform for [Type::Tiny]
    with some caveats. At the time of writing, Moose will not install on the
    latest cperl releases, so using [Type::Tiny] with Moose on cperl is
    untested. Moo can be forced to install, and [Type::Tiny] is verified to
    work with Moo on cperl. cperl not only enables a new warnings category
    called "shadow" (which is good; they're potentially useful) but switches
    on shadow warnings by default (which is annoying). [Type::Tiny] does not
    (and likely will never) attempt to work around these warnings. If the
    warnings bother you, you should be able to catch them using
    $SIG{__WARN__}. Certain features of [Eval::TypeTiny] are broken under
    cperl, but they're not thought to have any practical effect on
    [Type::Tiny] or its other bundled modules.

## NEXT STEPS
    Here's your next step:

    *   [Type::Tiny::Manual::UsingWithMoo]

        Basic use of [Type::Tiny] with Moo, including attribute type
        constraints, parameterized type constraints, coercions, and method
        parameter checking.

## AUTHOR
    Toby Inkster <<tobyink@cpan.org>>.

## COPYRIGHT AND LICENCE
    This software is copyright (c) 2013-2014, 2017-2021 by Toby Inkster.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.

## DISCLAIMER OF WARRANTIES
    THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
    WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
    MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.

