This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove gete?[ug]id caching
[perl5.git] / pod / perldelta.pod
index 33b9af4..7c26831 100644 (file)
@@ -129,8 +129,8 @@ previously given them, by replacing the final blank in each name by a
 hyphen.  Unicode also officially accepts names that Perl had deprecated,
 such as FILE SEPARATOR.  Now the only deprecated name is BELL.
 Finally, Perl now uses the new official names instead of the old
-recommended names for the first four code points in the list above (the
-ones which have the parentheses in them).
+(now considered obsolete) names for the first four code points in the
+list above (the ones which have the parentheses in them).
 
 Now that the names have been placed in the Unicode standard, these kinds
 of changes should not happen again, though corrections, such as to
@@ -212,6 +212,48 @@ and the API will not be considered stable until v5.16.
 
 See L<Unicode::UCD/prop_invmap()> for details on the new interface.
 
+=head2 C<$$> and C<getppid()> no longer emulate POSIX semantics under LinuxThreads
+
+The POSIX emulation of C<$$> and C<getppid()> under the obsolete
+LinuxThreads implementation has been removed (the C<$$> emulation was
+actually removed in v5.15.0). This only impacts users of Linux 2.4 and
+users of Debian GNU/kFreeBSD up to and including 6.0, not the vast
+majority of Linux installations that use NPTL threads.
+
+This means that C<getppid()> like C<$$> is now always guaranteed to
+return the OS's idea of the current state of the process, not perl's
+cached version of it.
+
+See the documentation for L<$$|perlvar/$$> for details.
+
+=head2 C<< $< >>, C<< $> >>, C<$(> and C<$)> are no longer cached
+
+Similarly to the changes to C<$$> and C<getppid()> the internal
+caching of C<< $< >>, C<< $> >>, C<$(> and C<$)> has been removed.
+
+When we cached these values our idea of what they were would drift out
+of sync with reality if someone (e.g. someone embedding perl) called
+sete?[ug]id() without updating C<PL_e?[ug]id>. Having to deal with
+this complexity wasn't worth it given how cheap the C<gete?[ug]id()>
+system call is.
+
+This change will break a handful of CPAN modules that use the XS-level
+C<PL_uid>, C<PL_gid>, C<PL_euid> or C<PL_egid> variables.
+
+The fix for those breakages is to use C<PerlProc_gete?[ug]id()> to
+retrieve them (e.g. C<PerlProc_getuid()>), and not to assign to
+C<PL_e?[ug]id> if you change the UID/GID/EUID/EGID. There is no longer
+any need to do so since perl will always retrieve the up-to-date
+version of those values from the OS.
+
+=head2 Which Non-ASCII characters get quoted by C<quotemeta> and C<\Q> has changed
+
+This is unlikely to result in a real problem, as Perl does not attach
+special meaning to any non-ASCII character, so it is currently
+irrelevant which are quoted or not.  This change fixes bug [perl #77654] and
+bring Perl's behavior more into line with Unicode's recommendations.
+See L<perlfunc/quotemeta>.
+
 =head1 Deprecations
 
 XXX Any deprecated features, syntax, modules etc. should be listed here.
@@ -291,15 +333,17 @@ C<die> [perl #106538].
 
 =item *
 
-L<Compress::Raw::Bzip2> has been upgraded from version 2.045 to version 2.048.
+L<Compress::Raw::Bzip2> has been upgraded from version 2.045 to version 2.049.
 
 =item *
 
-L<Compress::Raw::Zlib> has been upgraded from version 2.045 to version 2.048.
+L<Compress::Raw::Zlib> has been upgraded from version 2.045 to version 2.049.
+
+Include zlib 1.2.6 source
 
 =item *
 
-L<Compress::Zlib> has been upgraded from version 2.046 to version 2.048.
+L<Compress::Zlib> has been upgraded from version 2.046 to version 2.049.
 
 =item *
 
@@ -367,6 +411,18 @@ L<Parse::CPAN::Meta> has been upgraded from version 1.4401 to version 1.4402.
 
 =item *
 
+L<perlfaq> has been upgraded from version 5.0150038 to version 5.0150039.
+
+=item *
+
+L<Pod::Functions> has been upgraded from version 1.04 to version 1.05.
+
+F<Functions.pm> is now generated at perl build time from annotations in
+F<perlfunc.pod>. This will ensure that L<Pod::Functions> and L<perlfunc>
+remain in synchronisation.
+
+=item *
+
 L<Pod::Parser> has been upgraded from version 1.37 to version 1.51.
 
 =item *
@@ -379,6 +435,10 @@ before Perl 5.16 [perl #108470].
 
 =item *
 
+L<Socket> has been upgraded from version 1.97 to version 1.98.
+
+=item *
+
 L<Time::HiRes>  has been upgraded from version 1.9724 to version 1.9725.
 
 C<Time::HiRes::stat()> no longer corrupts the Perl stack.
@@ -393,14 +453,6 @@ The only change is to fix a formatting error in the Pod.
 
 L<Version::Requirements> has been upgraded from version 0.101021 to version 0.101022.
 
-=item *
-
-L<POSIX> has been upgraded from version 1.28 to version 1.29..
-
-It now has a wrapper for the C<strptime(3)> function, it's not
-exported on C<use POSIX;> due to backwards compatibility concerns, it
-has to be explicitly requested with C<use POSIX qw(strptime)>.
-
 =back
 
 =head2 Removed Modules and Pragmata
@@ -551,7 +603,17 @@ that they represent may be covered elsewhere.
 
 =item *
 
-XXX
+F<t/porting/pending-author.t> has been added, to avoid the problem of
+C<make test> passing 100%, but the subsequent git commit causing
+F<t/porting/authors.t> to fail, because it uses a "new" e-mail address.
+
+This test is only run if one is building inside a git checkout, B<and> one
+has made local changes. Otherwise it's skipped.
+
+=item *
+
+F<t/porting/perlfunc.t> has been added, to test that changes to
+F<pod/perlfunc.pod> do not inadvertently break the build of L<Pod::Functions>.
 
 =item *
 
@@ -717,6 +779,23 @@ C</[[:ascii:]]/> and C</[[:blank:]]/> now use locale rules under
 C<use locale> when the platform supports that.  Previously, they used
 the platform's native character set.
 
+=item *
+
+A regression introduced in 5.13.6 was fixed.  This involved an inverted
+bracketed character class in a regular expression that consisted solely
+of a Unicode property, that property wasn't getting inverted outside the
+Latin1 range.
+
+=item *
+
+C<quotemeta> now quotes consistently the same non-ASCII characters under
+C<use feature 'unicode_strings'>, regardless of whether the string is
+encoded in UTF-8 or not, hence fixing the last vestiges (we hope) of the
+infamous L<perlunicode/The "Unicode Bug">.  [perl #77654].
+
+Which of these code points is quoted has changed, based on Unicode's
+recommendations.  See L<perlfunc/quotemeta> for details.
+
 =back
 
 =head1 Known Problems