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:

File Description
alpha-bin.tgz Binary distribution for an Alpha
blt-src.tgz Patched source for BLT 2.1
multinet.patch Patch for Multinet header file.
tcl-src.tgz Patched source for TCL7.5
tix-src.tgz Patched source for Tix4.1a3
tk-src.tgz Patched source for TK4.1a3
vax-bin.tgz Binary distribution for a Vax

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