|
|
1.1 root 1: Tcl
2:
3: by John Ousterhout
4: University of California at Berkeley
5: [email protected]
6:
7: 1. Introduction
8: ---------------
9:
10: This directory contains the sources and documentation for Tcl, an
11: embeddable tool command language. The information here corresponds
12: to release 6.4. This release is identical to the 6.3 release except
13: for a few bug fixes and one new feature (the Tcl_GlobalEval procedure).
14: The file "changes" has a complete list of all changes made to Tcl,
15: with incompatible changes specially marked. Tcl 6.4 has no incompatible
16: changes relative to 6.3.
17:
18: For an introduction to the facilities provided by Tcl, see the paper
19: ``Tcl: An Embeddable Command Language'', in the Proceedings of the
20: 1990 Winter USENIX Conference. A copy of that paper is included here
21: in Postscript form in the file "doc/usenix.ps" and in text form in the
22: file "doc/usenix.text". However, the paper corresponds to a much
23: earlier version of Tcl (approximately version 3.0), so some details
24: of the paper may not be correct anymore and there are many new features
25: not documented in the paper.
26:
27: 2. Documentation
28: ----------------
29:
30: The "doc" subdirectory contains a complete set of manual entries
31: for Tcl. The file "doc/Tcl.man" gives an overall description of the
32: Tcl language and describes the core Tcl commands. The other ".man"
33: files in "doc" describe the library procedures that Tcl provides for
34: Tcl-based applications. Read the "Tcl" man page first. To print any
35: of the man pages, cd to the "doc" directory and invoke your favorite
36: variant of troff using the normal -man macros, for example
37:
38: ditroff -man <file>
39:
40: where <file> is the name of the man page you'd like to print.
41:
42: 3. Machines supported
43: ---------------------
44:
45: If you follow the directions below, this release should compile
46: and run on the following configurations either "out of the box"
47: or with only trivial changes:
48:
49: - Sun-3's, Sun-4's, SPARCstation-1's and SPARCstation-2's running
50: many variants of SunOS, such as 4.1.
51: - DECstation-3100's and DECstation-5000's running many versions of
52: Ultrix, such as 2.0 and 4.2.
53: - DEC VAXes running many versions of Ultrix or BSD UNIX.
54: - Intel 386 based systems running SCO Unix 3.2v2.
55: - Intel 386 based systems running SCO Xenix 2.3.3.
56: - Intel 386 based systems running Bell-Tech (now Intel) Unix 3.2.0.
57: - Silicon Graphics systems running IRIX 4.0.
58: - Various H-P machines running versions of HP-UX such as 7.05
59: - Sequent Symmetry running versions of Dynix/ptx such as v1.2.4
60:
61: If you find problems running Tcl on any of the above configurations,
62: please let me know. Also, if you are able to compile Tcl and run the
63: test suite successfully on configurations not listed above, please
64: let me know and tell me what changes, if any, you needed to make to
65: do it. I'd like to keep the above list up-to-date and continue to
66: improve the portability of Tcl.
67:
68: Tcl can be used on many other configurations with only a few
69: modifications. The file "porting.notes" contains information sent to
70: me about what it took to get Tcl to run on various other configurations.
71: I make no guarantees that this information is accurate or complete, but
72: you may find it useful. If you get Tcl running on a new configuration,
73: I'd be deligted to receive new information to add to "porting.notes".
74:
75: 4. Compiling Tcl
76: ----------------
77:
78: To compile Tcl on any of the configurations listed above, or systems
79: similar to them, do the following:
80:
81: (a) If your system isn't one of the ones listed above, look in the
82: file "porting.notes" to see if your system is listed there. This
83: file contains additonal notes on getting Tcl to run on various
84: other systems.
85:
86: (b) Edit the "set" commands at the beginning of the file "config"
87: if necessary to correspond to your system configuration (they
88: should already be right for most versions of Unix).
89:
90: (c) Type "./config" in the top-level directory. "Config" is a script
91: that pokes around in your system to see if certain almost-standard
92: things are missing (header files, library procedures, etc.);
93: if your system doesn't seem to have them, it configures Tcl to
94: use its own copies of these things instead (Tcl's copies are
95: kept in the "compat" subdirectory). Config prints out messages
96: for all the substitutions it made. You can ignore any of the
97: messages unless they say "ERROR!!"; in this case something is
98: fundamentally wrong and the config script couldn't handle your
99: system configuration.
100:
101: (d) Type "make" to compile the library. This will create the Tcl
102: library in "libtcl.a". The Makefile should work without any
103: modifications but you may wish to personalize it, e.g. to
104: turn on compiler optimization.
105:
106: (e) If the combination of "config" and "make" doesn't work for you,
107: then I suggest the following approach:
108: - Start again with a fresh copy of the distribution.
109: - Set the #defines that appear at the very front of
110: tclUnix.h (before the first #include) to correspond
111: to your system.
112: - Modify Makefile to set CC, CFLAGS, etc. for your system.
113: - If things don't compile or don't link, then you may need
114: to copy some of the .c or .h files from the "compat"
115: directory into the main Tcl directory to compensate for
116: files missing from your system. Modify the COMPAT_OBJS
117: definition in Makefile to include a .o name for each of
118: the .c files that you copied up from the compat directory.
119:
120: (f) Create a directory /usr/local/lib/tcl and copy all the files
121: from the "library" subdirectory to /usr/local/lib/tcl. Or,
122: you can use some other directory as library, but you'll need
123: to modify the Makefile to reflect this fact (change the
124: TCL_LIBRARY definition).
125:
126: (g) Type "make tclTest", which will create a simple test program that
127: you can use to try out the Tcl facilities. TclTest is just a
128: main-program sandwich around the Tcl library. It reads standard
129: input until it reaches the end of a line where parentheses and
130: backslashes are balanced, then sends everything it's read to the
131: Tcl interpreter. When the Tcl interpreter returns, tclTest prints
132: the return value or error message. TclTest defines a few other
133: additional commands, most notably:
134:
135: echo arg arg ...
136:
137: The "echo" command prints its arguments on standard output,
138: separated by spaces.
139:
140: 5. Test suite
141: -------------
142:
143: There is a relatively complete test suite for all of the Tcl core in
144: the subdirectory "tests". To use it just type "make test" in this
145: directory. You should then see a printout of the test files processed.
146: If any errors occur, you'll see a much more substantial printout for
147: each error. Tcl should pass the test suite cleanly on all of the
148: systems listed in Section 3. See the README file in the "tests"
149: directory for more information on the test suite.
150:
151: 6. Compiling on non-UNIX systems
152: --------------------------------
153:
154: The Tcl features that depend on system calls peculiar to UNIX (stat,
155: fork, exec, times, etc.) are now separate from the main body of Tcl,
156: which only requires a few generic library procedures such as malloc
157: and strcpy. Thus it should be relatively easy to compile Tcl for
158: these machines, although a number of UNIX-specific commands will
159: be absent (e.g. exec, time, and glob). See the comments at the
160: top of Makefile for information on how to compile without the UNIX
161: features.
162:
163: 7. Special thanks
164: -----------------
165:
166: Mark Diekhans and Karl Lehenbauer of Santa Cruz Operation deserve special
167: thanks for all their help during the development of Tcl 6.0. Many of the
168: new features in Tcl 6.0 were inspired by an enhanced version of Tcl 3.3
169: called Extended Tcl 4.0, which was created by Mark, Karl, and Peter
170: da Silva. Mark and Karl explained these features to me and provided
171: excellent (and challenging) feedback during the 6.0 development process.
172: They were also a great help in finding and fixing portability problems.
173: Without their ideas and assistance Tcl 6.0 would be much less powerful.
174:
175: 8. Support
176: ----------
177:
178: There is no official support organization for Tcl, and I can't promise
179: to provide much hand-holding to people learning Tcl. However, I'm very
180: interested in receiving bug reports and suggestions for improvements.
181: Bugs usually get fixed quickly (particularly if they are serious), but
182: enhancements may take a while and may not happen at all unless there
183: is widespread support for them.
184:
185: 9. Tcl newsgroup
186: -----------------
187:
188: There is a network news group "comp.lang.tcl" intended for the exchange
189: of information about Tcl, Tk, and related applications. Feel free to use
190: this newsgroup both for general information questions and for bug reports.
191: I read the newsgroup and will attempt to fix bugs and problems reported
192: to it.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.