diff options
Diffstat (limited to 'vendor/x11iraf/obm/Tcl/README')
-rw-r--r-- | vendor/x11iraf/obm/Tcl/README | 346 |
1 files changed, 346 insertions, 0 deletions
diff --git a/vendor/x11iraf/obm/Tcl/README b/vendor/x11iraf/obm/Tcl/README new file mode 100644 index 00000000..9cb306f5 --- /dev/null +++ b/vendor/x11iraf/obm/Tcl/README @@ -0,0 +1,346 @@ +Tcl + +by John Ousterhout +University of California at Berkeley +ouster@cs.berkeley.edu + +1. Introduction +--------------- + +This directory contains the sources and documentation for Tcl, an +embeddable tool command language. The information here corresponds +to release 7.3. + +2. Documentation +---------------- + +The best way to get started with Tcl is to read the draft of my +upcoming book on Tcl and Tk, which can be retrieved using anonymous +FTP from the directory "ucb/tcl" on ftp.cs.berkeley.edu. Part I of the +book provides an introduction to writing Tcl scripts and Part III +describes how to write C code that uses the Tcl C library procedures. + +The "doc" subdirectory in this release contains a complete set of manual +entries for Tcl. Files with extension ".1" are for programs (for +example, tclsh.1); files with extension ".3" are for C library procedures; +and files with extension ".n" describe Tcl commands. The file "doc/Tcl.n" +gives a quick summary of the Tcl language syntax. To print any of the man +pages, cd to the "doc" directory and invoke your favorite variant of +troff using the normal -man macros, for example + + ditroff -man Tcl.n + +to print Tcl.n. If Tcl has been installed correctly and your "man" +program supports it, you should be able to access the Tcl manual entries +using the normal "man" mechanisms, such as + + man Tcl + +3. Compiling and installing Tcl +------------------------------- + +This release should compile and run "out of the box" on any UNIX-like +system that approximates POSIX, BSD, or System V. I know that it runs +on workstations from Sun, DEC, H-P, IBM, and Silicon Graphics, and on +PC's running SCO UNIX and Xenix. To compile Tcl, do the following: + + (a) Type "./configure" in this directory. This runs a configuration + script created by GNU autoconf, which configures Tcl for your + system and creates a Makefile. The configure script allows you + to customize the Tcl configuration for your site; for details on + how you can do this, see the file "configure.info". + + (b) Type "make". This will create a library archive called "libtcl.a" + and an interpreter application called "tclsh" that allows you to type + Tcl commands interactively or execute script files. + + (c) If the make fails then you'll have to personalize the Makefile + for your site or possibly modify the distribution in other ways. + First check the file "porting.notes" to see if there are hints + for compiling on your system. If you need to modify Makefile, + there are comments at the beginning of it that describe the things + you might want to change and how to change them. + + (d) Type "make install" to install Tcl binaries and script files in + standard places. You'll need write permission on /usr/local to + do this. See the Makefile for details on where things get + installed. + + (e) At this point you can play with Tcl by invoking the "tclsh" + program and typing Tcl commands. However, if you haven't installed + Tcl then you'll first need to set your TCL_LIBRARY variable to + hold the full path name of the "library" subdirectory. + +If you have trouble compiling Tcl, I'd suggest looking at the file +"porting.notes". It contains information that people have sent me about +changes they had to make to compile Tcl in various environments. I make +no guarantees that this information is accurate, complete, or up-to-date, +but you may find it useful. If you get Tcl running on a new configuration, +I'd be happy to receive new information to add to "porting.notes". I'm +also interested in hearing how to change the configuration setup so that +Tcl compiles on additional platforms "out of the box". + +4. Test suite +------------- + +There is a relatively complete test suite for all of the Tcl core in +the subdirectory "tests". To use it just type "make test" in this +directory. You should then see a printout of the test files processed. +If any errors occur, you'll see a much more substantial printout for +each error. See the README file in the "tests" directory for more +information on the test suite. + +5. Summary of changes in recent releases +---------------------------------------- + +Tcl 7.3 is a minor release that includes only one change relative to +Tcl 7.1 (it fixes a portability problem that prevented tclMain.c from +compiling on some machines due to a missing R_OK definition). Tcl 7.3 +should be completely compatible with Tcl 7.1 and Tcl 7.0. + +Tcl 7.2 was a mistake; it was withdrawn shortly after it was released. + +Tcl 7.1 is a minor release that consists almost entirely of bug fixes. +The only feature change is to allow no arguments in invocations of "list" +and "concat". 7.1 should be completely compatible with 7.0. + +Tcl 7.0 is a major new release that includes several new features +and a few incompatible changes. For a complete list of all changes +to Tcl in chronological order, see the file "changes". Those changes +likely to cause compatibility problems with existing C code or Tcl +scripts are specially marked. The most important changes are +summarized below. + +Tcl configuration and installation has improved in several ways: + + 1. GNU autoconf is now used for configuring Tcl prior to compilation. + + 2. The "tclTest" program no longer exists. It has been replaced by + "tclsh", which is a true shell-like program based around Tcl (tclTest + didn't really work very well as a shell). There's a new program + "tcltest" which is the same as "tclsh" except that it includes a + few extra Tcl commands for testing purposes. + + 3. A new procedure Tcl_AppInit has been added to separate all of the + application-specific initialization from the Tcl main program. This + should make it easier to build new Tcl applications that include + extra packages. + + 4. There are now separate manual entries for each of the built-in + commands. The manual entry "Tcl.n", which used to describe all of + the built-ins plus many other things, now contains a terse but + complete description of the Tcl language syntax. + +Here is a list of all incompatibilities that affect Tcl scripts: + + 1. There have been several changes to backslash processing: + - Unknown backslash sequences such as "\*" are now replaced with + the following character (such as "*"); Tcl used to treat the + backslash as an ordinary character in these cases, so both the + backslash and the following character would be passed through. + - Backslash-newline now eats up any white space after the newline, + replacing the whole sequence with a single space character. Tcl + used to just remove the backslash and newline. + - The obsolete sequences \Cx, \Mx, \CMx, and \e no longer get + special treatment. + - The "format" command no longer does backslash processing on + its input string. + You can invoke the shell command below to locate backslash uses that + may potentially behave differently under Tcl 7.0. This command + will print all of the lines from the script files "*.tcl" that may + not work correctly under Tcl 7.0: + egrep '(\\$)|(\\[^][bfnrtv\0-9{}$ ;"])' *.tcl + In some cases the command may print lines that are actually OK. + + 2. The "glob" command now returns only the names of files that + actually exist, and it only returns names ending in "/" for + directories. + + 3. When Tcl prints floating-point numbers (e.g. in the "expr" command) + it ensures that the numbers contain a "." or "e" so that they don't + look like integers. + + 4. The "regsub" command now overwrites its result variable in all cases. + If there is no match, then the source string is copied to the result. + + 5. The "exec", "glob", "regexp", and "regsub" commands now include a + "--" switch; if the first non-switch argument starts with a "-" then + there must be a "--" switch or the non-switch argument will be treated + as a switch. + + 6. The keyword "UNIX" in the variable "errorCode" has been changed to + "POSIX". + + 7. The "format" and "scan" commands no longer support capitalized + conversion specifiers such as "%D" that aren't supported by ANSI + sprintf and sscanf. + +Here is a list of all of the incompatibilities that affect C code that +uses the Tcl library procedures. If you use an ANSI C compiler then +any potential problems will be detected when you compile your code: if +your code compiles cleanly then you don't need to worry about anything. + + 1. Tcl_TildeString now takes a dynamic string as an argument, which is + used to hold the result. + + 2. tclHash.h has been eliminated; its contents are now in tcl.h. + + 3. The Tcl_History command has been eliminated: the "history" command + is now automatically part of the interpreter. + + 4. The Tcl_Fork and Tcl_WaitPids procedures have been deleted (just + use fork and waitpid instead). + + 5. The "flags" and "termPtr" arguments to Tcl_Eval have been eliminated, + as has the "noSep" argument to Tcl_AppendElement and the TCL_NO_SPACE + flag for Tcl_SetVar and Tcl_SetVar2. + + 6. The Tcl_CmdBuf structure has been eliminated, along with the procedures + Tcl_CreateCmdBuf, Tcl_DeleteCmdBuf, and Tcl_AssembleCmd. Use dynamic + strings instead. + + 7. Tcl_UnsetVar and Tcl_UnsetVar2 now return TCL_OK or TCL_ERROR instead + of 0 or -1. + + 8. Tcl_UnixError has been renamed to Tcl_PosixError. + + 9. Tcl no longer redefines the library procedures "setenv", "putenv", + and "unsetenv" by default. You have to set up special configuration + in the Makefile if you want this. + +Below is a sampler of the most important new features in Tcl 7.0. Refer +to the "changes" file for a complete list. + + 1. The "expr" command supports transcendental and other math functions, + plus it allows you to type expressions in multiple arguments. Its + numerics have also been improved in several ways (e.g. support for + NaN). + + 2. The "format" command now supports XPG3 %n$ conversion specifiers. + + 3. The "exec" command supports many new kinds of redirection such as + >> and >&, plus it allows you to leave out the space between operators + like < and the file name. For processes put into the background, + "exec" returns a list of process ids. + + 4. The "lsearch" command now supports regular expressions and exact + matching. + + 5. The "lsort" command has several new switches to control the + sorting process (e.g. numerical sort, user-provided sort function, + reverse sort, etc.). + + 6. There's a new command "pid" that can be used to return the current + process ids or the process ids from an open file that refers to a + pipeline. + + 7. There's a new command "switch" that should now be used instead + of "case". It supports regular expressions and exact matches, and + also uses single patterns instead of pattern lists. "Case" is + now deprecated, although it's been retained for compatibility. + + 8. A new dynamic string library has been added to make it easier to + build up strings and lists of arbitrary length. See the manual entry + "DString.3". + + 9. Variable handling has been improved in several ways: you can + now use whole-array traces to create variables on demand, you can + delete variables during traces, you can upvar to array elements, + and you can retarget an upvar variable to stop through a sequence + of variables. Also, there's a new library procedure Tcl_LinkVar + that can be used to associate a C variable with a Tcl variable and + keep them in sync. + + 10. New library procedures Tcl_SetCommandInfo and Tcl_GetCommandInfo + allow you to set and get the clientData and callback procedure for + a command. + + 11. Added "-errorinfo" and "-errorcode" options to "return" command; + they allow much better error handling. + + 12. Made prompts in tclsh user-settable via "tcl_prompt1" and + "tcl_prompt2" variables. + + 13. Added low-level support that is needed to handle signals: see + Tcl_AsyncCreate, etc. + +6. Tcl newsgroup +----------------- + +There is a network news group "comp.lang.tcl" intended for the exchange +of information about Tcl, Tk, and related applications. Feel free to use +the newsgroup both for general information questions and for bug reports. +I read the newsgroup and will attempt to fix bugs and problems reported +to it. + +7. Tcl contributed archive +-------------------------- + +Many people have created exciting packages and applications based on Tcl +and made them freely available to the Tcl community. An archive of these +contributions is kept on the machine harbor.ecn.purdue.edu. You can +access the archive using anonymous FTP; the Tcl contributed archive is +in the directory "pub/tcl". The archive also contains an FAQ ("frequently +asked questions") document that provides solutions to problems that +are commonly encountered by TCL newcomers. + +8. Support and bug fixes +------------------------ + +I'm very interested in receiving bug reports and suggestions for +improvements. Bugs usually get fixed quickly (particularly if they +are serious), but enhancements may take a while and may not happen at +all unless there is widespread support for them (I'm trying to slow +the rate at which Tcl turns into a kitchen sink). It's almost impossible +to make incompatible changes to Tcl at this point. + +The Tcl community is too large for me to provide much individual +support for users. If you need help I suggest that you post questions +to comp.lang.tcl. I read the newsgroup and will attempt to answer +esoteric questions for which no-one else is likely to know the answer. +In addition, Tcl support and training are available commercially from +NeoSoft. For more information, send e-mail to "info@neosoft.com". + +9. Tcl release organization +--------------------------- + +Each Tcl release is identified by two numbers separated by a dot, e.g. +6.7 or 7.0. If a new release contains changes that are likely to break +existing C code or Tcl scripts then the major release number increments +and the minor number resets to zero: 6.0, 7.0, etc. If a new release +contains only bug fixes and compatible changes, then the minor number +increments without changing the major number, e.g. 7.1, 7.2, etc. If +you have C code or Tcl scripts that work with release X.Y, then they +should also work with any release X.Z as long as Z > Y. + +Beta releases have an additional suffix of the form bx. For example, +Tcl 7.0b1 is the first beta release of Tcl version 7.0, Tcl 7.0b2 is +the second beta release, and so on. A beta release is an initial +version of a new release, used to fix bugs and bad features before +declaring the release stable. Each new release will be preceded by +one or more beta releases. I hope that lots of people will try out +the beta releases and report problems back to me. I'll make new beta +releases to fix the problems, until eventually there is a beta release +that appears to be stable. Once this occurs I'll remove the beta +suffix so that the last beta release becomes the official release. + +If a new release contains incompatibilities (e.g. 7.0) then I can't +promise to maintain compatibility among its beta releases. For example, +release 7.0b2 may not be backward compatible with 7.0b1. I'll try +to minimize incompatibilities between beta releases, but if a major +problem turns up then I'll fix it even if it introduces an +incompatibility. Once the official release is made then there won't +be any more incompatibilities until the next release with a new major +version number. + +10. Compiling on non-UNIX systems +-------------------------------- + +The Tcl features that depend on system calls peculiar to UNIX (stat, +fork, exec, times, etc.) are now separate from the main body of Tcl, +which only requires a few generic library procedures such as malloc +and strcpy. Thus it should be relatively easy to compile Tcl for +non-UNIX machines such as MACs and DOS PC's, although a number of +UNIX-specific commands will be absent (e.g. exec, time, and glob). +See the comments at the top of Makefile for information on how to +compile without the UNIX features. |