From 21d892ea46b4eaa5d8ae1c8cd325d9940deef5b3 Mon Sep 17 00:00:00 2001 From: Larry Wall Date: Tue, 27 Mar 1990 20:20:03 +0000 Subject: perl 3.0 patch #16 (combined patch) There is now support for compiling perl under the Microsoft C compiler on MSDOS. Special thanks go to Diomidis Spinellis for this. To compile under MSDOS, look at the readme file in the msdos subdirectory. As a part of this, six files will be renamed when you run Configure. These are config.h.SH, perl.man.[1-4] and t/op.subst. Suns (and perhaps other machines) can't cast negative floating point numbers to unsigned ints reasonably. Configure now detects this and takes appropriate action. Configure looked for optional libraries but then didn't ever use them, even if there was no config.sh value to override. System V Release 4 provides us with yet another nm format for Configure to parse. No doubt it's "better". Sigh. MIPS CPUs running under Ultrix were getting configured for volatile support, but they don't like volatile when applied to a type generated by a typedef. Configure now tests for this. I've added two new perl library routines: ctime.pl from Waldemar Kebsch and Marion Hakanson, and syslog.pl from Tom Christiansen and me. In subroutines, non-terminal blocks should never have arrays requested of them, even if the subroutine call's context is looking for an array. Formats didn't work inside eval. Now they do. Any $foo++ that doesn't return a value is now optimized to ++$foo since the latter doesn't require generation of a temporary to hold the old value. A self-referential printf pattern such as sprintf($s,...,$s,...) would end up with a null as the first character of the next field. On machines that don't support executing scripts in the kernel, perl has to emulate that when an exec fails. In this case, the do_exec() routine can lose arguments passed to the script. A memory leakage in pattern matching triggered by use of $`, $& or $' has been fixed. A splice that pulls up the front of an array such as splice(@array,0,$n) can cause a duplicate free error. The grep operator blew up on undefined array values. It now handles them reasonably, setting $_ to undef. The .. operator in an array context is used to generate number ranges. This has been generalized to allow any string ranges that can be generated with the magical increment code of ++. So you can say 'a' .. 'f', '000'..'999', etc. The ioctl function didn't return non-zero values correctly. Associative array slices from dbm files like @dbmvalues{'foo','bar'} could use the same cache entry for multiple values, causing loss of some of the values of the slice. Cache values are now not flushed until the end of a statement. The do FILE operator blew up when used inside an eval, due to trying to free the eval code it was still executing. If you did s/^prefix// on a string, and subsequently assigned a value that didn't contain a string value to the string, you could get a bad free error. One of the taint checks blew up on undefined array elements, which showed up only when taintperl was run. The final semicolon in program is supposed to be optional now. Unfortunately this wasn't true when -p or -n added extra code around your code. Now it's true all the time. A tail anchored pattern such as /foo$/ could cause grief if you searched a string that was shorter than that. --- README | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'README') diff --git a/README b/README index 8de855db67..5029dcf7d3 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ Perl Kit, Version 3.0 - Copyright (c) 1989, Larry Wall + Copyright (c) 1989,1990, Larry Wall This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -76,6 +76,7 @@ Installation The 3b2 needs to turn off -O. AIX/RT may need a -a switch and -DCRIPPLED_CC. + SUNOS 4.0.[12] needs #define fputs(str,fp) fprintf(fp,"%s",str) in perl.h SGI machines may need -Ddouble="long float". Ultrix (2.3) may need to hand assemble teval.s with a -J switch. Ultrix on MIPS machines may need -DLANGUAGE_C. -- cgit v1.2.1