This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: Mention perlthanks
[perl5.git] / pod / perldelta.pod
index b6c0542..4f46355 100644 (file)
@@ -98,10 +98,10 @@ the contents of this variable is dynamic; if you wish to store it beyond
 the lifetime of the match you must copy it to another array.
 
 C<%{^CAPTURE}> is equivalent to C<%+> (I<i.e.>, named captures).  Other than
-being more self documenting there is no difference between the two forms.
+being more self-documenting there is no difference between the two forms.
 
 C<%{^CAPTURE_ALL}> is equivalent to C<%-> (I<i.e.>, all named captures).
-Other than being more self documenting there is no difference between the
+Other than being more self-documenting there is no difference between the
 two forms.
 
 =head2 Declaring a reference to a variable
@@ -129,7 +129,7 @@ necessarily support Unicode 9.0.  L<Unicode::Normalize> does work on 9.0.
 Unicode 6.0 introduced an improved form of the Script (C<sc>) property, and
 called it Script_Extensions (C<scx>).  Perl now uses this improved
 version when a property is specified as just C<\p{I<script>}>.  This
-should make programs be more accurate when determining if a character is
+should make programs more accurate when determining if a character is
 used in a given script, but there is a slight chance of breakage for
 programs that very specifically needed the old behavior.  The meaning of
 compound forms, like C<\p{sc=I<script>}> are unchanged.  See
@@ -223,7 +223,7 @@ searches C<@INC> if the file is a relative path.  With the removal of C<".">,
 a simple C<do "file.pl"> will fail to read in and execute C<file.pl> from
 the current directory.  Since this is commonly expected behaviour, a new
 deprecation warning is now issued whenever C<do> fails to load a file which
-it otherwise would have found if dot had been in C<@INC>.
+it otherwise would have found if dot had been in C<@INC>.
 
 =back
 
@@ -246,6 +246,7 @@ path; I<e.g.>:
         # safe now
         push @INC, '.';
     }
+
     use "Foo::Bar"; # may load /some/trusted/directory/Foo/Bar.pm
     do "config.pl"; # may load /some/trusted/directory/config.pl
 
@@ -285,8 +286,8 @@ with something like
 Note that this only helps build and install an unfixed module.  It's
 possible for the tests to pass (since they were run under
 C<PERL_USE_UNSAFE_INC=1>), but for the module itself to fail to perform
-correctly in production.  In this case you may have to temporarily modify
-your script until such time as a fixed version of the module is released.
+correctly in production.  In this case, you may have to temporarily modify
+your script until a fixed version of the module is released.
 For example:
 
     use Foo::Bar;
@@ -309,7 +310,7 @@ C<@INC> for installation and testing, and this may mask deeper issues.  It
 could result in a module which passes tests and installs, but which
 fails at run time.
 
-During build, test and install, it will normally be the case that any perl
+During build, test, and install, it will normally be the case that any perl
 processes will be executing directly within the root directory of the
 untarred distribution, or a known subdirectory of that, such as F<t/>.  It
 may well be that F<Makefile.PL> or F<t/foo.t> will attempt to include
@@ -318,7 +319,7 @@ filenames, which will now fail.
 
 However, as described above, automatic tools like F<cpan> will (for now)
 set the C<PERL_USE_UNSAFE_INC> environment variable, which introduces
-dot during build.
+dot during build.
 
 This makes it likely that your existing build and test code will work, but
 this may mask issues with your code which only manifest when used after
@@ -342,7 +343,7 @@ subdirectory and insert that subdirectory into C<@INC> instead.
 
 If your runtime code has problems under the dotless C<@INC>, then the comments
 above on how to fix for script authors will mostly apply here too.  Bear in
-mind though that it is considered bad form for a module to globally add dot to
+mind though that it is considered bad form for a module to globally add dot to
 C<@INC>, since it introduces both a security risk and hides issues of
 accidentally requiring dot in C<@INC>, as explained above.
 
@@ -350,7 +351,7 @@ accidentally requiring dot in C<@INC>, as explained above.
 
 =head2 Escaped colons and relative paths in PATH
 
-On Unix systems, Perl treats any relative paths in the PATH environment
+On Unix systems, Perl treats any relative paths in the C<PATH> environment
 variable as tainted when starting a new process.  Previously, it was
 allowing a backslash to escape a colon (unlike the OS), consequently
 allowing relative paths to be considered safe if the PATH was set to
@@ -384,12 +385,12 @@ C<stderr> as for any other C<-D> switch.
 patterns are no longer permissible
 
 You have to now say something like C<"\{"> or C<"[{]"> to specify to
-match a LEFT CURLY BRACKET; otherwise it is a fatal pattern compilation
+match a LEFT CURLY BRACKET; otherwise, it is a fatal pattern compilation
 error.  This change will allow future extensions to the language.
 
 These have been deprecated since v5.16, with a deprecation message
 raised for some uses starting in v5.22.  Unfortunately, the code added
-to raise the message was buggy, and failed to warn in some cases where
+to raise the message was buggy and failed to warn in some cases where
 it should have.  Therefore, enforcement of this ban for these cases is
 deferred until Perl 5.30, but the code has been fixed to raise a
 default-on deprecation message for them in the meantime.
@@ -415,7 +416,7 @@ The value returned for C<scalar(%hash)> will no longer show information about
 the buckets allocated in the hash.  It will simply return the count of used
 keys.  It is thus equivalent to C<0+keys(%hash)>.
 
-A form of backwards compatibility is provided via
+A form of backward compatibility is provided via
 L<C<Hash::Util::bucket_ratio()>|Hash::Util/bucket_ratio> which provides
 the same behavior as
 C<scalar(%hash)> provided in Perl 5.24 and earlier.
@@ -446,7 +447,7 @@ option.
 =head2 C<POSIX::tmpnam()> has been removed
 
 The fundamentally unsafe C<tmpnam()> interface was deprecated in
-Perl 5.22 and has now been removed.  In its place you can use,
+Perl 5.22 and has now been removed.  In its place, you can use,
 for example, the L<File::Temp> interfaces.
 
 =head2 require ::Foo::Bar is now illegal.
@@ -472,7 +473,7 @@ has been deprecated to do so since Perl 5.22.
 
 =head2 String delimiters that aren't stand-alone graphemes are now deprecated
 
-In order for Perl to eventually allow string delimiters to be Unicode
+For Perl to eventually allow string delimiters to be Unicode
 grapheme clusters (which look like a single character, but may be
 a sequence of several ones), we have to stop allowing a single character
 delimiter that isn't a grapheme by itself.  These are unlikely to exist
@@ -523,15 +524,15 @@ optimized in some cases.
 =item *
 
 Remove some exceptions to creating Copy-on-Write strings. The string
-buffer growth algorithm has been altered slightly so that you're less
-likely to encounter a string which which can't be COWed.
+buffer growth algorithm has been slightly altered so that you're less
+likely to encounter a string which can't be COWed.
 
 =item *
 
 Better optimise array and hash assignment: where an array or hash appears
 in the LHS of a list assignment, such as C<(..., @a) = (...);>, it's
 likely to be considerably faster, especially if it involves emptying the
-array/hash. For example this code runs about a third faster compared to
+array/hash. For example, this code runs about a third faster compared to
 Perl 5.24.0:
 
     my @a;
@@ -1024,7 +1025,7 @@ unescaped uses of the two characters C<"}"> and C<"]"> in regular
 expression patterns (outside bracketed character classes) that are taken
 literally.  This brings them more in line with the C<")"> character which
 is always a metacharacter unless escaped.  Being a metacharacter only
-sometimes, depending on action at a distance, can lead to silently
+sometimes, depending on an action at a distance, can lead to silently
 having the pattern mean something quite different than was intended,
 which the S<C<re 'strict'>> mode is intended to minimize.
 
@@ -1172,7 +1173,7 @@ We have attempted to update the documentation to reflect the changes
 listed in this document.  If you find any we have missed, send email to
 L<perlbug@perl.org|mailto:perlbug@perl.org>.
 
-Additionally all references to Usenet have been removed, and the
+Additionally, all references to Usenet have been removed, and the
 following selected changes have been made:
 
 =head3 L<perlfunc>
@@ -1205,7 +1206,7 @@ the variables C<$a> and C<$b>.
 =item *
 
 In L<C<split()>|perlfunc/split> noted that certain pattern modifiers are
-legal, and added a caution about its use in Perls before v5.11,
+legal, and added a caution about its use in Perls before v5.11.
 
 =item *
 
@@ -1252,7 +1253,7 @@ Give another reason to use C<cBOOL> to cast an expression to boolean.
 
 =item *
 
-Note that there are macros C<TRUE> and C<FALSE> available to express
+Note that the macros C<TRUE> and C<FALSE> are available to express
 boolean values.
 
 =back
@@ -1362,7 +1363,7 @@ means that C<"#"> has to be escaped.
 
 =item *
 
-Add introductory material
+Add introductory material.
 
 =item *
 
@@ -1393,7 +1394,7 @@ regular expressions, and Perl compatibility with what it says.
 
 =item *
 
-Document C<@ISA>.  Was documented other places, not not in L<perlvar>.
+Document C<@ISA>.  It was documented in other places, but not in L<perlvar>.
 
 =back
 
@@ -1859,7 +1860,7 @@ Account for the possibility of DOS file endings.
 
 =item *
 
-Many improvements
+Many improvements.
 
 =back
 
@@ -1889,7 +1890,7 @@ Replace obscure character range with C<\w>.
 
 =item *
 
-try to be more helpful when tests fail.
+Try to be more helpful when tests fail.
 
 =back
 
@@ -1941,7 +1942,7 @@ built within a FreeBSD jail.
 
 =item *
 
-On systems that build a F<dtrace> object file (FreeBSD, Solaris and
+On systems that build a F<dtrace> object file (FreeBSD, Solaris, and
 SystemTap's dtrace emulation), copy the input objects to a separate
 directory and process them there, and use those objects in the link,
 since C<dtrace -G> also modifies these objects.
@@ -1982,7 +1983,7 @@ L<[perl #130133]|https://rt.perl.org/Public/Bug/Display.html?id=130133>
 
 Since v5.18, for testing purposes we have included support for
 building perl with a variety of non-standard, and non-recommended
-hash functions.  Since we do not recommend the use of these functions
+hash functions.  Since we do not recommend the use of these functions,
 we have removed them and their corresponding build options.  Specifically
 this includes the following build options:
 
@@ -2007,7 +2008,7 @@ B<will> have a F</usr/bin/perl> or similar provided by the OS.
 Reduce verbosity of C<make install.man>
 
 Previously, two progress messages were emitted for each manpage: one by
-installman itself, and one by the function in install_lib.pl that it calls to
+installman itself, and one by the function in F<install_lib.pl> that it calls to
 actually install the file.  Disabling the second of those in each case saves
 over 750 lines of unhelpful output.
 
@@ -2112,7 +2113,7 @@ The build process no longer emits an extra blank line before building each
 =head1 Testing
 
 Tests were added and changed to reflect the other additions and changes
-in this release.  In addition, these substantive changes were made:
+in this release.  Furthermore, these substantive changes were made:
 
 =over 4
 
@@ -2134,9 +2135,6 @@ minutes.  On slow systems they could otherwise take several hours, without
 significantly improving our understanding of the correctness of the code
 under test.
 
-In addition, some of those test cases have been split into more files, to
-allow them to be run in parallel on suitable systems.
-
 =item *
 
 A new internal facility allows analysing the time taken by the individual
@@ -2197,7 +2195,7 @@ L<[perl #130445]|https://rt.perl.org/Public/Bug/Display.html?id=130445>
 
 Perl now compiles under NetBSD on VAX machines.  However, it's not
 possible for that platform to implement floating-point infinities and
-NaNs compatibly with most modern systems, which implement the IEEE-754
+NaNs compatible with most modern systems, which implement the IEEE-754
 floating point standard.  The hexadecimal floating point (C<0x...p[+-]n>
 literals, C<printf %a>) is not implemented, either.
 The C<make test> passes 98% of tests.
@@ -2307,7 +2305,7 @@ L<http://stackoverflow.com/questions/30412951>).
 
 =item *
 
-It now automatically detects GCC versus Visual C, and sets the VC version
+It now automatically detects GCC versus Visual C and sets the VC version
 number on Win32.
 
 =back
@@ -2319,8 +2317,8 @@ over twenty years.
 
 =item OpenBSD 6
 
-OpenBSD 6 still does not support returning C<pid>, C<gid> or C<uid> with
-C<SA_SIGINFO>.  Make sure this is accounted for.
+OpenBSD 6 still does not support returning C<pid>, C<gid>, or C<uid> with
+C<SA_SIGINFO>.  Make sure to account for it.
 
 =item FreeBSD
 
@@ -2341,8 +2339,8 @@ L<[perl #130068]|https://rt.perl.org/Public/Bug/Display.html?id=130068>.
 
 A new API function L<C<sv_setpv_bufsize()>|perlapi/sv_setpv_bufsize>
 allows simultaneously setting the
-length and allocated size of the buffer in an C<SV>, growing the buffer if
-necessary.
+length and the allocated size of the buffer in an C<SV>, growing the
+buffer if necessary.
 
 =item *
 
@@ -2354,7 +2352,7 @@ like Perl-space C<$x = ''>, but with several optimisations.
 
 Several new macros and functions for dealing with Unicode and
 UTF-8-encoded strings have been added to the API, as well as some
-changes in
+changes in the
 functionality of existing functions (see L<perlapi/Unicode Support> for
 more details):
 
@@ -2429,16 +2427,16 @@ L<C<is_utf8_valid_partial_char_flags>|perlapi/is_utf8_valid_partial_char_flags>.
 
 =item *
 
-The  functions L<C<utf8n_to_uvchr>|perlapi/utf8n_to_uvchr> and its
+The functions L<C<utf8n_to_uvchr>|perlapi/utf8n_to_uvchr> and its
 derivatives have had several changes of behaviour.
 
 Calling them, while passing a string length of 0 is now asserted against
-in DEBUGGING builds, and otherwise returns the Unicode REPLACEMENT
+in DEBUGGING builds, and otherwise, returns the Unicode REPLACEMENT
 CHARACTER.   If you have nothing to decode, you shouldn't call the decode
 function.
 
 They now return the Unicode REPLACEMENT CHARACTER if called with UTF-8
-that has the overlong malformation, and that malformation is allowed by
+that has the overlong malformation and that malformation is allowed by
 the input parameters.  This malformation is where the UTF-8 looks valid
 syntactically, but there is a shorter sequence that yields the same code
 point.  This has been forbidden since Unicode version 3.1.
@@ -2447,7 +2445,7 @@ They now accept an input
 flag to allow the overflow malformation.  This malformation is when the
 UTF-8 may be syntactically valid, but the code point it represents is
 not capable of being represented in the word length on the platform.
-What "allowed" means in this case is that the function doesn't return an
+What "allowed" means, in this case, is that the function doesn't return an
 error, and it advances the parse pointer to beyond the UTF-8 in
 question, but it returns the Unicode REPLACEMENT CHARACTER as the value
 of the code point (since the real value is not representable).
@@ -2469,7 +2467,7 @@ A new function, L<C<utf8n_to_uvchr_error>|perlapi/utf8n_to_uvchr_error>,
 has been added for
 use by modules that need to know the details of UTF-8 malformations
 beyond pass/fail.  Previously, the only ways to know why a sequence was
-ill-formed was to capture and parse the generated diagnostics, or to do
+ill-formed was to capture and parse the generated diagnostics or to do
 your own analysis.
 
 =item *
@@ -2491,6 +2489,7 @@ you wish to travel.
 Two new macros which return useful utf8 byte sequences:
 
 L<C<BOM_UTF8>|perlapi/BOM_UTF8>
+
 L<C<REPLACEMENT_CHARACTER_UTF8>|perlapi/REPLACEMENT_CHARACTER_UTF8>
 
 =back
@@ -2507,7 +2506,7 @@ build option does.
 
 =item *
 
-Three new ops, C<OP_ARGELEM>, C<OP_ARGDEFELEM> and C<OP_ARGCHECK> have
+Three new ops, C<OP_ARGELEM>, C<OP_ARGDEFELEM>, and C<OP_ARGCHECK> have
 been added.  These are intended principally to implement the individual
 elements of a subroutine signature, plus any overall checking required.
 
@@ -2516,9 +2515,9 @@ elements of a subroutine signature, plus any overall checking required.
 The C<OP_PUSHRE> op has been eliminated and the C<OP_SPLIT> op has been
 changed from class C<LISTOP> to C<PMOP>.
 
-Formerly the first child of a split would be a pushre, which would have the
-split's regex attached to it. Now the regex is attached directly to the
-split op, and the pushre has been eliminated.
+Formerly the first child of a split would be a C<pushre>, which would have the
+C<split>'s regex attached to it. Now the regex is attached directly to the
+C<split> op, and the C<pushre> has been eliminated.
 
 =item *
 
@@ -3246,7 +3245,7 @@ best known as the author of the Perl & XML column on XML.com, he was a
 core contributor to AxKit, an XML server platform that became an Apache
 Foundation project.  He was a frequent speaker in the early days at
 OSCON, and most recently at YAPC::NA in Madison.  He was frequently on
-irc.perl.org as `ubu`, generally in the #axkit-dahut community, the
+irc.perl.org as ubu, generally in the #axkit-dahut community, the
 group responsible for YAPC::NA Asheville in 2011.
 
 Kip and his constant contributions to the community will be greatly
@@ -3312,6 +3311,15 @@ inappropriate to send to a publicly archived mailing list, then see
 L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
 for details of how to report the issue.
 
+=head1 Give Thanks
+
+If you wish to thank the Perl 5 Porters for the work we had done in Perl 5,
+you can do so by running the C<perlthanks> program:
+
+    perlthanks
+
+This will send an email to the Perl 5 Porters list with your show of thanks.
+
 =head1 SEE ALSO
 
 The F<Changes> file for an explanation of how to view exhaustive details on