diff options
author | Larry Wall <larry@netlabs.com> | 1994-03-18 00:00:00 +0000 |
---|---|---|
committer | Larry Wall <larry@netlabs.com> | 1994-03-18 00:00:00 +0000 |
commit | 8990e3071044a96302560bbdb5706f3e74cf1bef (patch) | |
tree | 6cf4a58108544204591f25bd2d4f1801d49334b4 /TCL | |
parent | ed6116ce9b9d13712ea252ee248b0400653db7f9 (diff) | |
download | perl-8990e3071044a96302560bbdb5706f3e74cf1bef.tar.gz |
perl 5.0 alpha 6
[editor's note: cleaned up from the September '94 InfoMagic CD, just
like the last commit]
Diffstat (limited to 'TCL')
-rw-r--r-- | TCL | 169 |
1 files changed, 0 insertions, 169 deletions
@@ -1,169 +0,0 @@ -Article 1475 of comp.lang.tcl: -Path: netlabs!news!usc!cs.utexas.edu!sun-barr!ames!agate!sprite.Berkeley.EDU!ouster -From: ouster@sprite.Berkeley.EDU (John Ousterhout) -Newsgroups: comp.lang.tcl -Subject: Planning for Tcl 7.0 -Message-ID: <1avu22INN5ao@agate.berkeley.edu> -Date: 8 Oct 92 00:06:26 GMT -Organization: U.C. Berkeley Sprite Project -Lines: 156 -NNTP-Posting-Host: tyranny.berkeley.edu - - -For the last year I've made only small changes to Tcl while focussing -on the canvas and text widgets for Tk. I'm now making plans to catch -up on a bunch of much-needed bug fixes and enhancements to Tcl. Some -of the changes I'm considering are not backwards-compatible. The -purpose of this message is to let know know what changes I'm considering -for Tcl 7.0 and to solicit feedback. I'm particularly interested in -comments on the changes that are incompatible: I'll probably drop -the changes for which I get lots of negative feedback and not much -positive feedback. If there are other changes that you think are -important but aren't contained on this list, let me know and I may add -them. - -Incompatible changes: ---------------------- - -The changes listed below are likely to require changes to existing -scripts and/or C code. Each change includes an explanation of why the -change might be useful. I'd like to know whether or not you think the change -is useful enough to justify the incompatibility. - -1. Eliminate the "|" option in the "open" command. Instead, add a -"popen" command that does the same thing. Rationale: in the current -implementation you can't open a file whose name begins with "|". -Also, I think the "popen" command would be more logical. - -2. Eliminate the Tcl_WaitPids procedure and use the waitpid POSIX call -instead. Also change the wait code to periodically poll for dead -child processes so that zombie processes don't get left around forever. -Rationale: the current code tends to leave zombies around in some -situations. Switching to waitpid should solve this problem in a -relatively portable fashion. The only incompatibility will be for -C procedures that call Tcl_WaitPids; they'll have to switch to call -waitpid instead. I'll provide a compatibility version of waitpid for -use on systems that don't have it yet. - -3. Clean up backslash processing in several ways: - - Change backslash-newline to eat up all the whitespace following the - newline and replace the sequence with a single whitespace character. - Right now it only eats up the newline character and replaces it - with an empty string. Rationale: this would be more consistent - with other programs that process backslash-newline sequences. - - Eliminate the sequences \Mxx, \Cxxx, and \e. - Rationale: these sequences are left around from ancient times. - They're not particular compatible with any other program. I - should have removed them in Tcl 6.0 but didn't. They did get - removed from the documentation, however, so no-one should be - using them (?). - - Change \x (where x is not one of the characters that gets special - backslash treatment) to expand to x, not \x. - Rationale: the current behavior is inconsistent with all other - programs I know of that handle backslashes, and I think it's - confusing. - - Change "format" so it doesn't do an additional layer of backslash - processing on its format string. - Rationale: I don't know why it currently behaves as it does, and - I think it's confusing. - -4. Change "regsub" so that when no match occurs it sets the result -variable to the original string, rather than leaving it unmodified. -Rationale: the current behavior results in extra tests of the regsub -result that could sometimes be avoided with the proposed new behavior. -I doubt that there's much code that will break with the change (this -would have to be code that depends on the result variable *not* being -modified). - -5. Change the name "UNIX" in the "errorCode" variable to "POSIX". -Rationale: I suspect that I'm eventually going to get a call from the -USL lawyers on this one if I don't change it. Better to change it now -in an orderly fashion so I don't have change it hastily in the future. - -6. Change glob to return only the names of existing files. -Rationale: at present "glob */foo" expands * and generates a result -without checking to see if each directory has a "foo" file in it. This -makes the current behavior incompatible with csh, for example. One -question is whether constructs like "glob {a,b}.c" should also check for -the existence of each of the files. At present they don't (i.e. a.c and -b.c will be returned even if they don't exist), but neither does csh. My -inclination is to make the behavior match csh (names containing *?[] are -checked for existence, others aren't). I'd be interested to hear -opinions on this one: check all names for existence, check only names -including *?[] (for csh compatibility), or keep it as it is? - -7. Change "gets" so it returns 1 for success and 0 for failure. At present -it returns the line length for success and -1 for failure. -Rationale: this would allow slightly simple Tcl scripts: you could just -say - while [gets $f line] {...} -instead of - while {[gets $f line] >= 0} {...} -I'm not really convinced that this one is important enough to justify the -incompatibility, so it won't take much negative feedback to kill it. - -Other changes: --------------- - -The changes listed below shouldn't introduce substantial compatibility -problems. Of course, any change can potentially cause scripts to stop -working (e.g. almost any change will break the test suite), but very -few if any people should be affected by these changes. - -8. Implement Tcl_CreateExternVar() procedure along lines proposed by -Andreas Stolcke to tie a C variable to a Tcl variable with automatic -updates between them. - -9. Changes to exec: - - Allow redirection to an existing file descriptor in "exec", - with a mechanism like >&1 or >& stdout. - - Allow file names immediately after ">" and "<" without - intervening spaces. - -10. Changes related to files: - - Fix Scott Bolte bug (closing stdin and stdout). - - Move TclGetOpenFile and OpenFile stuff to tcl.h so that they're - accessible to applications. - - Extend access modes in open to include the complete set of POSIX - access modes (such as O_EXCL and O_NONBLOCK). - -11. Re-instate Tcl_WatchInterp to notify application when an interpreter -is deleted. - -12. Add "elseif" mechanism to "if" command for chaining "else {if ..." -constructs more cleanly. Require exact matches on "then" and "else" -keywords. - -13. Remove UNIX system call declarations from tclUnix.h. Use them from -unistd.h instead, and provide a default version of unistd.h for systems -that don't have one. - -14. Changes in the expr command, mostly following suggestions made by -George Howlett a long time ago: - - Increase precision of floating-point results. - - Make floating-point numbers always print with a point. - - Add transcendental functions like sin and exp. - - Add explicit integer and floating conversion operations. - - Don't promote large integers to floating-point automatically. - - Allow multiple arguments to expr command. - -15. Extend lsort to allow alternate sorting mechanisms, like numeric, -or client-supplied. - -16. Allow alternate pattern-matching forms (e.g. exact or regexp) for -lsearch and case. - -17. Add XPG/3 positional argument specifiers to format (code contributed -by Mark Diekhans). - -18. Change "file readlink" to return an error on systems that don't -support it rather than removing the option entirely. - -19. Add a mechanism for scheduling a Tcl command to be executed when the -interpreter reaches a clean point. This is needed for things like -signal support. - -20. Change upvar so that you can refer to an element of an array as -well as a whole array. - - |