source: trunk/essentials/dev-lang/perl/Changes5.002@ 3403

Last change on this file since 3403 was 3181, checked in by bird, 19 years ago

perl 5.8.8

File size: 118.5 KB
Line 
1-------------
2Version 5.002
3-------------
4
5The main enhancement to the Perl core was the addition of prototypes.
6Many of the modules that come with Perl have been extensively upgraded.
7
8Other than that, nearly all the changes for 5.002 were bug fixes of one
9variety or another, so here's the bug list, along with the "resolution"
10for each of them. If you wish to correspond about any of them, please
11include the bug number (if any).
12
13Changes specific to the Configure and build process are described
14at the bottom.
15
16Added APPLLIB_EXP for embedded perl library support.
17Files patched: perl.c
18
19Couldn't define autoloaded routine by assignment to typeglob.
20Files patched: pp_hot.c sv.c
21
22NETaa13525: Tiny patch to fix installman -n
23From: Larry Wall
24Files patched: installman
25
26NETaa13525: de-documented \v
27Files patched: pod/perlop.pod pod/perlre.pod
28
29NETaa13525: doc changes
30Files patched: pod/perlop.pod pod/perltrap.pod
31
32NETaa13525: perlxs update from Dean Roehrich
33Files patched: pod/perlxs.pod
34
35NETaa13525: rename powerunix to powerux
36Files patched: MANIFEST hints/powerux.sh
37
38NETaa13540: VMS uses CLK_TCK for HZ
39Files patched: pp_sys.c
40
41NETaa13721: pad_findlex core dumps on bad CvOUTSIDE()
42From: Carl Witty
43Files patched: op.c sv.c toke.c
44 Each CV has a reference to the CV containing it lexically. Unfortunately,
45 it didn't reference-count this reference, so when the outer CV was freed,
46 we ended up with a pointer to memory that got reused later as some other kind
47 of SV.
48
49NETaa13721: warning suppression
50Files patched: toke.c
51 (same)
52
53NETaa13722: walk.c had inconsistent static declarations
54From: Tim Bunce
55Files patched: x2p/walk.c
56 Consolidated the various declarations and made them consistent with
57 the actual definitions.
58
59NETaa13724: -MPackage=args patch
60From: Tim Bunce
61Files patched: perl.c pod/perlrun.pod
62 Added in the -MPackage=args patch too.
63
64NETaa13729: order-of-evaluation dependency in scope.c on leaving REGCONTEXT
65From: "Jason Shirk"
66Files patched: scope.c
67 Did
68
69 I32 delta = SSPOPINT;
70 savestack_ix -= delta; /* regexp must have croaked */
71
72 instead.
73
74NETaa13731: couldn't assign external lexical array to itself
75From: [email protected]
76Files patched: op.c
77 The pad_findmy routine was only checking previous statements for previous
78 mention of external lexicals, so the fact that the current statement
79 already mentioned @list was not noted. It therefore allocated another
80 reference to the outside lexical, and this didn't compare equal when
81 the assigment parsing code was trying to determine whether there was a
82 common variable on either side of the equals. Since it didn't see the
83 same variable, it thought it could avoid making copies of the values on
84 the stack during list assignment. Unfortunately, before using those
85 values, the list assignment has to zero out the target array, which
86 destroys the values.
87
88 The fix was to make pad_findmy search the current statement as well. This
89 was actually a holdover from some old code that was trying to delay
90 introduction of "my" variables until the next statement. This is now
91 done with a different mechanism, so the fix should not adversely affect
92 that.
93
94NETaa13733: s/// doesn't free old string when using copy mode
95From: Larry Wall
96Files patched: pp_ctl.c pp_hot.c
97 When I removed the use of sv_replace(), I simply forgot to free the old char*.
98
99NETaa13736: closures leaked memory
100From: Carl Witty
101Files patched: op.c pp.c
102 This is a specific example of a more general bug, fixed as NETaa13760, having
103 to do with reference counts on comppads.
104
105NETaa13739: XSUB interface caches gimme in case XSUB clobbers it
106From: Dean Roehrich
107Files patched: pp_hot.c
108 Applied suggest patch. Also deleted second gimme declaration as redundant.
109
110NETaa13760: comppad reference counts were inconsistent
111From: Larry Wall
112Files patched: op.c perl.c pp_ctl.c toke.c
113 All official references to comppads are supposed to be through compcv now,
114 but the transformation was not complete, resulting in memory leakage.
115
116NETaa13761: sv_2pv() wrongly preferred IV to NV when SV was readonly
117From: "Jack R. Lawler"
118Files patched: sv.c
119 Okay, I understand how this one happened. This is a case where a
120 beneficial fix uncovered a bug elsewhere. I changed the constant
121 folder to prefer integer results over double if the numbers are the
122 same. In this case, they aren't, but it leaves the integer value there
123 anyway because the storage is already allocated for it, and it *might*
124 be used in an integer context. And since it's producing a constant, it
125 sets READONLY. Unfortunately, sv_2pv() bogusly preferred the integer
126 value to the double when READONLY was set. This never showed up if you
127 just said
128
129 print 1.4142135623731;
130
131 because in that case, there was already a string value.
132
133
134NETaa13772: shmwrite core dumps consistently
135From: Gabe Schaffer
136Files patched: opcode.h opcode.pl
137 The shmwrite operator is a list operator but neglected to push a stack
138 mark beforehand, because an 'm' was missing from opcode.pl.
139
140NETaa13773: $. was misdocumented as read-only.
141From: Inaba Hiroto
142Files patched: pod/perlvar.pod
143 <1.array-element-read-only>
144 % perl -le '$,=", "; $#w=5; for (@w) { $_=1; } print @w'
145 Modification of a read-only value attempted at -e line 1.
146 % perl4 -le '$,=", "; $#w=5; for (@w) { $_=1; } print @w'
147 1, 1, 1, 1, 1, 1
148
149 This one may stay the way it is for performance reasons.
150
151 <2.begin-local-RS>
152 % cat abc
153 a
154 b
155 c
156 % perl -e 'BEGIN { local $/ = ""; } print "$.:$_" while <>;' abc
157 1:a
158 b
159 c
160 % perl -e '{ local $/ = ""; } print "$.:$_" while <>;' abc
161 1:a
162 2:b
163 3:c
164
165 $/ wasn't initialized early enough, so local set it back to permanently
166 undefined on exit from the block.
167
168 <3.grep-x0-bug>
169 % perl -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");'
170 a
171
172 % perl4 -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");'
173 ac
174
175 An extra mark was left on the stack if (('x') x $repeat) was used in a scalar
176 context.
177
178 <4.input-lineno-assign>
179 # perl -w does not complain about assignment to $. (Is this just a feature?)
180 # perlvar.pod says "This variable should be considered read-only."
181 % cat abc
182 a
183 b
184 c
185 % perl -wnle '$. = 10 if $. == 2; print "$.:$_"' abc
186 1:a
187 10:b
188 11:c
189
190 Fixed doc.
191
192 <5.local-soft-ref.bug>
193 % perl -e 'local ${"a"}=1;'
194 zsh: 529 segmentation fault perl -e 'local ${"a"}=1;'
195
196 Now says
197 Can't localize a reference at -e line 1.
198
199 <6.package-readline>
200 % perl -e 'package foo; sub foo { 1; } package main; $_ = foo::foo(); print'
201 1
202 % perl -e '
203 package readline; sub foo { 1; } package main; $_ = readline::foo(); print'
204 Undefined subroutine &main::foo called at -e line 1.
205 % perl -e '
206 package readline; sub foo { 1; } package main; $_ = &readline::foo(); print'
207 1
208
209 Now treats foo::bar correctly even if foo is a keyword.
210
211 <7.page-head-set-to-null-string>
212 % cat page-head
213 #From: [email protected] (Russell Fulton)
214 #Newsgroups: comp.lang.perl
215 #Subject: This script causes Perl 5.00 to sementation fault
216 #Date: 15 Nov 1994 00:11:37 GMT
217 #Message-ID: <[email protected]>
218
219 select((select(STDOUT), $^='')[0]); #this is the critical line
220 $a = 'a';
221 write ;
222 exit;
223
224 format STDOUT =
225 @<<<<<<
226 $a
227 .
228
229 % perl page-head
230 zsh: 1799 segmentation fault perl /tmp/page-head
231
232 Now says
233 Undefined top format "main::" called at ./try line 11.
234
235 <8.sub-as-index>
236 # parser bug?
237 % perl -le 'sub foo {0}; $x[0]=0;$x[foo]<=0'
238 Unterminated <> operator at -e line 1.
239 % perl -le 'sub foo {0}; $x[0]=0;$x[foo()]<=0'
240
241 A right square bracket now forces expectation of an operator.
242
243 <9.unary-minus-to-regexp-var>
244 % cat minus-reg
245 #From: Michael Cook <[email protected]>
246 #Newsgroups: comp.lang.perl
247 #Subject: bug: print -$1
248 #Date: 01 Feb 1995 15:31:25 GMT
249 #Message-ID: <[email protected]>
250
251 $_ = "123";
252 /\d+/;
253 print $&, "\n";
254 print -$&, "\n";
255 print 0-$&, "\n";
256
257 % perl minus-reg
258 123
259 123
260 -123
261
262 Apparently already fixed in my copy.
263
264 <10.vec-segv>
265 % cat vec-bug
266 ## Offset values are changed for my machine.
267
268 #From: [email protected] (Conrad Augustin)
269 #Subject: perl5 vec() bug?
270 #Message-ID: <[email protected]>
271 #Date: Tue, 22 Nov 1994 19:37:28 GMT
272
273 #The following two statements each produce a segmentation fault in perl5:
274
275 #vec($a, 21406, 32) = 1; # seg fault
276 vec($a, 42813, 16) = 1; # seg fault
277
278 #When the offset values are one less, all's well:
279 #vec($a, 21405, 32) = 1; # ok
280 #vec($a, 42812, 16) = 1; # ok
281
282 #Interestingly, this is ok for all high values of N:
283 #$N=1000000; vec($a, $N, 8) = 1;
284
285 % perl vec-bug
286 zsh: 1806 segmentation fault perl vec-bug
287
288 Can't reproduce this one.
289
290
291NETaa13773: $/ not correctly localized in BEGIN
292Files patched: perl.c
293 (same)
294
295NETaa13773: foo::bar was misparsed if foo was a reserved word
296Files patched: toke.c toke.c
297 (same)
298
299NETaa13773: right square bracket didn't force expectation of operator
300Files patched: toke.c
301 (same)
302
303NETaa13773: scalar ((x) x $repeat) left stack mark
304Files patched: op.c
305 (same)
306
307NETaa13778: -w coredumps on <$>
308From: Hans Mulder
309Files patched: pp_hot.c toke.c
310 Now produces suggested error message. Also installed guard in warning code
311 that coredumped.
312
313NETaa13779: foreach didn't use savestack mechanism
314From: Hans Mulder
315Files patched: cop.h pp_ctl.c
316 The foreach mechanism saved the old scalar value on the context stack
317 rather than the savestack. It could consequently get out of sync if
318 unexpectedly unwound.
319
320NETaa13785: GIMME sometimes used wrong context frame
321From: Greg Earle
322Files patched: embed.h global.sym op.h pp_ctl.c proto.h
323 The expression inside the return was taking its context from the immediately
324 surrounding block rather than the innermost surrounding subroutine call.
325
326NETaa13797: could modify sv_undef through auto-vivification
327From: Ilya Zakharevich
328Files patched: pp.c
329 Inserted the missing check for readonly values on auto-vivification.
330
331NETaa13798: if (...) {print} treats print as quoted
332From: Larry Wall
333Files patched: toke.c
334 The trailing paren of the condition was setting expectations to XOPERATOR
335 rather than XBLOCK, so it was being treated like ${print}.
336
337NETaa13926: commonality was not detected in assignments using COND_EXPR
338From: Mark Hanson
339Files patched: opcode.h opcode.pl
340 The assignment compiler didn't check the 2nd and 3rd args of a ?:
341 for commonality. It still doesn't, but I made ?: into a "dangerous"
342 operator so it is forced to treat it as common.
343
344NETaa13957: was marking the PUSHMARK as modifiable rather than the arg
345From: David Couture
346Files patched: op.c sv.c
347 It was marking the PUSHMARK as modifiable rather than the arg.
348
349NETaa13962: documentation of behavior of scalar <*> was unclear
350From: Tom Christiansen
351Files patched: pod/perlop.pod
352 Added the following to perlop:
353
354 A glob only evaluates its (embedded) argument when it is starting a new
355 list. All values must be read before it will start over. In a list
356 context this isn't important, because you automatically get them all
357 anyway. In a scalar context, however, the operator returns the next value
358 each time it is called, or a FALSE value if you've just run out. Again,
359 FALSE is returned only once. So if you're expecting a single value from
360 a glob, it is much better to say
361
362 ($file) = <blurch*>;
363
364 than
365
366 $file = <blurch*>;
367
368 because the latter will alternate between returning a filename and
369 returning FALSE.
370
371
372NETaa13986: split ignored /m pattern modifier
373From: Winfried Koenig
374Files patched: pp.c
375 Fixed to work like m// and s///.
376
377NETaa13992: regexp comments not seen after + in non-extended regexp
378From: Mark Knutsen
379Files patched: regcomp.c
380 The code to skip regexp comments was guarded by a conditional that only
381 let it work when /x was in effect.
382
383NETaa14014: use subs should not count as definition, only as declaration
384From: Keith Thompson
385Files patched: sv.c
386 On *foo = \&bar, doesn't set GVf_IMPORTED if foo and bar are in same package.
387
388NETaa14021: sv_inc and sv_dec "upgraded" magical SV to non-magical
389From: Paul A Sand
390Also: Andreas Koenig
391Files patched: sv.c
392 The sv_inc() and sv_dec() routines "upgraded" null magical SVs to non-magical.
393
394NETaa14086: require should check tainting
395From: Karl Simon Berg
396Files patched: pp_ctl.c
397 Since we shouldn't allow tainted requires anyway, it now says:
398
399 Insecure dependency in require while running with -T switch at tst.pl line 1.
400
401NETaa14104: negation fails on magical variables like $1
402From: tim
403Files patched: pp.c
404 Negation was failing on magical values like $1. It was testing the wrong
405 bits and also failed to provide a final "else" if none of the bits matched.
406
407NETaa14107: deep sort return leaked contexts
408From: Quentin Fennessy
409Files patched: pp_ctl.c
410 Needed to call dounwind() appropriately.
411
412NETaa14129: attempt to localize via a reference core dumps
413From: Michele Sardo
414Files patched: op.c pod/perldiag.pod
415 Now produces an error "Can't localize a reference", with explanation in
416 perldiag.
417
418NETaa14138: substr() and s/// can cause core dump
419From: Andrew Vignaux
420Files patched: pp_hot.c
421 Forgot to call SvOOK_off() on the SV before freeing its string.
422
423NETaa14145: ${@INC}[0] dumped core in debugger
424From: Hans Mulder
425Files patched: sv.c
426 Now croaks "Bizarre copy of ARRAY in block exit", which is better than
427 a core dump. The fact that ${@INC}[0] means $INC[0] outside the debugger
428 is a different bug.
429
430NETaa14147: bitwise assignment ops wipe out byte of target string
431From: Jim Richardson
432Files patched: doop.c
433 The code was assuming that the target was not either of the two operands,
434 which is false for an assignment operator.
435
436NETaa14153: lexing of lexicals in patterns fooled by character class
437From: Dave Bianchi
438Files patched: toke.c
439 It never called the dwimmer, which is how it fooled it.
440
441NETaa14154: allowed autoloaded methods by recognizing sub method; declaration
442From: Larry Wall
443Files patched: gv.c
444 Made sub method declaration sufficient for autoloader to stop searching on.
445
446NETaa14156: shouldn't optimize block scope on tainting
447From: Pete Peterson
448Files patched: op.c toke.c
449 I totally disabled the block scope optimization when running tainted.
450
451NETaa14157: -T and -B only allowed 1/30 "odd" characters--changed to 1/3
452From: Tor Lillqvist
453Files patched: pp_sys.c
454 Applied suggested patch.
455
456NETaa14160: deref of null symbol should produce null list
457From: Jared Rhine
458Files patched: pp_hot.c
459 It didn't check for list context before returning undef.
460
461NETaa14162: POSIX::gensym now returns a symbol reference
462From: Josh N. Pritikin
463Also: Tim Bunce
464Files patched: ext/POSIX/POSIX.pm
465 Applied suggested patch.
466
467NETaa14164: POSIX autoloader now distinguishes non-constant "constants"
468From: Tim Bunce <[email protected]>
469Files patched: ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs
470 The .xs file now distinguishes non-constant "constants" by setting EAGAIN.
471 This will also let us use #ifdef within the .xs file to de-constantify
472 any other macros that happen not to be constants even if they don't use
473 an argument.
474
475NETaa14166: missing semicolon after "my" induces core dump
476From: Thomas Kofler
477Files patched: toke.c
478 The parser was left thinking it was still processing a "my", and flubbed.
479 I made it wipe out the "in_my" variable on a syntax error.
480
481NETaa14166: missing semicolon after "my" induces core dump"
482Files patched: toke.c
483 (same)
484
485NETaa14206: can now use English and strict at the same time
486From: Andrew Wilcox
487Files patched: sv.c
488 It now counts imported symbols as okay under "use strict".
489
490NETaa14206: can now use English and strict at the same time
491Files patched: gv.c pod/perldiag.pod
492 (same)
493
494NETaa14265: elseif now produces severe warning
495From: Yutao Feng
496Files patched: pod/perldiag.pod toke.c
497 Now complains explicitly about "elseif".
498
499NETaa14279: list assignment propagated taintedness to independent scalars
500From: Tim Freeman
501Files patched: pp_hot.c
502 List assignment needed to be modified so that tainting didn't propagate
503 between independent scalar values.
504
505NETaa14312: undef in @EXPORTS core dumps
506From: William Setzer
507Files patched: lib/Exporter.pm
508 Now says:
509
510 Unable to create sub named "t::" at lib/Exporter.pm line 159.
511 Illegal null symbol in @t::EXPORT at -e line 1
512 BEGIN failed--compilation aborted at -e line 1.
513
514
515NETaa14312: undef in @EXPORTS core dumps
516Files patched: pod/perldiag.pod sv.c
517 (same)
518
519NETaa14321: literal @array check shouldn't happen inside embedded expressions
520From: Mark H. Nodine
521Files patched: toke.c
522 The general solution to this is to disable the literal @array check within
523 any embedded expression. For instance, this also failed bogusly:
524
525 print "$foo{@foo}";
526
527 The reason fixing this also fixes the s///e problem is that the lexer
528 effectively puts the RHS into a do {} block, making the expression
529 embedded within curlies, as far as the error message is concerned.
530
531NETaa14322: now localizes $! during POSIX::AUTOLOAD
532From: Larry Wall
533Files patched: ext/POSIX/POSIX.pm
534 Added local $! = 0.
535
536NETaa14324: defined() causes spurious sub existence
537From: "Andreas Koenig"
538Files patched: op.c pp.c
539 It called pp_rv2cv which wrongly assumed it could add any sub it referenced.
540
541NETaa14336: use Module () forces import of nothing
542From: Tim Bunce
543Files patched: op.c
544 use Module () now refrains from calling import at all.
545
546NETaa14353: added special HE allocator
547From: Larry Wall
548Files patched: global.sym
549
550NETaa14353: added special HE allocator
551Files patched: hv.c perl.h
552
553NETaa14353: array extension now converts old memory to SV storage.
554Files patched: av.c av.h sv.c
555
556NETaa14353: hashes now convert old storage into SV arenas.
557Files patched: global.sym
558
559NETaa14353: hashes now convert old storage into SV arenas.
560Files patched: hv.c perl.h
561
562NETaa14353: upgraded SV arena allocation
563Files patched: proto.h
564
565NETaa14353: upgraded SV arena allocation
566Files patched: perl.c sv.c
567
568NETaa14422: added rudimentary prototypes
569From: Gisle Aas
570Files patched: Makefile.SH op.c op.c perly.c perly.c.diff perly.h perly.y proto.h sv.c toke.c
571 Message-Id: <[email protected]>
572 To: [email protected] (Andy Dougherty)
573 Cc: [email protected]
574 Subject: Re: Jumbo Configure patch vs. 1m.
575 Date: Thu, 28 Sep 95 17:18:54 -0700
576 From: [email protected] (Larry Wall)
577
578 : No. Larry's currently got the patch pumpkin for all such core perl topics.
579
580 I dunno whether you should let me have the patch pumpkin or not. To fix
581 a Sev 2 I just hacked in rudimentary prototypes. :-)
582
583 We can now define true unary subroutines, as well as argumentless
584 subroutines:
585
586 sub baz () { 12; } # Must not have argument
587 sub bar ($) { $_[0] * 7 } # Must have exactly one argument
588 sub foo ($@) { print "@_\n" } # Must have at least one argument
589 foo bar baz / 2 || "oops", "is the answer";
590
591 This prints "42 is the answer" on my machine. That is, it's the same as
592
593 foo( bar( baz() / 2) || "oops", "is the answer");
594
595 Attempting to compile
596
597 foo;
598
599 results in
600
601 Too few arguments for main::foo at ./try line 8, near "foo;"
602
603 Compiling
604
605 bar 1,2,3;
606
607 results in
608
609 Too many arguments for main::bar at ./try line 8, near "foo;"
610
611 But
612
613 @array = ('a','b','c');
614 foo @array, @array;
615
616 prints "3 a b c" because the $ puts the first arg of foo into scalar context.
617
618 The main win at this point is that we can say
619
620 sub AAA () { 1; }
621 sub BBB () { 2; }
622
623 and the user can say AAA + BBB and get 3.
624
625 I'm not quite sure how this interacts with autoloading though. I fear
626 POSIX.pm will need to say
627
628 sub E2BIG ();
629 sub EACCES ();
630 sub EAGAIN ();
631 sub EBADF ();
632 sub EBUSY ();
633 ...
634 sub _SC_STREAM_MAX ();
635 sub _SC_TZNAME_MAX ();
636 sub _SC_VERSION ();
637
638 unless we can figure out how to efficiently declare a default prototype
639 at import time. Meaning, not using eval. Currently
640
641 *foo = \&bar;
642
643 (the ordinary import mechanism) implicitly stubs &bar with no prototype if
644 &bar is not yet declared. It's almost like you want an AUTOPROTO to
645 go with your AUTOLOAD.
646
647 Another thing to rub one's 5 o'clock shadow over is that there's no way
648 to apply a prototype to a method call at compile time.
649
650 And no, I don't want to have the
651
652 sub howabout ($formal, @arguments) { ... }
653
654 argument right now.
655
656 Larry
657
658NETaa14422: couldn't take reference of a prototyped function
659Files patched: op.c
660 (same)
661
662NETaa14423: use didn't allow expressions involving the scratch pad
663From: Graham Barr
664Files patched: op.c perly.c perly.c.diff perly.y proto.h vms/perly_c.vms
665 Applied suggested patch.
666
667NETaa14444: lexical scalar didn't autovivify
668From: Gurusamy Sarathy
669Files patched: op.c pp_hot.c
670 It didn't have code in pp_padsv to do the right thing.
671
672NETaa14448: caller could dump core when used within an eval or require
673From: Danny R. Faught
674Files patched: pp_ctl.c
675 caller() was incorrectly assuming the context stack contained a subroutine
676 context when it in fact contained an eval context.
677
678NETaa14451: improved error message on bad pipe filehandle
679From: Danny R. Faught
680Files patched: pp_sys.c
681 Now says the slightly more informative
682
683 Can't use an undefined value as filehandle reference at ./try line 3.
684
685NETaa14462: pp_dbstate had a scope leakage on recursion suppression
686From: Tim Bunce
687Files patched: pp_ctl.c
688 Swapped the code in question around.
689
690NETaa14482: sv_unref freed ref prematurely at times
691From: Gurusamy Sarathy
692Files patched: sv.c
693 Made sv_unref() mortalize rather than free the old reference.
694
695NETaa14484: appending string to array produced bizarre results
696From: Greg Ward
697Also: Malcolm Beattie
698Files patched: pp_hot.c
699 Will now say, "Can't coerce ARRAY to string".
700
701NETaa14525: assignment to globs didn't reset them correctly
702From: Gurusamy Sarathy
703Files patched: sv.c
704 Applied parts of patch not overridden by subsequent patch.
705
706NETaa14529: a partially matching subpattern could spoof infinity detector
707From: Wayne Berke
708Files patched: regexec.c
709 A partial match on a subpattern could fool the infinite regress detector
710 into thinking progress had been made.
711 The previous workaround prevented another bug (NETaa14529) from being fixed,
712 so I've backed it out. I'll need to think more about how to detect failure
713 to progress. I'm still hopeful it's not equivalent to the halting problem.
714
715NETaa14535: patches from Gurusamy Sarathy
716From: Gurusamy Sarathy
717Files patched: op.c pp.c pp_hot.c regexec.c sv.c toke.c
718 Applied most recent suggested patches.
719
720NETaa14537: select() can return too soon
721From: Matt Kimball
722Also: Andreas Gustafsson
723Files patched: pp_sys.c
724
725NETaa14538: method calls were treated like do {} under loop modifiers
726From: Ilya Zakharevich
727Files patched: perly.c perly.y
728 Needed to take the OPf_SPECIAL flag off of entersubs from method reductions.
729 (It was probably a cut-and-paste error from long ago.)
730
731NETaa14540: foreach (@array) no longer does extra stack copy
732From: [email protected]
733Files patched: Todo op.c pp_ctl.c pp_hot.c
734 Fixed by doing the foreach(@array) optimization, so it iterates
735 directly through the array, and can detect the implicit shift from
736 referencing <>.
737
738NETaa14541: new version of perlbug
739From: Kenneth Albanowski
740Files patched: README pod/perl.pod utils/perlbug.PL
741 Brought it up to version 1.09.
742
743NETaa14541: perlbug 1.11
744Files patched: utils/perlbug.PL
745 (same)
746
747NETaa14548: magic sets didn't check private OK bits
748From: W. Bradley Rubenstein
749Files patched: mg.c
750 The magic code was getting mixed up between private and public POK bits.
751
752NETaa14550: made ~ magic magical
753From: Tim Bunce
754Files patched: sv.c
755 Applied suggested patch.
756
757NETaa14551: humongous header causes infinite loop in format
758From: Grace Lee
759Files patched: pp_sys.c
760 Needed to check for page exhaustion after doing top-of-form.
761
762NETaa14558: attempt to call undefined top format core dumped
763From: Hallvard B Furuseth
764Files patched: pod/perldiag.pod pp_sys.c
765 Now issues an error on attempts to call a non-existent top format.
766
767NETaa14561: Gurusamy Sarathy's G_KEEPERR patch
768From: Andreas Koenig
769Also: Gurusamy Sarathy
770Also: Tim Bunce
771Files patched: cop.h interp.sym perl.c perl.h pp_ctl.c pp_sys.c sv.c toke.c
772 Applied latest patch.
773
774NETaa14581: shouldn't execute BEGIN when there are compilation errors
775From: Rickard Westman
776Files patched: op.c
777 Perl should not try to execute BEGIN and END blocks if there's been a
778 compilation error.
779
780NETaa14582: got SEGV sorting sparse array
781From: Rick Pluta
782Files patched: pp_ctl.c
783 Now weeds out undefined values much like Perl 4 did.
784 Now sorts undefined values to the front.
785
786NETaa14582: sort was letting unsortable values through to comparison routine
787Files patched: pp_ctl.c
788 (same)
789
790NETaa14585: globs in pad space weren't properly cleaned up
791From: Gurusamy Sarathy
792Files patched: op.c pp.c pp_hot.c sv.c
793 Applied suggested patch.
794
795NETaa14614: now does dbmopen with perl_eval_sv()
796From: The Man
797Files patched: perl.c pp_sys.c proto.h
798 dbmopen now invokes perl_eval_sv(), which should handle error conditions
799 better.
800
801NETaa14618: exists doesn't work in GDBM_File
802From: Andrew Wilcox
803Files patched: ext/GDBM_File/GDBM_File.xs
804 Applied suggested patch.
805
806NETaa14619: tied()
807From: Larry Wall
808Also: Paul Marquess
809Files patched: embed.h global.sym keywords.h keywords.pl opcode.h opcode.pl pp_sys.c toke.c
810 Applied suggested patch.
811
812NETaa14636: Jumbo Dynaloader patch
813From: Tim Bunce
814Files 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
815 Applied suggested patches.
816
817NETaa14637: checkcomma routine was stupid about bareword sub calls
818From: Tim Bunce <[email protected]>
819Files patched: toke.c
820 The checkcomma routine was stupid about bareword sub calls.
821
822NETaa14639: (?i) didn't reset on runtime patterns
823From: Mark A. Scheel
824Files patched: op.h pp_ctl.c toke.c
825 It didn't distinguish between permanent flags outside the pattern and
826 temporary flags within the pattern.
827
828NETaa14649: selecting anonymous globs dumps core
829From: Chip Salzenberg
830Files patched: cop.h doio.c embed.h global.sym perl.c pp_sys.c proto.h
831 Applied suggested patch, but reversed the increment and decrement to avoid
832 decrementing and freeing what we're going to increment.
833
834NETaa14655: $? returned negative value on AIX
835From: Kim Frutiger
836Also: Stephen D. Lee
837Files patched: pp_sys.c
838 Applied suggested patch.
839
840NETaa14668: {2,} could match once
841From: Hugo van der Sanden
842Files patched: regexec.c
843 When an internal pattern failed a conjecture, it didn't back off on the
844 number of times it thought it had matched.
845
846NETaa14673: open $undefined dumped core
847From: Samuli K{rkk{inen
848Files patched: pp_sys.c
849 pp_open() didn't check its argument for globness.
850
851NETaa14683: stringifies were running pad out of space
852From: Robin Barker
853Files patched: op.h toke.c
854 Increased PADOFFSET to a U32, and made lexer not put double-quoted strings
855 inside OP_STRINGIFY unless they really needed it.
856
857NETaa14689: shouldn't have . in @INC when tainting
858From: William R. Somsky
859Files patched: perl.c
860 Now does not put . into @INC when tainting. It may still be added with a
861
862 use lib ".";
863
864 or, to put it at the end,
865
866 BEGIN { push(@INC, ".") }
867
868 but this is not recommended unless a chdir to a known location has been done
869 first.
870
871NETaa14690: values inside tainted SVs were ignored
872From: "James M. Stern"
873Files patched: pp.c pp_ctl.c
874 It was assuming that a tainted value was a string.
875
876NETaa14692: format name required qualification under use strict
877From: Tom Christiansen
878Files patched: gv.c
879 Now treats format names the same as subroutine names.
880
881NETaa14695: added simple regexp caching
882From: John Rowe
883Files patched: pp_ctl.c
884 Applied suggested patch.
885
886NETaa14697: regexp comments were sometimes wrongly treated as literal text
887From: Tom Christiansen
888Files patched: regcomp.c
889 The literal-character grabber didn't know about extended comments.
890 N.B. '#' is treated as a comment character whenever the /x option is
891 used now, so you can't include '#' as a simple literal in /x regexps.
892
893 (By the way, Tom, the boxed form of quoting in the previous enclosure is
894 exceeding antisocial when you want to extract the code from it.)
895
896NETaa14704: closure got wrong outer scope if outer sub was predeclared
897From: Marc Paquette
898Files patched: op.c
899 The outer scope of the anonymous sub was set to the stub rather than to
900 the actual subroutine. I kludged it by making the outer scope of the
901 stub be the actual subroutine, if anything is depending on the stub.
902
903NETaa14705: $foo .= $foo did free memory read
904From: Gerd Knops
905Files patched: sv.c
906 Now modifies address to copy if it was reallocated.
907
908NETaa14709: Chip's FileHandle stuff
909From: Larry Wall
910Also: Chip Salzenberg
911Files 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
912 Applied suggested patches.
913
914NETaa14711: added (&) and (*) prototypes for blocks and symbols
915From: Kenneth Albanowski
916Files patched: Makefile.SH op.c perly.c perly.h perly.y toke.c
917 & now means that it must have an anonymous sub as that argument. If
918 it's the first argument, the sub may be specified as a block in the
919 indirect object slot, much like grep or sort, which have prototypes of (&@).
920
921 Also added * so you can do things like
922
923 sub myopen (*;$);
924
925 myopen(FOO, $filename);
926
927NETaa14713: setuid FROM root now defaults to not do tainting
928From: Tony Camas
929Files patched: mg.c perl.c pp_hot.c
930 Applied suggested patch.
931
932NETaa14714: duplicate magics could be added to an SV
933From: Yary Hluchan
934Files patched: sv.c sv.c
935 The sv_magic() routine didn't properly check to see if it already had a
936 magic of that type. Ordinarily it would have, but it was called during
937 mg_get(), which forces the magic flags off temporarily.
938
939NETaa14721: sub defined during erroneous do-FILE caused core dump
940From: David Campbell
941Files patched: op.c
942 Fixed the seg fault. I couldn't reproduce the return problem.
943
944NETaa14734: ref should never return undef
945From: Dale Amon
946Files patched: pp.c t/op/overload.t
947 Now returns null string.
948
949NETaa14751: slice of undefs now returns null list
950From: Tim Bunce
951Files patched: pp.c pp_hot.c
952 Null list clobberation is now done in lslice, not aassign.
953
954NETaa14789: select coredumped on Linux
955From: Ulrich Kunitz
956Files patched: pp_sys.c
957 Applied suggested patches, more or less.
958
959NETaa14789: straightened out ins and out of duping
960Files patched: lib/IPC/Open3.pm
961 (same)
962
963NETaa14791: implemented internal SUPER class
964From: Nick Ing-Simmons
965Also: Dean Roehrich
966Files patched: gv.c
967 Applied suggested patch.
968
969NETaa14845: s/// didn't handle offset strings
970From: Ken MacLeod
971Files patched: pp_ctl.c
972 Needed a call to SvOOK_off(targ) in pp_substcont().
973
974NETaa14851: Use of << to mean <<"" is deprecated
975From: Larry Wall
976Files patched: toke.c
977
978NETaa14865: added HINT_BLOCK_SCOPE to "elsif"
979From: Jim Avera
980Files patched: perly.y
981 Needed to set HINT_BLOCK_SCOPE on "elsif" to prevent the do block from
982 being optimized away, which caused the statement transition in elsif
983 to reset the stack too far back.
984
985NETaa14876: couldn't delete localized GV safely
986From: John Hughes
987Files patched: pp.c scope.c
988 The reference count of the "borrowed" GV needed to be incremented while
989 there was a reference to it in the savestack.
990
991NETaa14887: couldn't negate magical scalars
992From: ian
993Also: Gurusamy Sarathy
994Files patched: pp.c
995 Applied suggested patch, more or less. (It's not necessary to test both
996 SvNIOK and SvNIOKp, since the private bits are always set if the public
997 bits are set.)
998
999NETaa14893: /m modifier was sticky
1000From: Jim Avera
1001Files patched: pp_ctl.c
1002 pp_match() and pp_subst() were using an improperly scoped SAVEINT to restore
1003 the value of the internal variable multiline.
1004
1005NETaa14893: /m modifier was sticky
1006Files patched: cop.h pp_hot.c
1007 (same)
1008
1009NETaa14916: complete.pl retained old return value
1010From: Martyn Pearce
1011Files patched: lib/complete.pl
1012 Applied suggested patch.
1013
1014NETaa14928: non-const 3rd arg to split assigned to list could coredump
1015From: Hans de Graaff
1016Files patched: op.c
1017 The optimizer was assuming the OP was an OP_CONST.
1018
1019NETaa14942: substr as lvalue could disable magic
1020From: Darrell Kindred <[email protected]>
1021Files patched: pp.c
1022 The substr was disabling the magic of $1.
1023
1024NETaa14990: "not" not parseable when expecting term
1025From: "Randal L. Schwartz"
1026Files patched: perly.c perly.c.diff perly.y vms/perly_c.vms
1027 The NOTOP production needed to be moved down into the terms.
1028
1029NETaa14993: Bizarre copy of formline
1030From: Tom Christiansen
1031Also: Charles Bailey
1032Files patched: sv.c
1033 Applied suggested patch.
1034
1035NETaa14998: sv_add_arena() no longer leaks memory
1036From: Andreas Koenig
1037Files patched: av.c hv.c perl.h sv.c
1038 Now keeps one potential arena "on tap", but doesn't use it unless there's
1039 demand for SV headers. When an AV or HV is extended, its old memory
1040 becomes the next potential arena unless there already is one, in which
1041 case it is simply freed. This will have the desired property of not
1042 stranding medium-sized chunks of memory when extending a single array
1043 repeatedly, but will not degrade when there's no SV demand beyond keeping
1044 one chunk of memory on tap, which generally will be about 250 bytes big,
1045 since it prefers the earlier freed chunk over the later. See the nice_chunk
1046 variable.
1047
1048NETaa14999: $a and $b now protected from use strict and lexical declaration
1049From: Tom Christiansen
1050Files patched: gv.c pod/perldiag.pod toke.c
1051 Bare $a and $b are now allowed during "use strict". In addition,
1052 the following diag was added:
1053
1054 =item Can't use "my %s" in sort comparison
1055
1056 (F) The global variables $a and $b are reserved for sort comparisons.
1057 You mentioned $a or $b in the same line as the <=> or cmp operator,
1058 and the variable had earlier been declared as a lexical variable.
1059 Either qualify the sort variable with the package name, or rename the
1060 lexical variable.
1061
1062
1063NETaa15034: use strict refs should allow calls to prototyped functions
1064From: Roderick Schertler
1065Files patched: perly.c perly.c.diff perly.y toke.c vms/perly_c.vms
1066 Applied patch suggested by Chip.
1067
1068NETaa15083: forced $AUTOLOAD to be untainted
1069From: Tim Bunce
1070Files patched: gv.c pp_hot.c
1071 Stripped any taintmagic from $AUTOLOAD after setting it.
1072
1073NETaa15084: patch for Term::Cap
1074From: Mark Kaehny
1075Also: Hugo van der Sanden
1076Files patched: lib/Term/Cap.pm
1077 Applied suggested patch.
1078
1079NETaa15086: null pattern could cause coredump in s//_$1_/
1080From: "Paul E. Maisano"
1081Files patched: cop.h pp_ctl.c
1082 If the replacement pattern was complicated enough to cause pp_substcont
1083 to be called, then it lost track of which REGEXP* it was supposed to
1084 be using.
1085
1086NETaa15087: t/io/pipe.t didn't work on AIX
1087From: Andy Dougherty
1088Files patched: t/io/pipe.t
1089 Applied suggested patch.
1090
1091NETaa15088: study was busted
1092From: Hugo van der Sanden
1093Files patched: opcode.h opcode.pl pp.c
1094 It was studying its scratch pad target rather than the argument supplied.
1095
1096NETaa15090: MSTATS patch
1097From: Tim Bunce
1098Files patched: global.sym malloc.c perl.c perl.h proto.h
1099 Applied suggested patch.
1100
1101NETaa15098: longjmp out of magic leaks memory
1102From: Chip Salzenberg
1103Files patched: mg.c sv.c
1104 Applied suggested patch.
1105
1106NETaa15102: getpgrp() is broken if getpgrp2() is available
1107From: Roderick Schertler
1108Files patched: perl.h pp_sys.c
1109 Applied suggested patch.
1110
1111NETaa15103: prototypes leaked opcodes
1112From: Chip Salzenberg
1113Files patched: op.c
1114 Applied suggested patch.
1115
1116NETaa15107: quotameta memory bug on all metacharacters
1117From: Chip Salzenberg
1118Files patched: pp.c
1119 Applied suggested patch.
1120
1121NETaa15108: Fix for incomplete string leak
1122From: Chip Salzenberg
1123Files patched: toke.c
1124 Applied suggested patch.
1125
1126NETaa15110: couldn't use $/ with 8th bit set on some architectures
1127From: Chip Salzenberg
1128Files 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
1129 Applied suggested patches.
1130
1131NETaa15112: { a_1 => 2 } didn't parse as expected
1132From: Stuart M. Weinstein
1133Files patched: toke.c
1134 The little dwimmer was only skipping ALPHA rather than ALNUM chars.
1135
1136NETaa15123: bitwise ops produce spurious warnings
1137From: Hugo van der Sanden
1138Also: Chip Salzenberg
1139Also: Andreas Gustafsson
1140Files patched: sv.c
1141 Decided to suppress the warning in the conversion routines if merely converting
1142 a temporary, which can never be a user-supplied value anyway.
1143
1144NETaa15129: #if defined (foo) misparsed in h2ph
1145From: Roderick Schertler <[email protected]>
1146Files patched: utils/h2ph.PL
1147 Applied suggested patch.
1148
1149NETaa15131: some POSIX functions assumed valid filehandles
1150From: Chip Salzenberg
1151Files patched: ext/POSIX/POSIX.xs
1152 Applied suggested patch.
1153
1154NETaa15151: don't optimize split on OPpASSIGN_COMMON
1155From: Huw Rogers
1156Files patched: op.c
1157 Had to swap the optimization down to after the assignment op is generated
1158 and COMMON is calculated, and then clean up the resultant tree differently.
1159
1160NETaa15154: MakeMaker-5.18
1161From: Andreas Koenig
1162Files patched: MANIFEST lib/ExtUtils/Liblist.pm lib/ExtUtils/MM_VMS.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Mksymlists.pm
1163 Brought it up to 5.18.
1164
1165NETaa15156: some Exporter tweaks
1166From: Roderick Schertler
1167Also: Tim Bunce
1168Files patched: lib/Exporter.pm
1169 Also did Tim's Tiny Trivial patch.
1170
1171NETaa15157: new version of Test::Harness
1172From: Andreas Koenig
1173Files patched: lib/Test/Harness.pm
1174 Applied suggested patch.
1175
1176NETaa15175: overloaded nomethod has garbage 4th op
1177From: Ilya Zakharevich
1178Files patched: gv.c
1179 Applied suggested patch.
1180
1181NETaa15179: SvPOK_only shouldn't back off on offset pointer
1182From: [email protected]
1183Files patched: sv.h
1184 SvPOK_only() was calling SvOOK_off(), which adjusted the string pointer
1185 after tr/// has already acquired it. It shouldn't really be necessary
1186 for SvPOK_only() to undo an offset string pointer, since there's no
1187 conflict with a possible integer value where the offset is stored.
1188
1189NETaa15193: & now always bypasses prototype checking
1190From: Larry Wall
1191Files 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
1192 Turned out to be a big hairy deal because the lexer turns foo() into &foo().
1193 But it works consistently now. Also fixed pod.
1194
1195NETaa15197: 5.002b2 is 'appending' to $@
1196From: Gurusamy Sarathy
1197Files patched: pp_ctl.c
1198 Applied suggested patch.
1199
1200NETaa15201: working around Linux DBL_DIG problems
1201From: Kenneth Albanowski
1202Files patched: hints/linux.sh sv.c
1203 Applied suggested patch.
1204
1205NETaa15208: SelectSaver
1206From: Chip Salzenberg
1207Files patched: MANIFEST lib/SelectSaver.pm
1208 Applied suggested patch.
1209
1210NETaa15209: DirHandle
1211From: Chip Salzenberg
1212Files patched: MANIFEST lib/DirHandle.pm t/lib/dirhand.t
1213
1214NETaa15210: sysopen()
1215From: Chip Salzenberg
1216Files patched: doio.c keywords.pl lib/ExtUtils/typemap opcode.pl pod/perlfunc.pod pp_hot.c pp_sys.c proto.h toke.c
1217 Applied suggested patch. Hope it works...
1218
1219NETaa15211: use mnemonic names in Safe setup
1220From: Chip Salzenberg
1221Files patched: ext/Safe/Safe.pm
1222 Applied suggested patch, more or less.
1223
1224NETaa15214: prototype()
1225From: Chip Salzenberg
1226Files patched: ext/Safe/Safe.pm global.sym keywords.pl opcode.pl pp.c toke.c
1227 Applied suggested patch.
1228
1229NETaa15217: -w problem with -d:foo
1230From: Tim Bunce
1231Files patched: perl.c
1232 Applied suggested patch.
1233
1234NETaa15218: *GLOB{ELEMENT}
1235From: Larry Wall
1236Files 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
1237
1238NETaa15219: Make *x=\*y do like *x=*y
1239From: Chip Salzenberg
1240Files patched: sv.c
1241 Applied suggested patch.
1242
1243NETaa15221: Indigestion with Carp::longmess and big eval '...'s
1244From: Tim Bunce
1245Files patched: lib/Carp.pm
1246 Applied suggested patch.
1247
1248NETaa15222: VERSION patch for standard extensions
1249From: Paul Marquess
1250Files 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
1251 Applied suggested patch.
1252
1253NETaa15222: VERSION patch for standard extensions (reprise)
1254Files 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
1255 (same)
1256
1257NETaa15227: $i < 10000 should optimize to integer op
1258From: Larry Wall
1259Files patched: op.c op.c
1260 The program
1261
1262 for ($i = 0; $i < 100000; $i++) {
1263 push @foo, $i;
1264 }
1265
1266 takes about one quarter the memory if the optimizer decides that it can
1267 use an integer < comparison rather than floating point. It now does so
1268 if one side is an integer constant and the other side a simple variable.
1269 This should really help some of our benchmarks. You can still force a
1270 floating point comparison by using 100000.0 instead.
1271
1272NETaa15228: CPerl-mode patch
1273From: Ilya Zakharevich
1274Files patched: emacs/cperl-mode.el
1275 Applied suggested patch.
1276
1277NETaa15231: Symbol::qualify()
1278From: Chip Salzenberg
1279Files patched: ext/FileHandle/FileHandle.pm gv.c lib/SelectSaver.pm lib/Symbol.pm pp_hot.c
1280 Applied suggested patch.
1281
1282NETaa15236: select select broke under use strict
1283From: Chip Salzenberg
1284Files patched: op.c
1285 Instead of inventing a new bit, I just turned off the HINT_STRICT_REFS bit.
1286 I don't think it's worthwhile distinguishing between qualified or unqualified
1287 names to select.
1288
1289NETaa15237: use vars
1290From: Larry Wall
1291Files patched: MANIFEST gv.c lib/subs.pm lib/vars.pm sv.c
1292
1293NETaa15240: keep op names _and_ descriptions
1294From: Chip Salzenberg
1295Files 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
1296 Applied suggested patch.
1297
1298NETaa15259: study doesn't unset on string modification
1299From: Larry Wall
1300Files patched: mg.c pp.c
1301 Piggybacked on m//g unset magic to unset the study too.
1302
1303NETaa15276: pick a better initial cxstack_max
1304From: Chip Salzenberg
1305Files patched: perl.c
1306 Added fudge in, and made it calculate how many it could fit into (most of) 8K,
1307 to avoid getting 16K of Kingsley malloc.
1308
1309NETaa15287: numeric comparison optimization adjustments
1310From: Clark Cooper
1311Files patched: op.c
1312 Applied patch suggested by Chip, with liberalization to >= and <=.
1313
1314NETaa15299: couldn't eval string containing pod or __DATA__
1315From: Andreas Koenig
1316Also: Gisle Aas
1317Files patched: toke.c
1318 Basically, eval didn't know how to bypass pods correctly.
1319
1320NETaa15300: sv_backoff problems
1321From: Paul Marquess
1322Also: mtr
1323Also: Chip Salzenberg
1324Files patched: op.c sv.c sv.h
1325 Applied suggested patch.
1326
1327NETaa15312: Avoid fclose(NULL)
1328From: Chip Salzenberg
1329Files patched: toke.c
1330 Applied suggested patch.
1331
1332NETaa15318: didn't set up perl_init_i18nl14n for export
1333From: Ilya Zakharevich
1334Files patched: perl_exp.SH
1335 Applied suggested patch.
1336
1337NETaa15331: File::Path::rmtree followed symlinks
1338From: Andreas Koenig
1339Files patched: lib/File/Path.pm
1340 Added suggested patch, except I did
1341
1342 if (not -l $root and -d _) {
1343
1344 for efficiency, since if -d is true, the -l already called lstat on it.
1345
1346NETaa15339: sv_gets() didn't reset count
1347From: [email protected]
1348Files patched: sv.c
1349 Applied suggested patch.
1350
1351NETaa15341: differentiated importation of different types
1352From: Chip Salzenberg
1353Files patched: gv.c gv.h op.c perl.c pp.c pp_ctl.c sv.c sv.h toke.c
1354 Applied suggested patch.
1355
1356NETaa15342: Consistent handling of e_{fp,tmpname}
1357From: Chip Salzenberg
1358Files patched: perl.c pp_ctl.c util.c
1359 Applied suggested patch.
1360
1361NETaa15344: Safe gets confused about malloc on AIX
1362From: Tim Bunce
1363Files patched: ext/Safe/Safe.xs
1364 Applied suggested patch.
1365
1366NETaa15348: -M upgrade
1367From: Tim Bunce
1368Files patched: perl.c pod/perlrun.pod
1369 Applied suggested patch.
1370
1371NETaa15369: change in split optimization broke scalar context
1372From: Ulrich Pfeifer
1373Files patched: op.c
1374 The earlier patch to make the split optimization pay attention to
1375 OPpASSIGN_COMMON rearranged how the syntax tree is constructed, but kept
1376 the wrong context flags. This causes pp_split() do do the wrong thing.
1377
1378NETaa15423: can't do subversion numbering because of %5.3f assumptions
1379From: Andy Dougherty
1380Files patched: configpm patchlevel.h perl.c perl.h pp_ctl.c
1381 Removed the %5.3f assumptions where appropriate. patchlevel.h now
1382 defines SUBVERSION, which if greater than 0 indicates a development version.
1383
1384NETaa15424: Sigsetjmp patch
1385From: Kenneth Albanowski
1386Files patched: Configure config_h.SH op.c perl.c perl.h pp_ctl.c util.c
1387 Applied suggested patch.
1388
1389Needed to make install paths absolute.
1390Files patched: installperl
1391
1392h2xs 1.14
1393Files patched: utils/h2xs.PL
1394
1395makedir() looped on a symlink to a directory.
1396Files patched: installperl
1397
1398xsubpp 1.932
1399Files patched: lib/ExtUtils/xsubpp
1400
1401----------------------------------------------------------------
1402Summary of user-visible Configure and build changes since 5.001:
1403----------------------------------------------------------------
1404
1405Yet more enhancements and fixes have been made to the Configure and
1406build process for perl. Most of these will not be visible to the
1407ordinary user--they just make the process more robust and likely to
1408work on a wider range of platforms.
1409
1410This is a brief summary of the most important changes. A more
1411detailed description is given below.
1412
1413 Slightly changed installation directories. See INSTALL.
1414
1415 Include 5.000 - 5.001 upgrage notes :-) (see below). You might
1416 want to read through them as well as these notes.
1417
1418 Install documentation for perl modules and pod2* translators. You can
1419 now view perl module documentation with either your system's man(1)
1420 program or with the supplied perldoc script.
1421
1422 Many hint file updates.
1423
1424 Improve and simplify detection of local libraries and header files.
1425
1426 Expand documentation of installation process in new INSTALL file.
1427
1428 Try to reduce Unixisms (such as SH file extraction) to enhance
1429 portability to other platforms. There's still a long way to go.
1430
1431Upgrade Traps and Pitfalls:
1432
1433Since a lot has changed in the build process, you are probably best off
1434starting with a fresh copy of the perl5.002 sources. In particular,
1435your 5.000 or 5.001 config.sh will contain several variables that are no
1436longer needed. Further, improvements in the Configure tests may mean
1437that some of the answers will be different than they were in previous
1438versions, and which answer to keep can be difficult to sort out.
1439Therefore, you are probably better off ignoring your old config.sh, as
1440in the following:
1441
1442 make -k distclean # (if you've built perl before)
1443 rm -f config.sh # (in case distclean mysteriously fails)
1444 sh Configure [whatever options you like]
1445 make depend
1446 make
1447 make test
1448
1449This, and much more, is described in the new INSTALL file.
1450
1451Here are the detailed changes from 5.002beta1 to 5.002b2 in
1452reverse chronolgical order:
1453
1454-------------
1455Version 5.002beta2
1456-------------
1457
1458This is patch.2b2 to perl5.002beta1.
1459This takes you from 5.002beta1h to 5.002beta2.
1460
1461Renaming this as beta2 reflects _my_ feeling that it's time to
1462wrap up things for the release of 5.002.
1463
1464Index: Changes.Conf
1465
1466 Include changes from patches 2b1a .. 2b1h, as well as this
1467 patch.
1468
1469Index: Configure
1470
1471 Use nm -D on Linux with shared libraries, if the system
1472 supports nm -D.
1473
1474Prereq: 3.0.1.8
1475*** perl5.002b1h/Configure Thu Jan 4 11:14:37 1996
1476--- perl5.002b2/Configure Thu Jan 11 17:09:13 1996
1477
1478Index: MANIFEST
1479
1480 Include Stub Readline library as part of new debugger.
1481
1482 Include hints file dec_osf for ODBM_File extension.
1483
1484*** perl5.002b1h/MANIFEST Wed Jan 3 14:37:54 1996
1485--- perl5.002b2/MANIFEST Sat Jan 13 16:30:43 1996
1486
1487Index: configpm
1488
1489 Updates from Tim's -m/-M/-V patch.
1490
1491*** perl5.002b1h/configpm Tue Oct 31 11:51:52 1995
1492--- perl5.002b2/configpm Fri Jan 12 10:53:34 1996
1493
1494Index: doop.c
1495
1496 Chip's patch to use STDCHAR and U8 nearly everywhere instead of
1497 assuming 8-bit chars or ~(char) 0 == 0xff.
1498
1499*** perl5.002b1h/doop.c Wed Nov 15 15:08:01 1995
1500--- perl5.002b2/doop.c Fri Jan 12 15:05:04 1996
1501
1502Index: embed.h
1503
1504 Updates from Tim's -m/-M/-V patch.
1505
1506*** perl5.002b1h/embed.h Thu Jan 4 13:28:08 1996
1507--- perl5.002b2/embed.h Fri Jan 12 15:09:11 1996
1508
1509Index: ext/DB_File/Makefile.PL
1510
1511 Disable prototypes.
1512 Disable pod2man.
1513
1514*** perl5.002b1h/ext/DB_File/Makefile.PL Tue Nov 14 14:14:17 1995
1515--- perl5.002b2/ext/DB_File/Makefile.PL Tue Jan 9 16:54:17 1996
1516
1517*** perl5.002b1h/ext/DB_File/Makefile.PL Tue Nov 14 14:14:17 1995
1518--- perl5.002b2/ext/DB_File/Makefile.PL Sat Jan 13 17:07:11 1996
1519
1520Index: ext/DynaLoader/Makefile.PL
1521
1522 Disable prototypes.
1523 Disable pod2man.
1524
1525*** perl5.002b1h/ext/DynaLoader/Makefile.PL Tue Jun 6 12:24:37 1995
1526--- perl5.002b2/ext/DynaLoader/Makefile.PL Sat Jan 13 17:16:34 1996
1527
1528Index: ext/Fcntl/Makefile.PL
1529
1530 Disable prototypes.
1531 Disable pod2man.
1532
1533*** perl5.002b1h/ext/Fcntl/Makefile.PL Thu Jan 19 18:58:52 1995
1534--- perl5.002b2/ext/Fcntl/Makefile.PL Sat Jan 13 17:16:38 1996
1535
1536Index: ext/GDBM_File/GDBM_File.pm
1537
1538 Make the NAME section a legal paragraph.
1539
1540*** perl5.002b1h/ext/GDBM_File/GDBM_File.pm Mon Nov 20 10:22:26 1995
1541--- perl5.002b2/ext/GDBM_File/GDBM_File.pm Fri Jan 12 16:11:38 1996
1542
1543Index: ext/GDBM_File/Makefile.PL
1544
1545 Disable prototypes.
1546 Disable pod2man.
1547
1548*** perl5.002b1h/ext/GDBM_File/Makefile.PL Wed Feb 22 14:36:36 1995
1549--- perl5.002b2/ext/GDBM_File/Makefile.PL Sat Jan 13 17:08:02 1996
1550
1551Index: ext/NDBM_File/Makefile.PL
1552
1553 Disable prototypes.
1554 Disable pod2man.
1555
1556*** perl5.002b1h/ext/NDBM_File/Makefile.PL Wed Feb 22 14:36:39 1995
1557--- perl5.002b2/ext/NDBM_File/Makefile.PL Sat Jan 13 17:08:13 1996
1558
1559Index: ext/ODBM_File/Makefile.PL
1560
1561 Disable prototypes.
1562 Disable pod2man.
1563
1564*** perl5.002b1h/ext/ODBM_File/Makefile.PL Mon Jun 5 15:03:44 1995
1565--- perl5.002b2/ext/ODBM_File/Makefile.PL Sat Jan 13 17:08:22 1996
1566
1567Index: ext/ODBM_File/hints/dec_osf.pl
1568
1569 New file.
1570
1571*** /dev/null Sat Jan 13 16:48:01 1996
1572--- perl5.002b2/ext/ODBM_File/hints/dec_osf.pl Sat Jan 13 16:30:01 1996
1573
1574Index: ext/POSIX/Makefile.PL
1575
1576 Disable prototypes.
1577 Disable pod2man.
1578
1579*** perl5.002b1h/ext/POSIX/Makefile.PL Thu Jan 19 18:59:00 1995
1580--- perl5.002b2/ext/POSIX/Makefile.PL Sat Jan 13 17:08:27 1996
1581
1582Index: ext/SDBM_File/Makefile.PL
1583
1584 Disable prototypes.
1585 Disable pod2man.
1586
1587*** perl5.002b1h/ext/SDBM_File/Makefile.PL Tue Nov 14 11:16:43 1995
1588--- perl5.002b2/ext/SDBM_File/Makefile.PL Sat Jan 13 17:16:49 1996
1589
1590Index: ext/SDBM_File/sdbm/sdbm.c
1591
1592 Give correct prototype for free.
1593
1594Prereq: 1.16
1595*** perl5.002b1h/ext/SDBM_File/sdbm/sdbm.c Mon Nov 13 23:01:41 1995
1596--- perl5.002b2/ext/SDBM_File/sdbm/sdbm.c Fri Jan 12 10:33:32 1996
1597
1598Index: ext/Safe/Makefile.PL
1599
1600 Disable prototypes.
1601 Disable pod2man.
1602
1603*** perl5.002b1h/ext/Safe/Makefile.PL Tue Jan 2 15:43:53 1996
1604--- perl5.002b2/ext/Safe/Makefile.PL Sat Jan 13 17:08:45 1996
1605
1606Index: ext/Safe/Safe.pm
1607
1608 Patch from Andreas.
1609
1610*** perl5.002b1h/ext/Safe/Safe.pm Tue Jan 2 15:45:27 1996
1611--- perl5.002b2/ext/Safe/Safe.pm Fri Jan 12 10:52:33 1996
1612
1613Index: ext/Safe/Safe.xs
1614
1615 Patch for older compilers which had namespace confusion.
1616
1617*** perl5.002b1h/ext/Safe/Safe.xs Tue Jan 2 15:45:27 1996
1618--- perl5.002b2/ext/Safe/Safe.xs Fri Jan 5 14:27:47 1996
1619
1620Index: ext/Socket/Makefile.PL
1621
1622 Disable prototypes.
1623 Disable pod2man.
1624
1625*** perl5.002b1h/ext/Socket/Makefile.PL Sat Dec 2 16:23:52 1995
1626--- perl5.002b2/ext/Socket/Makefile.PL Sat Jan 13 17:08:52 1996
1627
1628Index: ext/Socket/Socket.xs
1629
1630 Use unsigned shorts for ports.
1631
1632*** perl5.002b1h/ext/Socket/Socket.xs Sat Dec 2 15:46:20 1995
1633--- perl5.002b2/ext/Socket/Socket.xs Mon Jan 8 21:59:52 1996
1634
1635Index: global.sym
1636
1637 Updates from Tim's -m/-M/-V patch.
1638
1639*** perl5.002b1h/global.sym Wed Jan 3 12:01:59 1996
1640--- perl5.002b2/global.sym Fri Jan 12 10:53:34 1996
1641
1642Index: gv.c
1643
1644 Avoid VMS sprintf bug with buffers >1024.
1645
1646*** perl5.002b1h/gv.c Fri Dec 8 10:37:22 1995
1647--- perl5.002b2/gv.c Fri Jan 12 15:27:27 1996
1648
1649Index: hints/aix.sh
1650
1651 Updated
1652
1653*** perl5.002b1h/hints/aix.sh Mon Nov 13 23:03:33 1995
1654--- perl5.002b2/hints/aix.sh Fri Jan 12 12:09:48 1996
1655
1656Index: hints/irix_5.sh
1657
1658 Updated
1659
1660*** perl5.002b1h/hints/irix_5.sh Tue Jan 2 14:53:52 1996
1661--- perl5.002b2/hints/irix_5.sh Tue Jan 9 16:05:11 1996
1662
1663Index: hints/linux.sh
1664
1665 Updated
1666
1667*** perl5.002b1h/hints/linux.sh Fri Jun 2 10:20:55 1995
1668--- perl5.002b2/hints/linux.sh Fri Jan 12 11:43:52 1996
1669
1670Index: hints/machten.sh
1671
1672 Updated
1673
1674*** perl5.002b1h/hints/machten.sh Sun Mar 12 02:36:04 1995
1675--- perl5.002b2/hints/machten.sh Wed Jan 10 14:53:32 1996
1676
1677Index: installman
1678
1679 Use File::Path::mkpath instead of our own makedir().
1680 ./perl installman --man1dir=man1 could lead to infinte recursion
1681 in old makedir() routine. Use the standard library instead.
1682
1683*** perl5.002b1h/installman Thu Dec 28 16:06:11 1995
1684--- perl5.002b2/installman Thu Jan 11 16:12:30 1996
1685
1686Index: installperl
1687
1688 Use File::Path::mkpath instead of our own makedir().
1689
1690*** perl5.002b1h/installperl Wed Jan 3 14:33:57 1996
1691--- perl5.002b2/installperl Thu Jan 11 16:12:16 1996
1692
1693Index: interp.sym
1694
1695 Updates from Tim's -m/-M/-V patch.
1696
1697*** perl5.002b1h/interp.sym Fri Nov 10 17:17:32 1995
1698--- perl5.002b2/interp.sym Fri Jan 12 15:05:04 1996
1699
1700Index: lib/AutoLoader.pm
1701
1702 Undo Tim's tainting patch from beta1h.
1703
1704*** perl5.002b1h/lib/AutoLoader.pm Tue Jan 2 16:10:36 1996
1705--- perl5.002b2/lib/AutoLoader.pm Fri Jan 5 16:02:28 1996
1706
1707Index: lib/Carp.pm
1708*** perl5.002b1h/lib/Carp.pm Tue Jan 2 12:10:38 1996
1709--- perl5.002b2/lib/Carp.pm Fri Jan 12 11:23:31 1996
1710
1711Index: lib/ExtUtils/MM_VMS.pm
1712
1713 Updated to MakeMaker-5.16.
1714
1715*** perl5.002b1h/lib/ExtUtils/MM_VMS.pm Tue Jan 2 14:07:10 1996
1716--- perl5.002b2/lib/ExtUtils/MM_VMS.pm Thu Jan 4 21:00:46 1996
1717
1718Index: lib/ExtUtils/MakeMaker.pm
1719
1720 Updated to MakeMaker-5.16.
1721
1722Prereq: 1.129
1723*** perl5.002b1h/lib/ExtUtils/MakeMaker.pm Tue Jan 2 14:07:10 1996
1724--- perl5.002b2/lib/ExtUtils/MakeMaker.pm Wed Jan 10 16:13:05 1996
1725
1726Index: lib/File/Find.pm
1727
1728 Fixed exporting of symbols to work.
1729
1730*** perl5.002b1h/lib/File/Find.pm Wed Nov 15 15:20:03 1995
1731--- perl5.002b2/lib/File/Find.pm Wed Jan 10 14:46:24 1996
1732
1733Index: lib/I18N/Collate.pm
1734
1735 Updated documentation to match program.
1736
1737*** perl5.002b1h/lib/I18N/Collate.pm Fri Jun 2 11:30:49 1995
1738--- perl5.002b2/lib/I18N/Collate.pm Fri Jan 5 16:05:26 1996
1739
1740Index: lib/Term/ReadLine.pm
1741
1742 Stub new file to interface to various readline packages, or
1743 give stub functions if none are found.
1744
1745*** /dev/null Sat Jan 13 16:48:01 1996
1746--- perl5.002b2/lib/Term/ReadLine.pm Fri Jan 12 11:23:31 1996
1747
1748Index: lib/dumpvar.pl
1749
1750 Ilya's new debugger.
1751
1752*** perl5.002b1h/lib/dumpvar.pl Tue Oct 18 12:36:00 1994
1753--- perl5.002b2/lib/dumpvar.pl Fri Jan 12 11:23:31 1996
1754
1755Index: lib/perl5db.pl
1756
1757 Ilya's new debugger.
1758
1759*** perl5.002b1h/lib/perl5db.pl Tue Jan 2 16:30:33 1996
1760--- perl5.002b2/lib/perl5db.pl Fri Jan 12 11:23:31 1996
1761
1762Index: lib/sigtrap.pm
1763
1764 Ilya's new debugger.
1765
1766*** perl5.002b1h/lib/sigtrap.pm Thu May 25 11:20:13 1995
1767--- perl5.002b2/lib/sigtrap.pm Fri Jan 12 11:23:31 1996
1768
1769Index: miniperlmain.c
1770
1771 More robust i18nl14n() function from jhi.
1772
1773*** perl5.002b1h/miniperlmain.c Thu Jan 4 12:03:37 1996
1774--- perl5.002b2/miniperlmain.c Mon Jan 8 22:00:19 1996
1775
1776Index: myconfig
1777
1778 Updates from Tim's -m/-M/-V patch.
1779
1780*** perl5.002b1h/myconfig Tue Apr 4 12:13:21 1995
1781--- perl5.002b2/myconfig Fri Jan 12 10:53:35 1996
1782
1783Index: op.c
1784
1785 Chip's U8/STDCHAR patch.
1786
1787*** perl5.002b1h/op.c Wed Jan 3 14:17:01 1996
1788--- perl5.002b2/op.c Fri Jan 12 15:05:05 1996
1789
1790Index: perl.c
1791
1792 Change Copyright date to include 1996. Hope you don't mind.
1793
1794 Presumptively call this beta2.
1795
1796*** perl5.002b1h/perl.c Thu Jan 4 15:13:53 1996
1797--- perl5.002b2/perl.c Fri Jan 12 15:05:05 1996
1798
1799Index: perl.h
1800
1801 Updates from Tim's -m/-M/-V patch.
1802
1803*** perl5.002b1h/perl.h Wed Jan 3 12:21:55 1996
1804--- perl5.002b2/perl.h Fri Jan 12 15:05:04 1996
1805
1806Index: pod/Makefile
1807
1808 Use PERL=../miniperl
1809
1810*** perl5.002b1h/pod/Makefile Wed Jan 3 15:06:41 1996
1811--- perl5.002b2/pod/Makefile Fri Jan 5 14:14:30 1996
1812
1813Index: pod/perlembed.pod
1814
1815 Give correct usage for the 5th arg to perl_parse (don't pass
1816 env).
1817
1818*** perl5.002b1h/pod/perlembed.pod Thu Dec 28 16:34:07 1995
1819--- perl5.002b2/pod/perlembed.pod Tue Jan 9 16:02:51 1996
1820
1821Index: pod/perlfunc.pod
1822
1823 Work around a pod2man complaint about the -X function.
1824
1825*** perl5.002b1h/pod/perlfunc.pod Tue Jan 2 15:39:26 1996
1826--- perl5.002b2/pod/perlfunc.pod Fri Jan 12 11:04:15 1996
1827
1828*** perl5.002b1h/pod/perlfunc.pod Tue Jan 2 15:39:26 1996
1829--- perl5.002b2/pod/perlfunc.pod Fri Jan 12 11:04:15 1996
1830
1831Index: pod/perlovl.pod
1832
1833 Add DESCRIPTION to head1 line.
1834
1835*** perl5.002b1h/pod/perlovl.pod Thu Dec 28 16:34:13 1995
1836--- perl5.002b2/pod/perlovl.pod Thu Jan 11 17:11:16 1996
1837