X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FLexical-Types.git;a=blobdiff_plain;f=README;h=a2df39d391f3860d18744f023532b1d8f9172bd9;hp=12f52f132e3e6c6c7045c73e83c7c7a4a76d3173;hb=HEAD;hpb=10f2056e8e60beb34bab8d23b0bbd316afc9cb0b diff --git a/README b/README index 12f52f1..a2df39d 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ NAME Lexical::Types - Extend the semantics of typed lexicals. VERSION - Version 0.09 + Version 0.16 SYNOPSIS { package Str; } @@ -46,12 +46,16 @@ DESCRIPTION This pragma is not implemented with a source filter. -FUNCTIONS - "import [ as => [ $prefix | $mangler ] ]" - Magically called when writing "use Lexical::Types". All the occurences - of "my Str $x" in the current lexical scope will be changed to call at - each run a given method in a given package. The method and package are - determined by the parameter 'as' : +METHODS + "import" + use Lexical::Types; + use Lexical::Types as => $prefix; + use Lexical::Types as => sub { ... }; # = $mangler + + Magically called when "use Lexical::Types" is encountered. All the + occurences of "my Str $x" in the current lexical scope will be changed + to call at each run a given method in a given package. The method and + package are determined by the parameter 'as' : * If it's left unspecified, the "TYPEDSCALAR" method in the "Str" package will be called. @@ -73,7 +77,9 @@ FUNCTIONS definition will be skipped (thus it won't be altered to trigger a run-time hook) ; - use Lexical::Types as => sub { return $_[0] =~ /Str/ ? @_ : () }; + use Lexical::Types as => sub { + return $_[0] =~ /Str/ ? @_ : () + }; my Str $y; # calls Str->TYPEDSCALAR my Int $x; # nothing special @@ -96,7 +102,10 @@ FUNCTIONS $_[0]. "unimport" - Magically called when writing "no Lexical::Types". Turns the pragma off. + no Lexical::Types; + + Magically called when "no Lexical::Types" is encountered. Turns the + pragma off. RUN-TIME INITIALIZER METHOD The initializer method receives an alias to the pad slot of the @@ -148,7 +157,7 @@ INTEGRATION sub import { my $pkg = caller; - for (qw/Str Int/) { + for (qw) { my $type = __PACKAGE__ . '::' . $_; no strict 'refs'; no warnings 'redefine'; @@ -176,7 +185,17 @@ CONSTANTS True iff the module could have been built with thread-safety features enabled. + "LT_FORKSAFE" + True iff this module could have been built with fork-safety features + enabled. This will always be true except on Windows where it's false for + perl 5.10.0 and below . + CAVEATS + Using this pragma will cause a slight global slowdown of any subsequent + compilation phase that happens anywere in your code - even outside of + the scope of use of "use Lexical::Types" - which may become noticeable + if you rely heavily on numerous calls to "eval STRING". + The restrictions on the type (being either a defined package name or a constant) apply even if you use the 'as' option to redirect to another package, and are unlikely to find a workaround as this happens deep @@ -185,6 +204,11 @@ CAVEATS Only one mangler or prefix can be in use at the same time in a given scope. + Typed lexicals declarations that appear in code "eval"'d during the + global destruction phase of a spawned thread or pseudo-fork (the + processes used internally for the "fork" emulation on Windows) are + ignored. + The implementation was tweaked to work around several limitations of vanilla "perl" pragmas : it's thread safe, and doesn't suffer from a "perl 5.8.x-5.10.0" bug that causes all pragmas to propagate into @@ -195,7 +219,12 @@ CAVEATS addressed in perl 5.10. DEPENDENCIES - perl 5.8, XSLoader. + perl 5.8.4. + + A C compiler. This module may happen to build with a C++ compiler as + well, but don't rely on it, as no guarantee is made in this regard. + + XSLoader (standard since perl 5.6.0). SEE ALSO fields. @@ -219,16 +248,14 @@ SUPPORT perldoc Lexical::Types - Tests code coverage report is available at - . - ACKNOWLEDGEMENTS Inspired by Ricardo Signes. Thanks Florian Ragwitz for suggesting the use of constants for types. COPYRIGHT & LICENSE - Copyright 2009,2010 Vincent Pit, all rights reserved. + Copyright 2009,2010,2011,2012,2013,2014,2015,2017 Vincent Pit, all + rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.