Tcl7.5b3 and Tk4.1b3 on VMS

angel.li@rsmas.miami.edu

Introduction

A port of Tcl7.5b3 and Tk4.1b3 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.

What's New

All patches mailed to me since the a2 release have been integrated. The b3 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.

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.

One should be able to do asynchronous I/O to sockets and terminal devices. The geturl program posted by Brent Welch on comp.lang.tcl worked with this port. This has been the only test of the socket code.

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.0.4 library. The file dialog works as expected. 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.

12 April 1996 News

If you copied this Tcl/Tk release prior to noon 12 April 1996 EDT and you are using sockets, please retrive the distribution again. Sockets were really broken prior to this release (the DEC C socket routines were being used by accident). The geturl.tcl source is included in tcl-src.tgz for those that want to see and use actual socket code. The only files that changed were

I've been told that porting the socket code to UCX might not be doable. It seems that it is not possible to do an asynchronous accept. Also, I could never figure out how to do non-blocking I/O like Unix does it.

How to Get It

Using anonymous FTP, connect to mango.rsmas.miami.edu and cd to the directory /pub/VMS-tcl/tcl7.5b3-tk4.1b3. 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.0
multinet.patch Patch for Multinet header file.
tcl-src.tgz Patched source for TCL7.5b3
tix-src.tgz Patched source for Tix4.0.3
tk-src.tgz Patched source for TK4.0.3
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: 12 April 1996