X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FLexical-Types.git;a=blobdiff_plain;f=README;h=ce2b7f745f4fc874e8e3c99e4b3516e051096ee3;hp=919e0afe5d8cda6269335e27e72deae4b9c87fbf;hb=967fca89c944c8d7560c0d94d1982455bc62854d;hpb=ed2808f7949258e2a3f06d7038b0e40a63bab49e diff --git a/README b/README index 919e0af..ce2b7f7 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ NAME Lexical::Types - Extend the semantics of typed lexicals. VERSION - Version 0.12 + Version 0.13 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 @@ -182,6 +191,11 @@ CONSTANTS 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 @@ -190,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 @@ -205,7 +224,7 @@ DEPENDENCIES 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.006). + XSLoader (standard since perl 5.6.0). SEE ALSO fields. @@ -238,7 +257,8 @@ ACKNOWLEDGEMENTS Thanks Florian Ragwitz for suggesting the use of constants for types. COPYRIGHT & LICENSE - Copyright 2009,2010,2011 Vincent Pit, all rights reserved. + Copyright 2009,2010,2011,2012,2013,2014 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.