In perl.git, the branch maint-5.20 has been updated <http://perl5.git.perl.org/perl.git/commitdiff/914a1490e4fa9281dea8cc4cac5c9f8791210f94?hp=69aabb7819a9fba427cb752aa7b59cc53ef51cd8>
- Log ----------------------------------------------------------------- commit 914a1490e4fa9281dea8cc4cac5c9f8791210f94 Author: Steve Hay <[email protected]> Date: Tue Jan 13 08:56:47 2015 +0000 perldelta: Move previous item to Errata From Previous Releases This item should have appeared in 5.20.1's perldelta, but I forgot to include it. M pod/perldelta.pod commit 2c55af43cb38a77d5bef9104361758c081ff78ef Author: Karl Williamson <[email protected]> Date: Sun Sep 14 09:17:41 2014 -0600 perldelta: Entry for [perl #122655]. 5.20 regression: '"X" !~ /[x]/i' It looks like this patch, included in 5.20.1, did not get a perldelta entry for that release. (cherry picked from commit 6ff8f256561a974b63b784ae8681c284ada44f7a) M pod/perldelta.pod commit 890e08f997ee43b4ffd445afe882e287c77b9c15 Author: Slaven Rezic <[email protected]> Date: Fri Dec 26 21:21:03 2014 +0100 perlfunc: another alternative for enabling the "state" feature (cherry picked from commit 62fedd514941642472e01795828f42ddd04477eb) M pod/perlfunc.pod commit 721b1e599efa3670e61d190717d4c69579bd26db Author: Steve Hay <[email protected]> Date: Wed Dec 24 14:49:59 2014 +0000 RMG: Note that Porting/release_schedule.pod should be updated (cherry picked from commit d274ee9d7b1765ee3032fac39cbc2e77b0d2f194) M Porting/release_managers_guide.pod commit 8fe6a6173c33d38ceebd866a1dd656db60bc3216 Author: Steve Hay <[email protected]> Date: Wed Dec 24 14:49:31 2014 +0000 Note that 5.21.6 and 5.21.7 are released (cherry picked from commit d920a62f19f2d30ca8fdefafb1e3173d525957db) M Porting/release_schedule.pod commit e93832a4fc3062651dd94056daf25ca486a0de73 Author: Father Chrysostomos <[email protected]> Date: Sat Nov 8 22:06:55 2014 -0800 release_schedule.pod: Correct some versions (cherry picked from commit 0afd0f200f29d255c3e9a8213092bf6907f3efc2) M Porting/release_schedule.pod commit 1fe9b1c80b1357b9f4eb1e509e390389f666e042 Author: Ricardo Signes <[email protected]> Date: Sat Nov 8 23:18:39 2014 -0500 release schedule: 5.18.4 shipped, 5.18.5 may happen (cherry picked from commit 34b5033e3abef07672d7dfa110b7f89bbf4308f8) M Porting/release_schedule.pod commit 58744824b01f41cb3afbd65c1a8ba1af4abc422c Author: Ricardo Signes <[email protected]> Date: Sat Nov 8 23:18:19 2014 -0500 release schedule: the v5.22 landing plan (cherry picked from commit 63bd8e4b6a0da02940b663302e1e0775e36d2c07) M Porting/release_schedule.pod commit d7cbd1855825042ca2e8350189c3ee418dc789cc Author: Abigail <[email protected]> Date: Thu Oct 23 00:04:28 2014 +0200 5.21.5 has been ticked off (cherry picked from commit 5695ab3c9022fbf13698540bb845a4d1ab200701) M Porting/release_schedule.pod commit 13b76668b111a9f8a366ec82853b3560c0dacf0f Author: Chris 'BinGOs' Williams <[email protected]> Date: Mon Sep 29 19:45:44 2014 +0100 Tick that v5.21.4 got a release in the schedule (cherry picked from commit ba27e2b14916d249d8db56bdf41409034871a54a) M Porting/release_schedule.pod commit 6a1b08f7f2474ffbd60143c8713c68f791b495a8 Author: Steve Hay <[email protected]> Date: Tue Sep 16 08:53:07 2014 +0100 Update 5.20 release schedule: Plan for 5.20.2 in January And add a missing development release engineer to the list. (cherry picked from commit 4ed1f7f9ddcf3a92cab8beab7f52048cda246f44) M Porting/release_schedule.pod commit 18dfbd662095c8c1bcdca530089433a28361430a Author: Ricardo Signes <[email protected]> Date: Mon Sep 15 18:19:28 2014 -0400 release schedule: Max M. will do December 2014 (cherry picked from commit ce98a8cbcc62ba1e5eceafb381453aff6ac4471f) M Porting/release_schedule.pod commit af73621224292872ad60068decf3651412567402 Author: Ricardo Signes <[email protected]> Date: Mon Sep 8 22:23:33 2014 -0400 release schedule: add managers for 5.21.6, 5.21.8 (cherry picked from commit 669097fff733d4ce9c6014ada9aff3664840b185) M Porting/release_schedule.pod commit da307d4930a1bb148c2effd5c7f6c12797fb6461 Author: Ricardo Signes <[email protected]> Date: Mon Sep 1 09:55:45 2014 -0400 release schedule: put Abigail on for October (cherry picked from commit 2d698e9fdf1acde369d23c80aaa35ca7ec046866) M Porting/release_schedule.pod commit e1db1f004db7a6499cc01b40623aca7e91daba39 Author: Steve Hay <[email protected]> Date: Mon Aug 25 21:39:35 2014 +0100 Update release schedule (cherry picked from commit 987ee32fd0939704c66e74c46ba0eea50742264e) M Porting/release_schedule.pod commit 739d2482a18df2f3f6b7d078da979f246d8d25b6 Author: Abigail <[email protected]> Date: Sat Jul 19 18:36:11 2014 +0200 Tick off the 5.20.0 and 5.20.1 releases. (cherry picked from commit cf217b12874de6af9cdcd4724a3264a76a18b6d3) M Porting/release_schedule.pod commit 98d7414ee3c222d310b0f13884fd5e4ab0167f46 Author: Abigail <[email protected]> Date: Sat Jul 19 18:34:08 2014 +0200 "all question marks" is ambigious. Because if just a single question mark is used, it means the release manager is unknown. Only if multiple question marks are used it means it isn't known whether this release will happen. (cherry picked from commit 53e6b8f769d9ca5cc081dcdb870bb0caf1f547d3) M Porting/release_schedule.pod commit a6ed67357fcea36d36543a29080ea2e6d824fab1 Author: Ricardo Signes <[email protected]> Date: Thu Jun 5 21:23:58 2014 -0400 update release schedule (cherry picked from commit c9c069a80cd6db03fee67709169313182e418963) M Porting/release_schedule.pod commit e54ee5fe00dab7a5e9c0341bfd9730ca1d07ff03 Author: Ricardo Signes <[email protected]> Date: Thu Jun 5 14:28:23 2014 -0400 update release schedule (cherry picked from commit ea61af38ef61f87b08df7076da2908856ca87604) M Porting/release_schedule.pod commit ed53389d627c70738033dae700577ae35d5e247d Author: Max Maischein <[email protected]> Date: Sun Dec 21 10:01:21 2014 +0100 Update epigraphs.pod (cherry picked from commit d171d861d6628c21e57b207db12486ac035da531) M Porting/epigraphs.pod commit ce60ca9a019f50d9dbe2e6f3d189fa460bfc0975 Author: Max Maischein <[email protected]> Date: Sat Dec 20 15:52:25 2014 +0100 add new release to perlhist (cherry picked from commit 846dac6786c1ada87b95d0268c0a9772a4bd04fc) M pod/perlhist.pod commit 687f5a800f3850dc298623aa2ff4364a70984856 Author: Karen Etheridge <[email protected]> Date: Thu Dec 18 11:17:56 2014 -0800 include reference to metacpan.org; refer to the module-authors list instead of modules, and include a link to the subscription page (cherry picked from commit 4eea8a8bce5fd908572c50464cc4216df1f0bc57) M pod/perlmodstyle.pod commit 126a4720f3db66b564a82e4e32f4b533e8acb0b1 Author: Aristotle Pagaltzis <[email protected]> Date: Tue Jan 13 08:46:51 2015 +0000 perl.pod: Use consistent perldelta order (cherry picked from commit d114830901d62f712502caecc496b189619643d5) M pod/perl.pod commit b2ad0ebb5efb1e123cd51360c0883dd3762af97e Author: Karl Williamson <[email protected]> Date: Wed Nov 26 19:54:22 2014 -0700 perluniintro: Vertically stack ternarys It's clearer and sets a better example for the reader (cherry picked from commit 96cfa1df465e71dba7e2099fc37db1b569d300b4) M pod/perluniintro.pod commit a67cb8d393d2c91b6eb8731bfac7b8d58be01bcf Author: Father Chrysostomos <[email protected]> Date: Tue Dec 9 12:33:37 2014 -0800 perlpolicy: Be explicit wrt crashing bug policy This new wording states explicitly what has been the de facto under- standing of this policy of late. (cherry picked from commit 4c0ef2088519deeee7642c58f661b5d8a70ccf2f) M pod/perlpolicy.pod commit d59a5eda148029e04b51f3beec2fa4d05404f2f4 Author: Shlomi Fish <[email protected]> Date: Tue Jan 13 08:41:20 2015 +0000 Convert tabs to spaces and remove trailing space. For: RT #123377 (cherry picked from commit 15faabe4bd597caa63a35d745cc5e93792a347dc) M pod/perlsyn.pod commit 204bfbc70f49f494e48e5c4f13cbfbac43294ec9 Author: Shlomi Fish <[email protected]> Date: Thu Oct 16 12:25:30 2014 +0300 perlfork.pod: convert "\t"s to spaces. For: RT #122987 (second part) (cherry picked from commit e6ebbe921e63dbd445aa30e30a0b2b80574b88a0) M pod/perlfork.pod commit 665b5483a10507d5f8183c365ec7d2f2f5b221bb Author: Shlomi Fish <[email protected]> Date: Thu Oct 16 12:20:22 2014 +0300 Remove trailing whitespace. For: RT #122987 (first part) (cherry picked from commit 0e3be540c5c5d8ec7d6c682091855e8865b99b51) M pod/perlfork.pod commit f01d6e0451c4e2f292af06f16b7a3394adf6abef Author: Shlomi Fish <[email protected]> Date: Thu Oct 16 11:43:06 2014 +0300 Convert "\t"s to spaces in perlref.pod. For: RT #122986 (cherry picked from commit 5566fa1536b7e3ab06bf74ce785d42d16c663791) M pod/perlref.pod commit 47d7be8ebb82e78ab512fa73330e3abd52dcdac2 Author: Jim Cromie <[email protected]> Date: Tue Jan 13 08:39:49 2015 +0000 Storable: fixup pod wording fix grammar, eschew colloquial expression - s/turned into/converted to/ Increment Storable $VERSION. For: RT #123271 (cherry picked from commit 1b0fd1e8346658cb037cc394f0c428007124b916) [Edited by the committer to bump the $VERSION to a value that has not already been used and will not be used in the future.] M dist/Storable/Storable.pm commit 11ac1c4ac642a364b94af15ebf2f8eaf90a80150 Author: Chris 'BinGOs' Williams <[email protected]> Date: Fri Nov 21 00:56:30 2014 +0000 Update perlhist for v5.21.6 (cherry picked from commit 7eb19200f4ef00b9a61884cbb755b9621b9c701d) M pod/perlhist.pod commit 3a92aeda2a9f3d9d3f86b4ecdbc17b908e449b16 Author: Chris 'BinGOs' Williams <[email protected]> Date: Fri Nov 21 00:08:28 2014 +0000 Add epigraph for v5.21.6 (cherry picked from commit 11741df4ee8d4b20d3e30f7f1b613a8d1b891059) M Porting/epigraphs.pod commit 4ccdfef27910213a8f7cb1fbcb7e3814aec9530c Author: James E Keenan <[email protected]> Date: Mon Nov 17 18:58:09 2014 -0500 Add word missing from docs for 'wait' function. Minor POD-formatting changes. Add Johann 'Myrkraverk' Oskarsson to Perl AUTHORS. For: RT #123230 (cherry picked from commit 42c583b4b82b42bf02f26ea582ecfb3e94af8cc5) M AUTHORS M pod/perlfunc.pod commit d97adcac03c961443485e36827940167d6c303ef Author: Karl Williamson <[email protected]> Date: Wed Nov 5 22:44:17 2014 -0700 perlfunc: Fix typo (cherry picked from commit 86ceb7c6d74c3ecff8db4296861f8ededaa286a8) M pod/perlfunc.pod commit 53980619a156c16e74fe158be3bfe81d966986b0 Author: Chris 'BinGOs' Williams <[email protected]> Date: Tue Nov 11 11:30:45 2014 +0000 Trailing whitespace removed in perlport.pod (cherry picked from commit 2890cc8c9f56ed8f91a8a6134e7b2fb7beb23f38) M pod/perlport.pod commit 282e9696b2799d040097a254d5dd2a0988fef848 Author: Karl Williamson <[email protected]> Date: Tue Jan 13 08:38:04 2015 +0000 perllocale: Nits and clarifications (cherry picked from commit 663d437af9b7e1191e696b500650bce9e74fde08) M pod/perllocale.pod commit 7d84dccdbcad7bcf7d303d015e7605eaa0a8cb46 Author: Father Chrysostomos <[email protected]> Date: Tue Sep 16 17:58:50 2014 -0700 perliol.pod: Correct flags type in _PerlIO struct This is not the only change that was not reflected in the docs. There is also a PerlIOl *head member, but I donât know whether this should be considered public and documented. (cherry picked from commit 90a44ae623db0999c98093c3bb234c1479755a2c) M pod/perliol.pod commit 6a31a31fda9694305b57259457fc4605832dbdbe Author: Tony Cook <[email protected]> Date: Tue Jan 13 08:35:23 2015 +0000 perldelta for 7eb3f2cf1bb0 (cherry picked from commit bab69578a8b6966781f8808f12d668db87fc7778) M pod/perldelta.pod commit d99f4a9e15cdab0ad1839f70c842b43aa8b32776 Author: Tony Cook <[email protected]> Date: Mon Nov 3 11:39:57 2014 +1100 Glenn D. Golden is now a perl AUTHOR (cherry picked from commit 577437f753b1e6471709f6b5fa50908fa9754178) M AUTHORS commit ff961592ad40ed356b3bb10e84dedf788d2807d9 Author: Tony Cook <[email protected]> Date: Mon Nov 3 11:39:42 2014 +1100 bump $IO::Socket::VERSION to 1.38 (cherry picked from commit d7adc1ec0500a4328cb0a521f0465954fa2325cb) M dist/IO/lib/IO/Socket.pm commit 1eead555a692a699b3ab2c3b1989fa095575c414 Author: Glenn D. Golden <[email protected]> Date: Tue Oct 28 04:24:04 2014 -0600 Improve connected() doc (cherry picked from commit 7eb3f2cf1bb02dbe7d9bf2f9fe40d45164eeaf2a) M dist/IO/lib/IO/Socket.pm commit 6955c8cbec6bf4270e1e086d0ce5f5f77390d9e7 Author: Father Chrysostomos <[email protected]> Date: Fri Oct 31 22:30:21 2014 -0700 perlfunc: Mention map {;...} convention since it is probably more common than { +... }. (cherry picked from commit 24fe90a14d91f512527a158a02ea19d502723856) M pod/perlfunc.pod commit fa423071f5ad794283f244862241d1fc2c2a1d73 Author: Shlomi Fish <[email protected]> Date: Wed Oct 29 11:43:19 2014 +0200 $a,$b deprecation in perlop.pod. For: RT #123081 (partial) (cherry picked from commit db69102781c2515ff4657c48b95696c5f5e3bb78) M pod/perlop.pod commit acd6e9e9c6c798efda84d072f71c262cb9e20e9e Author: Shlomi Fish <[email protected]> Date: Wed Oct 29 11:19:21 2014 +0200 Move away from $a and $b for examples. pod/perlvar.pod this time. For: RT #123081 (partial) (cherry picked from commit 592708b4f2c747075fb01e3ad9276a2a9b338f27) M pod/perlvar.pod commit 0b033e38f5140edacddad1b24fa10bb644b11dcf Author: Shlomi Fish <[email protected]> Date: Wed Oct 29 11:06:30 2014 +0200 Move the POD away from $a and $b. They are built ins and should not be used or overrided. Currently doing pod/perlthrtut.pod . For: RT #123081 (partial) (cherry picked from commit 920aefcab1aef66ce585b8cc2f371ae5bfc9ee63) M pod/perlthrtut.pod commit 09131d99c99a133f9ec1e5464d9e2e33bccd1377 Author: Doug Bell <[email protected]> Date: Sun Aug 31 03:15:35 2014 -0500 git format-patch -M option takes branch (cherry picked from commit 5df244132ec94f1e67bd70db61d4ea89bd824b00) M pod/perlgit.pod commit 130f654de9944e552cedf9497a31c806e060e3b5 Author: Doug Bell <[email protected]> Date: Sun Aug 31 03:17:42 2014 -0500 make it clear not to use git-send-email at all (cherry picked from commit c981563317d1c97170a53c9a89a80456442ed201) M pod/perlgit.pod commit 3f25d02fe2ec5ea30436d4b04c8e5bc1e89c8774 Author: Steve Hay <[email protected]> Date: Tue Jan 13 08:33:11 2015 +0000 More actions to take when bumping the version number. Manually backported from 82ce0493f7 since the regen/opcode.pl part does not apply to maint-5.20. M Porting/release_managers_guide.pod commit 31d7e6f70e469b817fcc8bd5c08369623c5a22c5 Author: Abigail <[email protected]> Date: Mon Oct 20 20:01:40 2014 +0200 Epigraph for 5.21.5 (cherry picked from commit b22c1b06a22800628b336f577cd4b6ed0eb4956e) M Porting/epigraphs.pod commit a50b8bc374d568819cb22a4819ffd30146a04aa6 Author: Abigail <[email protected]> Date: Mon Oct 20 16:38:09 2014 +0200 Added 5.21.5 release to perlhist (cherry picked from commit dbc8a3c9dcdb7b612305e7aad911da31d7d95bf5) M pod/perlhist.pod commit b0eeaedcded2ba018c2966f94c0ddbcae488c133 Author: Abigail <[email protected]> Date: Mon Oct 20 15:04:17 2014 +0200 Use F<> for files, not L<> (cherry picked from commit 5bbd8f6148989e1b869c92ef5ec0dfee009597a4) M Porting/release_managers_guide.pod commit cc1c5dc136c4211b5334c8c6143c236ebe29cb5b Author: Abigail <[email protected]> Date: Mon Oct 20 13:59:58 2014 +0200 List files to modify. Explicitely list the files to modify when upping/checking the VERSION of the various CoreList modules, for easy copy-and-pasting. I grew tired of running find. (cherry picked from commit 94691c1944f5865db239971507a705046fa2ce71) M Porting/release_managers_guide.pod commit 060e57d3a4d31c8a35bd99bf324e25058b3e760b Author: Karl Williamson <[email protected]> Date: Sun Oct 19 08:57:26 2014 -0600 perlvar: Note a deprecation (cherry picked from commit b44599e0887245dbbe59018b78901326db7e230c) M pod/perlvar.pod commit 359452dda1e7c3f03b296567160f9a4e8d208c7c Author: James E Keenan <[email protected]> Date: Thu Oct 16 19:07:59 2014 -0400 Update Perl 5 Porter list archives. For: RT # 122996 (cherry picked from commit 586e992d6da290482e162f13db0dd3f4533b4cd6) M pod/perlhack.pod commit 204622d753e44fec2a8a36fe5c131d161db8443f Author: Shlomi Fish <[email protected]> Date: Fri Oct 10 10:12:09 2014 +0300 Modernized an example in perlipc.pod. 1. Convert to use strict + use warnings. 2. Changed a while(++ loop) to while(1) { ++ }. Committer revised patch per suggestions in RT # 122938. (cherry picked from commit 8bc5de207a4b3d333e9c6535bd21b8f0b1381270) M pod/perlipc.pod commit 2c6395ed2f0e9084c6c6b88bf7f5652e04f132c5 Author: Father Chrysostomos <[email protected]> Date: Sun Oct 12 18:04:38 2014 -0700 perlguts typo (cherry picked from commit eee3e3021df1a54fbbae497b1d1c817aa9f2fc29) M pod/perlguts.pod commit ef9b20adc2e237f03cca9407b429dc45f4d725c9 Author: Shlomi Fish <[email protected]> Date: Mon Jun 10 01:12:08 2013 +0300 Remove trailing space from perlipc.pod. For: RT #122938 (first patch) (cherry picked from commit 82f82fdb58cb3bf9651ec1ba6904780eb1105021) M pod/perlipc.pod commit 697207ae897aea5a844984f15477de7cdc93267c Author: Shlomi Fish <[email protected]> Date: Fri Oct 10 15:33:39 2014 +0300 remove trailing whitespace. For: RT #122942 (first patch) (cherry picked from commit d962e43687db045a52ba2406aafccd53e6af23ff) M pod/perlref.pod commit b4bd78fcfe64954a90f52f7d405fd631f135f5bf Author: Daniel Dragan <[email protected]> Date: Tue Oct 7 02:47:15 2014 -0400 improve and reword README.win32 (cherry picked from commit 8f5839a98a66edafefd2ffd3056e5e3fc64e1d27) M README.win32 commit dfe27260b185cb7081ff5d01c059d0408ef5c24b Author: Father Chrysostomos <[email protected]> Date: Sat Oct 4 05:56:11 2014 -0700 Consistent spaces after dots in perlfunc (cherry picked from commit 2a2626d8512fc09c6ef077095e4e075978a5c2df) M pod/perlfunc.pod commit 5211bf37d8849703b7607292f2d1f70164daff85 Author: Doug Bell <[email protected]> Date: Thu Oct 2 22:52:24 2014 -0500 clarify use VERSION docs Anything that C<use VERSION> adds, another C<use VERSION> may take away. Explicitly doing the C<use strict> and/or C<use feature> means that C<use VERSION> will not change them. C<use VERSION> will only change the defaults, or things done by C<use VERSION>. (cherry picked from commit b39691c2f7d54897113063413c374b78418a1684) M pod/perlfunc.pod commit b2ec9f8b50da6451a00471034c05e90849ff730c Author: Ricardo Signes <[email protected]> Date: Wed Oct 1 21:26:20 2014 -0400 perlhist: bring in 5.18.3 and 5.18.4 release dates (cherry picked from commit 086feb3e31adb54d781926d7d8df06c266c39fae) M pod/perlhist.pod commit edb17734f8d9c91b9eb0d7543687380e30484ae7 Author: Ricardo Signes <[email protected]> Date: Wed Oct 1 21:19:16 2014 -0400 import latest epigraphs from maint-5.18 (cherry picked from commit 8bbce0b10dd8ea0fad79a905746218306cf4fe17) M Porting/epigraphs.pod commit 8e477b09d0c86123da9f45fd816a3152bb667d14 Author: Steve Hay <[email protected]> Date: Thu Sep 25 09:02:16 2014 +0100 RMG - RCs are now listed in perlhist (cherry picked from commit 5e2d14fc932c50279eb04ac71b3d87d785d61420) M Porting/release_managers_guide.pod commit 160092deec2d8776855158160cc4054039ae8665 Author: Steve Hay <[email protected]> Date: Thu Sep 25 09:00:08 2014 +0100 RMG - Remove out-of-date instruction about epigraph link Thanks to the revelation of the X-List-Archive header (see 70d95cc994) we no longer need to add the epigraph link on the day after. (cherry picked from commit 282f36d45b3fd6109df025ed2228f0019b49c2e5) M Porting/release_managers_guide.pod commit a9b38b5620b981bb677a44ed8761a4210b952fcb Author: Steve Hay <[email protected]> Date: Thu Sep 25 08:56:35 2014 +0100 RMG - Even RCs these days generally get an epigraph (cherry picked from commit dffcb1c02065e74cff64fd076677292796ee9845) M Porting/release_managers_guide.pod commit 0ace112a2516606adeb611e3c65d7eba7077e854 Author: Steve Hay <[email protected]> Date: Thu Sep 25 08:53:32 2014 +0100 RMG - Note why it is that MAINT is version-bumped late rather than early Thanks to Nicholas Clark for pulling this reasoning from his memory banks. (cherry picked from commit 5f9f8ddf9ebc952fad1c1747b597e0d1162feac8) M Porting/release_managers_guide.pod commit ebf2ba69cdfc54299b055cf5c1fe4fc664aa0a58 Author: Father Chrysostomos <[email protected]> Date: Wed Sep 24 21:59:58 2014 -0700 Consistent spaces after dots in perlmodstyle (cherry picked from commit 369236063a992c09b5fd6efb6f0910bd1d5effcd) M pod/perlmodstyle.pod commit fee2fe9558192e438cd8aa0fe59fdd685508dc68 Author: Father Chrysostomos <[email protected]> Date: Wed Sep 24 21:52:41 2014 -0700 Long verbatim lines in perlmodstyle (cherry picked from commit fbff26bcac0ac41e44778278aca063f82c1d70e0) M pod/perlmodstyle.pod commit fb56e79c86e61539642a3a9aa4b84ac62c374398 Author: Father Chrysostomos <[email protected]> Date: Wed Sep 24 21:50:53 2014 -0700 Add Ed J to AUTHORS (cherry picked from commit 8eff31e6ddbcd94a1ff3d6489062907d5b84d9d9) M AUTHORS commit 6929754339c948d7a32c83a94d65ba58afe673be Author: Ed J <[email protected]> Date: Tue Sep 16 07:06:23 2014 +0100 perlmod and perlstyle improvements ⢠Outward links for perlmod ⢠Tweak perlmodstyle version notes ⢠Link perlnewmod to perlmodstyle (cherry picked from commit 69520e41a46ec3b965c16d2280719fe904dc844a) M pod/perlmod.pod M pod/perlmodstyle.pod M pod/perlnewmod.pod commit ea97530f7d4112da42f09d4f8f2610baabbbc93c Author: Ricardo Signes <[email protected]> Date: Wed Sep 24 20:21:17 2014 -0400 perlpolicy: clarify that bans related to RT as well as p5p (cherry picked from commit 522c63f2ecc9e36821528bb96cb98f39509068fb) M pod/perlpolicy.pod commit 154dc95c3831bd9ec9f3a8aeacc53c03c52b4f1f Author: Father Chrysostomos <[email protected]> Date: Mon Sep 22 22:47:55 2014 -0700 Consistent spaces after dots in perlop (cherry picked from commit 46f8a5eafc5328639a1c6ff58ff2407a39b09c04) M pod/perlop.pod commit 0fc59d1f7912e0cece171839d94b71ff218bab97 Author: Father Chrysostomos <[email protected]> Date: Tue Jan 13 08:27:22 2015 +0000 Consistent spaces after dots in perlapi (cherry picked from commit 7e234f81b6d7325dd91edae7737f9bd69a91fc73) [Except for the op.c part, which maint-5.20 does not have.] M sv.c M sv.h commit 89ba9ce1068bba81528959153dfaa233302daabb Author: Steve Hay <[email protected]> Date: Sat Sep 20 14:48:07 2014 +0100 Add epigraph for 5.12.4 (cherry picked from commit 28c2c58fe259cabc1510ac5b4c5ead3a7c0321d2) M Porting/epigraphs.pod commit 07b03ef8b3674fa0ef7465917533a9011fc5cfc0 Author: Steve Hay <[email protected]> Date: Sat Sep 20 11:03:38 2014 +0100 Perl 5.21.4 today (cherry picked from commit 84c122ba1d2b7b856521ceffc2a095716a739335) M pod/perlhist.pod commit db4e7be7d78ca654b3c12777b36afc8babd9db29 Author: Steve Hay <[email protected]> Date: Sat Sep 20 00:46:09 2014 +0100 Update release announcement template (cherry picked from commit 5654cc4ecbbe52f346fca1d568892a85c0a10040) M Porting/release_announcement_template.txt commit 3f8b62b736a8b8d95adc3fdabdec77705a26defd Author: Father Chrysostomos <[email protected]> Date: Tue Jan 13 08:25:24 2015 +0000 perldiag: Rewrap for better splain output Also correct C<(...)> when it should be (C<...>). (cherry picked from commit f3ba690558ce39a2cc7b8e8cf53bd510503c428e) M pod/perldiag.pod commit 4660566e8b1c0af0e32a90babda0d85818590953 Author: Karl Williamson <[email protected]> Date: Thu Sep 18 18:20:57 2014 -0600 perlsyn: Remove reference to potential Unicode op See thread beginning at http://nntp.perl.org/group/perl.perl5.porters/219796 (cherry picked from commit 845392291027b157a962eea4a4c2a97f67b995ce) M pod/perlsyn.pod commit 8ee4537a170c55a24f7f9d27f1900e1558d17a22 Author: Father Chrysostomos <[email protected]> Date: Wed Sep 17 23:41:00 2014 -0700 perlop tweak Consider this a follow-up to fc6933476. (cherry picked from commit d74605e51c7bb408573e37869390459a5232b4c7) M pod/perlop.pod commit f9603ef09ab092139d7202562ce012b6f7b7e6c4 Author: Karl Williamson <[email protected]> Date: Wed Sep 17 22:42:17 2014 -0600 perlop: Nits (cherry picked from commit fc6933476282438a4b45150119b9be73dfa05b82) M pod/perlop.pod commit 629dde095c2e5e1d42de3d5d73bcbf497e6feb83 Author: Ricardo Signes <[email protected]> Date: Mon Sep 15 19:03:36 2014 -0400 delete/exists on array elements is discouraged, not deprecated For further discussion, see (among other things) http://nntp.perl.org/group/perl.perl5.porters/218752 (cherry picked from commit 2fbadc08f550cedfc8690b365310c2f6d81e960d) M pod/perlfunc.pod commit 39003219acaad36f2f92f82802040ae0fc7a0272 Author: Ricardo Signes <[email protected]> Date: Mon Sep 15 18:19:41 2014 -0400 document how to graduate from experimental status (cherry picked from commit f1126a906c58d54cb68626bd2e4c1d577d77796a) M pod/perlpolicy.pod commit 3249dbc694fcc803c8cd5730785a607727b759f6 Author: Father Chrysostomos <[email protected]> Date: Sun Sep 14 16:04:17 2014 -0700 Consistent spaces after dots in perlsub (cherry picked from commit b77865f5def4737f78822fa2cd0da2dbc4fc647b) M pod/perlsub.pod commit 31dc1bc6f9388b33e2d9bb20f012fbe0c0a860bf Author: Steve Hay <[email protected]> Date: Sun Sep 14 14:26:46 2014 +0100 Add epigraph for 5.20.1 (cherry picked from commit c43e874320ac47cebbfc6fdd4c881214d39128ad) M Porting/epigraphs.pod commit 0720669403e73c1998db09917a7304300a6354cb Author: James E Keenan <[email protected]> Date: Sat Sep 13 08:51:48 2014 -0400 Semicolon before ellipsis inside block disambiguates. Correct documentation which indicated that, inside a block, a semicolon after an ellipsis statement would disambiguate between a block and a hash reference constructor. The semicolon must precede the ellipsis to perform this disambiguation. Add tests to demonstrate that whitespace around the ellipsis statement does not impeded the disambiguation. Add perldelta entry. For: RT #122661 (cherry picked from commit 12d22d1fe17e8471834a01cd417792ac5c022d62) M pod/perldelta.pod M pod/perlsyn.pod M t/op/yadayada.t commit 5ebde54265c6b44c115c22179dd2e28ef5eaa85c Author: Peter Martini <[email protected]> Date: Sun Sep 7 20:34:29 2014 -0400 Fix documented return type for PAD_SV It should be SV *, just like PAD_SVl, since (except under DEBUGGING) it is actually the same macro. (cherry picked from commit 9a0afbbcb76a8ee786dfbbeff1930f173fefdbad) M pad.h commit c65a6bd3bc3d28a5af5410baf4cf8c34e94698e0 Author: Father Chrysostomos <[email protected]> Date: Sun Aug 31 12:58:37 2014 -0700 perlsec: Another typo (cherry picked from commit 6fd9f6130d0c4ad34a2ddcf44d887097de5b2847) M pod/perlsec.pod commit 2231b2522b99e63f4c454216355a683600c4d7bc Author: Father Chrysostomos <[email protected]> Date: Sun Aug 31 12:55:22 2014 -0700 perlsec: Typo (cherry picked from commit c6c886efdb6df3d06613743e0e6780de4a145e66) M pod/perlsec.pod commit f88443c18268b043b728c020cb715e9447be6e6b Author: Father Chrysostomos <[email protected]> Date: Sun Aug 31 12:55:12 2014 -0700 perlsec: Consistent spaces after dots (cherry picked from commit 91e649137a555abe48d1527549d88a833b6226a0) M pod/perlsec.pod commit a4adb6cc08f8b351eb3fe3b8a403cd06a5493ff5 Author: Doug Bell <[email protected]> Date: Sun Aug 31 03:20:23 2014 -0500 add missing close paren in pod For: RT #122663 (partial) (cherry picked from commit f6cce60a032fd351c1c7a6961fd3bcb043b3a784) M pod/perlgit.pod commit 7fce22833443f4ebe597f7654350385f0289fbd0 Author: Father Chrysostomos <[email protected]> Date: Thu Aug 28 12:40:03 2014 -0700 perldiag grammar 1cd88304d70 fixed one grammatical error in this sentence. This fixes the other. (cherry picked from commit abc0aa9d9625544dc299d6ca0d07dc9bd61cd947) M pod/perldiag.pod commit 21b9a368e7c5c5ada3becf9abdbb1d1d3717e4be Author: Steve Hay <[email protected]> Date: Tue Jan 13 08:18:25 2015 +0000 perldiag grammar Manually backported from 1cd88304d7. M pod/perldiag.pod commit 4a6d5738c33aa42980fefd726c3d037603ca7b73 Author: Ricardo Signes <[email protected]> Date: Wed Aug 27 21:13:46 2014 -0400 todo: expand the list of OS access builtins to update ...taken from an IRC conversation on #p5p (cherry picked from commit 9fe0b8bee6be1d888d69587491d50258a908e8d0) M Porting/todo.pod commit 7d562b35f6b4d7a8162f2b888bcb670b07e728ed Author: Father Chrysostomos <[email protected]> Date: Sat Jan 11 17:03:04 2014 -0800 Typo in pad.c apidocs (cherry picked from commit 272ce8bbdf90cc9c24e7425001986a6b681c6015) M pad.c commit 7073492e75ff2dad81ab2d2aafc89ac99fa83e22 Author: Father Chrysostomos <[email protected]> Date: Mon Aug 25 18:10:12 2014 -0700 perlfunc: consistent spaces after dots (cherry picked from commit 444d4f5cfb8c0054331f6949177c65c0b333e7d5) M pod/perlfunc.pod commit a4cd374006e804a955011f73b26de58b0d5cc2e8 Author: Father Chrysostomos <[email protected]> Date: Mon Aug 25 18:05:56 2014 -0700 perldiag: reword and rewrap an entry I think âportable betweenâ sounds better in this particular context. The rewrapping is for the sake of splain output. (cherry picked from commit 7ed0dd9307df05e569c8c3d5fdcf705995129a5f) M pod/perldiag.pod commit 253688a908164f2e5ba327b4bd2668a874375e42 Author: Karl Williamson <[email protected]> Date: Mon Aug 25 18:50:16 2014 -0600 perlrecharclass: Use more common property synonym XPerlSpace is used elsewhere in this pod, so use it everywhere. Spotted by Andrew Rodland. (cherry picked from commit 7fa2fdc07ed9697d677cb165e07b12495e856d59) M pod/perlrecharclass.pod commit 0353bc3d822cf169e91cce1188f725739d6004b9 Author: Karl Williamson <[email protected]> Date: Sat Aug 23 18:21:36 2014 -0600 perldiag: Add clarification. (cherry picked from commit eebea631754f8059d1a963e93b061efa2190e5e5) M pod/perldiag.pod commit 8925af4e35bfd471a1cfd3c96e3546bd4fc1df09 Author: Ãvar Arnfjörð Bjarmason <[email protected]> Date: Mon Aug 25 16:17:11 2014 +0000 perlfunc: Improve the pointer from "elseif" to "elsif" A co-worker pointed out that the docs for "elsif" were quite confusing because nothing when you "perldoc -f elseif" points out that it doesn't exist, it just directs you to perlsyn where we only document "elsif". Ricardo Signes added this aliasing back in v5.15.7-194-g8f0d6a6. Improve this confusion, and also add a mention of the common "elif" and "else if" variants while I'm at it. I was originally going to just alias them, but t/porting/perlfunc.t started failing because we're missing cross-references, and unlike "elseif" the other two aren't keywords, even if the "elseif" one is only here to warn you about its use. (cherry picked from commit d4a03217c39773dcacf83845e1f96a61136eb870) M pod/perlfunc.pod commit 5e857f525e78e89ef7796d550771a066fc7f8b59 Author: Tadeusz SoÅnierz <[email protected]> Date: Sun Aug 24 15:13:28 2014 +0200 Make eval_pv documentation more precise (cherry picked from commit 422791e4eb03a12d17c98eb1787351280ae59789) M AUTHORS M perl.c commit 1a186d9f01374949b8ea735ce5cb79c456453116 Author: Father Chrysostomos <[email protected]> Date: Sun Jan 11 22:25:51 2015 -0800 perldelta for 08b999a9d / #123452 (cherry picked from commit 439f6100c1c34165dc8d330d832195754691bb73) M pod/perldelta.pod commit 5519b9e4cb226c27565ef6353c148840622edd2a Author: Father Chrysostomos <[email protected]> Date: Sun Jan 11 22:05:33 2015 -0800 perldelta for d8bd3d828 / #123495 (cherry picked from commit 436f65037996b150c5a8b35ac858eefdef222cb7) M pod/perldelta.pod ----------------------------------------------------------------------- Summary of changes: AUTHORS | 4 + Porting/epigraphs.pod | 217 ++++++++++++++++++++++++ Porting/release_announcement_template.txt | 4 +- Porting/release_managers_guide.pod | 44 +++-- Porting/release_schedule.pod | 77 ++++----- Porting/todo.pod | 17 +- README.win32 | 40 ++++- dist/IO/lib/IO/Socket.pm | 21 ++- dist/Storable/Storable.pm | 6 +- pad.c | 3 +- pad.h | 2 +- perl.c | 2 +- pod/perl.pod | 4 +- pod/perldelta.pod | 28 +++- pod/perldiag.pod | 15 +- pod/perlfork.pod | 80 ++++----- pod/perlfunc.pod | 59 ++++--- pod/perlgit.pod | 10 +- pod/perlguts.pod | 2 +- pod/perlhack.pod | 3 +- pod/perlhist.pod | 8 + pod/perliol.pod | 2 +- pod/perlipc.pod | 71 ++++---- pod/perllocale.pod | 25 ++- pod/perlmod.pod | 21 +++ pod/perlmodstyle.pod | 39 +++-- pod/perlnewmod.pod | 3 + pod/perlop.pod | 219 +++++++++++++------------ pod/perlpolicy.pod | 19 ++- pod/perlport.pod | 44 ++--- pod/perlrecharclass.pod | 4 +- pod/perlref.pod | 68 ++++---- pod/perlsec.pod | 42 ++--- pod/perlsub.pod | 31 ++-- pod/perlsyn.pod | 263 +++++++++++++++--------------- pod/perlthrtut.pod | 66 ++++---- pod/perluniintro.pod | 14 +- pod/perlvar.pod | 11 +- sv.c | 4 +- sv.h | 2 +- t/op/yadayada.t | 31 +++- 41 files changed, 1012 insertions(+), 613 deletions(-) diff --git a/AUTHORS b/AUTHORS index dcbbfd5..baede9e 100644 --- a/AUTHORS +++ b/AUTHORS @@ -357,6 +357,7 @@ Duke Leto <[email protected]> Duncan Findlay <[email protected]> E. Choroba <choroba@weed.(none)> Ed Avis <[email protected]> +Ed J <[email protected]> Ed Mooring <[email protected]> Ed Santiago <[email protected]> Eddy Tan <[email protected]> @@ -423,6 +424,7 @@ Gerrit P. Haase <[email protected]> Gideon Israel Dsouza <[email protected]> Giles Lean <[email protected]> Gisle Aas <[email protected]> +Glenn D. Golden <[email protected]> Glenn Linderman <[email protected]> Gordon Lack <[email protected]> Gordon J. Miller <[email protected]> @@ -584,6 +586,7 @@ Joergen Haegg Johan Holtman Johan Vromans <[email protected]> Johann Klasek <[email protected]> +Johann 'Myrkraverk' Oskarsson <[email protected]> Johannes Plunien <[email protected]> John Bley <[email protected]> John Borwick <[email protected]> @@ -1122,6 +1125,7 @@ Sullivan Beck <[email protected]> Sven Strickroth <[email protected]> Sven Verdoolaege <[email protected]> SynaptiCAD, Inc. <[email protected]> +Tadeusz SoÅnierz <[email protected]> Takis Psarogiannakopoulos <[email protected]> Taro KAWAGISHI Tassilo von Parseval <[email protected]> diff --git a/Porting/epigraphs.pod b/Porting/epigraphs.pod index ffb561f..e628ea6 100644 --- a/Porting/epigraphs.pod +++ b/Porting/epigraphs.pod @@ -17,6 +17,166 @@ Consult your favorite dictionary for details. =head1 EPIGRAPHS +=head2 v5.21.7 - Robert Heinlein, The Number of the Beast + +L<Announced on 2014-12-20 by Max Maischein|http://www.nntp.perl.org/group/perl.perl5.porters/2014/12/msg223774.html> + + "Zebadiah, Hilda and I salvaged and put everything into the basket. + Hilda started to put it into our wardrobe-and it was heavy. So + we looked. Packed as tight as when we left Oz. Six bananas-and + everything else. Cross my heart. No, go look." + "Hmmm- Jake, can you write equations for a picnic basket that + refills itself? Will it go on doing so?" + "Zeb, equations can be written to describe anything. The description + would be simpler for a basket that replenishes itself indefinitely + than for one that does it once and stops-I would have to describe + the discontinuity." + +=head2 v5.21.6 - Jeff Noon, Vurt + +L<Announced on 2014-11-20 by Chris 'BinGOs' Williams|http://www.nntp.perl.org/group/perl.perl5.porters/2014/11/msg222448.html> + + GAME CAT + + EXCHANGE MECHANISMS. Sometimes we lose precious + things. Friends and colleagues, fellow travellers in the + Vurt, sometimes we lose them; even lovers we sometimes + lose. And get bad things in exchange: aliens, objects, + snakes, and sometimes even death. Things we don't want. + This is part of the deal, part of the game deal; + all things, in all worlds, must be kept in balance. + Kittlings often ask, who decides on the swappings? Now then, + some say it's all accidental; that some poor Vurt thing + finds himself too close to a door, at too critical a time, + just when something real is being lost. Whoosh! Swap time! + Others say that some kind of overseer is working the + MECHANISMS OF EXCHANGE, deciding the fate of innocents. + The Cat can only tease at this, because of the big secrets + involved, and because of the levels between you, the reader, + and me, the Game Cat. Hey, listen; I've struggled to get + where I am today; why should I give you the easy route? + Get working, kittlings! Reach up higher. Work the Vurt. + +=head2 v5.21.5 - Friso Wiegersma (text), Jean Ferrat (music), Wim Sonneveld (performer), Het Dorp + +L<Announced on 2014-10-20 by Abigail|http://www.nntp.perl.org/group/perl.perl5.porters/2014/10/msg221399.html> + + Het Dorp + + Thuis heb ik nog een ansichtkaart + waarop een kerk, een kar met paard, + een slagerij J. van der Ven. + Een kroeg, een juffrouw op de fiets + het zegt u hoogstwaarschijnlijk niets, + maar 't is waar ik geboren ben. + Dit dorp, ik weet nog hoe het was, + de boerenkind'ren in de klas, + een kar die ratelt op de keien, + het raadhuis met een pomp ervoor, + een zandweg tussen koren door, + het vee, de boerderijen. + + En langs het tuinpad van m'n vader + zag ik de hoge bomen staan. + Ik was een kind en wist niet beter, + dan dat dat nooit voorbij zou gaan. + + Wat leefden ze eenvoudig toen + in simp'le huizen tussen groen + met boerenbloemen en een heg. + Maar blijkbaar leefden ze verkeerd, + het dorp is gemoderniseerd + en nu zijn ze op de goeie weg. + Want ziet, hoe rijk het leven is, + ze zien de televisiequiz + en wonen in betonnen dozen, + met flink veel glas, dan kun je zien + hoe of het bankstel staat bij Mien + en d'r dressoir met plastic rozen. + + En langs het tuinpad van m'n vader + zag ik de hoge bomen staan. + Ik was een kind en wist niet beter, + dan dat dat nooit voorbij zou gaan. + + De dorpsjeugd klit wat bij elkaar + in minirok en beatle-haar + en joelt wat mee met beat-muziek. + Ik weet wel, het is hun goeie recht, + de nieuwe tijd, net wat u zegt, + maar het maakt me wat melancholiek. + Ik heb hun vaders nog gekend + ze kochten zoethout voor een cent + ik zag hun moeders touwtjespringen. + Dat dorp van toen, het is voorbij, + dit is al wat er bleef voor mij: + een ansicht en herinneringen. + + Toen ik langs het tuinpad van m'n vader + de hoge bomen nog zag staan. + Ik was een kind, hoe kon ik weten + dat dat voorgoed voorbij zou gaan. + +=head2 v5.21.4 - Edgar Allan Poe, The Narrative of Arthur Gordon Pym of Nantucket + +L<Announced on 2014-09-20 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2014/09/msg220267.html> + + To-day, being in latitude 83° 20', longitude 43° 5' W. (the sea being + of an extraordinarily dark colour), we again saw land from the + masthead, and, upon a closer scrutiny, found it to be one of a group + of very large islands. The shore was precipitous, and the interior + seemed to be well wooded, a circumstance which occasioned us great + joy. In about four hours from our first discovering the land we came + to anchor in ten fathoms, sandy bottom, a league from the coast, as a + high surf, with strong ripples here and there, rendered a nearer + approach of doubtful expediency. The two largest boats were now + ordered out, and a party, well armed (among whome were Peters and + myself), proceeded to look for an opening in the reef which appeared + to encircle the island. After searching about for some time, we + discovered an inlet, which we were entering, when we saw four large + canoes put off from the shore, filled with men who seemed to be well + armed. We waited for them to come up, and, as they moved with great + rapidity, they were soon within hail. Captain Guy now held up a white + handkerchief on the blade of an oar, when the strangers made a full + stop, and commenced a loud jabbering all at once, intermingled with + occasional shouts, in which we could distinguish the words Anamoo-moo! + and Lama-Lama! They continued this for at least half an hour, during + which we had a good opportunity of observing their appearance. + +=head2 v5.20.1 - Lorenzo da Ponte, Così fan tutte + +L<Announced on 2014-09-14 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2014/09/msg219789.html> + + DORABELLA (as if waking from a daze): Where are they? + DON ALFONSO: They've gone. + FIORDILIGI: Oh, the cruel bitterness of parting! + + DON ALFONSO: + Take heart, my dearest children. + Look, in the distance, your lovers are waving to you. + + FIORDILIGI: Bon voyage, my darling! + DORABELLA: Bon voyage! + + FIORDILIGI: + O heavens! How swiftly the ship is sailing away! + It is disappearing already! + It is no longer in sight! + Oh, may heaven grant it a prosperous voyage! + + DORABELLA: May good luck attend it to the battlefield! + DON ALFONSO: And may your sweethearts and my friends be safe! + + FIORDILIGI, DORABELLA, DON ALFONSO: + May the wind be gentle, + may the sea be calm, + and may the elements + respond kindly + to our wishes. + + -- Lorenzo da Ponte, /Così fan tutte/, + trans. Diana Reed + =head2 v5.20.1-RC2 - Lorenzo da Ponte, Così fan tutte L<Announced on 2014-09-07 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2014/09/msg219446.html> @@ -511,6 +671,63 @@ L<Announced on 2013-05-20 by Ricardo Signes|http://www.nntp.perl.org/group/perl. â¦that I can't fix⦠â¦with my hands⦠+=head2 v5.18.4 - Robert W. Chambers, "The King in Yellow" + +L<Announced on 2014-10-01 by Ricardo Signes|http://www.nntp.perl.org/group/perl.perl5.porters/2014/10/msg220770.html> + + Along the shore the cloud waves break, + The twin suns sink beneath the lake, + The shadows lengthen + In Carcosa. + + Strange is the night where black stars rise, + And strange moons circle through the skies + But stranger still is + Lost Carcosa. + + Songs that the Hyades shall sing, + Where flap the tatters of the King, + Must die unheard in + Dim Carcosa. + + Song of my soul, my voice is dead; + Die thou, unsung, as tears unshed + Shall dry and die in + Lost Carcosa. + + -- Cassilda's Song in "The King in Yellow," Act i, Scene 2. + Robert W. Chambers + +=head2 v5.18.3 - (no epigraph) + +(no epigraph) + +=head2 v5.18.3-RC2 - Robert W. Chambers, "The King in Yellow" + +L<Announced on 2014-09-27|http://nntp.perl.org/group/perl.perl5.porters/220613> + +"Ah! I see it now!" I shrieked. "You have seized the throne and the +empire. Woe! woe to you who are crowned with the crown of the King in +Yellow!" + + -- Robert W. Chambers, The King in Yellow, Act I, Scene 2. + +=head2 v5.18.3-RC1 - Robert W. Chambers, "The King in Yellow" + +L<Announced on 2014-09-17|http://nntp.perl.org/group/perl.perl5.porters/220072> + + CAMILLA: You, sir, should unmask. + + STRANGER: Indeed? + + CASSILDA: Indeed it's time. We all have laid aside disguise but you. + + STRANGER: I wear no mask. + + CAMILLA: (Terrified, aside to Cassilda.) No mask? No mask! + + -- Robert W. Chambers, The King in Yellow, Act I, Scene 2. + =head2 v5.18.2 - Miss Manners L<Announced on 2014-01-06 by Ricardo Signes|http://www.nntp.perl.org/group/perl.perl5.porters/2014/01/msg211224.html> diff --git a/Porting/release_announcement_template.txt b/Porting/release_announcement_template.txt index fbd8d22..9286ec8 100644 --- a/Porting/release_announcement_template.txt +++ b/Porting/release_announcement_template.txt @@ -21,7 +21,7 @@ the "pod" directory inside the release and on the web. [ACKNOWLEDGEMENTS SECTION FROM PERLDELTA] We expect to release version [NEXT BLEAD VERSION.SUBVERSION] on [FUTURE -DATE]. The next major stable release of Perl 5, version 20.0, should -appear in May 2014. +DATE]. The next major stable release of Perl 5, version 22.0, should +appear in May 2015. [YOUR SALUTATION HERE] diff --git a/Porting/release_managers_guide.pod b/Porting/release_managers_guide.pod index 1ab7132..db709fd 100644 --- a/Porting/release_managers_guide.pod +++ b/Porting/release_managers_guide.pod @@ -171,14 +171,9 @@ For updating the L<http://dev.perl.org> web pages, either a Github account or sweet-talking somebody with a Github account into obedience is needed. This is only needed on the day of the release or shortly afterwards. -=for checklist skip RC - =head3 Quotation for release announcement epigraph -I<SKIP this step for RC> - -For all except an RC release of perl, you will need a quotation -to use as an epigraph to your release announcement. +You will need a quotation to use as an epigraph to your release announcement. =head2 Building a release - advance actions @@ -410,6 +405,10 @@ After editing, regenerate uconfig.h (this must be run on a system with a This might not cause any new changes. +You may have to add stub entries in C<%Module::CoreList::version>, +C<%Module::CoreList::deprecated> and C<%Module::CoreList::Utils::delta>. +If so, you must up their version numbers as well. + Test your changes: $ git clean -xdf # careful if you don't have local files to keep! @@ -544,6 +543,10 @@ C<$Module::CoreList::Utils::VERSION> should always be equal to C<$Module::CoreList::VERSION>. If necessary, bump those two versions to match before proceeding. +The files to modify are: F<dist/Module-CoreList/lib/Module/CoreList.pm>, +F<dist/Module-CoreList/lib/Module/CoreList/Utils.pm> and +F<dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm>. + =head4 Update C<Module::CoreList> with module version data for the new release. Note that if this is a MAINT release, you should run the following actions @@ -744,12 +747,8 @@ from blead: $ cp ..../blead/pod/perlhist.pod pod/ $ git commit -m 'sync perlhist from blead' pod/perlhist.pod -=for checklist skip RC - =head3 update perlhist.pod -I<You MUST SKIP this step for a RC release> - Add an entry to F<pod/perlhist.pod> with the release date, e.g.: David 5.10.1 2009-Aug-06 @@ -1098,6 +1097,14 @@ why you chose that particular quote for your epigraph. =for checklist skip RC +=head3 Release schedule + +I<You MUST SKIP this step for RC> + +Tick the entry for your release in F<Porting/release_schedule.pod>. + +=for checklist skip RC + =head3 Module::CoreList nagging I<You MUST SKIP this step for RC> @@ -1176,6 +1183,18 @@ L<"Bump the version number">. After bumping the version, follow the section L<"update INSTALL"> to ensure all version number references are correct. +(Note: The version is NOT bumped immediately after a MAINT release in order +to avoid confusion and wasted time arising from bug reports relating to +"intermediate versions" such as 5.20.1-and-a-bit: If the report is caused +by a bug that gets fixed in 5.20.2 and this intermediate version already +calls itself 5.20.2 then much time can be wasted in figuring out why there +is a failure from something that "should have been fixed". If the bump is +late then there is a much smaller window of time for such confusing bug +reports to arise. (The opposite problem -- trying to figure out why there +*is* a bug in something calling itself 5.20.1 when in fact the bug was +introduced later -- shouldn't arise for MAINT releases since they should, +in theory, only contain bug fixes but never regressions.)) + =head3 clean build and test Run a clean build and test to make sure nothing obvious is broken. @@ -1301,11 +1320,6 @@ Thanks for releasing perl! =head2 Building a release - the day after -=head3 link announcement in epigraphs.pod - -Add, to your quote to F<Porting/epigraphs.pod>, a link to the release -announcement in the web-visible mailing list archive. Commit it. - =for checklist skip BLEAD-FINAL, MAINT, RC =head3 update Module::CoreList diff --git a/Porting/release_schedule.pod b/Porting/release_schedule.pod index 0c74d1b..d7bfb29 100644 --- a/Porting/release_schedule.pod +++ b/Porting/release_schedule.pod @@ -8,38 +8,32 @@ release_schedule - Perl 5 release schedule This schedule lists the projected or historical development and release schedules for the next, current and previous stable versions -of Perl. Dates with all question marks will only be releases if +of Perl. Dates with two or more question marks will only be releases if deemed necessary by the Pumpking. -=head2 Perl 5.20 +=head2 Perl 5.22 -Code freezes (which happen in the 5.19.X series) +Code freezes (which happen in the 5.21.X series) - 2014-01-20 5.19.8 Contentious changes freeze - 2014-02-20 5.19.9 User-visible changes freeze - 2014-03-20 5.19.10 Full code freeze - 2014-05-20 5.20.0 Stable release! + 2015-01-20 5.21.8 Contentious changes freeze + 2015-02-20 5.21.9 User-visible changes freeze + 2015-03-20 5.21.10 Full code freeze + 2015-05-20 5.22.0 Stable release! -=head2 Perl 5.18 +=head2 Perl 5.20 -Release schedule (with release manager): + 2014-05-27 5.20.0 â Ricardo Signes + 2014-09-14 5.20.1 â Steve Hay + 2015-01-?? 5.20.2 Steve Hay + +=head2 Perl 5.18 2013-05-18 5.18.0 â Ricardo Signes 2013-08-12 5.18.1 â Ricardo Signes - 2013-11-?? 5.18.2 Ricardo Signes - -(RC0 will be released once we think that all the blockers have been -addressed. This typically means some time in April or May.) - -=head2 Perl 5.16 - -Release schedule (with release managers): - - 2012-05-20 5.16.0 â Ricardo Signes - 2012-08-08 5.16.1 â Ricardo Signes - 2012-11-01 5.16.2 â Ricardo Signes - 2013-03-11 5.16.3 â Ricardo Signes - ????-??-?? 5.16.4 ?? + 2014-01-06 5.18.2 â Ricardo Signes + 2014-10-01 5.18.3 â Ricardo Signes + 2014-10-01 5.18.4 â Ricardo Signes + 2015-??-?? 5.18.5 ?? =head1 DEVELOPMENT RELEASE SCHEDULE @@ -55,36 +49,24 @@ When shipping a release, you should include the schedule for (at least) the next four releases. If a stable version of Perl is released, you should reset the version numbers to the next blead series. -=head2 Perl 5.19 - - 2013-05-20 5.19.0 Ricardo Signes - 2013-06-20 5.19.1 David Golden - 2013-07-20 5.19.2 Aristotle Pagaltzis - 2013-08-20 5.19.3 Steve Hay - 2013-09-20 5.19.4 Steve Hay - 2013-10-20 5.19.5 Steve Hay - 2013-11-20 5.19.6 Chris Williams - 2013-12-20 5.19.7 Abigail - 2014-01-20 5.19.8 Ricardo Signes - 2014-02-20 5.19.9 Tony Cook - 2014-03-20 5.19.10 Aaron Crane - 2014-04-20 5.19.11 Steve Hay - =head2 Perl 5.21 - 2014-05-20 5.21.0 Ricardo Signes - 2014-06-20 5.21.1 Matthew Horsfall - 2014-07-20 5.21.2 Abigail - 2014-08-20 5.21.3 ? - 2014-09-20 5.21.4 ? - 2014-10-20 5.21.5 ? - 2014-11-20 5.21.6 ? - 2014-12-20 5.21.7 ? - 2015-01-20 5.21.8 ? + 2014-05-20 5.21.0 â Ricardo Signes + 2014-06-20 5.21.1 â Matthew Horsfall + 2014-07-20 5.21.2 â Abigail + 2014-08-20 5.21.3 â Peter Martini + 2014-09-20 5.21.4 â Steve Hay + 2014-10-20 5.21.5 â Abigail + 2014-11-20 5.21.6 â Chris "BinGOs" Williams + 2014-12-20 5.21.7 â Max Maischein + 2015-01-20 5.21.8 Matthew Horsfall 2015-02-20 5.21.9 ? 2015-03-20 5.21.10 ? 2015-04-20 5.21.11 ? +(RC0 for 5.22.0 will be released once we think that all the blockers have been +addressed. This typically means some time in April or May.) + =head1 VICTIMS The following porters have all consented to do at least @@ -106,6 +88,7 @@ Jesse Luehrs <[email protected]> Jesse Vincent <[email protected]> Leon Brocard <[email protected]> Matt Trout <[email protected]> +Matthew Horsfall <[email protected]> Max Maischein <[email protected]> Peter Martini <[email protected]> Philippe Bruhat <[email protected]> diff --git a/Porting/todo.pod b/Porting/todo.pod index 98ec00c..e7819ef 100644 --- a/Porting/todo.pod +++ b/Porting/todo.pod @@ -1023,14 +1023,15 @@ The old perltodo notes "Look at the "reification" code in C<av.c>". =head2 Virtualize operating system access Implement a set of "vtables" that virtualizes operating system access -(open(), mkdir(), unlink(), readdir(), getenv(), etc.) At the very -least these interfaces should take SVs as "name" arguments instead of -bare char pointers; probably the most flexible and extensible way -would be for the Perl-facing interfaces to accept HVs. The system -needs to be per-operating-system and per-file-system -hookable/filterable, preferably both from XS and Perl level -(L<perlport/"Files and Filesystems"> is good reading at this point, -in fact, all of L<perlport> is.) +(chdir(), chmod(), dbmopen(), getenv(), glob(), link(), mkdir(), open(), +opendir(), readdir(), rename(), rmdir(), stat(), sysopen(), uname(), +unlink(), etc.) At the very least these interfaces should take SVs as +"name" arguments instead of bare char pointers; probably the most +flexible and extensible way would be for the Perl-facing interfaces to +accept HVs. The system needs to be per-operating-system and +per-file-system hookable/filterable, preferably both from XS and Perl +level (L<perlport/"Files and Filesystems"> is good reading at this +point, in fact, all of L<perlport> is.) This has actually already been implemented (but only for Win32), take a look at F<iperlsys.h> and F<win32/perlhost.h>. While all Win32 diff --git a/README.win32 b/README.win32 index e4d457a..d697459 100644 --- a/README.win32 +++ b/README.win32 @@ -120,10 +120,20 @@ build usually works in this circumstance, but some tests will fail. =item Microsoft Visual C++ -The nmake that comes with Visual C++ will suffice for building. -You will need to run the VCVARS32.BAT file, usually found somewhere -like C:\Program Files\Microsoft Visual Studio\VC98\Bin. -This will set your build environment. +The nmake that comes with Visual C++ will suffice for building. Visual C +requires that certain things be set up in the console before Visual C will +sucessfully run. To make a console box be able to run the C compiler, you will +need to beforehand, run the C<vcvars32.bat> file to compile for x86-32 and for +x86-64 C<vcvarsall.bat x64> or C<vcvarsamd64.bat>. On a typical install of a +Microsoft C compiler product, these batch files will already be in your C<PATH> +environment variable so you may just type them without an absolute path into +your console. If you need to find the absolute path to the batch file, it is +usually found somewhere like C:\Program Files\Microsoft Visual Studio\VC98\Bin. +With some newer Micrsoft C products (released after ~2004), the installer will +put a shortcut in the start menu to launch a new console window with the +console already set up for your target architecture (x86-32 or x86-64 or IA64). +With the newer compilers, you may also use the older batch files if you choose +so. You can also use dmake to build using Visual C++; provided, however, you set OSRELEASE to "microsft" (or whatever the directory name @@ -387,6 +397,13 @@ perl520.dll at the perl toplevel, and various other extension dll's under the lib\auto directory. If the build fails for any reason, make sure you have done the previous steps correctly. +If you are advanced enough with building C code, here is a suggestion to speed +up building perl, and the later C<make test>. Try to keep your PATH enviromental +variable with the least number of folders possible (remember to keep your C +compiler's folders there). C<C:\WINDOWS\system32> or C<C:\WINNT\system32> +depending on your OS version should be first folder in PATH, since "cmd.exe" +is the most commonly launched program during the build and later testing. + =back =head2 Testing Perl on Windows @@ -588,7 +605,7 @@ Look in L<http://www.cpan.org/> for more information on CPAN. Note that not all of the extensions available from CPAN may work in the Windows environment; you should check the information at -L<http://testers.cpan.org/> before investing too much effort into +L<http://www.cpantesters.org/> before investing too much effort into porting modules that don't readily build. Most extensions (whether they require a C compiler or not) can @@ -632,7 +649,8 @@ edit Config.pm to fix it. If a module implements XSUBs, you will need one of the supported C compilers. You must make sure you have set up the environment for -the compiler for command-line compilation. +the compiler for command-line compilation before running C<perl Makefile.PL> +or any invocation of make. If a module does not build for some reason, look carefully for why it failed, and report problems to the module author. If @@ -846,6 +864,14 @@ updating it). The build does complete with but that may be just luck. Other AntiVirus software may have similar issues. +A git GUI shell extension for Windows such as TortoiseGit will cause the build +and later C<make test> to run much slower since every file is checked for its +git status as soon as it is created and/or modified. TortoiseGit doesn't cause +any test failures or build problems unlike the antivirus software described +above, but it does cause similar slowness. It is suggested to use Task Manager +to look for background processes which use high CPU amounts during the building +process. + Some of the built-in functions do not act exactly as documented in L<perlfunc>, and a few are not implemented at all. To avoid surprises, particularly if you have had prior exposure to Perl @@ -915,6 +941,6 @@ Win9x support was added in 5.6 (Benjamin Stuhl). Support for 64-bit Windows added in 5.8 (ActiveState Corp). -Last updated: 22 October 2013 +Last updated: 07 October 2014 =cut diff --git a/dist/IO/lib/IO/Socket.pm b/dist/IO/lib/IO/Socket.pm index 625c71a..c78aeec 100644 --- a/dist/IO/lib/IO/Socket.pm +++ b/dist/IO/lib/IO/Socket.pm @@ -24,7 +24,7 @@ require IO::Socket::UNIX if ($^O ne 'epoc' && $^O ne 'symbian'); @ISA = qw(IO::Handle); -$VERSION = "1.37"; +$VERSION = "1.38"; @EXPORT_OK = qw(sockatmark); @@ -499,8 +499,23 @@ C<use> declaration will fail at compile time. =item connected -If the socket is in a connected state the peer address is returned. -If the socket is not in a connected state then undef will be returned. +If the socket is in a connected state, the peer address is returned. If the +socket is not in a connected state, undef is returned. + +Note that connected() considers a half-open TCP socket to be "in a connected +state". Specifically, connected() does not distinguish between the +B<ESTABLISHED> and B<CLOSE-WAIT> TCP states; it returns the peer address, +rather than undef, in either case. Thus, in general, connected() cannot +be used to reliably learn whether the peer has initiated a graceful shutdown +because in most cases (see below) the local TCP state machine remains in +B<CLOSE-WAIT> until the local application calls shutdown() or close(); +only at that point does connected() return undef. + +The "in most cases" hedge is because local TCP state machine behavior may +depend on the peer's socket options. In particular, if the peer socket has +SO_LINGER enabled with a zero timeout, then the peer's close() will generate +a RST segment, upon receipt of which the local TCP transitions immediately to +B<CLOSED>, and in that state, connected() I<will> return undef. =item protocol diff --git a/dist/Storable/Storable.pm b/dist/Storable/Storable.pm index f74c867..7d8a011 100644 --- a/dist/Storable/Storable.pm +++ b/dist/Storable/Storable.pm @@ -22,7 +22,7 @@ package Storable; @ISA = qw(Exporter); use vars qw($canonical $forgive_me $VERSION); -$VERSION = '2.49'; +$VERSION = '2.49_01'; BEGIN { if (eval { local $SIG{__DIE__}; require Log::Agent; 1 }) { @@ -1086,8 +1086,8 @@ deal with them. The store functions will C<croak> if they run into such references unless you set C<$Storable::forgive_me> to some C<TRUE> value. In that -case, the fatal message is turned in a warning and some -meaningless string is stored instead. +case, the fatal message is converted to a warning and some meaningless +string is stored instead. Setting C<$Storable::canonical> may not yield frozen strings that compare equal due to possible stringification of numbers. When the diff --git a/pad.c b/pad.c index 31282d1..fed2892 100644 --- a/pad.c +++ b/pad.c @@ -56,7 +56,8 @@ at that depth of recursion into the CV. The 0th slot of a frame AV is an AV which is @_. Other entries are storage for variables and op targets. Iterating over the PADNAMELIST iterates over all possible pad -items. Pad slots for targets (SVs_PADTMP) and GVs end up having &PL_sv_no +items. Pad slots for targets (SVs_PADTMP) +and GVs end up having &PL_sv_undef "names", while slots for constants have &PL_sv_no "names" (see pad_alloc()). That &PL_sv_no is used is an implementation detail subject to change. To test for it, use C<PadnamePV(name) && !PadnameLEN(name)>. diff --git a/pad.h b/pad.h index 6269bdc..90517c6 100644 --- a/pad.h +++ b/pad.h @@ -242,7 +242,7 @@ for C<my Foo $bar>. =for apidoc m|SV *|PAD_SETSV |PADOFFSET po|SV* sv Set the slot at offset C<po> in the current pad to C<sv> -=for apidoc m|void|PAD_SV |PADOFFSET po +=for apidoc m|SV *|PAD_SV |PADOFFSET po Get the value at offset C<po> in the current pad =for apidoc m|SV *|PAD_SVl |PADOFFSET po diff --git a/perl.c b/perl.c index 0fb87dc..80c072e 100644 --- a/perl.c +++ b/perl.c @@ -2925,7 +2925,7 @@ Perl_eval_sv(pTHX_ SV *sv, I32 flags) /* =for apidoc p||eval_pv -Tells Perl to C<eval> the given string and return an SV* result. +Tells Perl to C<eval> the given string in scalar context and return an SV* result. =cut */ diff --git a/pod/perl.pod b/pod/perl.pod index ace897f..53841b0 100644 --- a/pod/perl.pod +++ b/pod/perl.pod @@ -184,9 +184,9 @@ aux a2p c2ph h2ph h2xs perlbug pl2pm pod2html pod2man s2p splain xsubpp perl5182delta Perl changes in version 5.18.2 perl5181delta Perl changes in version 5.18.1 perl5180delta Perl changes in version 5.18.0 - perl5161delta Perl changes in version 5.16.1 - perl5162delta Perl changes in version 5.16.2 perl5163delta Perl changes in version 5.16.3 + perl5162delta Perl changes in version 5.16.2 + perl5161delta Perl changes in version 5.16.1 perl5160delta Perl changes in version 5.16.0 perl5144delta Perl changes in version 5.14.4 perl5143delta Perl changes in version 5.14.3 diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 7dac987..96af1bf 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -126,6 +126,12 @@ L<[perl #122701]|https://rt.perl.org/Ticket/Display.html?id=122701> =item * +L<IO::Socket> has been upgraded from version 1.37 to 1.38. + +Document the limitations of the isconnected() method. [perl #123096] + +=item * + L<PerlIO::scalar> has been upgraded from version 0.18 to 0.18_01. Reading from a position well past the end of the scalar now correctly @@ -176,6 +182,11 @@ section. XXX Description of the change here +=item * + +L<perlsyn>: An ambiguity in the documentation of the Ellipsis statement has +been corrected. [perl #122661] + =back =head1 Diagnostics @@ -431,6 +442,17 @@ and there must be a string of at least 128 consecutive bytes to match. C<qr/@array(?{block})/> no longer dies with "Bizarre copy of ARRAY". [#123344] +=item * + +C<gmtime> no longer crashes with not-a-number values. [perl #123495] + +=item * + +Certain syntax errors in substitutions, such as C<< s/${<>{})// >>, would +crash, and had done so since Perl 5.10. (In some cases the crash did not +start happening till 5.16.) The crash has, of course, been fixed. +[perl #123542] + =back =head1 Known Problems @@ -455,8 +477,10 @@ XXX =item * -XXX Add anything here that we forgot to add, or were mistaken about, in -the perldelta of a previous release. +A regression has been fixed that was introduced in v5.20.0 (fixed in +v5.20.1 as well as here) in which a UTF-8 encoded regular expression +pattern that contains a single ASCII lowercase letter does not match its +uppercase counterpart. [perl #122655] =back diff --git a/pod/perldiag.pod b/pod/perldiag.pod index d669168..bae6e4e 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -1391,9 +1391,10 @@ uses the character values modulus 256 instead, as if you had provided: =item "\c%c" is more clearly written simply as "%s" (W syntax) The C<\cI<X>> construct is intended to be a way to specify -non-printable characters. You used it for a printable one, which is better -written as simply itself, perhaps preceded by a backslash for non-word -characters. +non-printable characters. You used it for a printable one, which +is better written as simply itself, perhaps preceded by a backslash +for non-word characters. Doing it the way you did is not portable +between ASCII and EBCDIC platforms. =item Cloning substitution context is unimplemented @@ -2202,7 +2203,7 @@ of Perl are likely to eliminate these arbitrary limitations. =item Ignoring zero length \N{} in character class in regex; marked by S<<-- HERE> in m/%s/ -(W regexp) Named Unicode character escapes C<(\N{...})> may return a +(W regexp) Named Unicode character escapes (C<\N{...}>) may return a zero-length sequence. When such an escape is used in a character class its behaviour is not well defined. Check that the correct escape has been used, and the correct charname handler is in scope. @@ -2563,7 +2564,7 @@ a module that is a MRO plugin. See L<mro> and L<perlmroapi>. =item Invalid negative number (%s) in chr (W utf8) You passed a negative number to C<chr>. Negative numbers are -not valid characters numbers, so it return the Unicode replacement +not valid character numbers, so it returns the Unicode replacement character (U+FFFD). =item invalid option -D%c, use -D'' to see choices @@ -3307,7 +3308,7 @@ probably not what you want. =item \N{} in character class restricted to one character in regex; marked by S<<-- HERE> in m/%s/ -(F) Named Unicode character escapes C<(\N{...})> may return a +(F) Named Unicode character escapes (C<\N{...}>) may return a multi-character sequence. Such an escape may not be used in a character class, because character classes always match one character of input. Check that the correct escape has been used, @@ -6756,7 +6757,7 @@ Something Very Wrong. =item Zero length \N{} in regex; marked by S<<-- HERE> in m/%s/ -(F) Named Unicode character escapes C<(\N{...})> may return a zero-length +(F) Named Unicode character escapes (C<\N{...}>) may return a zero-length sequence. Such an escape was used in an extended character class, i.e. C<(?[...])>, which is not permitted. Check that the correct escape has been used, and the correct charnames handler is in scope. The S<<-- HERE> diff --git a/pod/perlfork.pod b/pod/perlfork.pod index fed58f3..c118fb5 100644 --- a/pod/perlfork.pod +++ b/pod/perlfork.pod @@ -168,8 +168,8 @@ BEGIN block, but will not continue parsing the source stream after the BEGIN block. For example, consider the following code: BEGIN { - fork and exit; # fork child and exit the parent - print "inner\n"; + fork and exit; # fork child and exit the parent + print "inner\n"; } print "outer\n"; @@ -198,7 +198,7 @@ separately in the child. On some operating systems, notably Solaris and Unixware, calling C<exit()> from a child process will flush and close open filehandles in the parent, thereby corrupting the filehandles. On these systems, calling C<_exit()> -is suggested instead. C<_exit()> is available in Perl through the +is suggested instead. C<_exit()> is available in Perl through the C<POSIX> module. Please consult your system's manpages for more information on this. @@ -224,63 +224,63 @@ write to a forked child: # simulate open(FOO, "|-") sub pipe_to_fork ($) { - my $parent = shift; - pipe my $child, $parent or die; - my $pid = fork(); - die "fork() failed: $!" unless defined $pid; - if ($pid) { - close $child; - } - else { - close $parent; - open(STDIN, "<&=" . fileno($child)) or die; - } - $pid; + my $parent = shift; + pipe my $child, $parent or die; + my $pid = fork(); + die "fork() failed: $!" unless defined $pid; + if ($pid) { + close $child; + } + else { + close $parent; + open(STDIN, "<&=" . fileno($child)) or die; + } + $pid; } if (pipe_to_fork('FOO')) { - # parent - print FOO "pipe_to_fork\n"; - close FOO; + # parent + print FOO "pipe_to_fork\n"; + close FOO; } else { - # child - while (<STDIN>) { print; } - exit(0); + # child + while (<STDIN>) { print; } + exit(0); } And this one reads from the child: # simulate open(FOO, "-|") sub pipe_from_fork ($) { - my $parent = shift; - pipe $parent, my $child or die; - my $pid = fork(); - die "fork() failed: $!" unless defined $pid; - if ($pid) { - close $child; - } - else { - close $parent; - open(STDOUT, ">&=" . fileno($child)) or die; - } - $pid; + my $parent = shift; + pipe $parent, my $child or die; + my $pid = fork(); + die "fork() failed: $!" unless defined $pid; + if ($pid) { + close $child; + } + else { + close $parent; + open(STDOUT, ">&=" . fileno($child)) or die; + } + $pid; } if (pipe_from_fork('BAR')) { - # parent - while (<BAR>) { print; } - close BAR; + # parent + while (<BAR>) { print; } + close BAR; } else { - # child - print "pipe_from_fork\n"; - exit(0); + # child + print "pipe_from_fork\n"; + exit(0); } Forking pipe open() constructs will be supported in future. -=item Global state maintained by XSUBs +=item Global state maintained by XSUBs External subroutines (XSUBs) that maintain their own global state may not work correctly. Such XSUBs will either need to maintain locks to diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod index 7713f54..9a12865 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -458,7 +458,7 @@ characters are strange, it's a C<-B> file; otherwise it's a C<-T> file. Also, any file containing a zero byte in the examined portion is considered a binary file. (If executed within the scope of a L<S<use locale>|perllocale> which includes C<LC_CTYPE>, odd characters are -anything that isn't a printable nor space in the current locale.) If +anything that isn't a printable nor space in the current locale.) If C<-T> or C<-B> is used on a filehandle, the current IO buffer is examined rather than the first block. Both C<-T> and C<-B> return true on an empty @@ -744,7 +744,8 @@ Returns the context of the current pure perl subroutine call. In scalar context, returns the caller's package name if there I<is> a caller (that is, if we're in a subroutine or C<eval> or C<require>) and the undefined value otherwise. caller never returns XS subs and they are skipped. The next pure -perl sub will appear instead of the XS sub in caller's return values. In list +perl sub will appear instead of the XS +sub in caller's return values. In list context, caller returns # 0 1 2 @@ -762,7 +763,7 @@ to go back before the current one. = caller($i); Here, $subroutine is the function that the caller called (rather than the -function containing the caller). Note that $subroutine may be C<(eval)> if +function containing the caller). Note that $subroutine may be C<(eval)> if the frame is not a subroutine call, but an C<eval>. In such a case additional elements $evaltext and C<$is_require> are set: C<$is_require> is true if the frame is created by a @@ -1380,11 +1381,12 @@ straightforward. Although exists() will return false for deleted entries, deleting array elements never changes indices of existing values; use shift() or splice() for that. However, if any deleted elements fall at the end of an array, the array's size shrinks to the position of the highest element that -still tests true for exists(), or to 0 if none do. In other words, an +still tests true for exists(), or to 0 if none do. In other words, an array won't have trailing nonexistent elements after a delete. -B<WARNING:> Calling delete on array values is deprecated and likely to -be removed in a future version of Perl. +B<WARNING:> Calling C<delete> on array values is strongly discouraged. The +notion of deleting or checking the existence of Perl array elements is not +conceptually coherent, and can lead to surprising behavior. Deleting from C<%ENV> modifies the environment. Deleting from a hash tied to a DBM file deletes the entry from the DBM file. Deleting from a C<tied> hash @@ -2061,9 +2063,11 @@ corresponding value is undefined. print "True\n" if $hash{$key}; exists may also be called on array elements, but its behavior is much less -obvious and is strongly tied to the use of L</delete> on arrays. B<Be aware> -that calling exists on array values is deprecated and likely to be removed in -a future version of Perl. +obvious and is strongly tied to the use of L</delete> on arrays. + +B<WARNING:> Calling C<exists> on array values is strongly discouraged. The +notion of deleting or checking the existence of Perl array elements is not +conceptually coherent, and can lead to surprising behavior. print "Exists\n" if exists $array[$index]; print "Defined\n" if defined $array[$index]; @@ -3358,7 +3362,7 @@ Respects current LC_CTYPE locale for code points < 256; and uses Unicode rules for the remaining code points (this last can only happen if the UTF8 flag is also set). See L<perllocale>. -Starting in v5.20, Perl wil use full Unicode rules if the locale is +Starting in v5.20, Perl uses full Unicode rules if the locale is UTF-8. Otherwise, there is a deficiency in this scheme, which is that case changes that cross the 255/256 boundary are not well-defined. For example, the lower case of LATIN CAPITAL @@ -3673,12 +3677,13 @@ C<{>. Usually it gets it right, but if it doesn't it won't realize something is wrong until it gets to the C<}> and encounters the missing (or unexpected) comma. The syntax error will be reported close to the C<}>, but you'll need to change something near the C<{> -such as using a unary C<+> to give Perl some help: +such as using a unary C<+> or semicolon to give Perl some help: %hash = map { "\L$_" => 1 } @array # perl guesses EXPR. wrong %hash = map { +"\L$_" => 1 } @array # perl guesses BLOCK. right - %hash = map { ("\L$_" => 1) } @array # this also works - %hash = map { lc($_) => 1 } @array # as does this. + %hash = map {; "\L$_" => 1 } @array # this also works + %hash = map { ("\L$_" => 1) } @array # as does this + %hash = map { lc($_) => 1 } @array # and this. %hash = map +( lc($_) => 1 ), @array # this is EXPR and works! %hash = map ( lc($_), 1 ), @array # evaluates to (1, @array) @@ -7645,7 +7650,8 @@ list context is currently not possible this would serve no purpose. C<state> variables are enabled only when the C<use feature "state"> pragma is in effect, unless the keyword is written as C<CORE::state>. -See also L<feature>. +See also L<feature>. Alternately, include a C<use v5.10> or later to the +current scope. =item study SCALAR X<study> @@ -8602,15 +8608,19 @@ This is often useful if you need to check the current Perl version before C<use>ing library modules that won't work with older versions of Perl. (We try not to do this more than we have to.) -C<use VERSION> also enables all features available in the requested +C<use VERSION> also lexically enables all features available in the requested version as defined by the C<feature> pragma, disabling any features not in the requested version's feature bundle. See L<feature>. Similarly, if the specified Perl version is greater than or equal to 5.12.0, strictures are enabled lexically as with C<use strict>. Any explicit use of C<use strict> or C<no strict> overrides C<use VERSION>, even if it comes -before it. In both cases, the F<feature.pm> and F<strict.pm> files are -not actually loaded. +before it. Later use of C<use VERSION> +will override all behavior of a previous +C<use VERSION>, possibly removing the C<strict> and C<feature> added by +C<use VERSION>. C<use VERSION> does not +load the F<feature.pm> or F<strict.pm> +files. The C<BEGIN> forces the C<require> and C<import> to happen at compile time. The C<require> makes sure the module is loaded into memory if it hasn't been @@ -9045,8 +9055,8 @@ and C<${^CHILD_ERROR_NATIVE}>. Note that a return value of C<-1> could mean that child processes are being automatically reaped, as described in L<perlipc>. -If you use wait in your handler for $SIG{CHLD} it may accidentally for the -child created by qx() or system(). See L<perlipc> for details. +If you use C<wait> in your handler for $SIG{CHLD}, it may accidentally wait +for the child created by qx() or system(). See L<perlipc> for details. Portability issues: L<perlport/wait>. @@ -9280,8 +9290,6 @@ This keyword is documented in L<perlsub/"Autoloading">. =item else -=item elseif - =item elsif =item for @@ -9298,6 +9306,15 @@ This keyword is documented in L<perlsub/"Autoloading">. These flow-control keywords are documented in L<perlsyn/"Compound Statements">. +=item elseif + +The "else if" keyword is spelled C<elsif> in Perl. There's no C<elif> +or C<else if> either. It does parse C<elseif>, but only to warn you +about not using it. + +See the documentation for flow-control keywords in L<perlsyn/"Compound +Statements">. + =back =over diff --git a/pod/perlgit.pod b/pod/perlgit.pod index 2b00774..b45faf4 100644 --- a/pod/perlgit.pod +++ b/pod/perlgit.pod @@ -255,12 +255,12 @@ itself you can fix it up by editing the files once more and then issue: Now you should create a patch file for all your local changes: - % git format-patch -M origin.. + % git format-patch -M blead.. 0001-Rename-Leon-Brocard-to-Orange-Brocard.patch Or for a lot of changes, e.g. from a topic branch: - % git format-patch --stdout -M origin.. > topic-branch-changes.patch + % git format-patch --stdout -M blead.. > topic-branch-changes.patch You should now send an email to L<[email protected]|mailto:[email protected]> with a description of your @@ -271,8 +271,8 @@ should only send patches to L<[email protected]|mailto:[email protected]> directly if the patch is not ready to be applied, but intended for discussion. -See the next section for how to configure and use git to send these -emails for you. +Please do not use git-send-email(1) to send your patch. See L<Sending +patch emails|/Sending patch emails> for more information. If you want to delete your temporary branch, you may do so with: @@ -326,7 +326,7 @@ output. After you've generated your patch you should sent it to [email protected] (as discussed L<in the previous -section|/"Patch workflow"> with a normal mail client as an +section|/"Patch workflow">) with a normal mail client as an attachment, along with a description of the patch. You B<must not> use git-send-email(1) to send patches generated with diff --git a/pod/perlguts.pod b/pod/perlguts.pod index 90ab204..d845010 100644 --- a/pod/perlguts.pod +++ b/pod/perlguts.pod @@ -1766,7 +1766,7 @@ A scratchpad keeps SVs which are lexicals for the current unit and are targets for opcodes. A previous version of this document stated that one can deduce that an SV lives on a scratchpad by looking on its flags: lexicals have C<SVs_PADMY> set, and -I<target>s have C<SVs_PADTMP> set. But this have never been fully true. +I<target>s have C<SVs_PADTMP> set. But this has never been fully true. C<SVs_PADMY> could be set on a variable that no longer resides in any pad. While I<target>s do have C<SVs_PADTMP> set, it can also be set on variables that have never resided in a pad, but nonetheless act like I<target>s. diff --git a/pod/perlhack.pod b/pod/perlhack.pod index dc3f396..8fcd618 100644 --- a/pod/perlhack.pod +++ b/pod/perlhack.pod @@ -125,8 +125,7 @@ are also referred to as the "Perl 5 Porters", "p5p" or just the "porters". A searchable archive of the list is available at -L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/>. There is -also another archive at +L<http://markmail.org/search/?q=perl5-porters>. There is also an archive at L<http://archive.develooper.com/[email protected]/>. =head2 perl-changes mailing list diff --git a/pod/perlhist.pod b/pod/perlhist.pod index 2cf9c58..9f01589 100644 --- a/pod/perlhist.pod +++ b/pod/perlhist.pod @@ -515,6 +515,10 @@ the strings?). Ricardo 5.18.1-RC3 2013-Aug-08 Ricardo 5.18.1 2013-Aug-12 Ricardo 5.18.2 2014-Jan-06 + Ricardo 5.18.3-RC1 2014-Sep-17 + Ricardo 5.18.3-RC2 2014-Sep-27 + Ricardo 5.18.3 2014-Oct-01 + Ricardo 5.18.4 2014-Oct-01 Ricardo 5.19.0 2013-May-20 The 5.19 development track David G 5.19.1 2013-Jun-21 @@ -539,6 +543,10 @@ the strings?). Matthew H 5.21.1 2014-Jun-20 Abigail 5.21.2 2014-Jul-20 Peter 5.21.3 2014-Aug-20 + Steve 5.21.4 2014-Sep-20 + Abigail 5.21.5 2014-Oct-20 + BinGOs 5.21.6 2014-Nov-20 + Max M 5.21.7 2014-Dec-20 =head2 SELECTED RELEASE SIZES diff --git a/pod/perliol.pod b/pod/perliol.pod index b01b10e..ab600bd 100644 --- a/pod/perliol.pod +++ b/pod/perliol.pod @@ -98,7 +98,7 @@ The basic data structure is a PerlIOl: { PerlIOl * next; /* Lower layer */ PerlIO_funcs * tab; /* Functions for this layer */ - IV flags; /* Various flags for state */ + U32 flags; /* Various flags for state */ }; A C<PerlIOl *> is a pointer to the struct, and the I<application> diff --git a/pod/perlipc.pod b/pod/perlipc.pod index 0e00d18..49c605b 100644 --- a/pod/perlipc.pod +++ b/pod/perlipc.pod @@ -28,7 +28,7 @@ For example, to trap an interrupt signal, set up a handler like this: $shucks++; die "Somebody sent me a SIG$signame"; } - $SIG{INT} = __PACKAGE__ . "::catch_zap"; + $SIG{INT} = __PACKAGE__ . "::catch_zap"; $SIG{INT} = \&catch_zap; # best strategy Prior to Perl 5.8.0 it was necessary to do as little as you possibly @@ -61,7 +61,7 @@ have to use POSIX' sigprocmask. Sending a signal to a negative process ID means that you send the signal to the entire Unix process group. This code sends a hang-up signal to all -processes in the current process group, and also sets $SIG{HUP} to C<"IGNORE"> +processes in the current process group, and also sets $SIG{HUP} to C<"IGNORE"> so it doesn't kill itself: # block scope for local @@ -188,12 +188,15 @@ itself every time the C<SIGHUP> signal is received. The actual code is located in the subroutine C<code()>, which just prints some debugging info to show that it works; it should be replaced with the real code. - #!/usr/bin/perl -w + #!/usr/bin/perl + + use strict; + use warnings; use POSIX (); use FindBin (); use File::Basename (); - use File::Spec::Functions; + use File::Spec::Functions qw(catfile); $| = 1; @@ -214,9 +217,9 @@ info to show that it works; it should be replaced with the real code. print "PID: $$\n"; print "ARGV: @ARGV\n"; my $count = 0; - while (++$count) { + while (1) { sleep 2; - print "$count\n"; + print ++$count, "\n"; } } @@ -263,7 +266,7 @@ to execute a new opcode, a signal that arrives during a long-running opcode (e.g. a regular expression operation on a very large string) will not be seen until the current opcode completes. -If a signal of any given type fires multiple times during an opcode +If a signal of any given type fires multiple times during an opcode (such as from a fine-grained timer), the handler for that signal will be called only once, after the opcode completes; all other instances will be discarded. Furthermore, if your system's signal queue @@ -327,12 +330,12 @@ On systems that supported it, older versions of Perl used the SA_RESTART flag when installing %SIG handlers. This meant that restartable system calls would continue rather than returning when a signal arrived. In order to deliver deferred signals promptly, -Perl 5.8.0 and later do I<not> use SA_RESTART. Consequently, +Perl 5.8.0 and later do I<not> use SA_RESTART. Consequently, restartable system calls can fail (with $! set to C<EINTR>) in places where they previously would have succeeded. The default C<:perlio> layer retries C<read>, C<write> -and C<close> as described above; interrupted C<wait> and +and C<close> as described above; interrupted C<wait> and C<waitpid> calls will always be retried. =item Signals as "faults" @@ -469,7 +472,7 @@ to bogus commands will get hit with a signal, which they'd best be prepared to handle. Consider: open(FH, "|bogus") || die "can't fork: $!"; - print FH "bang\n"; # neither necessary nor sufficient + print FH "bang\n"; # neither necessary nor sufficient # to check print retval! close(FH) || die "can't close: $!"; @@ -529,7 +532,7 @@ process group leader; the setsid() will fail if you are. If your system doesn't have the setsid() function, open F</dev/tty> and use the C<TIOCNOTTY> ioctl() on it instead. See tty(4) for details. -Non-Unix users should check their C<< I<Your_OS>::Process >> module for +Non-Unix users should check their C<< I<Your_OS>::Process >> module for other possible solutions. =head2 Safe Pipe Opens @@ -559,13 +562,13 @@ you opened whatever your kid writes to I<his> STDOUT. } } until defined $pid; - if ($pid) { # I am the parent + if ($pid) { # I am the parent print KID_TO_WRITE @some_data; close(KID_TO_WRITE) || warn "kid exited $?"; } else { # I am the child # drop permissions in setuid and/or setgid programs: - ($EUID, $EGID) = ($UID, $GID); - open (OUTFILE, "> $PRECIOUS") + ($EUID, $EGID) = ($UID, $GID); + open (OUTFILE, "> $PRECIOUS") || die "can't open $PRECIOUS: $!"; while (<STDIN>) { print OUTFILE; # child's STDIN is parent's KID_TO_WRITE @@ -617,7 +620,7 @@ And here's a safe pipe open for writing: } It is very easy to dead-lock a process using this form of open(), or -indeed with any use of pipe() with multiple subprocesses. The +indeed with any use of pipe() with multiple subprocesses. The example above is "safe" because it is simple and calls exec(). See L</"Avoiding Pipe Deadlocks"> for general safety principles, but there are extra gotchas with Safe Pipe Opens. @@ -696,7 +699,7 @@ So for example, instead of using: One would use either of these: - open(PS_PIPE, "-|", "ps", "aux") + open(PS_PIPE, "-|", "ps", "aux") || die "can't open ps pipe: $!"; @ps_args = qw[ ps aux ]; @@ -706,7 +709,7 @@ One would use either of these: Because there are more than three arguments to open(), forks the ps(1) command I<without> spawning a shell, and reads its standard output via the C<PS_PIPE> filehandle. The corresponding syntax to I<write> to command -pipes is to use C<"|-"> in place of C<"-|">. +pipes is to use C<"|-"> in place of C<"-|">. This was admittedly a rather silly example, because you're using string literals whose content is perfectly safe. There is therefore no cause to @@ -774,7 +777,7 @@ except on a Unix system, or at least one purporting POSIX compliance. =for TODO Hold on, is this even true? First it says that socketpair() is avoided -for portability, but then it says it probably won't work except on +for portability, but then it says it probably won't work except on Unixy systems anyway. Which one of those is true? Here's an example of using open2(): @@ -819,7 +822,7 @@ reopen the appropriate handles to STDIN and STDOUT and call other processes. PARENT_WTR->autoflush(1); if ($pid = fork()) { - close PARENT_RDR; + close PARENT_RDR; close PARENT_WTR; print CHILD_WTR "Parent Pid $$ is sending this\n"; chomp($line = <CHILD_RDR>); @@ -828,12 +831,12 @@ reopen the appropriate handles to STDIN and STDOUT and call other processes. waitpid($pid, 0); } else { die "cannot fork: $!" unless defined $pid; - close CHILD_RDR; + close CHILD_RDR; close CHILD_WTR; chomp($line = <PARENT_RDR>); print "Child Pid $$ just read this: '$line'\n"; print PARENT_WTR "Child Pid $$ is sending this\n"; - close PARENT_RDR; + close PARENT_RDR; close PARENT_WTR; exit(0); } @@ -892,7 +895,7 @@ don't need to pass that information. One of the major problems with ancient, antemillennial socket code in Perl was that it used hard-coded values for some of the constants, which severely hurt portability. If you ever see code that does anything like -explicitly setting C<$AF_INET = 2>, you know you're in for big trouble. +explicitly setting C<$AF_INET = 2>, you know you're in for big trouble. An immeasurably superior approach is to use the C<Socket> module, which more reliably grants access to the various constants and functions you'll need. @@ -913,7 +916,7 @@ completely different. The standards specify writing "\015\012" to be conformant (be strict in what you provide), but they also recommend accepting a lone "\012" on input (be lenient in what you require). We haven't always been very good about that in the code in this manpage, -but unless you're on a Mac from way back in its pre-Unix dark ages, you'll +but unless you're on a Mac from way back in its pre-Unix dark ages, you'll probably be ok. =head2 Internet TCP Clients and Servers @@ -966,7 +969,7 @@ or firewall machine), fill this in with your real address instead. my $proto = getprotobyname("tcp"); socket(Server, PF_INET, SOCK_STREAM, $proto) || die "socket: $!"; - setsockopt(Server, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)) + setsockopt(Server, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)) || die "setsockopt: $!"; bind(Server, sockaddr_in($port, INADDR_ANY)) || die "bind: $!"; listen(Server, SOMAXCONN) || die "listen: $!"; @@ -1010,7 +1013,7 @@ go back to service a new client. my $proto = getprotobyname("tcp"); socket(Server, PF_INET, SOCK_STREAM, $proto) || die "socket: $!"; - setsockopt(Server, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)) + setsockopt(Server, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)) || die "setsockopt: $!"; bind(Server, sockaddr_in($port, INADDR_ANY)) || die "bind: $!"; listen(Server, SOMAXCONN) || die "listen: $!"; @@ -1066,7 +1069,7 @@ go back to service a new client. unless (defined($pid = fork())) { logmsg "cannot fork: $!"; return; - } + } elsif ($pid) { logmsg "begat $pid"; return; # I'm the parent @@ -1096,15 +1099,15 @@ to be reported. However, the introduction of safe signals (see L</Deferred Signals (Safe Signals)> above) in Perl 5.8.0 means that accept() might also be interrupted when the process receives a signal. This typically happens when one of the forked subprocesses exits and -notifies the parent process with a CHLD signal. +notifies the parent process with a CHLD signal. If accept() is interrupted by a signal, $! will be set to EINTR. If this happens, we can safely continue to the next iteration of the loop and another call to accept(). It is important that your -signal handling code not modify the value of $!, or else this test +signal handling code not modify the value of $!, or else this test will likely fail. In the REAPER subroutine we create a local version of $! before calling waitpid(). When waitpid() sets $! to ECHILD as -it inevitably does when it has no more children waiting, it +it inevitably does when it has no more children waiting, it updates the local copy and leaves the original unchanged. You should use the B<-T> flag to enable taint checking (see L<perlsec>) @@ -1137,7 +1140,7 @@ differ from the system on which it's being run: printf "%-24s ", $host; my $hisiaddr = inet_aton($host) || die "unknown host"; my $hispaddr = sockaddr_in($port, $hisiaddr); - socket(SOCKET, PF_INET, SOCK_STREAM, $proto) + socket(SOCKET, PF_INET, SOCK_STREAM, $proto) || die "socket: $!"; connect(SOCKET, $hispaddr) || die "connect: $!"; my $rtime = pack("C4", ()); @@ -1240,11 +1243,11 @@ to be on the localhost, and thus everything works right. unless (defined($pid = fork())) { logmsg "cannot fork: $!"; return; - } + } elsif ($pid) { logmsg "begat $pid"; return; # I'm the parent - } + } else { # I'm the child -- go spawn } @@ -1815,9 +1818,9 @@ The IO::Socket(3) manpage describes the object library, and the Socket(3) manpage describes the low-level interface to sockets. Besides the obvious functions in L<perlfunc>, you should also check out the F<modules> file at your nearest CPAN site, especially -L<http://www.cpan.org/modules/00modlist.long.html#ID5_Networking_>. +L<http://www.cpan.org/modules/00modlist.long.html#ID5_Networking_>. See L<perlmodlib> or best yet, the F<Perl FAQ> for a description -of what CPAN is and where to get it if the previous link doesn't work +of what CPAN is and where to get it if the previous link doesn't work for you. Section 5 of CPAN's F<modules> file is devoted to "Networking, Device diff --git a/pod/perllocale.pod b/pod/perllocale.pod index 1d7e4e4..46d2847 100644 --- a/pod/perllocale.pod +++ b/pod/perllocale.pod @@ -373,6 +373,10 @@ C<POSIX::setlocale()> function: # restore the old locale setlocale(LC_CTYPE, $old_locale); +This simultaneously affects all threads of the program, so it may be +problematic to use locales in threaded applications except where there +is a single locale applicable to all threads. + The first argument of C<setlocale()> gives the B<category>, the second the B<locale>. The category tells in what aspect of data processing you want to apply locale-specific rules. Category names are discussed in @@ -539,7 +543,7 @@ alphabetically in your system is called). You can test out changing these variables temporarily, and if the new settings seem to help, put those settings into your shell startup -files. Consult your local documentation for the exact details. For in +files. Consult your local documentation for the exact details. For Bourne-like shells (B<sh>, B<ksh>, B<bash>, B<zsh>): LC_ALL=en_US.ISO8859-1 @@ -551,7 +555,7 @@ locale "En_US"--and in Cshish shells (B<csh>, B<tcsh>) setenv LC_ALL en_US.ISO8859-1 -or if you have the "env" application you can do in any shell +or if you have the "env" application you can do (in any shell) env LC_ALL=en_US.ISO8859-1 perl ... @@ -808,15 +812,16 @@ information on all these.) The C<LC_CTYPE> locale also provides the map used in transliterating characters between lower and uppercase. This affects the case-mapping -functions--C<fc()>, C<lc()>, C<lcfirst()>, C<uc()>, and C<ucfirst()>; case-mapping +functions--C<fc()>, C<lc()>, C<lcfirst()>, C<uc()>, and C<ucfirst()>; +case-mapping interpolation with C<\F>, C<\l>, C<\L>, C<\u>, or C<\U> in double-quoted strings and C<s///> substitutions; and case-independent regular expression pattern matching using the C<i> modifier. Finally, C<LC_CTYPE> affects the (deprecated) POSIX character-class test functions--C<POSIX::isalpha()>, C<POSIX::islower()>, and so on. For -example, if you move from the "C" locale to a 7-bit Scandinavian one, -you may find--possibly to your surprise--that "|" moves from the +example, if you move from the "C" locale to a 7-bit ISO 646 one, +you may find--possibly to your surprise--that C<"|"> moves from the C<POSIX::ispunct()> class to C<POSIX::isalpha()>. Unfortunately, this creates big problems for regular expressions. "|" still means alternation even though it matches C<\w>. @@ -824,7 +829,7 @@ means alternation even though it matches C<\w>. Starting in v5.20, Perl supports UTF-8 locales for C<LC_CTYPE>, but otherwise Perl only supports single-byte locales, such as the ISO 8859 series. This means that wide character locales, for example for Asian -languages, are not supported. The UTF-8 locale support is actually a +languages, are not well-supported. The UTF-8 locale support is actually a superset of POSIX locales, because it is really full Unicode behavior as if no locale were in effect at all (except for tainting; see L</SECURITY>). POSIX locales, even UTF-8 ones, @@ -837,7 +842,11 @@ For releases v5.16 and v5.18, C<S<use locale 'not_characters>> could be used as a workaround for this (see L</Unicode and UTF-8>). Note that there are quite a few things that are unaffected by the -current locale. All the escape sequences for particular characters, +current locale. Any literal character is the native character for the +given platform. Hence 'A' means the character at code point 65 on ASCII +platforms, and 193 on EBCDIC. That may or may not be an 'A' in the +current locale, if that locale even has an 'A'. +Similarly, all the escape sequences for particular characters, C<\n> for example, always mean the platform's native one. This means, for example, that C<\N> in regular expressions (every character but new-line) works on the platform character set. @@ -1471,7 +1480,7 @@ byte, and Unicode rules for those that can't is not uniformly applied. Pre-v5.12, it was somewhat haphazard; in v5.12 it was applied fairly consistently to regular expression matching except for bracketed character classes; in v5.14 it was extended to all regex matches; and in -v5.16 to the casing operations such as C<"\L"> and C<uc()>. For +v5.16 to the casing operations such as C<\L> and C<uc()>. For collation, in all releases, the system's C<strxfrm()> function is called, and whatever it does is what you get. diff --git a/pod/perlmod.pod b/pod/perlmod.pod index f708cc0..0ed4bd9 100644 --- a/pod/perlmod.pod +++ b/pod/perlmod.pod @@ -4,6 +4,27 @@ perlmod - Perl modules (packages and symbol tables) =head1 DESCRIPTION +=head2 Is this the document you were after? + +There are other documents which might contain the information that you're +looking for: + +=over 2 + +=item This doc + +Perl's packages, namespaces, and some info on classes. + +=item L<perlnewmod> + +Tutorial on making a new module. + +=item L<perlmodstyle> + +Best practices for making a new module. + +=back + =head2 Packages X<package> X<namespace> X<variable, global> X<global variable> X<global> diff --git a/pod/perlmodstyle.pod b/pod/perlmodstyle.pod index 5622d32..d6111d0 100644 --- a/pod/perlmodstyle.pod +++ b/pod/perlmodstyle.pod @@ -178,7 +178,9 @@ been done in Perl, and avoid re-inventing the wheel unless you have a good reason. Good places to look for pre-existing modules include -http://search.cpan.org/ and asking on [email protected] +L<http://search.cpan.org/> and L<https://metacpan.org> +and asking on C<[email protected]> +(L<http://lists.perl.org/list/module-authors.html>). If an existing module B<almost> does what you want, consider writing a patch, writing a subclass, or otherwise extending the existing module @@ -370,7 +372,7 @@ which is visible to the user (and most things that aren't!) =item Parameter passing -Use named parameters. It's easier to use a hash like this: +Use named parameters. It's easier to use a hash like this: $obj->do_something( name => "wibble", @@ -566,7 +568,7 @@ Your module should also include a README file describing the module and giving pointers to further information (website, author email). An INSTALL file should be included, and should contain simple installation -instructions. When using ExtUtils::MakeMaker this will usually be: +instructions. When using ExtUtils::MakeMaker this will usually be: =over 4 @@ -620,23 +622,25 @@ The most common CPAN version numbering scheme looks like this: 1.00, 1.10, 1.11, 1.20, 1.30, 1.31, 1.32 A correct CPAN version number is a floating point number with at least -2 digits after the decimal. You can test whether it conforms to CPAN by +2 digits after the decimal. You can test whether it conforms to CPAN by using perl -MExtUtils::MakeMaker -le 'print MM->parse_version(shift)' 'Foo.pm' If you want to release a 'beta' or 'alpha' version of a module but don't want CPAN.pm to list it as most recent use an '_' after the -regular version number followed by at least 2 digits, eg. 1.20_01. If +regular version number followed by at least 2 digits, eg. 1.20_01. If you do this, the following idiom is recommended: - $VERSION = "1.12_01"; - $XS_VERSION = $VERSION; # only needed if you have XS code - $VERSION = eval $VERSION; + our $VERSION = "1.12_01"; # so CPAN distribution will have + # right filename + our $XS_VERSION = $VERSION; # only needed if you have XS code + $VERSION = eval $VERSION; # so "use Module 0.002" won't warn on + # underscore With that trick MakeMaker will only read the first line and thus read the underscore, while the perl interpreter will evaluate the $VERSION -and convert the string into a number. Later operations that treat +and convert the string into a number. Later operations that treat $VERSION as a number will then be able to do so without provoking a warning about $VERSION not being a number. @@ -644,6 +648,13 @@ Never release anything (even a one-word documentation patch) without incrementing the number. Even a one-word documentation patch should result in a change in version at the sub-minor level. +Once picked, it is important to stick to your version scheme, without +reducing the number of digits. This is because "downstream" packagers, +such as the FreeBSD ports system, interpret the version numbers in +various ways. If you change the number of digits in your version scheme, +you can confuse these systems so they get the versions of your module +out of order, which is obviously bad. + =head2 Pre-requisites Module authors should carefully consider whether to rely on other @@ -676,7 +687,7 @@ Specify version requirements for other Perl modules in the pre-requisites in your Makefile.PL or Build.PL. Be sure to specify Perl version requirements both in Makefile.PL or -Build.PL and with C<require 5.6.1> or similar. See the section on +Build.PL and with C<require 5.6.1> or similar. See the section on C<use VERSION> of L<perlfunc/require> for details. =head2 Testing @@ -687,7 +698,8 @@ and the tests should also be available to people installing the modules For Module::Build you would use the C<make test> equivalent C<perl Build test>. The importance of these tests is proportional to the alleged stability of a -module. A module which purports to be stable or which hopes to achieve wide +module. A module which purports to be +stable or which hopes to achieve wide use should adhere to as strict a testing regime as possible. Useful modules to help you write tests (with minimum impact on your @@ -702,8 +714,9 @@ Currently you have the choice between ExtUtils::MakeMaker and the more platform independent Module::Build, allowing modules to be installed in a consistent manner. When using ExtUtils::MakeMaker, you can use "make dist" to create your -package. Tools exist to help you to build your module in a MakeMaker-friendly -style. These include ExtUtils::ModuleMaker and h2xs. See also L<perlnewmod>. +package. Tools exist to help you to build your module in a +MakeMaker-friendly style. These include ExtUtils::ModuleMaker and h2xs. +See also L<perlnewmod>. =head2 Licensing diff --git a/pod/perlnewmod.pod b/pod/perlnewmod.pod index 7555f97..26c4c13 100644 --- a/pod/perlnewmod.pod +++ b/pod/perlnewmod.pod @@ -23,6 +23,9 @@ trying to do, and you've had to write the code yourself, consider packaging up the solution into a module and uploading it to CPAN so that others can benefit. +You should also take a look at L<perlmodstyle> for best practices in +making a module. + =head2 Warning We're going to primarily concentrate on Perl-only modules here, rather diff --git a/pod/perlop.pod b/pod/perlop.pod index 888ba53..56d463a 100644 --- a/pod/perlop.pod +++ b/pod/perlop.pod @@ -6,15 +6,15 @@ perlop - Perl operators and precedence =head1 DESCRIPTION In Perl, the operator determines what operation is performed, -independent of the type of the operands. For example C<$a + $b> -is always a numeric addition, and if C<$a> or C<$b> do not contain +independent of the type of the operands. For example C<$x + $y> +is always a numeric addition, and if C<$x> or C<$y> do not contain numbers, an attempt is made to convert them to numbers first. This is in contrast to many other dynamic languages, where the -operation is determined by the type of the first argument. It also +operation is determined by the type of the first argument. It also means that Perl has two versions of some operators, one for numeric -and one for string comparison. For example C<$a == $b> compares -two numbers for equality, and C<$a eq $b> compares two strings. +and one for string comparison. For example C<$x == $y> compares +two numbers for equality, and C<$x eq $y> compares two strings. There are a few exceptions though: C<x> can be either string repetition or list repetition, depending on the type of the left @@ -170,8 +170,8 @@ value. print ++$j; # prints 1 Note that just as in C, Perl doesn't define B<when> the variable is -incremented or decremented. You just know it will be done sometime -before or after the value is returned. This also means that modifying +incremented or decremented. You just know it will be done sometime +before or after the value is returned. This also means that modifying a variable twice in the same statement will lead to undefined behavior. Avoid statements like: @@ -203,7 +203,7 @@ The auto-decrement operator is not magical. X<**> X<exponentiation> X<power> Binary "**" is the exponentiation operator. It binds even more -tightly than unary minus, so -2**4 is -(2**4), not (-2)**4. (This is +tightly than unary minus, so -2**4 is -(2**4), not (-2)**4. (This is implemented using C's pow(3) function, which actually works on doubles internally.) @@ -222,7 +222,7 @@ with a plus or minus, a string starting with the opposite sign is returned. One effect of these rules is that -bareword is equivalent to the string "-bareword". If, however, the string begins with a non-alphabetic character (excluding "+" or "-"), Perl will attempt to convert -the string to a numeric and the arithmetic negation is performed. If the +the string to a numeric and the arithmetic negation is performed. If the string cannot be cleanly converted to a numeric, Perl will give the warning B<Argument "the string" isn't numeric in negation (-) at ...>. X<-> X<negation, arithmetic> @@ -271,7 +271,8 @@ examples using these operators. If the right argument is an expression rather than a search pattern, substitution, or transliteration, it is interpreted as a search pattern at run -time. Note that this means that its contents will be interpolated twice, so +time. Note that this means that its +contents will be interpolated twice, so '\\' =~ q'\\'; @@ -296,21 +297,21 @@ X</> X<slash> Binary "%" is the modulo operator, which computes the division remainder of its first argument with respect to its second argument. Given integer -operands C<$a> and C<$b>: If C<$b> is positive, then C<$a % $b> is -C<$a> minus the largest multiple of C<$b> less than or equal to -C<$a>. If C<$b> is negative, then C<$a % $b> is C<$a> minus the -smallest multiple of C<$b> that is not less than C<$a> (that is, the +operands C<$m> and C<$n>: If C<$n> is positive, then C<$m % $n> is +C<$m> minus the largest multiple of C<$n> less than or equal to +C<$m>. If C<$n> is negative, then C<$m % $n> is C<$m> minus the +smallest multiple of C<$n> that is not less than C<$m> (that is, the result will be less than or equal to zero). If the operands -C<$a> and C<$b> are floating point values and the absolute value of -C<$b> (that is C<abs($b)>) is less than C<(UV_MAX + 1)>, only -the integer portion of C<$a> and C<$b> will be used in the operation +C<$m> and C<$n> are floating point values and the absolute value of +C<$n> (that is C<abs($n)>) is less than C<(UV_MAX + 1)>, only +the integer portion of C<$m> and C<$n> will be used in the operation (Note: here C<UV_MAX> means the maximum of the unsigned integer type). -If the absolute value of the right operand (C<abs($b)>) is greater than +If the absolute value of the right operand (C<abs($n)>) is greater than or equal to C<(UV_MAX + 1)>, "%" computes the floating-point remainder -C<$r> in the equation C<($r = $a - $i*$b)> where C<$i> is a certain +C<$r> in the equation C<($r = $m - $i*$n)> where C<$i> is a certain integer that makes C<$r> have the same sign as the right operand -C<$b> (B<not> as the left operand C<$a> like C function C<fmod()>) -and the absolute value less than that of C<$b>. +C<$n> (B<not> as the left operand C<$m> like C function C<fmod()>) +and the absolute value less than that of C<$n>. Note that when C<use integer> is in scope, "%" gives you direct access to the modulo operator as implemented by your C compiler. This operator is not as well defined for negative operands, but it will @@ -475,15 +476,15 @@ Binary "<=>" returns -1, 0, or 1 depending on whether the left argument is numerically less than, equal to, or greater than the right argument. If your platform supports NaNs (not-a-numbers) as numeric values, using them with "<=>" returns undef. NaN is not "<", "==", ">", -"<=" or ">=" anything (even NaN), so those 5 return false. NaN != NaN -returns true, as does NaN != anything else. If your platform doesn't +"<=" or ">=" anything (even NaN), so those 5 return false. NaN != NaN +returns true, as does NaN != anything else. If your platform doesn't support NaNs then NaN is just a string with numeric value 0. X<< <=> >> X<spaceship> - $ perl -le '$a = "NaN"; print "No NaN support here" if $a == $a' - $ perl -le '$a = "NaN"; print "NaN support here" if $a != $a' + $ perl -le '$x = "NaN"; print "No NaN support here" if $x == $x' + $ perl -le '$x = "NaN"; print "NaN support here" if $x != $x' -(Note that the L<bigint>, L<bigrat>, and L<bignum> pragmas all +(Note that the L<bigint>, L<bigrat>, and L<bignum> pragmas all support "NaN".) Binary "eq" returns true if the left argument is stringwise equal to @@ -724,7 +725,7 @@ That because the corresponding position in C<@a> contains an array that (eventually) has a 4 in it. Smartmatching one hash against another reports whether both contain the -same keys, no more and no less. This could be used to see whether two +same keys, no more and no less. This could be used to see whether two records have the same field names, without caring what values those fields might have. For example: @@ -762,8 +763,8 @@ C<when> clause. See the section on "Switch Statements" in L<perlsyn>. To avoid relying on an object's underlying representation, if the smartmatch's right operand is an object that doesn't overload C<~~>, it raises the exception "C<Smartmatching a non-overloaded object -breaks encapsulation>". That's because one has no business digging -around to see whether something is "in" an object. These are all +breaks encapsulation>". That's because one has no business digging +around to see whether something is "in" an object. These are all illegal on objects without a C<~~> overload: %hash ~~ $object @@ -771,7 +772,8 @@ illegal on objects without a C<~~> overload: "fred" ~~ $object However, you can change the way an object is smartmatched by overloading -the C<~~> operator. This is allowed to extend the usual smartmatch semantics. +the C<~~> operator. This is allowed to +extend the usual smartmatch semantics. For objects that do have an C<~~> overload, see L<overload>. Using an object as the left operand is allowed, although not very useful. @@ -857,16 +859,17 @@ Although it has no direct equivalent in C, Perl's C<//> operator is related to its C-style or. In fact, it's exactly the same as C<||>, except that it tests the left hand side's definedness instead of its truth. Thus, C<< EXPR1 // EXPR2 >> returns the value of C<< EXPR1 >> if it's defined, -otherwise, the value of C<< EXPR2 >> is returned. (C<< EXPR1 >> is evaluated -in scalar context, C<< EXPR2 >> in the context of C<< // >> itself). Usually, +otherwise, the value of C<< EXPR2 >> is returned. +(C<< EXPR1 >> is evaluated in scalar context, C<< EXPR2 >> +in the context of C<< // >> itself). Usually, this is the same result as C<< defined(EXPR1) ? EXPR1 : EXPR2 >> (except that the ternary-operator form can be used as a lvalue, while C<< EXPR1 // EXPR2 >> -cannot). This is very useful for +cannot). This is very useful for providing default values for variables. If you actually want to test if -at least one of C<$a> and C<$b> is defined, use C<defined($a // $b)>. +at least one of C<$x> and C<$y> is defined, use C<defined($x // $y)>. The C<||>, C<//> and C<&&> operators return the last value evaluated -(unlike C's C<||> and C<&&>, which return 0 or 1). Thus, a reasonably +(unlike C's C<||> and C<&&>, which return 0 or 1). Thus, a reasonably portable way to find out the home directory might be: $home = $ENV{HOME} @@ -912,7 +915,7 @@ operators depending on the context. In list context, it returns a list of values counting (up by ones) from the left value to the right value. If the left value is greater than the right value then it returns the empty list. The range operator is useful for writing -C<foreach (1..10)> loops and for doing slice operations on arrays. In +C<foreach (1..10)> loops and for doing slice operations on arrays. In the current implementation, no temporary array is created when the range operator is used as the expression in C<foreach> loops, but older versions of Perl might burn a lot of memory when you write something @@ -927,15 +930,15 @@ auto-increment, see below. In scalar context, ".." returns a boolean value. The operator is bistable, like a flip-flop, and emulates the line-range (comma) -operator of B<sed>, B<awk>, and various editors. Each ".." operator +operator of B<sed>, B<awk>, and various editors. Each ".." operator maintains its own boolean state, even across calls to a subroutine -that contains it. It is false as long as its left operand is false. +that contains it. It is false as long as its left operand is false. Once the left operand is true, the range operator stays true until the right operand is true, I<AFTER> which the range operator becomes false again. It doesn't become false till the next time the range operator is evaluated. It can test the right operand and become false on the same evaluation it became true (as in B<awk>), but it still returns -true once. If you don't want it to test the right operand until the +true once. If you don't want it to test the right operand until the next evaluation, as in B<sed>, just use three dots ("...") instead of two. In all other regards, "..." behaves just like ".." does. @@ -1003,7 +1006,7 @@ the two range operators: } } -This program will print only the line containing "Bar". If +This program will print only the line containing "Bar". If the range operator is changed to C<...>, it will also print the "Baz" line. @@ -1076,31 +1079,31 @@ is returned. For example: Scalar or list context propagates downward into the 2nd or 3rd argument, whichever is selected. - $a = $ok ? $b : $c; # get a scalar - @a = $ok ? @b : @c; # get an array - $a = $ok ? @b : @c; # oops, that's just a count! + $x = $ok ? $y : $z; # get a scalar + @x = $ok ? @y : @z; # get an array + $x = $ok ? @y : @z; # oops, that's just a count! The operator may be assigned to if both the 2nd and 3rd arguments are legal lvalues (meaning that you can assign to them): - ($a_or_b ? $a : $b) = $c; + ($x_or_y ? $x : $y) = $z; Because this operator produces an assignable result, using assignments without parentheses will get you in trouble. For example, this: - $a % 2 ? $a += 10 : $a += 2 + $x % 2 ? $x += 10 : $x += 2 Really means this: - (($a % 2) ? ($a += 10) : $a) += 2 + (($x % 2) ? ($x += 10) : $x) += 2 Rather than this: - ($a % 2) ? ($a += 10) : ($a += 2) + ($x % 2) ? ($x += 10) : ($x += 2) That should probably be written more simply as: - $a += ($a % 2) ? 10 : 2; + $x += ($x % 2) ? 10 : 2; =head2 Assignment Operators X<assignment> X<operator, assignment> X<=> X<**=> X<+=> X<*=> X<&=> @@ -1111,11 +1114,11 @@ X<%=> X<^=> X<x=> Assignment operators work as in C. That is, - $a += 2; **** PATCH TRUNCATED AT 2000 LINES -- 1817 NOT SHOWN **** -- Perl5 Master Repository
