In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/80f78131dd30483862380a927f70b00e4b9a288b?hp=428744c7579851ddf8435ff354febb87c4100545>
- Log ----------------------------------------------------------------- commit 80f78131dd30483862380a927f70b00e4b9a288b Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 00:38:39 2013 -0700 diagnostics.t: Adjust tests They are sensitive to changes in perldiag.pod M lib/diagnostics.t commit 32e006acda977717e27d728a7f2b3a5f56b28409 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 00:27:00 2013 -0700 perlvar: Donât mention dev version Also, use the v convention used elsewhere in the same doc. M pod/perlvar.pod commit 31a15f3623c7573ebe763f29efd34f380f903c32 Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 00:25:04 2013 -0700 checkAUTHORS.pl: Add alt addr for Kent Fredric M Porting/checkAUTHORS.pl commit f2b58637540209598dcb77ca7075309da337f4ad Author: Kent Fredric <[email protected]> Date: Sun Dec 16 02:13:39 2012 +1300 pod/perl5180delta.pod: Clarify %ENV Changes Clarifies the slightly vague ( and possibly wrong ) explanation for the change in %ENV behaviour. M pod/perl5180delta.pod commit a5effbbc577ce192c131f5cd79c2af95064ac714 Author: Kent Fredric <[email protected]> Date: Sat Dec 15 23:21:29 2012 +1300 pod/perlvar.pod: Document changes to %ENV Including Historical context, and relevance to IPC. reformatted with Jim Keenans Suggestions M pod/perlvar.pod commit 0008e9272b6c09eb4be3d94d5a360b989f72ba3a Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 00:13:20 2013 -0700 diag.t: Handle ckWARN2reg_d properly M t/porting/diag.t commit 6014bd264e4e1253b68f136e9decdbdb7f1ddfdb Author: James E Keenan <[email protected]> Date: Sat Feb 16 19:58:26 2013 -0500 Move folding rules warning from 'D' to 'S'. For RT #89648 M pod/perldiag.pod commit b23eb183132149ee555dc8b3584ec72b177e747e Author: Father Chrysostomos <[email protected]> Date: Sat Jul 13 00:07:20 2013 -0700 [perl #89648] Remove âPerl folding rules...â from dep cat This warning message: Perl folding rules are not up-to-date for 0x%x; please use the perlbug utility to report; is in both âregexpâ and âdeprecatedâ warning categories. It is under deprecated warnings so that it has a better chance of showing up. I think this logic is faulty, because itâs not the deprecatedness that makes a warning show up by default, but its defaultness; i.e., whether Perl_ck_warner_d is used instead of Perl_ck_warner. The wide character warning, for instance, is not under âdeprecatedâ, but only âutf8â. Yet itâs a default warning marked as S in perldiag. I think this message should be treated similarly (and listed with (S regex)). The next commit will update perldiag accordingly. M regcomp.c ----------------------------------------------------------------------- Summary of changes: Porting/checkAUTHORS.pl | 1 + lib/diagnostics.t | 2 +- pod/perl5180delta.pod | 16 ++++++++++------ pod/perldiag.pod | 10 ++++------ pod/perlvar.pod | 21 +++++++++++++++++++++ regcomp.c | 6 +++--- t/porting/diag.t | 1 + 7 files changed, 41 insertions(+), 16 deletions(-) diff --git a/Porting/checkAUTHORS.pl b/Porting/checkAUTHORS.pl index c1e108b..a2d60c9 100755 --- a/Porting/checkAUTHORS.pl +++ b/Porting/checkAUTHORS.pl @@ -685,6 +685,7 @@ kane\100dwim.org kane\100xs4all.net keith.s.thompson\100gmail.com kst\100mib.org ken\100mathforum.org kenahoo\100gmail.com + ken.williams\100thomsonreuters.com +kentfredric\100gmail.com kentnl\100cpan.org kroepke\100dolphin-services.de kay\100dolphin-services.de kst\100mib.org kst\100cts.com + kst\100SDSC.EDU diff --git a/lib/diagnostics.t b/lib/diagnostics.t index 206d2a4..497caaa 100644 --- a/lib/diagnostics.t +++ b/lib/diagnostics.t @@ -109,7 +109,7 @@ seek STDERR, 0,0; $warning = ''; warn "Perl folding rules are not up-to-date for 0xA; please use the perlbug utility to report; in regex; marked by <-- HERE in m/\ <-- HERE q/"; like $warning, - qr/regular expression folding rules/s, + qr/You used a regular expression with case-insensitive matching/s, '; works at the end of entries in perldiag.pod'; # Differences in spaces in warnings (Why not be nice and accept them?) diff --git a/pod/perl5180delta.pod b/pod/perl5180delta.pod index 66439413..86c4289 100644 --- a/pod/perl5180delta.pod +++ b/pod/perl5180delta.pod @@ -534,12 +534,16 @@ in L<perlsub/Lexical Subroutines>. =head2 Defined values stored in environment are forced to byte strings -A value stored in an environment variable has always been stringified. In this -release, it is converted to be only a byte string. First, it is forced to be -only a string. Then if the string is utf8 and the equivalent of -C<utf8::downgrade()> works, that result is used; otherwise, the equivalent of -C<utf8::encode()> is used, and a warning is issued about wide characters -(L</Diagnostics>). +A value stored in an environment variable has always been stringified when +inherited by child processes. + +In this release, when assigning to C<%ENV>, values are immediately stringified, +and converted to be only a byte string. + +First, it is forced to be a only a string. Then if the string is utf8 and the +equivalent of C<utf8::downgrade()> works, that result is used; otherwise, the +equivalent of C<utf8::encode()> is used, and a warning is issued about wide +characters (L</Diagnostics>). =head2 C<require> dies for unreadable files diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 2d31a09..9aca0db 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -4020,12 +4020,10 @@ that a method requires a package that has not been loaded. =item Perl folding rules are not up-to-date for 0x%X; please use the perlbug utility to report; in regex; marked by <-- HERE in m/%s/ -(D regexp, deprecated) You used a regular expression with -case-insensitive matching, and there is a bug in Perl in which the -built-in regular expression folding rules are not accurate. This -may lead to incorrect results. Please report this as a bug using the -L<perlbug> utility. (This message is marked deprecated, so that it by -default will be turned-on.) +(S regexp) You used a regular expression with case-insensitive matching, +and there is a bug in Perl in which the built-in regular expression +folding rules are not accurate. This may lead to incorrect results. +Please report this as a bug using the L<perlbug> utility. =item Perl_my_%s() not available diff --git a/pod/perlvar.pod b/pod/perlvar.pod index 4bbfba2..7cc0a18 100644 --- a/pod/perlvar.pod +++ b/pod/perlvar.pod @@ -410,6 +410,27 @@ The hash C<%ENV> contains your current environment. Setting a value in C<ENV> changes the environment for any child processes you subsequently C<fork()> off. +As of v5.18.0, both keys and values stored in C<%ENV> are stringified. + + my $foo = 1; + $ENV{'bar'} = \$foo; + if( ref $ENV{'bar'} ) { + say "Pre 5.18.0 Behaviour"; + } else { + say "Post 5.18.0 Behaviour"; + } + +Previously, only child processes received stringified values: + + my $foo = 1; + $ENV{'bar'} = \$foo; + + # Always printed 'non ref' + system($^X,'-e',q/print ( ref $ENV{'bar'} ? 'ref' : 'non ref' ) /); + +This happens because you can't really share arbitrary data structures with +foreign processes. + =item $SYSTEM_FD_MAX =item $^F diff --git a/regcomp.c b/regcomp.c index 4885c0b..e150654 100644 --- a/regcomp.c +++ b/regcomp.c @@ -574,9 +574,9 @@ static const scan_data_t zero_scan_data = (int)offset, RExC_precomp, RExC_precomp + offset); \ } STMT_END -#define ckWARN2regdep(loc,m, a1) STMT_START { \ +#define ckWARN2reg_d(loc,m, a1) STMT_START { \ const IV offset = loc - RExC_precomp; \ - Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED, WARN_REGEXP), \ + Perl_ck_warner_d(aTHX_ packWARN(WARN_REGEXP), \ m REPORT_LOCATION, \ a1, (int)offset, RExC_precomp, RExC_precomp + offset); \ } STMT_END @@ -13562,7 +13562,7 @@ parseit: default: /* Use deprecated warning to increase the * chances of this being output */ - ckWARN2regdep(RExC_parse, "Perl folding rules are not up-to-date for 0x%"UVXf"; please use the perlbug utility to report;", j); + ckWARN2reg_d(RExC_parse, "Perl folding rules are not up-to-date for 0x%"UVXf"; please use the perlbug utility to report;", j); break; } } diff --git a/t/porting/diag.t b/t/porting/diag.t index 69d9363..ce2a0e8 100644 --- a/t/porting/diag.t +++ b/t/porting/diag.t @@ -306,6 +306,7 @@ sub check_file { : $routine =~ /warner/ ? '[WDS]' : $routine =~ /warn/ ? 'S' : $routine =~ /ckWARN.*dep/ ? 'D' + : $routine =~ /ckWARN\d*reg_d/? 'S' : $routine =~ /ckWARN\d*reg/ ? 'W' : $routine =~ /vWARN\d/ ? '[WDS]' : '[PFX]'; -- Perl5 Master Repository
