[comp.sources.d] Looking for Lastest Tcl

rme@olympia.unet.com (Richard Emberson) (03/29/91)

I'm looking for the lastest version of TcL (Tool Command Language)
written by J. Ousterhout at ucb.

I've got version 3.3 circa 3/90.

Pointers to later releases or applications written using Tcl would
be appreciated.

Richard Emberson
rme@olympia.net.com

karl@ficc.ferranti.com (Karl Lehenbauer) (04/03/91)

In article <1326@unet.UUCP> rme@olympia.unet.com (Richard Emberson) writes:
>I'm looking for the lastest version of TcL (Tool Command Language)
>written by J. Ousterhout at ucb.
>I've got version 3.3 circa 3/90.
>Pointers to later releases or applications written using Tcl would
>be appreciated.

Tcl 4.0, a Unix/Xenix Tcl programming environment that includes a bunch
of extensions to 3.3 to provide enhanced string and list operations,
stdio-style I/O, file scanning, associative arrays and so forth, is
available from

media-lab.media.mit.edu (18.85.0.2)  ~ftp/tcl-4.0-pl1.tar.Z

We are about to release a new version, tentatively titled 4.1, but we
will probably start calling it TclU (Tcl for Unix) or something similar.

To get on our mailing list, send email to tcl-users-request@hackercorp.com
(uunet!sugar!tcl-users-request).

I have included extracts from the README file for the 4.0 release below...

WELCOME TO TCL
==============

Welcome to Tcl, a string processing language and programming environment
for the Unix operating system.

This is release 4.0, a beta release made to the Usenet alt.sources newsgroup
beginning on Sunday, December 16th, 1990.


WHAT TCL IS
===========

Tcl stands for "Tool command language", and was invented by Dr. John
Ousterhout and his graduate students at the University of California
at Berkeley.  (For a rationale for why Tcl was invented, a paper was
presented at the Winter '90 Usenix and is available in the proceedings 
of that conference.  It is also included in machine-readable form in
this release, as the postscript file tcl/baseline/man/usenix.ps.
For those without postscript printing capability, a text file called
tcl/baseline/man/usenix.text is provided.)

Tcl is pronounced "tickle," although a lot of people (including us most of
the time) call it T-C-L.


WHAT THIS TCL IS
================

This release of Tcl builds on Ousterhout's embeddable interpreter to provide
Unix with a powerful string and file processing language that is easy
to learn, understand and write understandable programs in.  

Tcl achieves its power without sacrificing elegance and simplicity by
keeping the syntax simple and implementing most operations as Tcl 
subroutines.

In our experience, large scripts written in Tcl tend to run around ten to 
twenty times faster than large Bourne shell scripts calling the usual
mix and density of sed, awk, grep, expr and so forth.

The Unix extensions were invented and implemented by Karl Lehenbauer
(karl@hackercorp.com), Mark Diekhans (uunet.uu.net!cruzio!osprey!markd)
and Peter da Silva (peter@hackercorp.com) with help from Jordan Henderson
(jordan@hackercorp.com).  They consist of extensions to Tcl to support
extended string and list operations, stdio-style I/O to files and pipelines,
scanning files for regular expressions and executing Tcl code when they're
found, sorting, sorted file searching, associative arrays (arrays with
arbitrary indexes and values), fork/wait/kill/exec Unix multitasking
operations, extensions for interactive use as a shell and awk-like command-
line operation, automatic loading of tcl source based on the invocation of
tcl under an alias name (with complete Tcl access to command line arguments),
"load on first call" demand-loading of Tcl procedures from files and Tcl
source libraries, a trace capability, and more.  (Planned future extensions
are described later in this document.)


MANY UNIX SYSTEMS ARE SUPPORTED
===============================

This release of Tcl should compile and run under most Unix System V 3.2.0
and 3.2.2 systems, Xenix, HP-UX and BSD 4.3 systems.  It should be close
on a lot of others.  Care has been taken to ensure that Tcl runs properly
on the Intel 80286.  

Tcl has been tested on:

	SCO Unix 3.2.2
	SCO Xenix System V
	Microsoft Xenix/286 Rev 3.5 Zap 14
	Intel/Bell Technologies Unix System V/3.2.0
	BSD 4.3 on a Vax


C PROGRAMMERS CAN USE THIS PACKAGE TO BUILD TCL INTO THEIR APPLICATIONS, TOO
============================================================================

As an embeddable interpreter, Tcl offers a powerful, plug-in-and-go
programming language that saves the programmer who needs to provide
programmability in an application from having to design and implement his
or her own.  Tcl provides a better and more complete language than most
programmers have the time or inclination to write and could reduce the 
all-too-common proliferation of similar-but-incompatible embedded 
programming languages.

In addition to the Tcl programming environment for Unix, this release
also provides C programmers with everything they need to embed the
Tcl programming language into an existing application or to build a new
application and include Tcl within it.  C programmers (and people programming
in languages from which they can make C-compatible calls for that matter)
can link against the tcl.a library, which this package should produce when
you get it built successfully, to include all of the baseline capabilities,
plus any of our extensions that they like, plus any application-specific
extensions they add themselves to produce a package with a significant
runtime programmability.

We have found that including Tcl into large programs provides a good
way to decouple the bulk of the application from the user interface, 
allows sophisticated users to write programs to control the application,
shortens turnaround time during development, makes many debugging tasks
easier, and allows you to code tricky data processing tasks in just a
few lines of Tcl.


YOU CAN REUSE IT, GIVE IT AWAY OR SELL IT WITHOUT ROYALTIES
===========================================================

The code contained within this package is freely redistributable without
license or royalties of any kind provided the very unrestrictive copyright
terms (we're not responsible and Berkeley is not responsible for problems;
don't delete UCB's or our copyrights or otherwise pretend that you
wrote it) in the source code are met.


ON-LINE HELP
============

There is a help system included with Tcl.  It contains at least a bit of
documentation on every, or almost every, command.  You can invoke it 
interactively from within Tcl by typing "help".  The help files are
extracted from the manual pages.  See the "BUILD THE HELP FILES"
section later in this file for details.


MANUAL PAGES
============

Man pages in nroff/troff format are provided for all of Tcl and the
extensions.  These are in the "man" subdirectories of the top-level
baseline, extend, and tclsh directories.  The Tcl manual is file
Tcl.man in the baseline/src directory.  Other files in that directory
document the subroutines that support interfacing to Tcl from C.
Files in the extend/man directory document the Tcl-callable extensions.
Files in the tclsh/man directory document how packages (Tcl source
libraries) work, the insides of Tcl startup, and the procedures of
Tcl source library tcl.tlib.

As mentioned previously, a Usenix paper presented by Dr. Ousterhout is
provided as a Postscript file.  It contains an overview of Tcl, the
rationale for creating a new embeddable programming language rather
than using an existing one, speculations on future uses and so forth.
This file is usenix.ps in the baseline/man directory.

...


THE TCL SHELL
=============

The Tcl shell is an application built upon Tcl and the Tcl extensions.
It is contained within subdirectories of the tclsh directory and consists
of a simple main.c and associated files.  (You can use this as a template
for your own application's Tcl startup, if you add Tcl to one of your
applications.  In main.c, the various extensions are included by calling 
their associated Tcl_Initxxx routines.  You call the ones you want, then
link against the tcl.a library, and the linker should then be able to link
them into your application.)

The Tcl shell is not yet enough of a shell for you to abandon csh, ksh
or whatever your favorite shell is.  It is, however, a totally usable
environment for writing Tcl programs.  From the Tcl shell, you can type
in Tcl procedures, run any Tcl command or procedure with arguments,
display any or all procedures, trace Tcl with various trace options, and,
yes, kick off Unix programs, including other shells, optionally returning
their output as a string to Tcl, or using pipes to feed their input or
receive their output through our Tcl stdio package.

With a small amount of care, you can create your Tcl source files so
they will run standalone (i.e. run when specified from the Tcl command
line or a Tcl alias) or interactively (loaded into an interactive Tcl
environment by the "source" command).


PACKAGES
========

Packages are a Tcl source code management tool included in this release.
Packages allow you to group code into logical bundles and create single
libraries that contain multiple packages.  The package code provides a
low-overhead means of automatically demand-loading a package on the first
attempt to execute one of the procedures it defines.  Packages are
documented in more detail in tclsh/man/packages.man.

...

INCOMPATIBILITIES
=================

This version of Tcl was derived from, and is mostly upwardly
compatible with, Berkeley Tcl 3.3.  The following
known backward incompatibilities exist from our version:

Exec command:
    We strip final trailing newline returned, if present.
    "<<" redirects from a string rather than "<"
    "<" now redirects from a file rather than a string

Variable parsing:
    Parsing used to stop at anything other than an alphanumeric character
    of underscore for variables referenced by the $ shorthand.  Now left-
    parens are spanned too, to handle array references.  This could
    cause problems in rare cases for old Tcl programs.

Rename command:
    We treat "rename" of a nonexistent command or procedure as an error.

Error messages:
    The text of error messages have changed in a lot of cases, possibly
    breaking "catch" routines.  Note that the errorCode variable in this
    version of Tcl really helps when writing "catch" routines.

Abbreviations:
    Berkeley Tcl optionally permitted commands to be abbreviated.  We
    removed this capability because we feel it is dangerous, that
    abbreviations that you know work will suddenly start failing 
    as new procedures are added to the environment.  We hope to add
    a command completion capability, to be used when Tcl is run
    interactively, in the not too distant future.


CAVEATS
=======

Although Tcl compiles and executes the tests properly on all the 
aforementioned systems, it has not had much use under Xenix System
V, HP-UX or BSD 4.3.

Do not create any set-user-id versions of Tcl yet.  There are holes in
the startup sequence involving shell variables and default files that need
to be plugged first.


ERRATA
======

The recursion limit should be smaller on the 286 because I get a core
dump in stkgro prior to actually hitting the limit...

man files are not currently auto-installed to /usr/man by a "make install" --
  we haven't worked out the nuances of man pages for all the different
  unix systems

expand needs a test

If a directory occurs twice in your Tcl search path or if "." is one of
the search path entries and the current directory is also one of the
search path entries, you will get bogus warnings about Tcl having seen
duplicate function definitions once Tcl has to locate all the packages
along the path.


HELP US
=======

Please send us your input, bug lists, bug fixes and ideas.  Please send
your complaints and details of your experiences, positive or otherwise.
If you do profiling of any significant applications you write in Tcl,
we'd like to know the results -- email us the output of prof.


EPILOGUE
========

Please direct electronic mail correspondence regarding Tcl to
tcl-project@hackercorp.com, or uunet!sugar!tcl-project, or
write:

	Hackercorp
	Attention: TCL Project
	3918 Panorama
	Missouri City, TX  77459


Or drop a note on our BBS at (713) 438-5018
	

-- 
-- Have computer, will travel.	    Same old story, same old song;
Come to Texas for the		    it goes all right till it goes all wrong.
 chili that burns twice!! 	    -- Will Jennings

truesdel@nas.nasa.gov (David A. Truesdell) (04/03/91)

karl@ficc.ferranti.com (Karl Lehenbauer) writes:

>In article <1326@unet.UUCP> rme@olympia.unet.com (Richard Emberson) writes:
>>I'm looking for the lastest version of TcL (Tool Command Language)
>>written by J. Ousterhout at ucb.
>>I've got version 3.3 circa 3/90.
>>Pointers to later releases or applications written using Tcl would
>>be appreciated.

>Tcl 4.0, a Unix/Xenix Tcl programming environment that includes a bunch
>of extensions to 3.3 to provide enhanced string and list operations,
>stdio-style I/O, file scanning, associative arrays and so forth, is
>available from

>media-lab.media.mit.edu (18.85.0.2)  ~ftp/tcl-4.0-pl1.tar.Z

>We are about to release a new version, tentatively titled 4.1, but we
>will probably start calling it TclU (Tcl for Unix) or something similar.

Ousterhout's latest version of tcl, version 5.0, is available along with
Tk 1.0, his Tcl based toolkit for X.  It is available by anonymous ftp from
sprite.berkeley.edu, in the file tk.tar.Z.

The "Hackercorp" version of Tcl seems to have some nice extensions, but it
is not completely compatable with the Ousterhout Tcl, so I have not used it
to any great extent.  Perhaps they (The "Hackercorp" folks) could coordinate
their work with that of Ousterhout, to produce one enhanced version of Tcl.

--
T.T.F.N.,
dave truesdell (truesdel@nas.nasa.gov)

Ita erat quando hic adventi.

peter@ficc.ferranti.com (Peter da Silva) (04/04/91)

In article <truesdel.670643220@sun418> truesdel@nas.nasa.gov (David A. Truesdell) writes:
> The "Hackercorp" version of Tcl seems to have some nice extensions, but it
> is not completely compatable with the Ousterhout Tcl, so I have not used it
> to any great extent.  Perhaps they (The "Hackercorp" folks) could coordinate
> their work with that of Ousterhout, to produce one enhanced version of Tcl.

We would love to do so, and have in the past sent Ousterhout copies of
our fixes and extensions. He has, to his credit, picked some of them up...
but he doesn't appear interested in any closer co-operation than that. He
is mainly using TCL as an extension language for X. We mainly use it as
a scripting language and an extension language for traditional UNIX style
applications, so the differences are understandable.

What does 5.0 have over 3.0, other than the change in the name of the X
toolkit?
-- 
Peter da Silva.  `-_-'  peter@ferranti.com
+1 713 274 5180.  'U`  "Have you hugged your wolf today?"