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