|
|
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.