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