Tcl 8.0p1 for Macintosh

by Ray Johnson
Sun Microsystems Laboratories
rjohnson@eng.sun.com

SCCS: @(#) README 1.30 97/11/20 22:01:16

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

The main new feature is the Tcl compilier.  You should certainly
notice the speed improvements.  Any problems are probably
generic rather than Mac specific.  If you have questions or
comments about the compilier feel free to forward them to the
author of the compilier: Brian Lewis <btlewis@eng.sun.com>.
Several things were fixed/changed since the a1 release so be
sure to check this out.

The largest incompatible change on the Mac is the removal of the
following commands: "rm", "rmdir", "mkdir", "mv" and "cp".  These
commands were never really supported and their functionality is
superceded by the file command.

I've also added in a new "AppleScript" command.  This was contributed
by Jim Ingham who is a new member of the Tcl group.  It's very cool.
The command isn't actually in the core - you need to do a "package
require Tclapplescript" to get access to it.  This code is officially
unsupported and will change in the next release.  However, the core
functionality is there and is stable enough to use.  Documentation 
can be found in "AppleScript.html" in the mac subdirectory.

The resource command has also been rewacked.  You can now read and
write any Mac resource.  Tcl now has the new (and VERY COOL) binary
command that will allow you to pack and unpack the resources into
useful Tcl code. We will eventually provide Tcl libraries for
accessing the most common resources.

See the main Tcl README for other features new to Tcl 8.0.

3. Mac specific features
------------------------

There are several features or enhancements in Tcl that are unique to 
the Macintosh version of Tcl.  Here is a list of those features and
pointers to where you can find more information about the feature.

* The "resource" command allows you manipulate Macintosh resources.
  A complete man page is available for this command.

* The Mac version of the "source" command has an option to source from
  a Macintosh resource.  Check the man page from the source command
  for details.

* The only command NOT available on the Mac is the exec command.
  However, we include a Mac only package called Tclapplescript that
  provides access to Mac's AppleScript system.  This command is still
  under design & construction.  Documentatin can be found in the mac
  subdirectory in a file called "AppleScript.html".

* The env variable on the Macintosh works rather differently than on
  Windows or UNIX platforms.  Check out the tclvars man page for
  details.

* The command "file volumes" returns the available volumes on your
  Macintosh.  Check out the file command for details.

* The command "file attributes" has the Mac specific options of
  -creator and -type which allow you to query and set the Macintosh
  creator and type codes for Mac files.  See file man page for details.

* We have added a template for creating a Background-only Tcl application.
  So you can use Tcl as a faceless server process.  For more details, see 
  the file background.doc.
  
If you are writing cross platform code but would still like to use
some of these Mac specific commands, please remember to use the
tcl_platform variable to special case your code.

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

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

mactcltk-full-8.0.1.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-8.0.1.sea.hqx

    This release contains the complete source for Tcl 8.0.  In
    addition, Metrowerks CodeWarrior libraries and project files
    are included.  However, you must already have the More Files
    package to compile this code.

5. Documentation
----------------

The "html" subdirectory contains reference documentation in
in the HTML format.  You may also find these pages at:

	http://sunscript.sun.com/man/tcl8.0/contents.html

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

6. Compiling Tcl
----------------

In order to compile Macintosh Tcl you must have the 
following items:

	CodeWarrior Pro 1
	Mac Tcl 8.0 (source)
	More Files 1.4.3

There are two sets of project files included with the package. The ones
we use for the release are for CodeWarrior Pro 1, and are not compatible
with CodeWarrior Gold release 11 and earlier. We have included the files
for earlier versions of CodeWarrior in the folder tcl8.0:mac:CW11 Projects,
but they are unsupported, and a little out of date.

As of Tcl8.0p2, the code will also build under CW Pro 2.  The only
change that needs to be made is that float.mac.c should be replaced by
float.c in the MacTcl MSL project file.

However, there seems to be a bug in the CFM68K Linker in CW Pro 2,
which renders the CFM68K Version under CW Pro 2 very unstable.  I am
working with MetroWerks to resolve this issue.  The PPC version is
fine, as is the Traditional 68K Shell.  But if you need to use the
CFM68K, then you must stay with CW Pro 1 for now.

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, MW_TclHeader68K or MW_TclHeaderCFM68K.

To build the fat version of TclShell, open the project file "TclShells.¼",
select the "TclShell" target, and build. All of the associated binaries will
be built automoatically. There are also targets for building static 68K
and Power PC builds, for building a CFM 68K build, and for building a
shared library Power PC only build.

Special notes:

* There is a small bug in More Files 1.4.3.  Also you should not use
  MoreFiles 1.4.4 - 1.4.6.  Look in the file named morefiles.doc for
  more details.

* You may not have the libmoto library which will cause a compile 
  error.  You don't REALLY need it - it can be removed.  Look at the
  file libmoto.doc for more details.

* Check out the file bugs.doc for information about known bugs.

If you have comments or Bug reports send them to:
Jim Ingham
jingham@eng.sun.com

