Tcl 7.6 for Macintosh by Ray Johnson Sun Microsystems Laboratories rjohnson@eng.sun.com SCCS: @(#) README 1.17 96/10/07 14:00:05 1. Introduction --------------- This is the README file for the Macintosh version of the Tcl scripting language. The file consists of information specific to the Macintosh version of Tcl. For more general information please read the README file in the main Tcl directory. 2. What's new? -------------- There are several new features in Tcl 7.6. The most important are the new file manipulation commands. These are subcommands to the file command and include "delete", "rename", "copy", and "mkdir". These should be used over the old "rm", "rmdir", "mkdir", and "cp" commands. The older commands will eventually be removed (they currently contain known bugs.) In addition, a new memory allocator has been added to the Mac version of Tcl. This allocator is much faster than the one shipped by MetroWerks (which is much faster than calling NewPtr directly). Having our own allocator will also allow us to have a little more control over memory useage. More work still needs to be done in this area - but the goal is to work around the fixed application partition imposed by the MacOS. The result will be less crashes of your Tcl applications. I hope you notice a difference. There is also a new command called "resource". This command should be considered "alpha" software. It mostly works but will be enhanced in the future. Backwards compatability will probably not be maintained. However, I think you will find it very usefull. Unfortunantly, the command doesn't currently have documentation - but you should be able to use the error messages to get an idea of what it does. Aside from bugs in the resource command, I know of no outstanding bugs in the Tcl core for the Macintosh. (I'm not saying there are none - just that I don't know about them!) Please let me know what bugs you find. Also, I welcome any feedback on how to improve the feature set, the integration with the Mac OS, or the distribution. 3. The Distribution ------------------- Macintosh Tcl is distributed in three different forms. This should make it easier to only download what you need. The packages are as follows: mactk4.2.sea.hqx This distribution is a "binary" only release. It contains an installer program that will install a 68k, PowerPC, or Fat version of the "Tcl Shell" and "Wish" applications. In addition, it installs the Tcl & Tk libraries in the Extensions folder inside your System Folder. (These are just text files - no inits are installed.) mactcltk-full-4.2.sea.hqx This release contains the full release of Tcl and Tk for the Macintosh plus the More Files packages which Macintosh Tcl and Tk rely on. mactcl-source-7.6.sea.hqx This release contains the complete source for Tcl 7.6. In addition, Metrowerks CodeWarrior libraries and project files are included. However, you must already have the More Files package to compile this code. 4. Documentation ---------------- The "html" subdirectory contains reference documentation in in the HTML format. You may also find these pages at: http://www.smli.com/research/tcl/man/ Other documentation and sample Tcl scripts can be found at the Tcl ftp site: ftp://ftp.neosoft.com/tcl/ The internet news group comp.lang.tcl is also a valuable source of information about Tcl. A mailing list is also available (see below). 5. Compiling Tcl ---------------- In order to compile Macintosh Tcl you must have the following items: CodeWarrior Release 8 or higher (newer is better) Mac Tcl 7.6 (source) More Files 1.4.3 The project files included with the Mac Tcl source should work fine. The only thing you may need to update are the access paths. Unfortunantly, it's somewhat common for the project files to become slightly corrupted. The most common problem is that the "Prefix file" found in the "C/C++ Preference" panel is incorrect. This should be set to MW_TclHeaderPPC or MW_TclHeader68K. Special notes: * Problem with dnr.c. You will also need to modify the file dnr.c which is supplied by MetroWerks and included by the Mac Tcl project files. This file uses C++ style comments which will not compile because the supplied project files have the "Strict ANSI" option set. The best thing to do is simply change the C++ style comments into standard ANSI comment blocks. You should also send a bug report to MetroWerks so they will fix this stupid problem. * There is a small bug in More Files 1.4.3. Look in the file named morefiles.doc for more details. * You may not have the libmoto library which will cause a compile error. Look at the file libmoto.doc for more details. * Check out the file bugs.doc for information about known bugs. 6. Environment Variables ------------------------ Environment variables may be added to the system via three different mechanisms. The first is automatic inclusion of system variables. These variables include things like the system folder path. These variables are determined at startup time (for the interpreter) but are not changed if the system changes. The following environment variables are created via this method: LOGIN - holds the Chooser name of the Macintosh USER - also holds the Chooser name of the Macintosh SYS_FOLDER - path to the system directory APPLE_M_FOLDER - path to the Apple Menu directory CP_FOLDER - path to the control panels directory DESK_FOLDER - path to the desk top directory EXT_FOLDER - path to the system extensions directory PREF_FOLDER - path to the preferences directory PRINT_MON_FOLDER - path to the print monitor directory SHARED_TRASH_FOLDER - path to the network trash directory TRASH_FOLDER - path to the trash directory START_UP_FOLDER - path to the start up directory PWD - path to the application's default directory Environment variables may also be placed in a file. A file named "Tcl Environment Variables" may be placed in the preferences folder. Each line of this file should be of the form "VAR_NAME=var_data". For example, PRINTER=Joe's LW TCLLIBPATH=Lozoya:System Folder:Tcl Lib The last alternative is to place environment variables in a 'STR#' resource named "Tcl Environment Variables" of the application. This is considered a little more "Mac like" than a Unix style Environment Variable file. Each entry in the 'STR#' resource has the same format as above. The source code file "tclMacEnv.c" contains the implementation of the env mechanisms. This file contains many #define's that allow customization of the env mechanisms to fit your applications needs. 7. Macintosh Tcl Mailing List ----------------------------- A Mailing List has been set up to discuss Macintosh related Tcl issues including (but not limited to) MacTcl. In order to use this Mailing List you must have access to the internet. If you have access to the WWW the home page for this mailing list is located at the following URL: http://www.smli.com/research/tcl/lists/mactcl-list.html The home page contains information about the list and an HTML archive of all the past messages on the list. To subscribe send a message to: listserv@sunlabs.sun.com In the body of the message (the subject will be ignored) put: subscribe mactcl Joe Blow Replacing Joe Blow with your real name, of course. If you would just like to receive more information about the list without subscribing but the line: information mactcl in the body instead. If you have comments or Bug reports send them to: Ray Johnson rjohnson@eng.sun.com