X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/14a04b52facab653ae79cffba8628592ae112b6d..364b4e90ddaca97dd7233f3266dbaa36aabbe6f5:/pod/perldelta.pod diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 9cdf700..5c8478b 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -1,19 +1,7 @@ =encoding utf8 -=for comment -To do: -df8c7dee Fix segfault in filehandle duplication -b66f3475 Fix PerlIO_get_cnt and friends -e94bb470 install useful Regexp::CARP_TRACE from Carp -9d32676e [perl #117265] fix various problems with safesyscalls -9c7618be regcomp.c: Use Perl_form() instead of buggy sprintf -531d75b0 [perl #89502]: Add support for Atari FreeMiNT platform - =head1 NAME -[ this is a template for a new perldelta file. Any text flagged as XXX needs -to be processed before release. ] - perldelta - what is new for perl v5.19.4 =head1 DESCRIPTION @@ -24,18 +12,8 @@ release. If you are upgrading from an earlier release such as 5.19.2, first read L, which describes differences between 5.19.2 and 5.19.3. -=head1 Notice - -XXX Any important notices here - =head1 Core Enhancements -XXX New core language features go here. Summarize user-visible core language -enhancements. Particularly prominent performance optimisations could go -here, but most should go in the L section. - -[ List each enhancement as a =head2 entry ] - =head2 C now uses a consistent random number generator Previously perl would use a platform specific random number generator, varying @@ -57,6 +35,10 @@ available. The regular expression engine now supports strings longer than 2**31 characters. [perl #112790, #116907] +The functions PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt and +PerlIO_set_ptrcnt now have SSize_t, rather than int, return values and +parameters. + =head2 New slice syntax The new C<%hash{...}> and C<%array[...]> syntax returns a list of key/value (or @@ -64,21 +46,13 @@ index/value) pairs. =head2 EBCDIC support -Core Perl now mostly works on EBCDIC platforms. This is not true of -many modules, including some which are shipped with this release. If -you have resources to help continue this process, including test -machines, send email to L. - -As a result of this, certain C functions are now deprecated; see -L. - -=head1 Security - -XXX Any security-related notices go here. In particular, any security -vulnerabilities closed should be noted here rather than in the -L section. +Core Perl now mostly works on EBCDIC platforms. This is not true of many +modules, including some which are shipped with this release. If you have +resources to help continue this process, including test machines, send email to +L. -[ List each security issue as a =head2 entry ] +As a result of this, certain XS functions are now deprecated; see L. =head1 Incompatible Changes @@ -140,43 +114,15 @@ numeric values under the hood.) =head2 Literal control characters in variable names -This deprecation affects things like C<$\cT>, where \cT is a literal -control in the source code. Surprisingly, it appears that originally -this was intended as the canonical way of accessing variables like -C<$^T>, with the caret form only being added as an alternative. - -The literal control form is being deprecated for two main reasons: It -has what are likely unfixable bugs, such as C<$\cI> not working as an -alias for C<$^I>, and their usage not being portable to non-ASCII -platforms: While C<$^T> will work everywhere, C<\cT> is whitespace in -EBCDIC. - -=head2 Module removals - -XXX Remove this section if inapplicable. - -The following modules will be removed from the core distribution in a -future release, and will at that time need to be installed from CPAN. -Distributions on CPAN which require these modules will need to list them as -prerequisites. - -The core versions of these modules will now issue C<"deprecated">-category -warnings to alert you to this fact. To silence these deprecation warnings, -install the modules in question from CPAN. - -Note that these are (with rare exceptions) fine modules that you are encouraged -to continue to use. Their disinclusion from core primarily hinges on their -necessity to bootstrapping a fully functional, CPAN-capable Perl installation, -not usually on concerns over their design. - -=over - -XXX Note that deprecated modules should be listed here even if they are listed -as an updated module in the L section. - -=back +This deprecation affects things like $\cT, where \cT is a literal control in +the source code. Surprisingly, it appears that originally this was intended as +the canonical way of accessing variables like $^T, with the caret form only +being added as an alternative. -[ List each other deprecation as a =head2 entry ] +The literal control form is being deprecated for two main reasons. It has what +are likely unfixable bugs, such as $\cI not working as an alias for $^I, and +their usage not being portable to non-ASCII platforms: While $^T will work +everywhere, \cT is whitespace in EBCDIC. [perl #119123] =head1 Performance Enhancements @@ -191,26 +137,6 @@ to those compiled under C. =head1 Modules and Pragmata -XXX All changes to installed files in F, F, F and F -go here. If Module::CoreList is updated, generate an initial draft of the -following sections using F, which prints stub -entries to STDOUT. Results can be pasted in place of the '=head2' entries -below. A paragraph summary for important changes should then be added by hand. -In an ideal world, dual-life modules would have a F file that could be -cribbed. - -[ Within each section, list entries as a =item entry ] - -=head2 New Modules and Pragmata - -=over 4 - -=item * - -XXX - -=back - =head2 Updated Modules and Pragmata =over 4 @@ -231,9 +157,9 @@ C, changing the return value from a C object on a C C to C. C again returns a C object in this case. [perl #119351] -B version 1.44 (perl 5.19.2) introduced three new B::OP methods, -C, C, C and C, but these have never -actually worked until now. They used to croak. +L version 1.44 (Perl 5.19.2) introduced four new B::OP methods, C, +C, C and C, but these have never actually worked +until now. They used to croak. =item * @@ -262,6 +188,11 @@ internally represented. =item * +C also now shows subroutine arguments that are references to regexp +objects in a consistent manner in stack traces. + +=item * + C now takes care not to clobber the status variables $! and $^E. =item * @@ -297,10 +228,10 @@ full details. =item * -L has been upgraded from version 2.132140 to 2.132510. +L has been upgraded from version 2.132140 to 2.132620. -No changes have been made to the installed code other than the version bump to -keep in sync with the latest CPAN release. +META validation no longer allows a scalar value when a list was required for a +field. =item * @@ -324,7 +255,7 @@ L has been upgraded from version 1.13 to 1.14. This upgrade is part of a larger change to preserve referential identity when passing C to a subroutine by using NULL rather than &PL_sv_undef for -nonexistent array elements. +non-existent array elements. In addition, C with no args was broken in Perl 5.19.3, but has now been fixed. @@ -370,7 +301,7 @@ A number of typos have been corrected in the documentation. =item * -L has been upgraded from version 0.280205 to 0.280212. +L has been upgraded from version 0.280210 to 0.280212. No changes have been made to the installed code other than the version bump to keep in sync with the latest CPAN release. @@ -398,6 +329,13 @@ semicolon, just like quoted markers. [perl #119761] =item * +L has been upgraded from version 2.27 to 2.28. + +The documentation of C now makes it clear that trying to copy a file into +a non-existent directory is not supported. [perl #119539] + +=item * + L has been upgraded from version 1.24 to 1.25. Better diagnostics are now provided in the case of a failed C. @@ -456,7 +394,7 @@ L has been upgraded from version 1.15 to 1.16. This upgrade is part of a larger change to preserve referential identity when passing C to a subroutine by using NULL rather than &PL_sv_undef for -nonexistent array elements. +non-existent array elements. =item * @@ -489,10 +427,15 @@ by using SSize_t instead of I32 for array indices. =item * -L has been upgraded from version 2.97 to 2.98. +L has been upgraded from version 2.97 to 2.99. The list of Perl versions covered has been updated. +A function C has been added, which returns true if the specified +module was bundled with Perl. Optionally you can specify a minimum version of +the module, and the specific version of Perl you're interested in (defaults to +$^V, the running version of Perl). + =item * L has been upgraded from version 0.54 to 0.58. @@ -589,11 +532,11 @@ L has been upgraded from version 2.46 to 2.47. This upgrade is part of a larger change to preserve referential identity when passing C to a subroutine by using NULL rather than &PL_sv_undef for -nonexistent array elements. +non-existent array elements. =item * -L has been upgraded from version 1.10 to 1.14. +L has been upgraded from version 1.13 to 1.14. Term::ReadLine::EditLine support has been added. @@ -638,6 +581,7 @@ L has been upgraded from version 1.18 to 1.19. The C warnings category has been added to check for embedded NUL (C<"\0">) characters in pathnames and string arguments to other system calls. +[perl #117265] =item * @@ -649,21 +593,8 @@ Fixes> section). =back -=head2 Removed Modules and Pragmata - -=over 4 - -=item * - -XXX - -=back - =head1 Documentation -XXX Changes to files in F go here. Consider grouping entries by -file and be sure to link to the appropriate page, e.g. L. - =head2 New Documentation =head3 L @@ -736,14 +667,8 @@ The following additions or changes have been made to diagnostic output, including warnings and fatal error messages. For the complete list of diagnostic messages, see L. -XXX New or changed warnings emitted by the core's C code go here. Also -include any changes in L that reconcile it to the C code. - =head2 New Diagnostics -XXX Newly added diagnostic messages go under here, separated into New Errors -and New Warnings - =head3 New Errors =over 4 @@ -824,12 +749,19 @@ argument, while C<@foo{&bar}> and provides a list context to its subscript, which can do weird things if you're expecting only one subscript. When called in list context, it also returns the key in addition to the value. +=item * + +L + +(D deprecated) Using literal control characters in the source to refer to the +^FOO variables, like $^X and ${^GLOBAL_PHASE} is now deprecated. This only +affects code like $\cT, where \cT is a control in the source code: ${"\cT"} and +$^T remain valid. + =back =head2 Changes to Existing Diagnostics -XXX Changes (i.e. rewording) of diagnostic messages go here - =over 4 =item * @@ -862,13 +794,6 @@ severe warning rather than as a fatal error. =head1 Utility Changes -XXX Changes to installed programs such as F and F go here. -Most of these are built within the directories F and F. - -[ List utility changes as a =head3 entry for each utility and =item -entries for each change -Use L with program names to get proper documentation linking. ] - =head3 L =over 4 @@ -881,13 +806,6 @@ L now handles C wildcards correctly. [perl #113054] =head1 Configuration and Compilation -XXX Changes to F, F, F, and analogous tools -go here. Any other changes to the Perl build process should be listed here. -However, any platform-specific changes should be listed in the -L section, instead. - -[ List changes as a =item entry ]. - =over 4 =item * @@ -906,14 +824,6 @@ been updated by C in an already configured and built tree. =head1 Testing -XXX Any significant changes to the testing of a freshly built perl should be -listed here. Changes which create B files in F go here as do any -large changes to the testing harness (e.g. when parallel testing was added). -Changes to existing files in F aren't worth summarizing, although the bugs -that they represent may be covered elsewhere. - -[ List each test improvement as a =item entry ] - =over 4 =item * @@ -961,20 +871,16 @@ program on platforms where it is practical to do so. =head1 Platform Support -XXX Any changes to platform support should be listed in the sections below. - -[ Within the sections, list each platform as a =item entry with specific -changes as paragraphs below it. ] - =head2 New Platforms -XXX List any platforms that this version of perl compiles on, that previous -versions did not. These will either be enabled by new files in the F -directories, or new subdirectories and F files at the top level of the -source tree. - =over 4 +=item FreeMiNT + +Support has been added for FreeMiNT, a free open-source OS for the Atari ST +system and its successors, based on the original MiNT that was officially +adopted by Atari. + =item Bitrig Compile support has been added for Bitrig, a fork of OpenBSD. @@ -998,21 +904,17 @@ AT&T 7300), has been removed. =head2 Platform-Specific Notes -XXX List any changes for specific platforms. This could include configuration -and compilation changes or changes in portability/compatibility. However, -changes within modules for platforms should generally be listed in the -L section. - =over 4 =item VMS -The C feature to control the population of C<%ENV> at Perl -start-up was broken in 5.16.0 but has now been fixed. +The C feature to control the population of %ENV at perl +start-up was broken in Perl 5.16.0 but has now been fixed. =item Win32 -C and C on Win32 now set C<$!> to ENOSPC and EDQUOT when appropriate. [perl #119857] +C and C on Win32 now set $! to ENOSPC and EDQUOT when +appropriate. [perl #119857] =item WinCE @@ -1032,12 +934,6 @@ The BSD compatibility library C is no longer required for builds. =head1 Internal Changes -XXX Changes which affect the interface available to C code go here. Other -significant internal changes for future core maintainers should be noted as -well. - -[ List each change as a =item entry ] - =over 4 =item * @@ -1057,14 +953,13 @@ C<\$array[0]> will compare equal to C<\undef>. =item * -The SV returned by HeSVKEY_force() now correctly reflects the UTF8ness -of the underlying hash key when that key is not stored as a SV. [perl -#79074] +The SV returned by HeSVKEY_force() now correctly reflects the UTF8ness of the +underlying hash key when that key is not stored as a SV. [perl #79074] =item * -Certain rarely used functions and macros available to C code are -now, or are planned to be deprecated. These are: +Certain rarely used functions and macros available to XS code are now, or are +planned to be, deprecated. These are: C (use C instead), C (use C instead), C (use C instead), @@ -1080,11 +975,6 @@ lowest 256 characters of Unicode are based. =head1 Selected Bug Fixes -XXX Important bug fixes in the core language are summarized here. Bug fixes in -files in F and F are best summarized in L. - -[ List each fix as a =item entry ] - =over 4 =item * @@ -1122,11 +1012,11 @@ return true if C was the first argument. [perl #7508, #109726] =item * -Passing a nonexistent array element to a subroutine does not usually autovivify -it unless the subroutine modifies its argument. This did not work correctly -with negative indices and with nonexistent elements within the array. The -element would be vivified immediately. The delayed vivification has been -extended to work with those. [perl #118691] +Passing a non-existent array element to a subroutine does not usually +autovivify it unless the subroutine modifies its argument. This did not work +correctly with negative indices and with non-existent elements within the +array. The element would be vivified immediately. The delayed vivification +has been extended to work with those. [perl #118691] =item * @@ -1168,7 +1058,7 @@ could result in assertion failures or memory leaks. =item * -Elements of @- and @+ now update correctly when they refer to nonexistent +Elements of @- and @+ now update correctly when they refer to non-existent captures. Previously, a referenced element (C<$ref = \$-[1]>) could refer to the wrong match after subsequent matches. @@ -1223,7 +1113,7 @@ all stuffed into line number 0, accessible via C<$dbline[0]> in the debugger. =item * -An optimisation in Perl 5.18 made incorrect assumptions causing a bad +An optimization in Perl 5.18 made incorrect assumptions causing a bad interaction with the L CPAN module. If the module was loaded then lexical variables declared in separate statements following a C list might fail to be cleared on scope exit. @@ -1256,7 +1146,7 @@ slices. [perl #28380, #114024] =item * -C< $! = EINVAL; waitpid(0, WNOHANG); > no longer goes into an internal infinite +C<$! = EINVAL; waitpid(0, WNOHANG);> no longer goes into an internal infinite loop. [perl #85228] =item * @@ -1265,29 +1155,18 @@ Perl 5.19.3 accidentally caused C<\(1+2)> to return a reference to the same mutable scalar each time, so that modifications affect future evaluations. This has been fixed. [perl #119501] -=back - -=head1 Known Problems - -XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any -tests that had to be Ced for the release would be noted here. Unfixed -platform specific bugs also go here. - -[ List each fix as a =item entry ] +=item * -=over 4 +A possible segmentation fault in filehandle duplication has been fixed. =item * -XXX +A subroutine in @INC can return a reference to a scalar containing the initial +contents of the file. However, that scalar was freed prematurely if not +referenced elsewhere, giving random results. =back -=head1 Obituary - -XXX If any significant core contributor has died, we've added a short obituary -here. - =head1 Acknowledgements XXX Generate this with: