Tcl7.5 and Tk4.1 on VMS
angel.li@rsmas.miami.edu
Introduction
A port of Tcl7.5 and Tk4.1 is now available for VMS on both
Alphas and Vaxes. Shareable images of the Tcl and Tk
libraries are built by default and tclsh and wish
both link against them. Included in this port is an implementation of
the new Tcl command load, the command used to
dynamically load extensions. The BLT library is included and built as a
loadable module. Minimal testing was done on this port of Tcl. The
widget demo runs as does a medium-sized real-time data
display application written locally.
Tcl7.5/Tk4.1 is the first release that runs on Unix, MacOS and Windows.
I've heard from the folks at Sun and they are willing to include
the changes needed to build Tcl/Tk on VMS.
What's New
All patches mailed to me since the b3 release have been integrated.
This release of TCL/Tk adds support for TCP sockets. You
will need Multinet's product to
use sockets. I'm hoping someone does a port to UCX but I've been
told that it will be difficult to do. The latter was true when socket
connects where asynchronous. Since connects are now done syncronously
by default, it might be a different story.
I've added TCL channel handlers for VMS devices. These are used for
stdin, stdout and stderr. VMS mailboxes
should also work with this channel handler.
Thanks to Gerald Lester for shaking out
the socket code. He's the only one I've heard from that's used it.
The exec command can't read from SYS$INPUT:, it is assigned
to NL:. This restriction is due to the fact that there's an associated
mailbox attached to SYS$INPUT and lib$spawn fails. If anyone
knows how to fix this I would appreciate they get in touch with me.
Background processes (i.e. exec'ed with an &) seem
to work better.
I keep telling myself that support for pipes is doable but I haven't
had the need to do it. Hell, I think that
expect should port
to VMS.
I've included a port of Ioi Lam's Tix 4.1a3
library. I will also
fix the file dialog box so they work correctly on VMS. A shareable library
of the library is included in the binary release. To use it, either
edit the file tclIndex and add a load command for the
library or prefix your scripts with the line
load tix tix
This assumes that the logical names TIXSHR and TIX_LIBRARY
are defined. The Tix widget demo runs.
How to Get It
Using anonymous FTP, connect to
mango.rsmas.miami.edu and cd
to the directory /pub/VMS-tcl/tcl7.5-tk4.1.
Here's a description of the files found there:
Building From Sources
To build the release from sources, you'll have to get my port of
the BSD pmake program available in
mango.rsmas.miami.edu.
The file
pmake-alpha.tgz is the Alpha version and
pmake-vax.tgz is the Vax version. Sorry about using
this version of make but that is what I use daily on
both Unix and VMS. If someone converts makefile.vms
to an MMS makefile, I'll include it in the distribution and try to
keep it up to date.
Note that the DEC C compiler, version 5.2, was used to build this release
not the VAX C or GNU C compiler. The include files are all different for each
compiler and it was a major pain in the butt to maintain. If you don't
have this compiler I hope the binary release is sufficiently useful.
A patch needs to be applied to a Multinet header file,
multinet_common_root:[multinet.include.sys]types.h. There's a
conflict if this file and DEC's types.h are both included.
Binary-only Distribution
Binary-only distributions are also available. Included are only the
executables for tclsh and wish, the Tcl
and Tk libraries in .olb and shareable images format,
the Tcl/Tk library files and a command procedure that defines the
needed logical names and symbols to use Tcl/Tk on VMS.
For the Alpha binary-only distribution, fetch the file
alpha-bin.tgz. Fetch
vax-bin.tgz for the Vax version. Create a new directory and extract
the files from the compressed tar file. Edit the file
[.com]setup.com and run that command procedure
to define all needed logical names and DCL symbols.
Running
The logical names TCLSHR and TKSHR need to
point to the location where tclshr.exe and tkshr.exe
are stored. The logical names TCL_LIBRARY and
TK_LIBRARY need to point to the Tcl and Tk run-time library
files. The value of these logical names need to be specified in Unix
syntax, i. e. /dev/dir/tcl75/library
. They are specified
in this format to minimize the number of changes to the core files.
Bugs
I'm very interested in hearing about bugs in this port. Fixes are also
welcome.
Last Modified: 22 May 1996