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