summaryrefslogtreecommitdiff
path: root/TCL
diff options
context:
space:
mode:
Diffstat (limited to 'TCL')
-rw-r--r--TCL169
1 files changed, 0 insertions, 169 deletions
diff --git a/TCL b/TCL
deleted file mode 100644
index 5409bbf430..0000000000
--- a/TCL
+++ /dev/null
@@ -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.
-
-