This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl 5.003_01: installperl
[perl5.git] / Changes
1 Please note: This file provides a summary of significant changes
2 between versions and sub-versions of Perl, not a complete list
3 of each modification.  If you'd like more detailed information,
4 please consult the comments in the patches on which the relevant
5 release of Perl is based.  (Patches can be found on any CPAN
6 site, in the .../src/5.0 directory for full version releases,
7 or in the .../src/5/0/unsupported directory for sub-version
8 releases.)
9
10
11 ----------------
12 Version 5.003_01
13 ----------------
14
15 Version 5.003_01 contains bugfixes and additions accumulated since
16 version 5.002_01, since the patch to version 5.003 was deliberately
17 kept simple.  In addition to numerous small bugfixes in the core,
18 library files, and documentation, this patch contains several
19 significant revisions, summarized below:
20
21 o Visible Changes to Core Functionality
22
23   - A port to Plan9 has been started, and changes are integrated into
24     the standard distribution.  As of this release, the Perl core
25     and several common extensions are working.
26
27   - A set of basic methods in the UNIVERSAL class have been added to
28     the Perl core.  Since UNIVERSAL is an implicit member of every
29     class's @ISA, the methods can be called via any object.
30
31   - A mandatory warning has been added for 'declarations' of lexical
32     variables using the "my" operator which mask an existing lexical
33     variable declared in the same scope, making the previous variable
34     inaccessible by its name.
35
36   - The "use" and "require" operators have been extended to allow
37     checking of the required module's version.  The "use" operator
38     can now be used for an immediate version check of Perl itself.
39
40   - A new "strict" pragma, "strict untie", has been added, which
41     produces an error if a tied value is untied when other references
42     exist to the internal object implementing the tie.
43
44   - Barewords used as associative array keys (i.e. when specifying
45     an associative array element like $foo{__BAR} or on the left
46     side of the => operator) may now begin with an underscore as
47     well as an alphabetic character.
48
49   - Some of the configuration information previously produced by the
50     -v switch has been moved to the -V switch, in order to keep -v
51     output concise.
52
53 o Changes in Core Internals
54
55   - Symbol table and method lookups have been made faster.
56
57   - Perl subroutines which just return a constant value are now
58     optimized at compile time into inline constants.
59
60   - Management of keys for associative arrays has been improved to
61     conserve space when the same keys are reused frequently, and
62     to pass true Perl values to tie functions, instead of stringified
63     representations.
64
65   - Messages normally output to stderr may be directed to another
66     stream when Perl is built.  This allows some platforms to
67     present diagnostic output in a separate window from normal
68     program results.
69
70   - A bug which caused suiperl to fail silently, albeit securely,
71     in version 5.003 on some systems has been fixed.
72
73   - Management of Unix-style signal handlers via the %SIG associative
74     array has been made safer.
75
76   - Several global C symbols have been renamed to eliminate collisions
77     with system C header files or libraries on some platforms.
78     Unfortunately, this means that dynamic extensions compiled under
79     previous versions of Perl will need to be rebuilt for Perl
80     5.003_01.  We're in the process of cleaning up Perl's C
81     namespace to make it easier to link Perl with other binaries,
82     so this will probably happen again between now and version 5.004.
83     After that, we'll do our best to maintain binary compatibility
84     between versions.
85
86   - An alternate allocation strategy has been added to Perl's
87     optional private memory management routines.  This strategy,
88     which may be selected when Perl is built, is designed to
89     conserve memory in programs which allocate many small
90     chunks of memory with sizes near a power of 2, as is often
91     the case in Perl programs.
92
93   - Several memory leaks in the creation and destruction of
94     multiple interpreters have been fixed.
95
96 o Changes in the Standard Library and Utilities
97
98   - The Opcode extension, which allows you to control a program's
99     access to Perl operations, has been added to the standard
100     distribution.  This extends the work begun in the original
101     Safe extension, and subsumes it.  The Safe interface is still
102     available.
103
104   - The IO extension, which provides a set of classes for object-
105     oriented handling of common I/O tasks, has been added to the
106     standard distribution.  The IO classes will form the basis
107     for future development of Perl's I/O interface, and will
108     subsume the FileHandle class in the near future.  The default
109     class to which all Perl I/O handles belong is now IO::Handle,
110     rather than FileHandle.
111
112   - The ExtUtils::Embed library module, which provides a set
113     of utility function to help in embedding Perl in other
114     applications, has been added to the standard distribution.
115
116   - The Fatal library module, which provides a simple interface
117     for creating "do-or-die" equivalents of existing functions,
118     has been added to the standard distribution.
119
120   - The FindBin library module, which determines the full path
121     to the currently executing program, has been added to the
122     standard distribution.
123
124   - The DB_File extension, and the Getopt::Long, Test::Harness,
125     Text::Tabs, Text::Wrap, Time::Local and sigtrap library modules
126     have been updated to the authors' latest versions.
127
128   - The Carp library module now considers the @ISA chain when
129     determining the caller's package for inclusion in error messages.
130
131   - The h2xs, perlbug, and xsubpp utilities have been updated.
132
133   - The standard Perl debugger has been updated, and the information
134     provided to the debugger when an XSUB is called has been improved,
135     making it possible for alternate debuggers (such as Devel::DProf)
136     to do a better job of tracking XSUB calls.
137
138   - The pod documentation formatting tools in the standard distribution
139     can now handle characters in the input stream whose high bit is set.
140
141   - The cperl-mode EMACS editing mode has been updated.
142
143 o Changes in Documentation
144
145   - Typographic and formatting errors have been corrected in the pod
146     documentation for the core and standard library files
147
148   - Explanations of several core operators have been improved
149
150   - The perldebug, perlembed, perlipc, perlsec, and perltrap documents
151     extensively revised.
152
153 o Changes in OS-specific and Build-time Support
154
155   - Support for the NeXT platform has been extended through
156     NeXTSTEP/OPENSTEP 4.0, and now includes the ability to create MABs.
157
158   - Support for OS/2 has been extended as well, and now includes
159     options for building a.out binaries.
160
161   - Support for VMS has also been extended, incorporating improved
162     processing of file specification strings, optional suppression of
163     carriage control interpretation for record-structured files,
164     improved support for the -S command line switch, a number of
165     VMS-specific bugfixes, and significantly improved performance
166     in line-oriented reading of files.
167
168   - Several hints files have been added or updated: aux.sh (updated),
169     convexos.sh (updated), irix_4.sh (updated), irix_5.sh (updated),
170     irix_6_2.sh (updated), next_3.sh (updated), next_3_2.sh (new),
171     next_3_3.sh (new), next_4.sh (new), os2/sh (updated),
172     sco.sh (updated), and solaris_2.sh (updated).
173
174   - The test driver for the regression tests now reports when a set
175     of tests have been skipped (presumable because the operation
176     they're designed to test isn't supported on the current system).
177
178 -------------
179 Version 5.003
180 -------------
181
182                   ***>  IMPORTANT NOTICE:  <***
183 The main reason for this release was to fix a security bug affecting
184 suidperl on some systems.  If you build suidperl on your system, it
185 is strongly recommended that you replace any existing copies with
186 version 5.003 or later immediately.
187
188 The changes in 5.003 have been held to a minimum, in the hope that this
189 will simplify installation and testing at sites which may be affected
190 by the security hole in suidperl.  In brief, 5.003 does the following:
191
192 - Plugs security hole in suidperl mechanism on affected systems
193
194 - MakeMaker was also updated to version 5.34, and extension Makefile.PLs
195   were modified to match it.
196
197 - The following hints files were updated: bsdos.sh, hpux.sh, linux.sh,
198   machten.sh, solaris_2.sh
199
200 - A fix was added to installperl to insure that file permissions were
201   set correctly for the installed C header files.
202
203 - t/op/stat.t was modified to work around MachTen's belief that /dev/null
204   is a terminal device.
205
206 - Incorporation of Perl version information into the VMS' version of
207   config.h was changed to make it compatible with the older VAXC.
208
209 - Minor fixes were made to VMS-specific C code, and the routine
210   VMS::Filespec::rmsexpand was added.
211
212 ----------------
213 Version 5.002_01
214 ----------------
215
216 - The EMBED namespace changes are now used by default, in order to better
217   segregate Perl's C global symbols from those belonging to embedding
218   applications or to libraries.  This makes it necessary to rebuild dynamic
219   extensions built under previous versions of Perl without the EMBED option.
220   The default use of EMBED can be overridden by placing -DNO_EMBED on the
221   cc command line.
222
223   The EMBED change is the beginning of a general cleanup of C global
224   symbols used by Perl, so binary compatibility with previously
225   compiled dynamic extensions may be broken again in the next few
226   releases.
227
228 - Several bugs in the core were fixed, including the following:
229    - made sure FILE * for -e temp file was closed only once
230    - improved form of single-statement macro definitions to keep
231      as many ccs as possible happy
232    - fixed file tests to insure that signed values were used when
233      computing differences between times.
234    - fixed toke.c so implicit loop isn't doubled when perl is
235      invoked with both the -p and -n switches
236
237 - The new SUBVERSION number has been included in the default value for
238   architecture-specific library directories, so development and
239   production architecture-dependent libraries can coexist.
240
241 - Two new magic variables, $^E and $^O, have been added.  $^E contains the
242   OS-specific equivalent of $!.  $^O contains the name of the operating
243   system, in order to make it easily available to Perl code whose behavior
244   differs according to its environment.  The standard library files have
245   been converted to use $^O in preference to $Config{'osname'}.
246
247 - A mechanism was added to allow listing of locally applied patches
248   in the output of perl -v.
249
250 - Miscellaneous minor corrections and updates were made to the documentation.
251
252 - Extensive updates were made to the OS/2 and VMS ports
253
254 - The following hints file were updated: bsdos.sh, dynixptx.sh,
255   irix_6_2.sh, linux.sh, os2.sh
256
257 - Several changes were made to standard library files:
258    - reduced use of English.pm and $`, $', and $& in library modules,
259      since these degrade module loading and evaluation of regular expressions,
260      respectively.
261    - File/Basename.pm: Added path separator to dirname('.')
262    - File/Copy.pm: Added support for VMS and OS/2 system-level copy
263    - MakeMaker updated to v5.26
264    - Symbol.pm now accepts old (') and new (::) package delimiters
265    - Sys/Syslog.pm uses Sys::Hostname only when necessary
266    - chat2.pl picks up necessary constants from socket.ph
267    - syslog.pl: Corrected thinko 'Socket' --> 'Syslog'
268    - xsubpp updated to v1.935
269
270
271 - The perlbug utility is now more cautious about sending mail, in order
272   to reduce the chance of accidentally send a bug report by giving the
273   wrong response to a prompt.
274
275 - The -m switch has been added to perldoc, causing it to display the 
276   Perl code in target file as well as any documentation.
277
278 -------------
279 Version 5.002
280 -------------
281
282 The main enhancement to the Perl core was the addition of prototypes.
283 Many of the modules that come with Perl have been extensively upgraded.
284
285 Other than that, nearly all the changes for 5.002 were bug fixes of one
286 variety or another, so here's the bug list, along with the "resolution"
287 for each of them.  If you wish to correspond about any of them, please
288 include the bug number (if any).
289
290 Added APPLLIB_EXP for embedded perl library support.
291 Files patched: perl.c
292
293 Couldn't define autoloaded routine by assignment to typeglob.
294 Files patched: pp_hot.c sv.c
295
296 NETaa13525: Tiny patch to fix installman -n
297 From: Larry Wall
298 Files patched: installman
299
300 NETaa13525: de-documented \v
301 Files patched: pod/perlop.pod pod/perlre.pod
302
303 NETaa13525: doc changes
304 Files patched: pod/perlop.pod pod/perltrap.pod
305
306 NETaa13525: perlxs update from Dean Roehrich
307 Files patched: pod/perlxs.pod
308
309 NETaa13525: rename powerunix to powerux
310 Files patched: MANIFEST hints/powerux.sh
311
312 NETaa13540: VMS uses CLK_TCK for HZ
313 Files patched: pp_sys.c
314
315 NETaa13721: pad_findlex core dumps on bad CvOUTSIDE()
316 From: Carl Witty
317 Files patched: op.c sv.c toke.c
318  Each CV has a reference to the CV containing it lexically.  Unfortunately,
319  it didn't reference-count this reference, so when the outer CV was freed,
320  we ended up with a pointer to memory that got reused later as some other kind
321  of SV.
322
323 NETaa13721: warning suppression
324 Files patched: toke.c
325  (same)
326
327 NETaa13722: walk.c had inconsistent static declarations
328 From: Tim Bunce
329 Files patched: x2p/walk.c
330  Consolidated the various declarations and made them consistent with
331  the actual definitions.
332
333 NETaa13724: -MPackage=args patch
334 From: Tim Bunce
335 Files patched: perl.c pod/perlrun.pod
336  Added in the -MPackage=args patch too.
337
338 NETaa13729: order-of-evaluation dependency in scope.c on leaving REGCONTEXT
339 From: "Jason Shirk"
340 Files patched: scope.c
341  Did
342  
343                  I32 delta = SSPOPINT;
344                  savestack_ix -= delta;  /* regexp must have croaked */
345  
346  instead.
347
348 NETaa13731: couldn't assign external lexical array to itself
349 From: oneill@cs.sfu.ca
350 Files patched: op.c
351  The pad_findmy routine was only checking previous statements for previous
352  mention of external lexicals, so the fact that the current statement
353  already mentioned @list was not noted.  It therefore allocated another
354  reference to the outside lexical, and this didn't compare equal when
355  the assigment parsing code was trying to determine whether there was a
356  common variable on either side of the equals.  Since it didn't see the
357  same variable, it thought it could avoid making copies of the values on
358  the stack during list assignment.  Unfortunately, before using those
359  values, the list assignment has to zero out the target array, which
360  destroys the values.
361  
362  The fix was to make pad_findmy search the current statement as well.  This
363  was actually a holdover from some old code that was trying to delay
364  introduction of "my" variables until the next statement.  This is now
365  done with a different mechanism, so the fix should not adversely affect
366  that.
367
368 NETaa13733: s/// doesn't free old string when using copy mode
369 From: Larry Wall
370 Files patched: pp_ctl.c pp_hot.c
371  When I removed the use of sv_replace(), I simply forgot to free the old char*.
372
373 NETaa13736: closures leaked memory
374 From: Carl Witty
375 Files patched: op.c pp.c
376  This is a specific example of a more general bug, fixed as NETaa13760, having
377  to do with reference counts on comppads.
378
379 NETaa13739: XSUB interface caches gimme in case XSUB clobbers it
380 From: Dean Roehrich
381 Files patched: pp_hot.c
382  Applied suggest patch.  Also deleted second gimme declaration as redundant.
383
384 NETaa13760: comppad reference counts were inconsistent
385 From: Larry Wall
386 Files patched: op.c perl.c pp_ctl.c toke.c
387  All official references to comppads are supposed to be through compcv now,
388  but the transformation was not complete, resulting in memory leakage.
389
390 NETaa13761: sv_2pv() wrongly preferred IV to NV when SV was readonly
391 From: "Jack R. Lawler"
392 Files patched: sv.c
393  Okay, I understand how this one happened.  This is a case where a
394  beneficial fix uncovered a bug elsewhere.  I changed the constant
395  folder to prefer integer results over double if the numbers are the
396  same.  In this case, they aren't, but it leaves the integer value there
397  anyway because the storage is already allocated for it, and it *might*
398  be used in an integer context.  And since it's producing a constant, it
399  sets READONLY.  Unfortunately, sv_2pv() bogusly preferred the integer
400  value to the double when READONLY was set.  This never showed up if you
401  just said
402  
403      print 1.4142135623731;
404  
405  because in that case, there was already a string value.
406  
407
408 NETaa13772: shmwrite core dumps consistently
409 From: Gabe Schaffer
410 Files patched: opcode.h opcode.pl
411  The shmwrite operator is a list operator but neglected to push a stack
412  mark beforehand, because an 'm' was missing from opcode.pl.
413
414 NETaa13773: $. was misdocumented as read-only.
415 From: Inaba Hiroto
416 Files patched: pod/perlvar.pod
417      <1.array-element-read-only>
418      % perl -le '$,=", "; $#w=5; for (@w) { $_=1; } print @w' 
419      Modification of a read-only value attempted at -e line 1.
420      % perl4 -le '$,=", "; $#w=5; for (@w) { $_=1; } print @w'   
421      1, 1, 1, 1, 1, 1
422  
423  This one may stay the way it is for performance reasons.
424  
425      <2.begin-local-RS>
426      % cat abc
427      a
428      b
429      c
430      % perl -e 'BEGIN { local $/ = ""; } print "$.:$_" while <>;' abc
431      1:a
432      b
433      c
434      % perl -e '{ local $/ = ""; } print "$.:$_" while <>;' abc
435      1:a
436      2:b
437      3:c
438  
439  $/ wasn't initialized early enough, so local set it back to permanently
440  undefined on exit from the block.
441  
442      <3.grep-x0-bug>
443      % perl -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");'
444      a
445  
446      % perl4 -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");'
447      ac
448  
449  An extra mark was left on the stack if (('x') x $repeat) was used in a scalar
450  context.
451  
452      <4.input-lineno-assign>
453      # perl -w does not complain about assignment to $. (Is this just a feature?)
454      # perlvar.pod says "This variable should be considered read-only."
455      % cat abc
456      a
457      b
458      c
459      % perl -wnle '$. = 10 if $. == 2; print "$.:$_"' abc
460      1:a
461      10:b
462      11:c
463  
464  Fixed doc.
465  
466      <5.local-soft-ref.bug>
467      % perl -e 'local ${"a"}=1;'
468      zsh: 529 segmentation fault  perl -e 'local ${"a"}=1;'
469  
470  Now says
471      Can't localize a reference at -e line 1.
472  
473      <6.package-readline>
474      % perl -e 'package foo; sub foo { 1; } package main; $_ = foo::foo(); print'
475      1
476      % perl -e '
477        package readline; sub foo { 1; } package main; $_ = readline::foo(); print'
478      Undefined subroutine &main::foo called at -e line 1.
479      % perl -e '
480        package readline; sub foo { 1; } package main; $_ = &readline::foo(); print'
481      1
482  
483  Now treats foo::bar correctly even if foo is a keyword.
484  
485      <7.page-head-set-to-null-string>
486      % cat page-head
487      #From: russell@ccu1.auckland.ac.nz (Russell Fulton)
488      #Newsgroups: comp.lang.perl
489      #Subject: This script causes Perl 5.00 to sementation fault
490      #Date: 15 Nov 1994 00:11:37 GMT
491      #Message-ID: <3a8ubp$jrj@net.auckland.ac.nz>
492  
493      select((select(STDOUT),  $^='')[0]);  #this is the critical line
494      $a = 'a';
495      write ;
496      exit;
497  
498      format STDOUT =
499      @<<<<<<
500      $a
501      .
502  
503      % perl page-head
504      zsh: 1799 segmentation fault  perl /tmp/page-head
505  
506  Now says
507      Undefined top format "main::" called at ./try line 11.
508  
509      <8.sub-as-index>
510      # parser bug?
511      % perl -le 'sub foo {0}; $x[0]=0;$x[foo]<=0'
512      Unterminated <> operator at -e line 1.
513      % perl -le 'sub foo {0}; $x[0]=0;$x[foo()]<=0'
514  
515  A right square bracket now forces expectation of an operator.
516  
517      <9.unary-minus-to-regexp-var>
518      % cat minus-reg
519      #From: Michael Cook <mcook@cognex.com>
520      #Newsgroups: comp.lang.perl
521      #Subject: bug: print -$1
522      #Date: 01 Feb 1995 15:31:25 GMT
523      #Message-ID: <MCOOK.95Feb1103125@erawan.cognex.com>
524  
525      $_ = "123";
526      /\d+/;
527      print $&, "\n";
528      print -$&, "\n";
529      print 0-$&, "\n";
530  
531      % perl minus-reg
532      123
533      123
534      -123
535  
536  Apparently already fixed in my copy.
537  
538      <10.vec-segv>
539      % cat vec-bug
540      ## Offset values are changed for my machine.
541  
542      #From: augustin@gdstech.grumman.com (Conrad Augustin)
543      #Subject: perl5 vec() bug?
544      #Message-ID: <1994Nov22.193728.25762@gdstech.grumman.com>
545      #Date: Tue, 22 Nov 1994 19:37:28 GMT
546  
547      #The following two statements each produce a segmentation fault in perl5:
548  
549      #vec($a, 21406, 32) = 1;  # seg fault
550      vec($a, 42813, 16) = 1;  # seg fault
551  
552      #When the offset values are one less, all's well:
553      #vec($a, 21405, 32) = 1;  # ok
554      #vec($a, 42812, 16) = 1;  # ok
555  
556      #Interestingly, this is ok for all high values of N:
557      #$N=1000000; vec($a, $N, 8) = 1;
558  
559      % perl vec-bug
560      zsh: 1806 segmentation fault  perl vec-bug
561  
562  Can't reproduce this one.
563  
564
565 NETaa13773: $/ not correctly localized in BEGIN
566 Files patched: perl.c
567  (same)
568
569 NETaa13773: foo::bar was misparsed if foo was a reserved word
570 Files patched: toke.c toke.c
571  (same)
572
573 NETaa13773: right square bracket didn't force expectation of operator
574 Files patched: toke.c
575  (same)
576
577 NETaa13773: scalar ((x) x $repeat) left stack mark
578 Files patched: op.c
579  (same)
580
581 NETaa13778: -w coredumps on <$>
582 From: Hans Mulder
583 Files patched: pp_hot.c toke.c
584  Now produces suggested error message.  Also installed guard in warning code
585  that coredumped.
586
587 NETaa13779: foreach didn't use savestack mechanism
588 From: Hans Mulder
589 Files patched: cop.h pp_ctl.c
590  The foreach mechanism saved the old scalar value on the context stack
591  rather than the savestack.  It could consequently get out of sync if
592  unexpectedly unwound.
593
594 NETaa13785: GIMME sometimes used wrong context frame
595 From: Greg Earle
596 Files patched: embed.h global.sym op.h pp_ctl.c proto.h
597  The expression inside the return was taking its context from the immediately
598  surrounding block rather than the innermost surrounding subroutine call.
599
600 NETaa13797: could modify sv_undef through auto-vivification
601 From: Ilya Zakharevich
602 Files patched: pp.c
603  Inserted the missing check for readonly values on auto-vivification.
604
605 NETaa13798: if (...) {print} treats print as quoted
606 From: Larry Wall
607 Files patched: toke.c
608  The trailing paren of the condition was setting expectations to XOPERATOR
609  rather than XBLOCK, so it was being treated like ${print}.
610
611 NETaa13926: commonality was not detected in assignments using COND_EXPR
612 From: Mark Hanson
613 Files patched: opcode.h opcode.pl
614  The assignment compiler didn't check the 2nd and 3rd args of a ?:
615  for commonality.  It still doesn't, but I made ?: into a "dangerous"
616  operator so it is forced to treat it as common.
617
618 NETaa13957: was marking the PUSHMARK as modifiable rather than the arg
619 From: David Couture
620 Files patched: op.c sv.c
621  It was marking the PUSHMARK as modifiable rather than the arg.
622
623 NETaa13962: documentation of behavior of scalar <*> was unclear
624 From: Tom Christiansen
625 Files patched: pod/perlop.pod
626  Added the following to perlop:
627  
628  A glob only evaluates its (embedded) argument when it is starting a new
629  list.  All values must be read before it will start over.  In a list
630  context this isn't important, because you automatically get them all
631  anyway.  In a scalar context, however, the operator returns the next value
632  each time it is called, or a FALSE value if you've just run out.  Again,
633  FALSE is returned only once.  So if you're expecting a single value from
634  a glob, it is much better to say
635  
636      ($file) = <blurch*>;
637  
638  than
639  
640      $file = <blurch*>;
641  
642  because the latter will alternate between returning a filename and
643  returning FALSE.
644  
645
646 NETaa13986: split ignored /m pattern modifier
647 From: Winfried Koenig
648 Files patched: pp.c
649  Fixed to work like m// and s///.
650
651 NETaa13992: regexp comments not seen after + in non-extended regexp
652 From: Mark Knutsen
653 Files patched: regcomp.c
654  The code to skip regexp comments was guarded by a conditional that only
655  let it work when /x was in effect.
656
657 NETaa14014: use subs should not count as definition, only as declaration
658 From: Keith Thompson
659 Files patched: sv.c
660  On *foo = \&bar, doesn't set GVf_IMPORTED if foo and bar are in same package.
661
662 NETaa14021: sv_inc and sv_dec "upgraded" magical SV to non-magical
663 From: Paul A Sand
664 Also: Andreas Koenig
665 Files patched: sv.c
666  The sv_inc() and sv_dec() routines "upgraded" null magical SVs to non-magical.
667
668 NETaa14086: require should check tainting
669 From: Karl Simon Berg
670 Files patched: pp_ctl.c
671  Since we shouldn't allow tainted requires anyway, it now says:
672  
673    Insecure dependency in require while running with -T switch at tst.pl line 1.
674
675 NETaa14104: negation fails on magical variables like $1
676 From: tim
677 Files patched: pp.c
678  Negation was failing on magical values like $1.  It was testing the wrong
679  bits and also failed to provide a final "else" if none of the bits matched.
680
681 NETaa14107: deep sort return leaked contexts
682 From: Quentin Fennessy
683 Files patched: pp_ctl.c
684  Needed to call dounwind() appropriately.
685
686 NETaa14129: attempt to localize via a reference core dumps
687 From: Michele Sardo
688 Files patched: op.c pod/perldiag.pod
689  Now produces an error "Can't localize a reference", with explanation in
690  perldiag.
691
692 NETaa14138: substr() and s/// can cause core dump
693 From: Andrew Vignaux
694 Files patched: pp_hot.c
695  Forgot to call SvOOK_off() on the SV before freeing its string.
696
697 NETaa14145: ${@INC}[0] dumped core in debugger
698 From: Hans Mulder
699 Files patched: sv.c
700  Now croaks "Bizarre copy of ARRAY in block exit", which is better than
701  a core dump.  The fact that ${@INC}[0] means $INC[0] outside the debugger
702  is a different bug.
703
704 NETaa14147: bitwise assignment ops wipe out byte of target string
705 From: Jim Richardson
706 Files patched: doop.c
707  The code was assuming that the target was not either of the two operands,
708  which is false for an assignment operator.
709
710 NETaa14153: lexing of lexicals in patterns fooled by character class
711 From: Dave Bianchi
712 Files patched: toke.c
713  It never called the dwimmer, which is how it fooled it.
714
715 NETaa14154: allowed autoloaded methods by recognizing sub method; declaration
716 From: Larry Wall
717 Files patched: gv.c
718  Made sub method declaration sufficient for autoloader to stop searching on.
719
720 NETaa14156: shouldn't optimize block scope on tainting
721 From: Pete Peterson
722 Files patched: op.c toke.c
723  I totally disabled the block scope optimization when running tainted.
724
725 NETaa14157: -T and -B only allowed 1/30 "odd" characters--changed to 1/3
726 From: Tor Lillqvist
727 Files patched: pp_sys.c
728  Applied suggested patch.
729
730 NETaa14160: deref of null symbol should produce null list
731 From: Jared Rhine
732 Files patched: pp_hot.c
733  It didn't check for list context before returning undef.
734
735 NETaa14162: POSIX::gensym now returns a symbol reference
736 From: Josh N. Pritikin
737 Also: Tim Bunce
738 Files patched: ext/POSIX/POSIX.pm
739  Applied suggested patch.
740
741 NETaa14164: POSIX autoloader now distinguishes non-constant "constants"
742 From: Tim Bunce <Tim.Bunce@ig.co.uk>
743 Files patched: ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs
744  The .xs file now distinguishes non-constant "constants" by setting EAGAIN.
745  This will also let us use #ifdef within the .xs file to de-constantify
746  any other macros that happen not to be constants even if they don't use
747  an argument.
748
749 NETaa14166: missing semicolon after "my" induces core dump
750 From: Thomas Kofler
751 Files patched: toke.c
752  The parser was left thinking it was still processing a "my", and flubbed.
753  I made it wipe out the "in_my" variable on a syntax error.
754
755 NETaa14166: missing semicolon after "my" induces core dump"
756 Files patched: toke.c
757  (same)
758
759 NETaa14206: can now use English and strict at the same time
760 From: Andrew Wilcox
761 Files patched: sv.c
762  It now counts imported symbols as okay under "use strict".
763
764 NETaa14206: can now use English and strict at the same time 
765 Files patched: gv.c pod/perldiag.pod
766  (same)
767
768 NETaa14265: elseif now produces severe warning
769 From: Yutao Feng
770 Files patched: pod/perldiag.pod toke.c
771  Now complains explicitly about "elseif".
772
773 NETaa14279: list assignment propagated taintedness to independent scalars
774 From: Tim Freeman
775 Files patched: pp_hot.c
776  List assignment needed to be modified so that tainting didn't propagate
777  between independent scalar values.
778
779 NETaa14312: undef in @EXPORTS core dumps
780 From: William Setzer
781 Files patched: lib/Exporter.pm
782  Now says:
783  
784      Unable to create sub named "t::" at lib/Exporter.pm line 159.
785      Illegal null symbol in @t::EXPORT at -e line 1
786      BEGIN failed--compilation aborted at -e line 1.
787  
788
789 NETaa14312: undef in @EXPORTS core dumps     
790 Files patched: pod/perldiag.pod sv.c
791  (same)
792
793 NETaa14321: literal @array check shouldn't happen inside embedded expressions
794 From: Mark H. Nodine
795 Files patched: toke.c
796  The general solution to this is to disable the literal @array check within
797  any embedded expression.  For instance, this also failed bogusly:
798  
799      print "$foo{@foo}";
800  
801  The reason fixing this also fixes the s///e problem is that the lexer
802  effectively puts the RHS into a do {} block, making the expression
803  embedded within curlies, as far as the error message is concerned.
804
805 NETaa14322: now localizes $! during POSIX::AUTOLOAD
806 From: Larry Wall
807 Files patched: ext/POSIX/POSIX.pm
808  Added local $! = 0.
809
810 NETaa14324: defined() causes spurious sub existence
811 From: "Andreas Koenig"
812 Files patched: op.c pp.c
813  It called pp_rv2cv which wrongly assumed it could add any sub it referenced.
814
815 NETaa14336: use Module () forces import of nothing
816 From: Tim Bunce
817 Files patched: op.c
818  use Module () now refrains from calling import at all.
819
820 NETaa14353: added special HE allocator
821 From: Larry Wall
822 Files patched: global.sym
823
824 NETaa14353: added special HE allocator 
825 Files patched: hv.c perl.h
826
827 NETaa14353: array extension now converts old memory to SV storage.
828 Files patched: av.c av.h sv.c
829
830 NETaa14353: hashes now convert old storage into SV arenas.
831 Files patched: global.sym
832
833 NETaa14353: hashes now convert old storage into SV arenas.  
834 Files patched: hv.c perl.h
835
836 NETaa14353: upgraded SV arena allocation
837 Files patched: proto.h
838
839 NETaa14353: upgraded SV arena allocation            
840 Files patched: perl.c sv.c
841
842 NETaa14422: added rudimentary prototypes
843 From: Gisle Aas
844 Files patched: Makefile.SH op.c op.c perly.c perly.c.diff perly.h perly.y proto.h sv.c toke.c
845  Message-Id: <9509290018.AA21548@scalpel.netlabs.com>
846  To: doughera@lafcol.lafayette.edu (Andy Dougherty)
847  Cc: perl5-porters@africa.nicoh.com
848  Subject: Re: Jumbo Configure patch vs. 1m. 
849  Date: Thu, 28 Sep 95 17:18:54 -0700
850  From: lwall@scalpel.netlabs.com (Larry Wall)
851  
852  : No.  Larry's currently got the patch pumpkin for all such core perl topics.
853  
854  I dunno whether you should let me have the patch pumpkin or not.  To fix
855  a Sev 2 I just hacked in rudimentary prototypes.  :-)
856  
857  We can now define true unary subroutines, as well as argumentless
858  subroutines:
859  
860      sub baz () { 12; }                 # Must not have argument
861      sub bar ($) { $_[0] * 7 }          # Must have exactly one argument
862      sub foo ($@) { print "@_\n" }      # Must have at least one argument
863      foo bar baz / 2 || "oops", "is the answer";
864  
865  This prints "42 is the answer" on my machine.  That is, it's the same as
866  
867      foo( bar( baz() / 2) || "oops", "is the answer");
868  
869  Attempting to compile
870  
871      foo;
872  
873  results in
874  
875      Too few arguments for main::foo at ./try line 8, near "foo;"
876  
877  Compiling
878  
879      bar 1,2,3;
880  
881  results in
882  
883      Too many arguments for main::bar at ./try line 8, near "foo;"
884      
885  But
886  
887      @array = ('a','b','c');
888      foo @array, @array;
889      
890  prints "3 a b c" because the $ puts the first arg of foo into scalar context.
891  
892  The main win at this point is that we can say
893  
894      sub AAA () { 1; }
895      sub BBB () { 2; }
896  
897  and the user can say AAA + BBB and get 3.
898  
899  I'm not quite sure how this interacts with autoloading though.  I fear
900  POSIX.pm will need to say
901  
902      sub E2BIG ();
903      sub EACCES ();
904      sub EAGAIN ();
905      sub EBADF ();
906      sub EBUSY ();
907      ...
908      sub _SC_STREAM_MAX ();
909      sub _SC_TZNAME_MAX ();
910      sub _SC_VERSION ();
911  
912  unless we can figure out how to efficiently declare a default prototype
913  at import time.  Meaning, not using eval.  Currently
914  
915      *foo = \&bar;
916  
917  (the ordinary import mechanism) implicitly stubs &bar with no prototype if
918  &bar is not yet declared.  It's almost like you want an AUTOPROTO to
919  go with your AUTOLOAD.
920  
921  Another thing to rub one's 5 o'clock shadow over is that there's no way
922  to apply a prototype to a method call at compile time.
923  
924  And no, I don't want to have the
925  
926      sub howabout ($formal, @arguments) { ... }
927  
928  argument right now.
929  
930  Larry
931
932 NETaa14422: couldn't take reference of a prototyped function
933 Files patched: op.c
934  (same)
935
936 NETaa14423: use didn't allow expressions involving the scratch pad
937 From: Graham Barr
938 Files patched: op.c perly.c perly.c.diff perly.y proto.h vms/perly_c.vms
939  Applied suggested patch.
940
941 NETaa14444: lexical scalar didn't autovivify
942 From: Gurusamy Sarathy
943 Files patched: op.c pp_hot.c
944  It didn't have code in pp_padsv to do the right thing.
945
946 NETaa14448: caller could dump core when used within an eval or require
947 From: Danny R. Faught
948 Files patched: pp_ctl.c
949  caller() was incorrectly assuming the context stack contained a subroutine
950  context when it in fact contained an eval context.
951
952 NETaa14451: improved error message on bad pipe filehandle
953 From: Danny R. Faught
954 Files patched: pp_sys.c
955  Now says the slightly more informative
956  
957      Can't use an undefined value as filehandle reference at ./try line 3.
958
959 NETaa14462: pp_dbstate had a scope leakage on recursion suppression
960 From: Tim Bunce
961 Files patched: pp_ctl.c
962  Swapped the code in question around.
963
964 NETaa14482: sv_unref freed ref prematurely at times
965 From: Gurusamy Sarathy
966 Files patched: sv.c
967  Made sv_unref() mortalize rather than free the old reference.
968
969 NETaa14484: appending string to array produced bizarre results
970 From: Greg Ward
971 Also: Malcolm Beattie
972 Files patched: pp_hot.c
973  Will now say, "Can't coerce ARRAY to string".
974
975 NETaa14525: assignment to globs didn't reset them correctly
976 From: Gurusamy Sarathy
977 Files patched: sv.c
978  Applied parts of patch not overridden by subsequent patch.
979
980 NETaa14529: a partially matching subpattern could spoof infinity detector
981 From: Wayne Berke
982 Files patched: regexec.c
983  A partial match on a subpattern could fool the infinite regress detector
984  into thinking progress had been made.
985  The previous workaround prevented another bug (NETaa14529) from being fixed,
986  so I've backed it out.  I'll need to think more about how to detect failure
987  to progress.  I'm still hopeful it's not equivalent to the halting problem.
988
989 NETaa14535: patches from Gurusamy Sarathy
990 From: Gurusamy Sarathy
991 Files patched: op.c pp.c pp_hot.c regexec.c sv.c toke.c
992  Applied most recent suggested patches.
993
994 NETaa14537: select() can return too soon
995 From: Matt Kimball
996 Also: Andreas Gustafsson
997 Files patched: pp_sys.c
998
999 NETaa14538: method calls were treated like do {} under loop modifiers
1000 From: Ilya Zakharevich
1001 Files patched: perly.c perly.y
1002  Needed to take the OPf_SPECIAL flag off of entersubs from method reductions.
1003  (It was probably a cut-and-paste error from long ago.)
1004
1005 NETaa14540: foreach (@array) no longer does extra stack copy
1006 From: darrinm@lmc.com
1007 Files patched: Todo op.c pp_ctl.c pp_hot.c
1008  Fixed by doing the foreach(@array) optimization, so it iterates
1009  directly through the array, and can detect the implicit shift from
1010  referencing <>.
1011
1012 NETaa14541: new version of perlbug
1013 From: Kenneth Albanowski
1014 Files patched: README pod/perl.pod utils/perlbug.PL
1015  Brought it up to version 1.09.
1016
1017 NETaa14541: perlbug 1.11
1018 Files patched: utils/perlbug.PL
1019  (same)
1020
1021 NETaa14548: magic sets didn't check private OK bits
1022 From: W. Bradley Rubenstein
1023 Files patched: mg.c
1024  The magic code was getting mixed up between private and public POK bits.
1025
1026 NETaa14550: made ~ magic magical
1027 From: Tim Bunce
1028 Files patched: sv.c
1029  Applied suggested patch.
1030
1031 NETaa14551: humongous header causes infinite loop in format
1032 From: Grace Lee
1033 Files patched: pp_sys.c
1034  Needed to check for page exhaustion after doing top-of-form.
1035
1036 NETaa14558: attempt to call undefined top format core dumped
1037 From: Hallvard B Furuseth
1038 Files patched: pod/perldiag.pod pp_sys.c
1039  Now issues an error on attempts to call a non-existent top format.
1040
1041 NETaa14561: Gurusamy Sarathy's G_KEEPERR patch
1042 From: Andreas Koenig
1043 Also: Gurusamy Sarathy
1044 Also: Tim Bunce
1045 Files patched: cop.h interp.sym perl.c perl.h pp_ctl.c pp_sys.c sv.c toke.c
1046  Applied latest patch.
1047
1048 NETaa14581: shouldn't execute BEGIN when there are compilation errors
1049 From: Rickard Westman
1050 Files patched: op.c
1051  Perl should not try to execute BEGIN and END blocks if there's been a
1052  compilation error.
1053
1054 NETaa14582: got SEGV sorting sparse array
1055 From: Rick Pluta
1056 Files patched: pp_ctl.c
1057  Now weeds out undefined values much like Perl 4 did.
1058  Now sorts undefined values to the front.
1059
1060 NETaa14582: sort was letting unsortable values through to comparison routine
1061 Files patched: pp_ctl.c
1062  (same)
1063
1064 NETaa14585: globs in pad space weren't properly cleaned up
1065 From: Gurusamy Sarathy
1066 Files patched: op.c pp.c pp_hot.c sv.c
1067  Applied suggested patch.
1068
1069 NETaa14614: now does dbmopen with perl_eval_sv()
1070 From: The Man
1071 Files patched: perl.c pp_sys.c proto.h
1072  dbmopen now invokes perl_eval_sv(), which should handle error conditions
1073  better.
1074
1075 NETaa14618: exists doesn't work in GDBM_File
1076 From: Andrew Wilcox
1077 Files patched: ext/GDBM_File/GDBM_File.xs
1078  Applied suggested patch.
1079
1080 NETaa14619: tied()
1081 From: Larry Wall
1082 Also: Paul Marquess
1083 Files patched: embed.h global.sym keywords.h keywords.pl opcode.h opcode.pl pp_sys.c toke.c
1084  Applied suggested patch.
1085
1086 NETaa14636: Jumbo Dynaloader patch
1087 From: Tim Bunce
1088 Files patched: ext/DynaLoader/DynaLoader.pm ext/DynaLoader/dl_dld.xs ext/DynaLoader/dl_dlopen.xs ext/DynaLoader/dl_hpux.xs ext/DynaLoader/dl_next.xs ext/DynaLoader/dl_vms.xs ext/DynaLoader/dlutils.c
1089  Applied suggested patches.
1090
1091 NETaa14637: checkcomma routine was stupid about bareword sub calls
1092 From: Tim Bunce <Tim.Bunce@ig.co.uk>
1093 Files patched: toke.c
1094  The checkcomma routine was stupid about bareword sub calls.
1095
1096 NETaa14639: (?i) didn't reset on runtime patterns
1097 From: Mark A. Scheel
1098 Files patched: op.h pp_ctl.c toke.c
1099  It didn't distinguish between permanent flags outside the pattern and
1100  temporary flags within the pattern.
1101
1102 NETaa14649: selecting anonymous globs dumps core
1103 From: Chip Salzenberg
1104 Files patched: cop.h doio.c embed.h global.sym perl.c pp_sys.c proto.h
1105  Applied suggested patch, but reversed the increment and decrement to avoid
1106  decrementing and freeing what we're going to increment.
1107
1108 NETaa14655: $? returned negative value on AIX
1109 From: Kim Frutiger
1110 Also: Stephen D. Lee
1111 Files patched: pp_sys.c
1112  Applied suggested patch.
1113
1114 NETaa14668: {2,} could match once
1115 From: Hugo van der Sanden
1116 Files patched: regexec.c
1117  When an internal pattern failed a conjecture, it didn't back off on the
1118  number of times it thought it had matched.
1119
1120 NETaa14673: open $undefined dumped core
1121 From: Samuli K{rkk{inen
1122 Files patched: pp_sys.c
1123  pp_open() didn't check its argument for globness.
1124
1125 NETaa14683: stringifies were running pad out of space
1126 From: Robin Barker
1127 Files patched: op.h toke.c
1128  Increased PADOFFSET to a U32, and made lexer not put double-quoted strings
1129  inside OP_STRINGIFY unless they really needed it.
1130
1131 NETaa14689: shouldn't have . in @INC when tainting
1132 From: William R. Somsky
1133 Files patched: perl.c
1134  Now does not put . into @INC when tainting.  It may still be added with a 
1135  
1136      use lib ".";
1137  
1138  or, to put it at the end,
1139  
1140      BEGIN { push(@INC, ".") }
1141  
1142  but this is not recommended unless a chdir to a known location has been done
1143  first.
1144
1145 NETaa14690: values inside tainted SVs were ignored
1146 From: "James M. Stern"
1147 Files patched: pp.c pp_ctl.c
1148  It was assuming that a tainted value was a string.
1149
1150 NETaa14692: format name required qualification under use strict
1151 From: Tom Christiansen
1152 Files patched: gv.c
1153  Now treats format names the same as subroutine names.
1154
1155 NETaa14695: added simple regexp caching
1156 From: John Rowe
1157 Files patched: pp_ctl.c
1158  Applied suggested patch.
1159
1160 NETaa14697: regexp comments were sometimes wrongly treated as literal text
1161 From: Tom Christiansen
1162 Files patched: regcomp.c
1163  The literal-character grabber didn't know about extended comments.
1164  N.B. '#' is treated as a comment character whenever the /x option is
1165  used now, so you can't include '#' as a simple literal in /x regexps.
1166  
1167  (By the way, Tom, the boxed form of quoting in the previous enclosure is
1168  exceeding antisocial when you want to extract the code from it.)
1169
1170 NETaa14704: closure got wrong outer scope if outer sub was predeclared
1171 From: Marc Paquette
1172 Files patched: op.c
1173  The outer scope of the anonymous sub was set to the stub rather than to
1174  the actual subroutine.  I kludged it by making the outer scope of the
1175  stub be the actual subroutine, if anything is depending on the stub.
1176
1177 NETaa14705: $foo .= $foo did free memory read
1178 From: Gerd Knops
1179 Files patched: sv.c
1180  Now modifies address to copy if it was reallocated.
1181
1182 NETaa14709: Chip's FileHandle stuff
1183 From: Larry Wall
1184 Also: Chip Salzenberg
1185 Files patched: MANIFEST ext/FileHandle/FileHandle.pm ext/FileHandle/FileHandle.xs ext/FileHandle/Makefile.PL ext/POSIX/POSIX.pm ext/POSIX/POSIX.pod ext/POSIX/POSIX.xs lib/FileCache.pm lib/Symbol.pm t/lib/filehand.t t/lib/posix.t
1186  Applied suggested patches.
1187
1188 NETaa14711: added (&) and (*) prototypes for blocks and symbols
1189 From: Kenneth Albanowski
1190 Files patched: Makefile.SH op.c perly.c perly.h perly.y toke.c
1191  & now means that it must have an anonymous sub as that argument.  If
1192  it's the first argument, the sub may be specified as a block in the
1193  indirect object slot, much like grep or sort, which have prototypes of (&@).
1194  
1195  Also added * so you can do things like
1196  
1197      sub myopen (*;$);
1198  
1199      myopen(FOO, $filename);
1200
1201 NETaa14713: setuid FROM root now defaults to not do tainting
1202 From: Tony Camas
1203 Files patched: mg.c perl.c pp_hot.c
1204  Applied suggested patch.
1205
1206 NETaa14714: duplicate magics could be added to an SV
1207 From: Yary Hluchan
1208 Files patched: sv.c sv.c
1209  The sv_magic() routine didn't properly check to see if it already had a
1210  magic of that type.  Ordinarily it would have, but it was called during
1211  mg_get(), which forces the magic flags off temporarily.
1212
1213 NETaa14721: sub defined during erroneous do-FILE caused core dump
1214 From: David Campbell
1215 Files patched: op.c
1216  Fixed the seg fault.  I couldn't reproduce the return problem.
1217
1218 NETaa14734: ref should never return undef
1219 From: Dale Amon
1220 Files patched: pp.c t/op/overload.t
1221  Now returns null string.
1222
1223 NETaa14751: slice of undefs now returns null list
1224 From: Tim Bunce
1225 Files patched: pp.c pp_hot.c
1226  Null list clobberation is now done in lslice, not aassign.
1227
1228 NETaa14789: select coredumped on Linux
1229 From: Ulrich Kunitz
1230 Files patched: pp_sys.c
1231  Applied suggested patches, more or less.
1232
1233 NETaa14789: straightened out ins and out of duping
1234 Files patched: lib/IPC/Open3.pm
1235  (same)
1236
1237 NETaa14791: implemented internal SUPER class
1238 From: Nick Ing-Simmons
1239 Also: Dean Roehrich
1240 Files patched: gv.c
1241  Applied suggested patch.
1242
1243 NETaa14845: s/// didn't handle offset strings
1244 From: Ken MacLeod
1245 Files patched: pp_ctl.c
1246  Needed a call to SvOOK_off(targ) in pp_substcont().
1247
1248 NETaa14851: Use of << to mean <<"" is deprecated
1249 From: Larry Wall
1250 Files patched: toke.c
1251
1252 NETaa14865: added HINT_BLOCK_SCOPE to "elsif"
1253 From: Jim Avera
1254 Files patched: perly.y
1255  Needed to set HINT_BLOCK_SCOPE on "elsif" to prevent the do block from
1256  being optimized away, which caused the statement transition in elsif
1257  to reset the stack too far back.
1258
1259 NETaa14876: couldn't delete localized GV safely
1260 From: John Hughes
1261 Files patched: pp.c scope.c
1262  The reference count of the "borrowed" GV needed to be incremented while
1263  there was a reference to it in the savestack.
1264
1265 NETaa14887: couldn't negate magical scalars
1266 From: ian
1267 Also: Gurusamy Sarathy
1268 Files patched: pp.c
1269  Applied suggested patch, more or less.  (It's not necessary to test both
1270  SvNIOK and SvNIOKp, since the private bits are always set if the public
1271  bits are set.)
1272
1273 NETaa14893: /m modifier was sticky
1274 From: Jim Avera
1275 Files patched: pp_ctl.c
1276  pp_match() and pp_subst() were using an improperly scoped SAVEINT to restore
1277  the value of the internal variable multiline.
1278
1279 NETaa14893: /m modifier was sticky     
1280 Files patched: cop.h pp_hot.c
1281  (same)
1282
1283 NETaa14916: complete.pl retained old return value
1284 From: Martyn Pearce
1285 Files patched: lib/complete.pl
1286  Applied suggested patch.
1287
1288 NETaa14928: non-const 3rd arg to split assigned to list could coredump
1289 From: Hans de Graaff
1290 Files patched: op.c
1291  The optimizer was assuming the OP was an OP_CONST.
1292
1293 NETaa14942: substr as lvalue could disable magic
1294 From: Darrell Kindred <dkindred+@cmu.edu>
1295 Files patched: pp.c
1296  The substr was disabling the magic of $1.
1297
1298 NETaa14990: "not" not parseable when expecting term
1299 From: "Randal L. Schwartz"
1300 Files patched: perly.c perly.c.diff perly.y vms/perly_c.vms
1301  The NOTOP production needed to be moved down into the terms.
1302
1303 NETaa14993: Bizarre copy of formline
1304 From: Tom Christiansen
1305 Also: Charles Bailey
1306 Files patched: sv.c
1307  Applied suggested patch.
1308
1309 NETaa14998: sv_add_arena() no longer leaks memory
1310 From: Andreas Koenig
1311 Files patched: av.c hv.c perl.h sv.c
1312  Now keeps one potential arena "on tap", but doesn't use it unless there's
1313  demand for SV headers.  When an AV or HV is extended, its old memory
1314  becomes the next potential arena unless there already is one, in which
1315  case it is simply freed.  This will have the desired property of not
1316  stranding medium-sized chunks of memory when extending a single array
1317  repeatedly, but will not degrade when there's no SV demand beyond keeping
1318  one chunk of memory on tap, which generally will be about 250 bytes big,
1319  since it prefers the earlier freed chunk over the later.  See the nice_chunk
1320  variable.
1321
1322 NETaa14999: $a and $b now protected from use strict and lexical declaration
1323 From: Tom Christiansen
1324 Files patched: gv.c pod/perldiag.pod toke.c
1325  Bare $a and $b are now allowed during "use strict".  In addition,
1326  the following diag was added:
1327  
1328  =item Can't use "my %s" in sort comparison
1329  
1330  (F) The global variables $a and $b are reserved for sort comparisons.
1331  You mentioned $a or $b in the same line as the <=> or cmp operator,
1332  and the variable had earlier been declared as a lexical variable.
1333  Either qualify the sort variable with the package name, or rename the
1334  lexical variable.
1335  
1336
1337 NETaa15034: use strict refs should allow calls to prototyped functions
1338 From: Roderick Schertler
1339 Files patched: perly.c perly.c.diff perly.y toke.c vms/perly_c.vms
1340  Applied patch suggested by Chip.
1341
1342 NETaa15083: forced $AUTOLOAD to be untainted
1343 From: Tim Bunce
1344 Files patched: gv.c pp_hot.c
1345  Stripped any taintmagic from $AUTOLOAD after setting it.
1346
1347 NETaa15084: patch for Term::Cap
1348 From: Mark Kaehny
1349 Also: Hugo van der Sanden
1350 Files patched: lib/Term/Cap.pm
1351  Applied suggested patch.
1352
1353 NETaa15086: null pattern could cause coredump in s//_$1_/
1354 From: "Paul E. Maisano"
1355 Files patched: cop.h pp_ctl.c
1356  If the replacement pattern was complicated enough to cause pp_substcont
1357  to be called, then it lost track of which REGEXP* it was supposed to
1358  be using.
1359
1360 NETaa15087: t/io/pipe.t didn't work on AIX
1361 From: Andy Dougherty
1362 Files patched: t/io/pipe.t
1363  Applied suggested patch.
1364
1365 NETaa15088: study was busted
1366 From: Hugo van der Sanden
1367 Files patched: opcode.h opcode.pl pp.c
1368  It was studying its scratch pad target rather than the argument supplied.
1369
1370 NETaa15090: MSTATS patch
1371 From: Tim Bunce
1372 Files patched: global.sym malloc.c perl.c perl.h proto.h
1373  Applied suggested patch.
1374
1375 NETaa15098: longjmp out of magic leaks memory
1376 From: Chip Salzenberg
1377 Files patched: mg.c sv.c
1378  Applied suggested patch.
1379
1380 NETaa15102: getpgrp() is broken if getpgrp2() is available
1381 From: Roderick Schertler
1382 Files patched: perl.h pp_sys.c
1383  Applied suggested patch.
1384
1385 NETaa15103: prototypes leaked opcodes
1386 From: Chip Salzenberg
1387 Files patched: op.c
1388  Applied suggested patch.
1389
1390 NETaa15107: quotameta memory bug on all metacharacters
1391 From: Chip Salzenberg
1392 Files patched: pp.c
1393  Applied suggested patch.
1394
1395 NETaa15108: Fix for incomplete string leak
1396 From: Chip Salzenberg
1397 Files patched: toke.c
1398  Applied suggested patch.
1399
1400 NETaa15110: couldn't use $/ with 8th bit set on some architectures
1401 From: Chip Salzenberg
1402 Files patched: doop.c interp.sym mg.c op.c perl.c perl.h pp_ctl.c pp_hot.c pp_sys.c sv.c toke.c util.c
1403  Applied suggested patches.
1404
1405 NETaa15112: { a_1 => 2 } didn't parse as expected
1406 From: Stuart M. Weinstein
1407 Files patched: toke.c
1408  The little dwimmer was only skipping ALPHA rather than ALNUM chars.
1409
1410 NETaa15123: bitwise ops produce spurious warnings
1411 From: Hugo van der Sanden
1412 Also: Chip Salzenberg
1413 Also: Andreas Gustafsson
1414 Files patched: sv.c
1415  Decided to suppress the warning in the conversion routines if merely converting
1416  a temporary, which can never be a user-supplied value anyway.
1417
1418 NETaa15129: #if defined (foo) misparsed in h2ph
1419 From: Roderick Schertler <roderick@gate.net>
1420 Files patched: utils/h2ph.PL
1421  Applied suggested patch.
1422
1423 NETaa15131: some POSIX functions assumed valid filehandles
1424 From: Chip Salzenberg
1425 Files patched: ext/POSIX/POSIX.xs
1426  Applied suggested patch.
1427
1428 NETaa15151: don't optimize split on OPpASSIGN_COMMON
1429 From: Huw Rogers
1430 Files patched: op.c
1431  Had to swap the optimization down to after the assignment op is generated
1432  and COMMON is calculated, and then clean up the resultant tree differently.
1433
1434 NETaa15154: MakeMaker-5.18
1435 From: Andreas Koenig
1436 Files patched: MANIFEST lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_VMS.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Mksymlists.pm
1437  Brought it up to 5.18.
1438
1439 NETaa15156: some Exporter tweaks
1440 From: Roderick Schertler
1441 Also: Tim Bunce
1442 Files patched: lib/Exporter.pm
1443  Also did Tim's Tiny Trivial patch.
1444
1445 NETaa15157: new version of Test::Harness
1446 From: Andreas Koenig
1447 Files patched: lib/Test/Harness.pm
1448  Applied suggested patch.
1449
1450 NETaa15175: overloaded nomethod has garbage 4th op
1451 From: Ilya Zakharevich
1452 Files patched: gv.c
1453  Applied suggested patch.
1454
1455 NETaa15179: SvPOK_only shouldn't back off on offset pointer
1456 From: Gutorm.Hogasen@oslo.teamco.telenor.no
1457 Files patched: sv.h
1458  SvPOK_only() was calling SvOOK_off(), which adjusted the string pointer
1459  after tr/// has already acquired it.  It shouldn't really be necessary
1460  for SvPOK_only() to undo an offset string pointer, since there's no
1461  conflict with a possible integer value where the offset is stored.
1462
1463 NETaa15193: & now always bypasses prototype checking
1464 From: Larry Wall
1465 Files patched: dump.c op.c op.h perly.c perly.c.diff perly.y pod/perlsub.pod pp_hot.c proto.h toke.c vms/perly_c.vms vms/perly_h.vms
1466  Turned out to be a big hairy deal because the lexer turns foo() into &foo().
1467  But it works consistently now.  Also fixed pod.
1468
1469 NETaa15197: 5.002b2 is 'appending' to $@
1470 From: Gurusamy Sarathy
1471 Files patched: pp_ctl.c
1472  Applied suggested patch.
1473
1474 NETaa15201: working around Linux DBL_DIG problems
1475 From: Kenneth Albanowski
1476 Files patched: hints/linux.sh sv.c
1477  Applied suggested patch.
1478
1479 NETaa15208: SelectSaver
1480 From: Chip Salzenberg
1481 Files patched: MANIFEST lib/SelectSaver.pm
1482  Applied suggested patch.
1483
1484 NETaa15209: DirHandle
1485 From: Chip Salzenberg
1486 Files patched: MANIFEST lib/DirHandle.pm t/lib/dirhand.t
1487
1488 NETaa15210: sysopen()
1489 From: Chip Salzenberg
1490 Files patched: doio.c keywords.pl lib/ExtUtils/typemap opcode.pl pod/perlfunc.pod pp_hot.c pp_sys.c proto.h toke.c
1491  Applied suggested patch.  Hope it works...
1492
1493 NETaa15211: use mnemonic names in Safe setup
1494 From: Chip Salzenberg
1495 Files patched: ext/Safe/Safe.pm
1496  Applied suggested patch, more or less.
1497
1498 NETaa15214: prototype()
1499 From: Chip Salzenberg
1500 Files patched: ext/Safe/Safe.pm global.sym keywords.pl opcode.pl pp.c toke.c
1501  Applied suggested patch.
1502
1503 NETaa15217: -w problem with -d:foo
1504 From: Tim Bunce
1505 Files patched: perl.c
1506  Applied suggested patch.
1507
1508 NETaa15218: *GLOB{ELEMENT}
1509 From: Larry Wall
1510 Files patched: Makefile.SH embed.h ext/Safe/Safe.pm keywords.h opcode.h opcode.h opcode.pl perly.c perly.c.diff perly.y pp_hot.c t/lib/safe.t vms/perly_c.vms
1511
1512 NETaa15219: Make *x=\*y do like *x=*y
1513 From: Chip Salzenberg
1514 Files patched: sv.c
1515  Applied suggested patch.
1516
1517 NETaa15221: Indigestion with Carp::longmess and big eval '...'s
1518 From: Tim Bunce
1519 Files patched: lib/Carp.pm
1520  Applied suggested patch.
1521
1522 NETaa15222: VERSION patch for standard extensions
1523 From: Paul Marquess
1524 Files patched: ext/DB_File/Makefile.PL ext/DynaLoader/DynaLoader.pm ext/DynaLoader/Makefile.PL ext/Fcntl/Fcntl.pm ext/Fcntl/Makefile.PL ext/GDBM_File/GDBM_File.pm ext/GDBM_File/Makefile.PL ext/NDBM_File/Makefile.PL ext/NDBM_File/NDBM_File.pm ext/ODBM_File/Makefile.PL ext/ODBM_File/ODBM_File.pm ext/POSIX/Makefile.PL ext/POSIX/POSIX.pm ext/SDBM_File/Makefile.PL ext/SDBM_File/SDBM_File.pm ext/Safe/Makefile.PL ext/Safe/Safe.pm ext/Socket/Makefile.PL
1525  Applied suggested patch.
1526
1527 NETaa15222: VERSION patch for standard extensions (reprise)
1528 Files patched: ext/DB_File/DB_File.pm ext/DynaLoader/DynaLoader.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/NDBM_File/NDBM_File.pm ext/ODBM_File/ODBM_File.pm ext/POSIX/POSIX.pm ext/SDBM_File/SDBM_File.pm ext/Safe/Safe.pm ext/Socket/Socket.pm
1529  (same)
1530
1531 NETaa15227: $i < 10000 should optimize to integer op
1532 From: Larry Wall
1533 Files patched: op.c op.c
1534  The program
1535  
1536      for ($i = 0; $i < 100000; $i++) {
1537         push @foo, $i;
1538      }
1539  
1540  takes about one quarter the memory if the optimizer decides that it can
1541  use an integer < comparison rather than floating point.  It now does so
1542  if one side is an integer constant and the other side a simple variable.
1543  This should really help some of our benchmarks.  You can still force a
1544  floating point comparison by using 100000.0 instead.
1545
1546 NETaa15228: CPerl-mode patch
1547 From: Ilya Zakharevich
1548 Files patched: emacs/cperl-mode.el
1549  Applied suggested patch.
1550
1551 NETaa15231: Symbol::qualify()
1552 From: Chip Salzenberg
1553 Files patched: ext/FileHandle/FileHandle.pm gv.c lib/SelectSaver.pm lib/Symbol.pm pp_hot.c
1554  Applied suggested patch.
1555
1556 NETaa15236: select select broke under use strict
1557 From: Chip Salzenberg
1558 Files patched: op.c
1559  Instead of inventing a new bit, I just turned off the HINT_STRICT_REFS bit.
1560  I don't think it's worthwhile distinguishing between qualified or unqualified
1561  names to select.
1562
1563 NETaa15237: use vars
1564 From: Larry Wall
1565 Files patched: MANIFEST gv.c lib/subs.pm lib/vars.pm sv.c
1566
1567 NETaa15240: keep op names _and_ descriptions
1568 From: Chip Salzenberg
1569 Files patched: doio.c embed.h ext/Safe/Safe.pm ext/Safe/Safe.xs global.sym op.c opcode.h opcode.pl scope.c sv.c
1570  Applied suggested patch.
1571
1572 NETaa15259: study doesn't unset on string modification
1573 From: Larry Wall
1574 Files patched: mg.c pp.c
1575  Piggybacked on m//g unset magic to unset the study too.
1576
1577 NETaa15276: pick a better initial cxstack_max
1578 From: Chip Salzenberg
1579 Files patched: perl.c
1580  Added fudge in, and made it calculate how many it could fit into (most of) 8K,
1581  to avoid getting 16K of Kingsley malloc.
1582
1583 NETaa15287: numeric comparison optimization adjustments
1584 From: Clark Cooper
1585 Files patched: op.c
1586  Applied patch suggested by Chip, with liberalization to >= and <=.
1587
1588 NETaa15299: couldn't eval string containing pod or __DATA__     
1589 From: Andreas Koenig
1590 Also: Gisle Aas
1591 Files patched: toke.c
1592  Basically, eval didn't know how to bypass pods correctly.
1593
1594 NETaa15300: sv_backoff problems
1595 From: Paul Marquess
1596 Also: mtr
1597 Also: Chip Salzenberg
1598 Files patched: op.c sv.c sv.h
1599  Applied suggested patch.
1600
1601 NETaa15312: Avoid fclose(NULL)
1602 From: Chip Salzenberg
1603 Files patched: toke.c
1604  Applied suggested patch.
1605
1606 NETaa15318: didn't set up perl_init_i18nl14n for export
1607 From: Ilya Zakharevich
1608 Files patched: perl_exp.SH
1609  Applied suggested patch.
1610
1611 NETaa15331: File::Path::rmtree followed symlinks
1612 From: Andreas Koenig
1613 Files patched: lib/File/Path.pm
1614  Added suggested patch, except I did
1615  
1616         if (not -l $root and -d _) {
1617  
1618  for efficiency, since if -d is true, the -l already called lstat on it.
1619
1620 NETaa15339: sv_gets() didn't reset count
1621 From: alanburlison@unn.unisys.com
1622 Files patched: sv.c
1623  Applied suggested patch.
1624
1625 NETaa15341: differentiated importation of different types
1626 From: Chip Salzenberg
1627 Files patched: gv.c gv.h op.c perl.c pp.c pp_ctl.c sv.c sv.h toke.c
1628  Applied suggested patch.
1629
1630 NETaa15342: Consistent handling of e_{fp,tmpname}
1631 From: Chip Salzenberg
1632 Files patched: perl.c pp_ctl.c util.c
1633  Applied suggested patch.
1634
1635 NETaa15344: Safe gets confused about malloc on AIX
1636 From: Tim Bunce
1637 Files patched: ext/Safe/Safe.xs
1638  Applied suggested patch.
1639
1640 NETaa15348: -M upgrade
1641 From: Tim Bunce
1642 Files patched: perl.c pod/perlrun.pod
1643  Applied suggested patch.
1644
1645 NETaa15369: change in split optimization broke scalar context
1646 From: Ulrich Pfeifer
1647 Files patched: op.c
1648  The earlier patch to make the split optimization pay attention to
1649  OPpASSIGN_COMMON rearranged how the syntax tree is constructed, but kept
1650  the wrong context flags.  This causes pp_split() do do the wrong thing.
1651
1652 NETaa15423: can't do subversion numbering because of %5.3f assumptions
1653 From: Andy Dougherty
1654 Files patched: configpm patchlevel.h perl.c perl.h pp_ctl.c
1655  Removed the %5.3f assumptions where appropriate.  patchlevel.h now
1656  defines SUBVERSION, which if greater than 0 indicates a development version.
1657
1658 NETaa15424: Sigsetjmp patch
1659 From: Kenneth Albanowski
1660 Files patched: Configure config_h.SH op.c perl.c perl.h pp_ctl.c util.c
1661  Applied suggested patch.
1662
1663 Needed to make install paths absolute.
1664 Files patched: installperl
1665
1666 h2xs 1.14
1667 Files patched: utils/h2xs.PL
1668
1669 makedir() looped on a symlink to a directory.
1670 Files patched: installperl
1671
1672 xsubpp 1.932
1673 Files patched: lib/ExtUtils/xsubpp
1674
1675 -------------
1676 Version 5.001
1677 -------------
1678
1679 Nearly all the changes for 5.001 were bug fixes of one variety or another,
1680 so here's the bug list, along with the "resolution" for each of them.  If
1681 you wish to correspond about any of them, please include the bug number.
1682
1683 There were a few that can be construed as enhancements:
1684     NETaa13059: now warns of use of \1 where $1 is necessary.
1685     NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks
1686     NETaa13520: added closures
1687     NETaa13530: scalar keys now resets hash iterator
1688     NETaa13641: added Tim's fancy new import whizbangers
1689     NETaa13710: cryptswitch needed to be more "useable"
1690     NETaa13716: Carp now allows multiple packages to be skipped out of
1691     NETaa13716: now counts imported routines as "defined" for redef warnings
1692     (and, of course, much of the stuff from the perl5-porters)
1693
1694 NETaa12974: README incorrectly said it was a pre-release.
1695 Files patched: README
1696
1697 NETaa13033: goto pushed a bogus scope on the context stack.
1698 From: Steve Vinoski
1699 Files patched: pp_ctl.c
1700  The goto operator pushed an extra bogus scope onto the context stack.  (This
1701  often didn't matter, since many things pop extra unrecognized scopes off.)
1702
1703 NETaa13034: tried to get valid pointer from undef.
1704 From: Castor Fu
1705 Also:  Achille Hui, the Day Dreamer 
1706 Also: Eric Arnold
1707 Files patched: pp_sys.c
1708  Now treats undef specially, and calls SvPV_force on any non-numeric scalar
1709  value to get a real pointer to somewhere.
1710
1711 NETaa13035: included package info with filehandles.
1712 From: Jack Shirazi - BIU
1713 Files patched: pp_hot.c pp_sys.c
1714  Now passes a glob to filehandle methods to keep the package info intact.
1715
1716 NETaa13048: didn't give strict vars message on every occurrence.
1717 From: Doug Campbell
1718 Files patched: gv.c
1719  It now complains about every occurrence.  (The bug resulted from an
1720  ill-conceived attempt to suppress a duplicate error message in a
1721  suboptimal fashion.)
1722
1723 NETaa13052: test for numeric sort sub return value fooled by taint magic.
1724 From: Peter Jaspers-Fayer
1725 Files patched: pp_ctl.c sv.h
1726  The test to see if the sort sub return value was numeric looked at the
1727  public flags rather than the private flags of the SV, so taint magic
1728  hid that info from the sort.
1729
1730 NETaa13053: forced a2p to use byacc
1731 From: Andy Dougherty
1732 Files patched: MANIFEST x2p/Makefile.SH x2p/a2p.c
1733  a2p.c is now pre-byacced and shipped with the kit.
1734
1735 NETaa13055: misnamed constant in previous patch.
1736 From: Conrad Augustin
1737 Files patched: op.c op.h toke.c
1738  The tokener translates $[ to a constant, but with a special marking in case
1739  the constant gets assigned to or localized.  Unfortunately, the marking
1740  was done with a combination of OPf_SPECIAL and OPf_MOD that was easily
1741  spoofed.  There is now a private OPpCONST_ARYLEN flag for this purpose.
1742
1743 NETaa13055: use of OPf_SPECIAL for $[ lvaluehood was too fragile.
1744 Files patched: op.c op.h toke.c
1745  (same)
1746
1747 NETaa13056: convert needs to throw away any number info on its list.
1748 From: Jack Shirazi - BIU
1749 Files patched: op.c
1750  The listiness of the argument list leaked out to the subroutine call because
1751  of how prepend_elem and append_elem reuse an existing list.  The convert()
1752  routine just needs to discard any listiness it finds on its argument.
1753
1754 NETaa13058: AUTOLOAD shouldn't assume size of @_ is meaningful.
1755 From: Florent Guillaume
1756 Files patched: ext/DB_File/DB_File.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/Socket/Socket.pm h2xs.SH
1757  I just deleted the optimization, which is silly anyway since the eventual
1758  subroutine definition is cached.
1759
1760 NETaa13059: now warns of use of \1 where $1 is necessary.
1761 From: Gustaf Neumann
1762 Files patched: toke.c
1763  Now says
1764  
1765      Can't use \1 to mean $1 in expression at foo line 2
1766  
1767  along with an explanation in perldiag.
1768
1769 NETaa13060: no longer warns on attempt to read <> operator's transition state.
1770 From: Chaim Frenkel
1771 Files patched: pp_hot.c
1772  No longer warns on <> operator's transitional state.
1773
1774 NETaa13140: warning said $ when @ would be more appropriate.
1775 From: David J. MacKenzie
1776 Files patched: op.c pod/perldiag.pod
1777  Now says
1778  
1779      (Did you mean $ or @ instead of %?)
1780  
1781  and added more explanation to perldiag.
1782
1783 NETaa13149: was reading freed memory to make incorrect error message.
1784 Files patched: pp_ctl.c
1785  It was reading freed memory to make an error message that would be
1786  incorrect in any event because it had the inner filename rather than
1787  the outer.
1788
1789 NETaa13149: confess was sometimes less informative than croak
1790 From: Jack Shirazi
1791 Files patched: lib/Carp.pm
1792  (same)
1793
1794 NETaa13150: stderr needs to be STDERR in package
1795 From: Jack Shirazi
1796 Files patched: lib/File/CheckTree.pm
1797  Also fixed pl2pm to translate the filehandles to uppercase.
1798
1799 NETaa13150: uppercases stdin, stdout and stderr
1800 Files patched: pl2pm
1801  (same)
1802
1803 NETaa13154: array assignment didn't notice package magic.
1804 From: Brian Reichert
1805 Files patched: pp_hot.c
1806  The list assignment operator looked for only set magic, but set magic is
1807  only on the elements of a magical hash, not on the hash as a whole.  I made
1808  the operator look for any magic at all on the target array or hash.
1809
1810 NETaa13155: &DB::DB left trash on the stack.
1811 From: Thomas Koenig
1812 Files patched: lib/perl5db.pl pp_ctl.c
1813  The call by pp_dbstate() to &DB::DB left trash on the stack.  It now
1814  calls DB in list context, and DB returns ().
1815
1816 NETaa13156: lexical variables didn't show up in debugger evals.
1817 From: Joergen Haegg
1818 Files patched: op.c
1819  The code that searched back up the context stack for the lexical scope
1820  outside the eval only partially took into consideration that there
1821  might be extra debugger subroutine frames that shouldn't be used, and
1822  ended up comparing the wrong statement sequence number to the range of
1823  valid sequence numbers for the scope of the lexical variable.  (There
1824  was also a bug fixed in passing that caused the scope of lexical to go
1825  clear to the end of the subroutine even if it was within an inner block.)
1826
1827 NETaa13157: any request for autoloaded DESTROY should create a null one.
1828 From: Tom Christiansen
1829 Files patched: lib/AutoLoader.pm
1830  If DESTROY.al is not located, it now creates sub DESTROY {} automatically.
1831
1832 NETaa13158: now preserves $@ around destructors while leaving eval.
1833 From: Tim Bunce
1834 Files patched: pp_ctl.c
1835  Applied supplied patch, except the whole second hunk can be replaced with
1836  
1837      sv_insert(errsv, 0, 0, message, strlen(message));
1838
1839 NETaa13160: clarified behavior of split without arguments
1840 From: Harry Edmon
1841 Files patched: pod/perlfunc.pod
1842  Clarified the behavior of split without arguments.
1843
1844 NETaa13162: eval {} lost list/scalar context
1845 From: Dov Grobgeld
1846 Files patched: op.c
1847  LEAVETRY didn't propagate number to ENTERTRY.
1848
1849 NETaa13163: clarified documentation of foreach using my variable
1850 From: Tom Christiansen
1851 Files patched: pod/perlsyn.pod
1852  Explained that foreach using a lexical is still localized.
1853
1854 NETaa13164: the dot detector for the end of formats was over-rambunctious.
1855 From: John Stoffel
1856 Files patched: toke.c
1857  The dot detector for the end of formats was over-rambunctious.  It would
1858  pick up any dot that didn't have a space in front of it.
1859
1860 NETaa13165: do {} while 1 never linked outer block into next chain.
1861 From: Gisle Aas
1862 Files patched: op.c
1863  When the conditional of do {} while 1; was optimized away, it confused the
1864  postfix order construction so that the block that ordinarily sits around the
1865  whole loop was never executed.  So when the loop tried to unstack between
1866  iterations, it got the wrong context, and blew away the lexical variables
1867  of the outer scope.  Fixed it by introducing a NULL opcode that will be
1868  optimized away later.
1869
1870 NETaa13167: coercion was looking at public bits rather than private bits.
1871 From: Randal L. Schwartz
1872 Also: Thomas Riechmann
1873 Also: Shane Castle
1874 Files patched: sv.c
1875  There were some bad ifdefs around the various varieties of set*id().  In
1876  addition, tainting was interacting badly with assignment to $> because
1877  sv_2iv() was examining SvPOK rather than SvPOKp, and so couldn't coerce
1878  a string uid to an integer one.
1879
1880 NETaa13167: had some ifdefs wrong on set*id.
1881 Files patched: mg.c pp_hot.c
1882  (same)
1883
1884 NETaa13168: relaxed test for comparison of new and old fds
1885 From: Casper H.S. Dik
1886 Files patched: t/lib/posix.t
1887  I relaxed the comparison to just check that the new fd is greater.
1888
1889 NETaa13169: autoincrement can corrupt scalar value state.
1890 From: Gisle Aas
1891 Also: Tom Christiansen
1892 Files patched: sv.c
1893  It assumed a PV didn't need to be upgraded to become an NV.
1894
1895 NETaa13169: previous patch could leak a string pointer.
1896 Files patched: sv.c
1897  (same)
1898
1899 NETaa13170: symbols missing from global.sym
1900 From: Tim Bunce
1901 Files patched: global.sym
1902  Applied suggested patch.
1903
1904 NETaa13171: \\ in <<'END' shouldn't reduce to \.
1905 From: Randal L. Schwartz
1906 Files patched: toke.c
1907  <<'END' needed to bypass ordinary single-quote processing.
1908
1909 NETaa13172: 'use integer' turned off magical autoincrement.
1910 From: Erich Rickheit KSC
1911 Files patched: pp.c pp_hot.c
1912  The integer versions of the increment and decrement operators were trying too
1913  hard to be efficient.
1914
1915 NETaa13172: deleted duplicate increment and decrement code
1916 Files patched: opcode.h opcode.pl pp.c
1917  (same)
1918
1919 NETaa13173: install should make shared libraries executable.
1920 From: Brian Grossman
1921 Also: Dave Nadler
1922 Also: Eero Pajarre
1923 Files patched: installperl
1924  Now gives permission 555 to any file ending with extension specified by $dlext.
1925
1926 NETaa13176: ck_rvconst didn't free the const it used up.
1927 From: Nick Duffek
1928 Files patched: op.c
1929  I checked in many random memory leaks under this bug number, since it
1930  was an eval that brought many of them out.
1931
1932 NETaa13176: didn't delete XRV for temp ref of destructor.
1933 Files patched: sv.c
1934  (same)
1935
1936 NETaa13176: didn't delete op_pmshort in matching operators.
1937 Files patched: op.c
1938  (same)
1939
1940 NETaa13176: eval leaked the name of the eval.
1941 Files patched: scope.c
1942  (same)
1943
1944 NETaa13176: gp_free didn't free the format.
1945 Files patched: gv.c
1946  (same)
1947
1948 NETaa13176: minor leaks in loop exits and constant subscript optimization.
1949 Files patched: op.c
1950  (same)
1951
1952 NETaa13176: plugged some duplicate struct allocation memory leaks.
1953 Files patched: perl.c
1954  (same)
1955
1956 NETaa13176: sv_clear of an FM didn't clear anything.
1957 Files patched: sv.c
1958  (same)
1959
1960 NETaa13176: tr/// didn't mortalize its return value.
1961 Files patched: pp.c
1962  (same)
1963
1964 NETaa13177: SCOPE optimization hid line number info
1965 From: David J. MacKenzie
1966 Also: Hallvard B Furuseth
1967 Files patched: op.c
1968  Every pass on the syntax tree has to keep track of the current statement.
1969  Unfortunately, the single-statement block was optimized into a single
1970  statement between the time the variable was parsed and the time the
1971  void code scan was done, so that pass didn't see the OP_NEXTSTATE
1972  operator, because it has been optimized to an OP_NULL.
1973  
1974  Fortunately, null operands remember what they were, so it was pretty easy
1975  to make it set the correct line number anyway.
1976
1977 NETaa13178: some linux doesn't handle nm well
1978 From: Alan Modra
1979 Files patched: hints/linux.sh
1980  Applied supplied patch.
1981
1982 NETaa13180: localized slice now pre-extends array
1983 From: Larry Schuler
1984 Files patched: pp.c
1985  A localized slice now pre-extends its array to avoid reallocation during
1986  the scope of the local.
1987
1988 NETaa13181: m//g didn't keep track of whether previous match matched null.
1989 From: "philippe.verdret"
1990 Files patched: mg.h pp_hot.c
1991  A pattern isn't allowed to match a null string in the same place twice in
1992  a row.  m//g wasn't keeping track of whether the previous match matched
1993  the null string.
1994
1995 NETaa13182: now includes whitespace as a regexp metacharacter.
1996 From: Larry Wall
1997 Files patched: toke.c
1998  scan_const() now counts " \t\n\r\f\v" as metacharacters when scanning a pattern.
1999
2000 NETaa13183: sv_setsv shouldn't try to clone an object.
2001 From: Peter Gordon
2002 Files patched: sv.c
2003  The sv_mortalcopy() done by the return in STORE called sv_setsv(),
2004  which cloned the object.  sv_setsv() shouldn't be in the business of
2005  cloning objects.
2006
2007 NETaa13184: bogus warning on quoted signal handler name removed.
2008 From: Dan Carson
2009 Files patched: toke.c
2010  Now doesn't complain unless the first non-whitespace character after the =
2011  is an alphabetic character.
2012
2013 NETaa13186: now croaks on chop($')
2014 From: Casper H.S. Dik
2015 Files patched: doop.c
2016  Now croaks on chop($') and such.
2017
2018 NETaa13187: "${foo::bar}" now counts as mere delimitation, not as a bareword.
2019 From: Jay Rogers
2020 Files patched: toke.c
2021  "${foo::bar}" now counts as mere delimitation, not as a bareword inside a
2022  reference block.
2023
2024 NETaa13188: for backward compatibility, looks for "perl -" before "perl".
2025 From: Russell Mosemann
2026 Files patched: toke.c
2027  Now allows non-whitespace characters on the #! line between the "perl"
2028  and the "-".
2029
2030 NETaa13188: now allows non-whitespace after #!...perl before switches.
2031 Files patched: toke.c
2032  (same)
2033
2034 NETaa13189: derivative files need to be removed before recreation
2035 From: Simon Leinen
2036 Also: Dick Middleton
2037 Also: David J. MacKenzie
2038 Files patched: embed_h.sh x2p/Makefile.SH
2039  Fixed various little nits as suggested in several messages.
2040
2041 NETaa13190: certain assignments can spoof pod directive recognizer
2042 From: Ilya Zakharevich
2043 Files patched: toke.c
2044  The lexer now only recognizes pod directives where a statement is expected.
2045
2046 NETaa13194: now returns undef when there is no curpm.
2047 From: lusol@Dillon.CC.Lehigh.EDU
2048 Files patched: mg.c
2049  Since there was no regexp prior to the "use", it was returning whatever the
2050  last successful match was within the "use", because there was no current
2051  regexp, so it treated it as a normal variable.  It now returns undef.
2052
2053 NETaa13195: semop had one S too many.
2054 From: Joachim Huober
2055 Files patched: opcode.pl
2056  The entry in opcode.pl had one too many S's.
2057
2058 NETaa13196: always assumes it's a Perl script if -c is used.
2059 From: Dan Carson
2060 Files patched: toke.c
2061  It now will assume it's a Perl script if the -c switch is used.
2062
2063 NETaa13197: changed implicit -> message to be more understandable.
2064 From: Bruce Barnett
2065 Files patched: op.c pod/perldiag.pod
2066  I changed the error message to be more understandable.  It now says
2067  
2068      Can't use subscript on sort...
2069  
2070
2071 NETaa13201: added OPpCONST_ENTERED flag to properly enter filehandle symbols.
2072 From: E. Jay Berkenbilt
2073 Also: Tom Christiansen
2074 Files patched: op.c op.h toke.c
2075  The grammatical reduction of a print statement didn't properly count
2076  the filehandle as a symbol reference because it couldn't distinguish
2077  between a symbol entered earlier in the program and a symbol entered
2078  for the first time down in the lexer.
2079
2080 NETaa13203: README shouldn't mention uperl.o any more.
2081 From: Anno Siegel
2082 Files patched: README
2083
2084 NETaa13204: .= shouldn't warn on uninitialized target.
2085 From: Pete Peterson
2086 Files patched: pp_hot.c
2087  No longer warns on uninitialized target of .= operator.
2088
2089 NETaa13206: handy macros in XSUB.h
2090 From: Tim Bunce
2091 Files patched: XSUB.h
2092  Added suggested macros.
2093
2094 NETaa13228: commonality checker didn't treat lexicals as variables.
2095 From: mcook@cognex.com
2096 Files patched: op.c opcode.pl
2097  The list assignment operator tries to avoid unnecessary copies by doing the
2098  assignment directly if there are no common variables on either side of the
2099  equals.  Unfortunately, the code that decided that only recognized references
2100  to dynamic variables, not lexical variables.
2101
2102 NETaa13229: fixed sign stuff for complement, integer coercion.
2103 From: Larry Wall
2104 Files patched: perl.h pp.c sv.c
2105  Fixed ~0 and integer coercions.
2106
2107 NETaa13230: no longer tries to reuse scratchpad temps if tainting in effect.
2108 From: Luca Fini
2109 Files patched: op.c
2110  I haven't reproduced it, but I believe the problem is the reuse of scratchpad
2111  temporaries between statements.  I've made it not try to reuse them if
2112  tainting is in effect.
2113
2114 NETaa13231: *foo = *bar now prevents typo warnings on "foo"
2115 From: Robin Barker
2116 Files patched: sv.c
2117  Aliasing of the form *foo = *bar is now protected from the typo warnings.
2118  Previously only the *foo = \$bar form was.
2119
2120 NETaa13235: require BAREWORD now introduces package name immediately.
2121 From: Larry Wall
2122 Files patched: toke.c
2123  require BAREWORD now introduces package name immediately.  This lets the
2124  method intuit code work right even though the require hasn't actually run
2125  yet.
2126
2127 NETaa13289: didn't calculate correctly using arybase.
2128 From: Jared Rhine
2129 Files patched: pp.c pp_hot.c
2130  The runtime code didn't use curcop->cop_arybase correctly.
2131
2132 NETaa13301: store now throws exception on error
2133 From: Barry Friedman
2134 Files patched: ext/GDBM_File/GDBM_File.xs ext/NDBM_File/NDBM_File.xs ext/ODBM_File/ODBM_File.xs ext/SDBM_File/SDBM_File.xs
2135  Changed warn to croak in ext/*DBM_File/*.xs.
2136
2137 NETaa13302: ctime now takes Time_t rather than Time_t*.
2138 From: Rodger Anderson
2139 Files patched: ext/POSIX/POSIX.xs
2140  Now declares a Time_t and takes the address of that in CODE.
2141
2142 NETaa13302: shorter way to do this patch
2143 Files patched: ext/POSIX/POSIX.xs
2144  (same)
2145
2146 NETaa13304: could feed too large $@ back into croak, whereupon it croaked.
2147 From: Larry Wall
2148 Files patched: perl.c
2149  callist() could feed $@ back into croak with more than a bare %s.  (croak()
2150  handles long strings with a bare %s okay.)
2151
2152 NETaa13305: compiler misoptimized RHS to outside of s/a/print/e
2153 From: Brian S. Cashman <bsc@umich.edu>
2154 Files patched: op.c
2155  The syntax tree was being misconstructed because the compiler felt that
2156  the RHS was invariant, so it did it outside the s///.
2157
2158 NETaa13314: assigning mortal to lexical leaks
2159 From: Larry Wall
2160 Files patched: sv.c
2161  In stealing strings, sv_setsv was checking SvPOK to see if it should free
2162  the destination string.  It should have been checking SvPVX.
2163
2164 NETaa13316: wait4pid now recalled when errno == EINTR
2165 From: Robert J. Pankratz
2166 Files patched: pp_sys.c util.c
2167  system() and the close() of a piped open now recall wait4pid if it returned
2168  prematurely with errno == EINTR.
2169
2170 NETaa13329: needed to localize taint magic
2171 From: Brian Katzung
2172 Files patched: sv.c doio.c mg.c pp_hot.c pp_sys.c scope.c taint.c
2173  Taint magic is now localized better, though I had to resort to a kludge
2174  to allow a value to be both tainted and untainted simultaneously during
2175  the assignment of
2176  
2177      local $foo = $_[0];
2178  
2179  when $_[0] is a reference to the variable $foo already.
2180
2181 NETaa13341: clarified interaction of AnyDBM_File::ISA and "use"
2182 From: Ian Phillipps
2183 Files patched: pod/modpods/AnyDBMFile.pod
2184  The doc was misleading.
2185
2186 NETaa13342: grep and map with block would enter block but never leave it.
2187 From: Ian Phillipps
2188 Files patched: op.c
2189  The compiler use some sort-checking code to handle the arguments of
2190  grep and map.  Unfortunately, this wiped out the block exit opcode while
2191  leaving the block entry opcode.  This doesn't matter to sort, but did
2192  matter to grep and map.  It now leave the block entry intact.
2193  
2194  The reason it worked without the my is because the block entry and exit
2195  were optimized away to an OP_SCOPE, which it doesn't matter if it's there
2196  or not.
2197
2198 NETaa13343: goto needed to longjmp when in a signal handler.
2199 From: Robert Partington
2200 Files patched: pp_ctl.c
2201  goto needed to longjmp() when in a signal handler to get back into the
2202  right run() context.
2203  
2204
2205 NETaa13344: strict vars shouldn't apply to globs or filehandles.
2206 From: Andrew Wilcox
2207 Files patched: gv.c
2208  Filehandles and globs will be excepted from "strict vars", so that you can
2209  do the standard Perl 4 trick of
2210  
2211      use strict;
2212      sub foo {
2213          local(*IN);
2214          open(IN,"file");
2215      }
2216  
2217
2218 NETaa13345: assert.pl didn't use package DB
2219 From: Hans Mulder
2220 Files patched: lib/assert.pl
2221  Now it does.
2222
2223 NETaa13348: av_undef didn't free scalar representing $#foo.
2224 From: David Filo
2225 Files patched: av.c
2226  av_undef didn't free scalar representing $#foo.
2227
2228 NETaa13349: sort sub accumulated save stack entries
2229 From: David Filo
2230 Files patched: pp_ctl.c
2231  COMMON only gets set if assigning to @_, which is reasonable.  Most of the
2232  problem was a memory leak.
2233
2234 NETaa13351: didn't treat indirect filehandles as references.
2235 From: Andy Dougherty
2236 Files patched: op.c
2237  Now produces
2238  
2239  Can't use an undefined value as a symbol reference at ./foo line 3.
2240  
2241
2242 NETaa13352: OP_SCOPE allocated as UNOP rather than LISTOP.
2243 From: Andy Dougherty
2244 Files patched: op.c
2245
2246 NETaa13353: scope() didn't release filegv on OP_SCOPE optimization.
2247 From: Larry Wall
2248 Files patched: op.c
2249  When scope() nulled out a NEXTSTATE, it didn't release its filegv reference.
2250
2251 NETaa13355: hv_delete now avoids useless mortalcopy
2252 From: Larry Wall
2253 Files patched: hv.c op.c pp.c pp_ctl.c proto.h scope.c util.c
2254  hv_delete now avoids useless mortalcopy.
2255  
2256
2257 NETaa13359: comma operator section missing its heading
2258 From: Larry Wall
2259 Files patched: pod/perlop.pod
2260
2261 NETaa13359: random typo
2262 Files patched: pod/perldiag.pod
2263
2264 NETaa13360: code to handle partial vec values was bogus.
2265 From: Conrad Augustin
2266 Files patched: pp.c
2267  The code that Mark J. added a long time ago to handle values that were partially
2268  off the end of the string was incorrect.
2269
2270 NETaa13361: made it not interpolate inside regexp comments
2271 From: Martin Jost
2272 Files patched: toke.c
2273  To avoid surprising people, it no longer interpolates inside regexp
2274  comments.
2275
2276 NETaa13362: ${q[1]} should be interpreted like it used to
2277 From: Hans Mulder
2278 Files patched: toke.c
2279  Now resolves ${keyword[1]} to $keyword[1] and warns if -w.  Likewise for {}.
2280
2281 NETaa13363: meaning of repeated search chars undocumented in tr///
2282 From: Stephen P. Potter
2283 Files patched: pod/perlop.pod
2284  Documented that repeated characters use the first translation given.
2285
2286 NETaa13365: if closedir fails, don't try it again.
2287 From: Frank Crawford
2288 Files patched: pp_sys.c
2289  Now does not attempt to closedir a second time.
2290
2291 NETaa13366: can't do block scope optimization on $1 et al when tainting.
2292 From: Andrew Vignaux
2293 Files patched: toke.c
2294  The tainting mechanism assumes that every statement starts out
2295  untainted.  Unfortunately, the scope removal optimization for very
2296  short blocks removed the statementhood of statements that were
2297  attempting to read $1 as an untainted value, with the effect that $1
2298  appeared to be tainted anyway.  The optimization is now disabled when
2299  tainting and the block contains $1 (or equivalent).
2300
2301 NETaa13366: fixed this a better way in toke.c.
2302 Files patched: op.c
2303  (same)
2304
2305 NETaa13366: need to disable scope optimization when tainting.
2306 Files patched: op.c
2307  (same)
2308
2309 NETaa13367: Did a SvCUR_set without nulling out final char.
2310 From: "Rob Henderson" <robh@cs.indiana.edu>
2311 Files patched: doop.c pp.c pp_sys.c
2312  When do_vop set the length on its result string it neglected to null-terminate
2313  it.
2314
2315 NETaa13368: bigrat::norm sometimes chucked sign
2316 From: Greg Kuperberg
2317 Files patched: lib/bigrat.pl
2318  The normalization routine was assuming that the gcd of two numbers was
2319  never negative, and based on that assumption managed to move the sign
2320  to the denominator, where it was deleted on the assumption that the
2321  denominator is always positive.
2322
2323 NETaa13368: botched previous patch
2324 Files patched: lib/bigrat.pl
2325  (same)
2326
2327 NETaa13369: # is now a comment character, and \# should be left for regcomp.
2328 From: Simon Parsons
2329 Files patched: toke.c
2330  It was not skipping the comment when it skipped the white space, and constructed
2331  an opcode that tried to match a null string.  Unfortunately, the previous
2332  star tried to use the first character of the null string to optimize where
2333  to recurse, so it never matched.
2334
2335 NETaa13369: comment after regexp quantifier induced non-match.
2336 Files patched: regcomp.c
2337  (same)
2338
2339 NETaa13370: some code assumed SvCUR was of type int.
2340 From: Spider Boardman
2341 Files patched: pp_sys.c
2342  Did something similar to the proposed patch.  I also fixed the problem that
2343  it assumed the type of SvCUR was int.  And fixed get{peer,sock}name the
2344  same way.
2345
2346 NETaa13375: sometimes dontbother wasn't added back into strend.
2347 From: Jamshid Afshar
2348 Files patched: regexec.c
2349  When the /g modifier was used, the regular expression code would calculate
2350  the end of $' too short by the minimum number of characters the pattern could
2351  match.
2352
2353 NETaa13375: sv_setpvn now disallows negative length.
2354 Files patched: sv.c
2355  (same)
2356
2357 NETaa13376: suspected indirect objecthood prevented recognition of lexical.
2358 From: Gisle.Aas@nr.no
2359 Files patched: toke.c
2360  When $data[0] is used in a spot that might be an indirect object, the lexer
2361  was getting confused over the rule that says the $data in $$data[0] isn't
2362  an array element.  (The lexer uses XREF state for both indirect objects
2363  and for variables used as names.)
2364
2365 NETaa13377: -I processesing ate remainder of #! line.
2366 From: Darrell Schiebel
2367 Files patched: perl.c
2368  I made the -I processing in moreswitches look for the end of the string,
2369  delimited by whitespace.
2370
2371 NETaa13379: ${foo} now treated the same outside quotes as inside
2372 From: Hans Mulder
2373 Files patched: toke.c
2374  ${bareword} is now treated the same outside quotes as inside.
2375
2376 NETaa13379: previous fix for this bug was botched
2377 Files patched: toke.c
2378  (same)
2379
2380 NETaa13381: TEST should check for perl link
2381 From: Andy Dougherty
2382 Files patched: t/TEST
2383  die "You need to run \"make test\" first to set things up.\n" unless -e 'perl';
2384  
2385
2386 NETaa13384: fixed version 0.000 botch.
2387 From: Larry Wall
2388 Files patched: installperl
2389
2390 NETaa13385: return 0 from required file loses message
2391 From: Malcolm Beattie
2392 Files patched: pp_ctl.c
2393  Works right now.
2394
2395 NETaa13387: added pod2latex
2396 From: Taro KAWAGISHI
2397 Files patched: MANIFEST pod/pod2latex
2398  Added most recent copy to pod directory.
2399
2400 NETaa13388: constant folding now prefers integer results over double
2401 From: Ilya Zakharevich
2402 Files patched: op.c
2403  Constant folding now prefers integer results over double.
2404
2405 NETaa13389: now treats . and exec as shell metathingies
2406 From: Hans Mulder
2407 Files patched: doio.c
2408  Now treats . and exec as shell metathingies.
2409
2410 NETaa13395: eval didn't check taintedness.
2411 From: Larry Wall
2412 Files patched: pp_ctl.c
2413
2414 NETaa13396: $^ coredumps at end of string
2415 From: Paul Rogers
2416 Files patched: toke.c
2417  The scan_ident() didn't check for a null following $^.
2418
2419 NETaa13397: improved error messages when operator expected
2420 From: Larry Wall
2421 Files patched: toke.c
2422  Added message (Do you need to predeclare BAR?).  Also fixed the missing
2423  semicolon message.
2424
2425 NETaa13399: cleanup by Andy
2426 From: Larry Wall
2427 Files patched: Changes Configure Makefile.SH README cflags.SH config.H config_h.SH deb.c doop.c dump.c ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs ext/DynaLoader/DynaLoader.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/POSIX/POSIX.pm ext/SDBM_File/sdbm/sdbm.h ext/Socket/Socket.pm ext/util/make_ext h2xs.SH hints/aix.sh hints/bsd386.sh hints/dec_osf.sh hints/esix4.sh hints/freebsd.sh hints/irix_5.sh hints/next_3_2.sh hints/sunos_4_1.sh hints/svr4.sh hints/ultrix_4.sh installperl lib/AutoSplit.pm lib/Cwd.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp lib/Term/Cap.pm mg.c miniperlmain.c perl.c perl.h perl_exp.SH pod/Makefile pod/perldiag.pod pod/pod2html pp.c pp_ctl.c pp_hot.c pp_sys.c proto.h sv.h t/re_tests util.c x2p/Makefile.SH x2p/a2p.h x2p/a2py.c x2p/handy.h x2p/hash.c x2p/hash.h x2p/str.c x2p/str.h x2p/util.c x2p/util.h x2p/walk.c
2428
2429 NETaa13399: cleanup from Andy
2430 Files patched: MANIFEST
2431
2432 NETaa13399: configuration cleanup
2433 Files patched: Configure Configure MANIFEST MANIFEST Makefile.SH Makefile.SH README config.H config.H config_h.SH config_h.SH configpm ext/DynaLoader/DynaLoader.pm ext/DynaLoader/dl_hpux.xs ext/NDBM_File/Makefile.PL ext/ODBM_File/Makefile.PL ext/util/make_ext handy.h hints/aix.sh hints/hpux_9.sh hints/hpux_9.sh hints/irix_4.sh hints/linux.sh hints/mpeix.sh hints/next_3_2.sh hints/solaris_2.sh hints/svr4.sh installperl installperl lib/AutoSplit.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp lib/Getopt/Long.pm lib/Text/Tabs.pm makedepend.SH makedepend.SH mg.c op.c perl.h perl_exp.SH pod/perl.pod pod/perldiag.pod pod/perlsyn.pod pod/pod2man pp_sys.c proto.h proto.h unixish.h util.c util.c vms/config.vms writemain.SH x2p/a2p.h x2p/a2p.h x2p/a2py.c x2p/a2py.c x2p/handy.h x2p/util.c x2p/walk.c x2p/walk.c
2434
2435 NETaa13399: new files from Andy
2436 Files patched: ext/DB_File/Makefile.PL ext/DynaLoader/Makefile.PL ext/Fcntl/Makefile.PL ext/GDBM_File/Makefile.PL ext/NDBM_File/Makefile.PL ext/ODBM_File/Makefile.PL ext/POSIX/Makefile.PL ext/SDBM_File/Makefile.PL ext/SDBM_File/sdbm/Makefile.PL ext/Socket/Makefile.PL globals.c hints/convexos.sh hints/irix_6.sh
2437
2438 NETaa13399: patch0l from Andy
2439 Files patched: Configure MANIFEST Makefile.SH config.H config_h.SH ext/DB_File/Makefile.PL ext/GDBM_File/Makefile.PL ext/NDBM_File/Makefile.PL ext/POSIX/POSIX.xs ext/SDBM_File/sdbm/Makefile.PL ext/util/make_ext h2xs.SH hints/next_3_2.sh hints/solaris_2.sh hints/unicos.sh installperl lib/Cwd.pm lib/ExtUtils/MakeMaker.pm makeaperl.SH vms/config.vms x2p/util.c x2p/util.h
2440
2441 NETaa13399: stuff from Andy
2442 Files patched: Configure MANIFEST Makefile.SH configpm hints/dec_osf.sh hints/linux.sh hints/machten.sh lib/ExtUtils/MakeMaker.pm util.c
2443
2444 NETaa13399: Patch 0k from Andy
2445 Files patched: Configure MANIFEST Makefile.SH config.H config_h.SH hints/dec_osf.sh hints/mpeix.sh hints/next_3_0.sh hints/ultrix_4.sh installperl lib/ExtUtils/MakeMaker.pm lib/File/Path.pm makeaperl.SH minimod.PL perl.c proto.h vms/config.vms vms/ext/MM_VMS.pm x2p/a2p.h
2446
2447 NETaa13399: Patch 0m from Andy
2448 Files patched: Configure MANIFEST Makefile.SH README config.H config_h.SH ext/DynaLoader/README ext/POSIX/POSIX.xs ext/SDBM_File/sdbm/sdbm.h ext/util/extliblist hints/cxux.sh hints/linux.sh hints/powerunix.sh lib/ExtUtils/MakeMaker.pm malloc.c perl.h pp_sys.c util.c
2449
2450 NETaa13400: pod2html update from Bill Middleton
2451 From: Larry Wall
2452 Files patched: pod/pod2html
2453
2454 NETaa13401: Boyer-Moore code attempts to compile string longer than 255.
2455 From: Kyriakos Georgiou
2456 Files patched: util.c
2457  The Boyer-Moore table uses unsigned char offsets, but the BM compiler wasn't
2458  rejecting strings longer than 255 chars, and was miscompiling them.
2459
2460 NETaa13403: missing a $ on variable name
2461 From: Wayne Scott
2462 Files patched: installperl
2463  Yup, it was missing.
2464
2465 NETaa13406: didn't wipe out dead match when proceeding to next BRANCH
2466 From: Michael P. Clemens
2467 Files patched: regexec.c
2468  The code to check alternatives didn't invalidate backreferences matched by the
2469  failed branch.
2470
2471 NETaa13407: overload upgrade
2472 From: owner-perl5-porters@nicoh.com
2473 Also: Ilya Zakharevich
2474 Files patched: MANIFEST gv.c lib/Math/BigInt.pm perl.h pod/perlovl.pod pp.c pp.h pp_hot.c sv.c t/lib/bigintpm.t t/op/overload.t
2475  Applied supplied patch, and fixed bug induced by use of sv_setsv to do
2476  a deep copy, since sv_setsv no longer copies objecthood.
2477
2478 NETaa13409: sv_gets tries to grow string at EOF
2479 From: Harold O Morris
2480 Files patched: sv.c
2481  Applied suggested patch, only two statements earlier, since the end code
2482  also does SvCUR_set.
2483
2484 NETaa13410: delaymagic did =~ instead of &= ~
2485 From: Andreas Schwab
2486 Files patched: pp_hot.c
2487  Applied supplied patch.
2488
2489 NETaa13411: POSIX didn't compile under -DLEAKTEST
2490 From: Frederic Chauveau
2491 Files patched: ext/POSIX/POSIX.xs
2492  Used NEWSV instead of newSV.
2493
2494 NETaa13412: new version from Tony Sanders
2495 From: Tony Sanders
2496 Files patched: lib/Term/Cap.pm
2497  Installed as Term::Cap.pm
2498
2499 NETaa13413: regmust extractor needed to restart loop on BRANCH for (?:) to work
2500 From: DESARMENIEN
2501 Files patched: regcomp.c
2502  The BRANCH skipper should have restarted the loop from the top.
2503
2504 NETaa13414: the check for accidental list context was done after pm_short check
2505 From: Michael H. Coen
2506 Files patched: pp_hot.c
2507  Moved check for accidental list context to before the pm_short optimization.
2508
2509 NETaa13418: perlre.pod babbled nonsense about | in character classes
2510 From: Philip Hazel
2511 Files patched: pod/perlre.pod
2512  Removed bogus brackets.  Now reads:
2513      Note however that "|" is interpreted as a literal with square brackets,
2514      so if you write C<[fee|fie|foe]> you're really only matching C<[feio|]>.
2515
2516 NETaa13419: need to document introduction of lexical variables
2517 From: "Heading, Anthony"
2518 Files patched: pod/perlfunc.pod
2519  Now mentions that lexicals aren't introduced till after the current statement.
2520
2521 NETaa13420: formats that overflowed a page caused endless top of forms
2522 From: Hildo@CONSUL.NL
2523 Files patched: pp_sys.c
2524  If a record is too large to fit on a page, it now prints whatever will
2525  fit and then calls top of form again on the remainder.
2526
2527 NETaa13423: the code to do negative list subscript in scalar context was missing
2528 From: Steve McDougall
2529 Files patched: pp.c
2530  The negative subscript code worked right in list context but not in scalar
2531  context.  In fact, there wasn't code to do it in the scalar context.
2532
2533 NETaa13424: existing but undefined CV blocked inheritance
2534 From: Spider Boardman
2535 Files patched: gv.c
2536  Applied supplied patch.
2537
2538 NETaa13425: removed extra argument to croak
2539 From: "R. Bernstein"
2540 Files patched: regcomp.c
2541  Removed extra argument.
2542
2543 NETaa13427: added return types
2544 From: "R. Bernstein"
2545 Files patched: x2p/a2py.c
2546  Applied suggested patch.
2547
2548 NETaa13427: added static declarations
2549 Files patched: x2p/walk.c
2550  (same)
2551
2552 NETaa13428: split was assuming that all backreferences were defined
2553 From: Dave Schweisguth
2554 Files patched: pp.c
2555  split was assuming that all backreferences were defined.
2556
2557 NETaa13430: hoistmust wasn't hoisting anchored shortcircuit's length
2558 From: Tom Christiansen
2559 Also: Rob Hooft
2560 Files patched: toke.c
2561
2562 NETaa13432: couldn't call code ref under debugger
2563 From: Mike Fletcher
2564 Files patched: op.c pp_hot.c sv.h
2565  The debugging code assumed it could remember a name to represent a subroutine,
2566  but anonymous subroutines don't have a name.  It now remembers a CV reference
2567  in that case.
2568
2569 NETaa13435: 1' dumped core
2570 From: Larry Wall
2571 Files patched: toke.c
2572  Didn't check a pointer for nullness.
2573
2574 NETaa13436: print foo(123) didn't treat foo as subroutine
2575 From: mcook@cognex.com
2576 Files patched: toke.c
2577  Now treats it as a subroutine rather than a filehandle.
2578
2579 NETaa13437: &$::foo didn't think $::foo was a variable name
2580 From: mcook@cognex.com
2581 Files patched: toke.c
2582  Now treats $::foo as a global variable.
2583
2584 NETaa13439: referred to old package name
2585 From: Tom Christiansen
2586 Files patched: lib/Sys/Syslog.pm
2587  Wasn't a strict refs problem after all.  It was simply referring to package
2588  syslog, which had been renamed to Sys::Syslog.
2589
2590 NETaa13440: stat operations didn't know what to do with glob or ref to glob
2591 From: mcook@cognex.com
2592 Files patched: doio.c pp_sys.c
2593  Now knows about the kinds of filehandles returned by FileHandle constructors
2594  and such.
2595
2596 NETaa13442: couldn't find name of copy of deleted symbol table entry
2597 From: Spider Boardman
2598 Files patched: gv.c gv.h
2599  I did a much simpler fix.  When gp_free notices that it's freeing the
2600  master GV, it nulls out gp_egv.  The GvENAME and GvESTASH macros know
2601  to revert to gv if egv is null.
2602  
2603  This has the advantage of not creating a reference loop.
2604
2605 NETaa13443: couldn't override an XSUB
2606 From: William Setzer
2607 Files patched: op.c
2608  When the newSUB and newXS routines checked for whether the old sub was
2609  defined, they only looked at CvROOT(cv), not CvXSUB(cv).
2610
2611 NETaa13443: needed to do same thing in newXS
2612 Files patched: op.c
2613  (same)
2614
2615 NETaa13444: -foo now doesn't warn unless sub foo is defined
2616 From: Larry Wall
2617 Files patched: toke.c
2618  Made it not warn on -foo, unless there is a sub foo defined.
2619
2620 NETaa13451: in scalar context, pp_entersub now guarantees one item from XSUB
2621 From: Nick Gianniotis
2622 Files patched: pp_hot.c
2623  The pp_entersub routine now guarantees that an XSUB in scalar context
2624  returns one and only one value.  If there are fewer, it pushes undef,
2625  and if there are more, it returns the last one.
2626
2627 NETaa13457: now explicitly disallows printf format with 'n' or '*'.
2628 From: lees@cps.msu.edu
2629 Files patched: doop.c
2630  Now says
2631  
2632      Use of n in printf format not supported at ./foo line 3.
2633  
2634
2635 NETaa13458: needed to call SvPOK_only() in pp_substr
2636 From: Wayne Scott
2637 Files patched: pp.c
2638  Needed to call SvPOK_only() in pp_substr.
2639
2640 NETaa13459: umask and chmod now warn about missing initial 0 even with paren
2641 From: Andreas Koenig
2642 Files patched: toke.c
2643  Now skips parens as well as whitespace looking for argument.
2644
2645 NETaa13460: backtracking didn't work on .*? because reginput got clobbered
2646 From: Andreas Koenig
2647 Files patched: regexec.c
2648  When .*? did a probe of the rest of the string, it clobbered reginput,
2649  so the next call to match a . tried to match the newline and failed.
2650
2651 NETaa13475: \(@ary) now treats array as list of scalars
2652 From: Tim Bunce
2653 Files patched: op.c
2654  The mod() routine now refrains from marking @ary as an lvalue if it's in parens
2655  and is the subject of an OP_REFGEN.
2656
2657 NETaa13481: accept buffer wasn't aligned good enough
2658 From: Holger Bechtold
2659 Also: Christian Murphy
2660 Files patched: pp_sys.c
2661  Applied suggested patch.
2662
2663 NETaa13486: while (<>) now means while (defined($_ = <>))
2664 From: Jim Balter
2665 Files patched: op.c pod/perlop.pod
2666  while (<HANDLE>) now means while (defined($_ = <HANDLE>)).
2667
2668 NETaa13500: needed DESTROY in FileHandle
2669 From: Tim Bunce
2670 Files patched: ext/POSIX/POSIX.pm
2671  Added DESTROY method.  Also fixed ungensym to use POSIX:: instead of _POSIX.
2672  Removed ungensym from close method, since DESTROY should do that now.
2673
2674 NETaa13502: now complains if you use local on a lexical variable
2675 From: Larry Wall
2676 Files patched: op.c
2677  Now says something like
2678  
2679      Can't localize lexical variable $var at ./try line 6.
2680
2681 NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks
2682 From: Larry Wall
2683 Files patched: embed.h gv.c interp.sym mg.c perl.h pod/perlvar.pod pp_ctl.c util.c Todo pod/perldiag.pod
2684
2685 NETaa13514: statements before intro of lex var could see lex var
2686 From: William Setzer
2687 Files patched: op.c
2688  When a lexical variable is declared, introduction is delayed until
2689  the start of the next statement, so that any initialization code runs
2690  outside the scope of the new variable.  Thus,
2691  
2692      my $y = 3;
2693      my $y = $y;
2694      print $y;
2695  
2696  should print 3.  Unfortunately, the declaration was marked with the
2697  beginning location at the time that "my $y" was processed instead of 
2698  when the variable was introduced, so any embedded statements within
2699  an anonymous subroutine picked up the wrong "my".  The declaration
2700  is now labelled correctly when the variable is actually introduced.
2701
2702 NETaa13520: added closures
2703 From: Larry Wall
2704 Files patched: Todo cv.h embed.h global.sym gv.c interp.sym op.c perl.c perl.h pod/perlform.pod pp.c pp_ctl.c pp_hot.c sv.c sv.h toke.c
2705
2706 NETaa13520: test to see if lexical works in a format now
2707 Files patched: t/op/write.t
2708
2709 NETaa13522: substitution couldn't be used on a substr()
2710 From: Hans Mulder
2711 Files patched: pp_ctl.c pp_hot.c
2712  Changed pp_subst not to use sv_replace() anymore, which didn't handle lvalues
2713  and was overkill anyway.  Should be slightly faster this way too.
2714
2715 NETaa13525: G_EVAL mode in perl_call_sv didn't return values right.
2716 Files patched: perl.c
2717
2718 NETaa13525: consolidated error message
2719 From: Larry Wall
2720 Files patched: perl.h toke.c
2721
2722 NETaa13525: derived it
2723 Files patched: perly.h
2724
2725 NETaa13525: missing some values from embed.h
2726 Files patched: embed.h
2727
2728 NETaa13525: random cleanup
2729 Files patched: MANIFEST Todo cop.h lib/TieHash.pm lib/perl5db.pl opcode.h patchlevel.h pod/perldata.pod pod/perlsub.pod t/op/ref.t toke.c
2730
2731 NETaa13525: random cleanup                  
2732 Files patched: pp_ctl.c util.c
2733
2734 NETaa13527: File::Find needed to export $name and $dir
2735 From: Chaim Frenkel
2736 Files patched: lib/File/Find.pm
2737  They are now exported.
2738
2739 NETaa13528: cv_undef left unaccounted-for GV pointer in CV
2740 From: Tye McQueen
2741 Also: Spider Boardman
2742 Files patched: op.c
2743
2744 NETaa13530: scalar keys now resets hash iterator
2745 From: Tim Bunce
2746 Files patched: doop.c
2747  scalar keys() now resets the hash iterator.
2748
2749 NETaa13531: h2ph doesn't check defined right
2750 From: Casper H.S. Dik
2751 Files patched: h2ph.SH
2752
2753 NETaa13540: VMS update
2754 From: Larry Wall
2755 Files patched: MANIFEST README.vms doio.c embed.h ext/DynaLoader/dl_vms.xs interp.sym lib/Cwd.pm lib/ExtUtils/xsubpp lib/File/Basename.pm lib/File/Find.pm lib/File/Path.pm mg.c miniperlmain.c perl.c perl.h perly.c perly.c.diff pod/perldiag.pod pp_ctl.c pp_hot.c pp_sys.c proto.h util.c vms/Makefile vms/config.vms vms/descrip.mms vms/ext/Filespec.pm vms/ext/MM_VMS.pm vms/ext/VMS/stdio/Makefile.PL vms/ext/VMS/stdio/stdio.pm vms/ext/VMS/stdio/stdio.xs vms/genconfig.pl vms/perlvms.pod vms/sockadapt.c vms/sockadapt.h vms/vms.c vms/vmsish.h vms/writemain.pl
2756
2757 NETaa13540: got some duplicate code
2758 Files patched: lib/File/Path.pm
2759
2760 NETaa13540: stuff from Charles
2761 Files patched: MANIFEST README.vms lib/ExtUtils/MakeMaker.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp lib/File/Basename.pm lib/File/Path.pm perl.c perl.h pod/perldiag.pod pod/perldiag.pod vms/Makefile vms/Makefile vms/config.vms vms/config.vms vms/descrip.mms vms/descrip.mms vms/ext/Filespec.pm vms/ext/Filespec.pm vms/ext/MM_VMS.pm vms/ext/MM_VMS.pm vms/ext/VMS/stdio/stdio.pm vms/ext/VMS/stdio/stdio.xs vms/gen_shrfls.pl vms/gen_shrfls.pl vms/genconfig.pl vms/genconfig.pl vms/mms2make.pl vms/perlvms.pod vms/sockadapt.h vms/test.com vms/vms.c vms/vms.c vms/vmsish.h vms/vmsish.h vms/writemain.pl
2762
2763 NETaa13540: tweak from Charles
2764 Files patched: lib/File/Path.pm
2765
2766 NETaa13552: scalar unpack("P4",...) ignored the 4
2767 From: Eric Arnold
2768 Files patched: pp.c
2769  The optimization that tried to do only one item in a scalar context didn't
2770  realize that the argument to P was not a repeat count.
2771
2772 NETaa13553: now warns about 8 or 9 in octal escapes
2773 From: Mike Rogers
2774 Files patched: util.c
2775  Now warns if it finds 8 or 9 before the end of the octal escape sequence.
2776  So \039 produces a warning, but \0339 does not.
2777
2778 NETaa13554: now allows foreach ${"name"}
2779 From: Johan Holtman
2780 Files patched: op.c
2781  Instead of trying to remove OP_RV2SV, the compiler now just transmutes it into an
2782  OP_RV2GV, which is a no-op for ordinary variables and does the right
2783  thing for ${"name"}.
2784
2785 NETaa13559: substitution now always checks for readonly
2786 From: Rodger Anderson
2787 Files patched: pp_hot.c
2788  Substitution now always checks for readonly.
2789
2790 NETaa13561: added explanations of closures and curly-quotes
2791 From: Larry Wall
2792 Files patched: pod/perlref.pod
2793
2794 NETaa13562: null components in path cause indigestion
2795 From: Ambrose Kofi Laing
2796 Files patched: lib/Cwd.pm lib/pwd.pl
2797
2798 NETaa13575: documented semantics of negative substr length
2799 From: Jeff Bouis
2800 Files patched: pod/perlfunc.pod
2801  Documented the fact that negative length now leaves characters off the end,
2802  and while I was at it, made it work right even if offset wasn't 0.
2803
2804 NETaa13575: negative length to substr didn't work when offset non-zero
2805 Files patched: pp.c
2806  (same)
2807
2808 NETaa13575: random cleanup
2809 Files patched: pod/perlfunc.pod
2810  (same)
2811
2812 NETaa13580: couldn't localize $ACCUMULATOR
2813 From: Larry Wall
2814 Files patched: gv.c lib/English.pm mg.c perl.c sv.c
2815  Needed to make $^A a real magical variable.  Also lib/English.pm wasn't
2816  exporting good.
2817
2818 NETaa13583: doc mods from Tom
2819 From: Larry Wall
2820 Files patched: pod/modpods/AnyDBMFile.pod pod/modpods/Basename.pod pod/modpods/Benchmark.pod pod/modpods/Cwd.pod pod/modpods/Dynaloader.pod pod/modpods/Exporter.pod pod/modpods/Find.pod pod/modpods/Finddepth.pod pod/modpods/Getopt.pod pod/modpods/MakeMaker.pod pod/modpods/Open2.pod pod/modpods/POSIX.pod pod/modpods/Ping.pod pod/modpods/less.pod pod/modpods/strict.pod pod/perlapi.pod pod/perlbook.pod pod/perldata.pod pod/perlform.pod pod/perlfunc.pod pod/perlipc.pod pod/perlmod.pod pod/perlobj.pod pod/perlref.pod pod/perlrun.pod pod/perlsec.pod pod/perlsub.pod pod/perltrap.pod pod/perlvar.pod
2821
2822 NETaa13589: return was enforcing list context on its arguments
2823 From: Tim Freeman
2824 Files patched: opcode.pl
2825  A return was being treated like a normal list operator, in that it was
2826  setting list context on its arguments.  This was bogus.
2827
2828 NETaa13591: POSIX::creat used wrong argument
2829 From: Paul Marquess
2830 Files patched: ext/POSIX/POSIX.pm
2831  Applied suggested patch.
2832
2833 NETaa13605: use strict refs error message now displays bad ref
2834 From: Peter Gordon
2835 Files patched: perl.h pod/perldiag.pod pp.c pp_hot.c
2836  Now says
2837  
2838      Can't use string ("2") as a HASH ref while "strict refs" in use at ./foo line 12.
2839
2840 NETaa13630: eof docs were unclear
2841 From: Hallvard B Furuseth
2842 Files patched: pod/perlfunc.pod
2843  Applied suggested patch.
2844
2845 NETaa13636: $< and $> weren't refetched on undump restart
2846 From: Steve Pearlmutter
2847 Files patched: perl.c
2848  The code in main() bypassed perl_construct on an undump restart, which bypassed
2849  the code that set $< and $>.
2850
2851 NETaa13641: added Tim's fancy new import whizbangers
2852 From: Tim Bunce
2853 Files patched: lib/Exporter.pm
2854  Applied suggested patch.
2855
2856 NETaa13649: couldn't AUTOLOAD a symbol reference
2857 From: Larry Wall
2858 Files patched: pp_hot.c
2859  pp_entersub needed to guarantee a CV so it would get to the AUTOLOAD code.
2860
2861 NETaa13651: renamed file had wrong package name
2862 From: Andreas Koenig
2863 Files patched: lib/File/Path.pm
2864  Applied suggested patch.
2865
2866 NETaa13660: now that we're testing distribution we can diagnose RANDBITS errors
2867 From: Karl Glazebrook
2868 Files patched: t/op/rand.t
2869  Changed to suggested algorithm.  Also duplicated it to test rand(100) too.
2870
2871 NETaa13660: rand.t didn't test for proper distribution within range
2872 Files patched: t/op/rand.t
2873  (same)
2874
2875 NETaa13671: array slice misbehaved in a scalar context
2876 From: Tye McQueen
2877 Files patched: pp.c
2878  A spurious else prevented the scalar-context-handling code from running.
2879
2880 NETaa13672: filehandle constructors in POSIX don't return failure successfully
2881 From: Ian Phillipps
2882 Files patched: ext/POSIX/POSIX.pm
2883  Applied suggested patch.
2884  
2885
2886 NETaa13678: forced $1 to always be untainted
2887 From: Ka-Ping Yee
2888 Files patched: mg.c
2889  I believe the bug that triggered this was fixed elsewhere, but just in case,
2890  I put in explicit code to force $1 et al not to be tainted regardless.
2891
2892 NETaa13682: formline doc need to discuss ~ and ~~ policy
2893 From: Peter Gordon
2894 Files patched: pod/perlfunc.pod
2895
2896 NETaa13686: POSIX::open and POSIX::mkfifo didn't check tainting
2897 From: Larry Wall
2898 Files patched: ext/POSIX/POSIX.xs
2899  open() and mkfifo() now check tainting.
2900
2901 NETaa13687: new Exporter.pm
2902 From: Tim Bunce
2903 Files patched: lib/Exporter.pm
2904  Added suggested changes, except for @EXPORTABLE, because it looks too much
2905  like @EXPORTTABLE.  Decided to stick with @EXPORT_OK because it looks more
2906  like an adjunct.  Also added an export_tags routine.  The keys in the
2907  %EXPORT_TAGS hash no longer use colons, to make the initializers prettier.
2908
2909 NETaa13687: new Exporter.pm      
2910 Files patched: ext/POSIX/POSIX.pm
2911  (same)
2912
2913 NETaa13694: add sockaddr_in to Socket.pm
2914 From: Tim Bunce
2915 Files patched: ext/Socket/Socket.pm
2916  Applied suggested patch.
2917
2918 NETaa13695: library routines should use qw() as good example
2919 From: Dean Roehrich
2920 Files patched: ext/DB_File/DB_File.pm ext/DynaLoader/DynaLoader.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/POSIX/POSIX.pm ext/Socket/Socket.pm
2921  Applied suggested patch.
2922
2923 NETaa13696: myconfig should be a routine in Config.pm
2924 From: Kenneth Albanowski
2925 Files patched: configpm
2926  Applied suggested patch.
2927
2928 NETaa13704: fdopen closed fd on failure
2929 From: Hallvard B Furuseth
2930 Files patched: doio.c
2931  Applied suggested patch.
2932
2933 NETaa13706: Term::Cap doesn't work
2934 From: Dean Roehrich
2935 Files patched: lib/Term/Cap.pm
2936  Applied suggested patch.
2937
2938 NETaa13710: cryptswitch needed to be more "useable"
2939 From: Tim Bunce
2940 Files patched: embed.h global.sym perl.h toke.c
2941  The cryptswitch_fp function now can operate in two modes.  It can
2942  modify the global rsfp to redirect input as before, or it can modify
2943  linestr and return true, indicating that it is not necessary for yylex
2944  to read another line since cryptswitch_fp has just done it.
2945
2946 NETaa13712: new_tmpfile() can't be called as constructor
2947 From: Hans Mulder
2948 Files patched: ext/POSIX/POSIX.xs
2949  Now allows new_tmpfile() to be called as a constructor.
2950
2951 NETaa13714: variable method call not documented
2952 From: "Randal L. Schwartz"
2953 Files patched: pod/perlobj.pod
2954  Now indicates that OBJECT->$method() works.
2955
2956 NETaa13715: PACK->$method produces spurious warning
2957 From: Larry Wall
2958 Files patched: toke.c
2959  The -> operator was telling the lexer to expect an operator when the
2960  next thing was a variable.
2961
2962 NETaa13716: Carp now allows multiple packages to be skipped out of
2963 From: Larry Wall
2964 Files patched: lib/Carp.pm
2965  The subroutine redefinition warnings now warn on import collisions.
2966
2967 NETaa13716: Exporter catches warnings and gives a better line number
2968 Files patched: lib/Exporter.pm
2969  (same)
2970
2971 NETaa13716: now counts imported routines as "defined" for redef warnings
2972 Files patched: op.c sv.c
2973  (same)
2974
2975 -------------
2976 Version 5.000
2977 -------------
2978
2979 New things
2980 ----------
2981     The -w switch is much more informative.
2982
2983     References.  See t/op/ref.t for examples.  All entities in Perl 5 are
2984     reference counted so that it knows when each item should be destroyed.
2985
2986     Objects.  See t/op/ref.t for examples.
2987
2988     => is now a synonym for comma.  This is useful as documentation for
2989     arguments that come in pairs, such as initializers for associative arrays,
2990     or named arguments to a subroutine.
2991
2992     All functions have been turned into list operators or unary operators,
2993     meaning the parens are optional.  Even subroutines may be called as
2994     list operators if they've already been declared.
2995
2996     More embeddible.  See main.c and embed_h.sh.  Multiple interpreters
2997     in the same process are supported (though not with interleaved
2998     execution yet).
2999
3000     The interpreter is now flattened out.  Compare Perl 4's eval.c with
3001     the perl 5's pp.c.  Compare Perl 4's 900 line interpreter loop in cmd.c
3002     with Perl 5's 1 line interpreter loop in run.c.  Eventually we'll make
3003     everything non-blocking so we can interface nicely with a scheduler.
3004
3005     eval is now treated more like a subroutine call.  Among other things,
3006     this means you can return from it.
3007
3008     Format value lists may be spread over multiple lines by enclosing in
3009     a do {} block.
3010
3011     You may now define BEGIN and END subroutines for each package.  The BEGIN
3012     subroutine executes the moment it's parsed.  The END subroutine executes
3013     just before exiting.
3014
3015     Flags on the #! line are interpreted even if the script wasn't
3016     executed directly.  (And even if the script was located by "perl -x"!)
3017
3018     The ?: operator is now legal as an lvalue.
3019
3020     List context now propagates to the right side of && and ||, as well
3021     as the 2nd and 3rd arguments to ?:.
3022
3023     The "defined" function can now take a general expression.
3024
3025     Lexical scoping available via "my".  eval can see the current lexical
3026     variables.
3027
3028     The preferred package delimiter is now :: rather than '.
3029
3030     tie/untie are now preferred to dbmopen/dbmclose.  Multiple DBM
3031     implementations are allowed in the same executable, so you can
3032     write scripts to interchange data among different formats.
3033
3034     New "and" and "or" operators work just like && and || but with
3035     a precedence lower than comma, so they work better with list operators.
3036
3037     New functions include: abs(), chr(), uc(), ucfirst(), lc(), lcfirst(),
3038     chomp(), glob()
3039
3040     require with a number checks to see that the version of Perl that is
3041     currently running is at least that number.
3042
3043     Dynamic loading of external modules is now supported.
3044
3045     There is a new quote form qw//, which is equivalent to split(' ', q//).
3046
3047     Assignment of a reference to a glob value now just replaces the
3048     single element of the glob corresponding to the reference type:
3049         *foo = \$bar, *foo = \&bletch;
3050
3051     Filehandle methods are now supported:
3052         output_autoflush STDOUT 1;
3053
3054     There is now an "English" module that provides human readable translations
3055     for cryptic variable names.
3056
3057     Autoload stubs can now call the replacement subroutine with goto &realsub.
3058
3059     Subroutines can be defined lazily in any package by declaring an AUTOLOAD
3060     routine, which will be called if a non-existent subroutine is called in
3061     that package.
3062
3063     Several previously added features have been subsumed under the new
3064     keywords "use" and "no".  Saying "use Module LIST" is short for
3065         BEGIN { require Module; import Module LIST; }
3066     The "no" keyword is identical except that it calls "unimport" instead.
3067     The earlier pragma mechanism now uses this mechanism, and two new
3068     modules have been added to the library to implement "use integer"
3069     and variations of "use strict vars, refs, subs".
3070
3071     Variables may now be interpolated literally into a pattern by prefixing
3072     them with \Q, which works just like \U, but backwhacks non-alphanumerics
3073     instead.  There is also a corresponding quotemeta function.
3074
3075     Any quantifier in a regular expression may now be followed by a ? to
3076     indicate that the pattern is supposed to match as little as possible.
3077
3078     Pattern matches may now be followed by an m or s modifier to explicitly
3079     request multiline or singleline semantics.  An s modifier makes . match
3080     newline.
3081
3082     Patterns may now contain \A to match only at the beginning of the string,
3083     and \Z to match only at the end.  These differ from ^ and $ in that
3084     they ignore multiline semantics.  In addition, \G matches where the
3085     last interation of m//g or s///g left off.
3086
3087     Non-backreference-producing parens of various sorts may now be
3088     indicated by placing a ? directly after the opening parenthesis,
3089     followed by a character that indicates the purpose of the parens.
3090     An :, for instance, indicates simple grouping.  (?:a|b|c) will
3091     match any of a, b or c without producing a backreference.  It does
3092     "eat" the input.  There are also assertions which do not eat the
3093     input but do lookahead for you.  (?=stuff) indicates that the next
3094     thing must be "stuff".  (?!nonsense) indicates that the next thing
3095     must not be "nonsense".
3096
3097     The negation operator now treats non-numeric strings specially.
3098     A -"text" is turned into "-text", so that -bareword is the same
3099     as "-bareword".  If the string already begins with a + or -, it
3100     is flipped to the other sign.
3101
3102 Incompatibilities
3103 -----------------
3104     @ now always interpolates an array in double-quotish strings.  Some programs
3105     may now need to use backslash to protect any @ that shouldn't interpolate.
3106
3107     Ordinary variables starting with underscore are no longer forced into
3108     package main.
3109
3110     s'$lhs'$rhs' now does no interpolation on either side.  It used to
3111     interplolate $lhs but not $rhs.
3112
3113     The second and third arguments of splice are now evaluated in scalar
3114     context (like the book says) rather than list context.
3115
3116     Saying "shift @foo + 20" is now a semantic error because of precedence.
3117
3118     "open FOO || die" is now incorrect.  You need parens around the filehandle.
3119
3120     The elements of argument lists for formats are now evaluated in list
3121     context.  This means you can interpolate list values now.
3122
3123     You can't do a goto into a block that is optimized away.  Darn.
3124
3125     It is no longer syntactically legal to use whitespace as the name
3126     of a variable, or as a delimiter for any kind of quote construct.
3127
3128     Some error messages will be different.
3129
3130     The caller function now returns a false value in a scalar context if there
3131     is no caller.  This lets library files determine if they're being required.
3132
3133     m//g now attaches its state to the searched string rather than the
3134     regular expression.
3135
3136     "reverse" is no longer allowed as the name of a sort subroutine.
3137
3138     taintperl is no longer a separate executable.  There is now a -T
3139     switch to turn on tainting when it isn't turned on automatically.
3140
3141     Symbols starting with _ are no longer forced into package main, except
3142     for $_ itself (and @_, etc.).
3143
3144     Double-quoted strings may no longer end with an unescaped $ or @.
3145
3146     Negative array subscripts now count from the end of the array.
3147
3148     The comma operator in a scalar context is now guaranteed to give a
3149     scalar context to its arguments.
3150
3151     The ** operator now binds more tightly than unary minus.
3152
3153     Setting $#array lower now discards array elements so that destructors
3154     work reasonably.
3155
3156     delete is not guaranteed to return the old value for tied arrays,
3157     since this capability may be onerous for some modules to implement.
3158
3159     Attempts to set $1 through $9 now result in a run-time error.