|
|
1.1 root 1:
2: *** README.EXTD - README file for Extended Tcl ***
3:
4:
5: EXTENDED TCL
6: ============
7:
8: Extended Tcl (TclX), defines a set of extensions to Tcl 6.4, the Tool
9: Command Language invented by Dr. John Ousterhout of the University of
10: California at Berkeley. Tcl is a powerful, yet simple embeddable programming
11: language. Extended Tcl is oriented towards system programming tasks, with
12: many additional interfaces to the Unix operating system, It is upwardly
13: compatible with Tcl 6.4. You take the Extended Tcl package, add it to Tcl
14: 6.4, and from that you get Extended Tcl. (Berkeley Tcl is not included in
15: this distribution, obtain it from sprite.berkeley.edu).
16:
17: Support is also included for building a Tk wish shell with the Extended Tcl
18: command set.
19:
20: Extended Tcl was designed and implemented by Karl Lehenbauer
21: ([email protected]) and Mark Diekhans ([email protected]), with help in the
22: early stages from Peter da Silva ([email protected]).
23:
24: As with Berkeley Tcl, all of Extended Tcl is freely redistributable,
25: including for commercial use and resale.
26:
27:
28: FEATURES ADDED BY EXTENDED TCL
29: ==============================
30:
31: Here is a summary of the features added by Extended Tcl. For more details
32: on the commands and functionality provided by Extended Tcl, see the manual
33: page man/TclX.man.
34:
35: o A shell, which provides an environment for developing and executing
36: Tcl programs.
37:
38: o Advanced Tcl code library facility.
39:
40: o General purpose commands which define new programming constructs,
41: debugging and profiling facilities.
42:
43: o Unix access commands provide access to many Unix system calls, including
44: process management.
45:
46: o File I/O commands provided added facilities for accessing and
47: manipulating open files.
48:
49: o File scanning facility that provides awk-like functionality.
50:
51: o Math commands (random, sin, cos, etc).
52:
53: o Extended list manipulation commands
54:
55: o Keyed lists, a type of list that provided functionality similar to C
56: structures.
57:
58: o Extended string and character manipulation commands.
59:
60:
61: NEW FEATURES IN THIS RELEASE
62: ============================
63:
64: o All known bugs are fixed.
65:
66: o Configuration has been simplified.
67:
68: o Improved support for Tk. Including building a wish with signal support
69: and building a Tk package library.
70:
71: o All floating point functions (sin, cos, etc). Now take expressions
72: as arguments. Floating point numbers will not be demoted to integers
73: or lose precision.
74:
75: o The standard Tcl expr command is patched so that floating point numbers
76: do not get demoted to integers or lose precision. This patch has been
77: submitted to John Ousterhout.
78:
79: o The character string manipulation commands take integer expressions
80: for positions and lengths.
81:
82: o The performance of the loading of package library indices and the
83: loading of packages from the libraries has been improved.
84:
85: o A performance profiling facility has been added.
86:
87: o The alarm command will take fractions of a second on systems with the
88: setitimer system call.
89:
90: o Fcntl and fstat are easier to use.
91:
92: o Better signal handling on systems with Posix signals.
93:
94: o And more. Review "TclX.man" and "CHANGES" for full details.
95:
96: ON-LINE HELP
97: ============
98:
99: There is a help system included with Extended Tcl. It contains some
100: documentation on every command in Berkeley Tcl, and Extended Tcl. You can
101: invoke it interactively from within Extended Tcl by typing "help".
102:
103: Once you bring Tcl up and have gotten it to pass all the tests, try typing
104: "help help" to learn how to use help.
105:
106: MANUAL PAGES
107: ============
108:
109: Man pages in nroff/troff format are provided for all of Tcl and the
110: extensions in the directory tclX6.4c/man. Start with the TclX.man manual.
111:
112: EXTENDED TCL VERSION NAMING
113: ===========================
114:
115: Extended Tcl takes its version number from the corresponding version of
116: Berkeley (Ousterhout) Tcl upon which it is based, with the addition of a
117: trailing letter in case there are multiple releases of Extended Tcl within a
118: single release of Berkeley Tcl. This release is TclX 6.4c.
119:
120: INTERFACING TCL AND C++
121: =======================
122:
123: C++ programmers can include the file "tcl++.h" to define C++ classes
124: that can be used to access a Tcl interpreter. This is based on Tcl
125: C++ classes originally developed by Parag Patel.
126:
127: TCL DIRECTORY HIERARCHY
128: =======================
129:
130: Here is an overview of the directory hierarchy:
131:
132: top_level_directory
133:
134: tcl6.4 tclX6.4c tk2.3
135:
136: The tcl6.4 directory contains Berkeley Tcl, unmodified and tk2.3 contains
137: unmodified tk2.3, if you plan to use Tk These locations are only suggested,
138: they maybe changed by editing tclX6.4c/Config.mk.
139:
140: The following directories are included under the tclX6.4c directory:
141:
142: o config - Configuration files for various Unix versions.
143:
144: o man - Unformated manual pages for TclX.
145:
146: o src - The main source for TclX.
147:
148: o osSupport - Library routines required by TclX that may not be available
149: on all Unix versions.
150:
151: o ucbsrc - A makefile and sed scripts used to modify source files that
152: are supplied with UCB Tcl. The files are modified with sed so you don't
153: have to have patch to build Tcl, however context diffs are provided if
154: problems occur porting to a new version of Tcl.
155:
156: o tclsrc - Tcl source that is built into the Tcl package library.
157:
158: o tcllib - Tcl source and runtime environment that is required to run TclX.
159:
160: o tcllib/help - Help files for Tcl and TclX.
161:
162: o tests - Tests for TclX.
163:
164: o tkucbsrc - A makefile and sed scripts used to modify source files that
165: are supplied with Tk to add in TclX functionality. Context diffs are
166: also provided.
167:
168: o tksrc - A makefile that builds a version of the Tk wish shell containing
169: Extended Tcl.
170:
171: o experimental - An directory of expermintal and contributed Tcl source.
172: The code is not normally built as part of TclX.
173:
174: HOW TO BUILD IT
175: ===============
176:
177: Please read TclX.man in the tclX6.4c/man directory before starting the
178: engine or working under the hood.
179:
180: Configure and build Berkeley Tcl as described in that distribution. Don't
181: forget to do a "csh config" before running make for the first time.
182:
183: Cd to the "tclX6.4c" directory, which contains this distribution. Edit the
184: file "Config.mk" to configure Extended Tcl for your Unix version and your
185: preferences. The first part of this file contains user preference options,
186: including the location of the Berkeley Tcl source and, optionally, the Tk 2.3
187: source. A macro TCL_CONFIG_FILE is also defined that points to a Unix system
188: configuration file in the "config" directory. There should be one there for
189: your system. If not, you will have to develop one based on the documentation
190: in "Config.mk". If you develop or fix problems in a configuration file,
191: please send it to us at the address below.
192:
193: Now do a "make". If all goes well, this will augment the tcl.a library
194: will all of the functions defined by both Berkeley and Extended Tcl, and
195: create an executable version of tcl in the "tclX6.4c" directory called, simply
196: enough, "tcl". A "wish" executable will be also built if it was requested.
197:
198: Until the Extended Tcl runtime files are installed, "tcl" and "wish" can't
199: be run directly. To run them before installation, use "runtcl" or "runwish".
200:
201: Next enter the command "runtcl" and, if everything worked, you should be
202: greeted by a tcl prompt:
203:
204: tcl>
205:
206: Note that until Extended Tcl is installed, it will only run while in the
207: tclX6.4c directory.
208:
209: RUN TESTS TO INSURE THAT TCL IS WORKING PROPERLY
210: ================================================
211:
212: Tcl and TclX come with over 1400 tests that you can run to insure that it
213: is working properly. These tests have greatly helped us while working on Tcl
214: by detecting bugs that get introduced accidentally as side-effects of changes.
215: Consequently, we have found Tcl to be very reliable, and have had very few
216: cases where a new release has regressed by introducing new bugs in old
217: functions, or reintroducing old bugs in old functions.
218:
219: There are two sets of tests: the tests from Berkeley Tcl, and tests for
220: Extended Tcl, which test both the new commands added by Extended Tcl and the
221: procedures defined in the Tcl procedure library.
222:
223: Run both the Berkeley and TclX tests by typing "make test" in the Extended
224: directory.
225:
226: If a test fails, please dig into the test and the C source for the function
227: being tested, fix the bug and mail us the change. If you're not inclined to
228: do this, please report the problem, including the output of the test, to
229: [email protected]. Sometimes tests fail due to problems in the system
230: environment or bugs in that test rather than problems with TclX. Even if a few
231: of the tests fail, you probably still have a working TclX.
232:
233: If you're having trouble with the Berkeley tests, and you suspect that the
234: extensions might be involved, you can build a special minimal version of
235: Berkeley Tcl by cd'ing to the tcl6.4 directory and doing a "make tclTest".
236: You can then invoke "tclTest", where you should be greeted by a "%" prompt.
237: Next, cd to the tests directory and do a "source all".
238:
239: Note that the Berkeley tests turn off tcl's ability to autoload procedures
240: from the Tcl source library, so after running the tests, you should usually
241: exit Tcl and restart it.
242:
243: INSTALLING EXTENDED TCL
244: =======================
245:
246: To install Extended Tcl, edit the tclX6.4c/Config.mk installation
247: configuration section to match your preferences. Read the information in the
248: Makefile carefully before configuring it. Cd to the tclX6.4c directory and do
249: a "make install" (normally as root). This will install include files and
250: manual pages for Berkeley Tcl and TclX, as well as the TclX binary and
251: library.
252:
253: The Tcl default file may be used to install more than one version of
254: TclX on a system.
255:
256: MAKING EXECUTABLE TCL SCRIPTS
257: =============================
258:
259: It is common to want to write Tcl scripts, put them in a directory along
260: your search path, and execute them just like you do with shell scripts.
261:
262: On systems that support the "#!" convention, you can put a
263:
264: #!/usr/local/bin/tcl
265:
266: as the first line of your script, and executing the script will
267: automatically invoke tcl to process it. Of course if you install
268: Tcl somewhere else, you'll use a different path.
269:
270: For systems that don't support this convention (most System V
271: systems, for example), it is probably best to create a shell
272: script that does something like:
273:
274: exec tcl commandfile.tcl
275:
276:
277: PACKAGE LIBRARIES
278: =================
279:
280: Package Libraries are a Tcl source code management tool included in
281: this release. Package libraries allow you to group Tcl procedures into
282: logical bundles and create single files, libraries, that contain multiple
283: packages. The package code provides a low-overhead means of automatically
284: demand-loading a package on the first attempt to execute one of the procedures
285: defined within it. As such, package libraries provide a mechanism to
286: accommodate the creation of Tcl applications and libraries of a substantial
287: size.
288:
289: SUPPORT FOR EXTENDED TCL
290: ========================
291:
292: We are committed to providing continuing support for Extended Tcl. Please
293: send questions, bug reports, and bug fixes to:
294:
295: [email protected] (uupsi!sugar!tcl-project)
296:
297: Or leave a note on our BBS at (713) 684-5900
298:
299: SEND US YOUR LIBRARY ROUTINES
300: =============================
301:
302: If you write a useful Tcl procedure and would like to share it with
303: everyone, send us a copy and we'll consider it for the Tcl library!
304:
305: COMPATIBILITY WITH TCLX 6.2b
306: ============================
307:
308: We have attempted to main backwards-compatibility with older versions
309: of TclX. A few changes were made to enhance usability or fix problems that
310: have introduced a few incompatibilities, these are listed below. Remember
311: that multiple versions of Tcl may be installed on a system using the Tcl
312: default file. This is useful when converting applications to the new version.
313:
314: o The "wait" command only takes one pid. This is in anticipation of
315: supporting full waitpid functionallity in the wait command. This will
316: be available as soon as it is supported in UCB Tcl.
317:
318: o The -i flag has been dropped from the "chmod" command. It now assumes
319: that the number is decimal unless prefixed by a 0.
320:
321: o The "fcntl" command has been changed to use Posix defined flag names.
322: NDELAY has been renamed NONBLOCK and CLEXEC is now CLOEXEC. The command
323: no longer returns a list of current values, instead individule values
324: may be queried.
325:
326: o The format of the data returned by "signal get" has changed. Enough
327: information is now returned to be able to reset signals.
328:
329: o The "fstat" command has changed to make it easier to get single values,
330: consequently the syntax to return stat data in an array has changed.
331:
332: o A parameter has been added to the Tcl_GetKeyedListKeys C function.
333:
334: o The format of package library index files (.tndx) has changed. These
335: should be purged and rebuilt.
336:
337: o Added an options argument to Tcl_Startup. It is not currrently used.
338:
339:
340: CAVEATS
341: =======
342:
343: Although Extended Tcl compiles and executes the tests properly on SCO Unix
344: System V/3.2.4, Xenix System V/386, and SunOS, it has not had much use under
345: Xenix System V/386.
346:
347: comp Previous versions of Extended Tcl have also run under Berkeley BSD, HP-UX
348: and Xenix/286. This release, however, has not been tested on these machines,
349: although there is configuration information in the makefile for BSD and HP-UX,
350: and Extended Tcl should come up fairly easily on these machines.
351:
352: Do not create any set-user-id versions of Tcl yet. There are holes in
353: the startup sequence involving shell variables and default files that need
354: to be plugged first.
355:
356: MAILING LISTS AND NEWSGROUPS FOR TCL
357: ====================================
358:
359: A Usenet newsgroup, comp.lang.tcl, is dedicated to discussing Tcl, Tk and
360: the applications that embed it.
361:
362: WHERE TO GET IT
363: ===============
364:
365: Tcl 6.4 is available via anonymous ftp from:
366:
367: sprite.berkeley.edu:tcl/tcl6.4.tar.Z
368: or
369: ftp.uu.net:languages/tcl/tcl6.4.tar.Z
370:
371: Extended Tcl 6.4c can be downloaded by anonymous FTP from:
372:
373: sprite.berkeley.edu:tcl/tclX6.4c.tar.Z
374: or
375: barkley.berkeley.edu:tcl/extensions/tclX6.4c.tar.Z
376: or
377: ftp.uu.net:languages/tcl/tclX6.4c.tar.Z
378:
379: A contributed sources archive resides on barkley.berkeley.edu.
380:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.