T is a dialect of Scheme and its implementation. It is not compatible with R5RS, but there is an R5RS (well, currently, only R3RS) compatibility layer for it. It is planned to become more and more compatible with R5RS as time progresses. Used in the T implementation is Orbit, an optimizing compiler, one of the first real optimizing compilers of Scheme, and for a long time the fastest. Olin Shivers wrote a detailed history of T, and Jonathan Rees recently put up a general T web page.
T originated from Yale. Those involved in the original development of T included Jonathan Rees, Kent M. Pitman, Norman Adams, Jim Philbin, Olin Shivers, David Kranz, Richard Kelsey, and undoubtedly more that elude this page's maintainer's memory right now. Taylor R. Campbell and Brian Mastenbrook, after over a decade of T's abandonment, have decided to revive the T project. (Taylor and Brian are not the original authors of T; nor were they in any way connected with the original development of T.)
T has been ported to a number of different platforms and machine architectures:
These are scattered throughout the FTP archives listed below; for convenience, we have put up separately a SPARC T image and the RISC sources (including compiled code and debugging information), since these are likely to be the only ones of interest nowadays.
To install T on a SPARC running Solaris, simply copy the SPARC T image into a directory in your $PATH, such as /usr/local/bin/. If you wish to install fix files (such as tfix.t and ofix.t mentioned below), set the TSYSTEM environment variable to the directory where you intend to put them; subsequent T instances will load them. T will also load a file named init.t in your home directory on startup, after the fix files. These files may be compiled.
The T manual is available in DVI, PDF, and a gzip'd tarball of the TeX sources, transcribed from the original Scribe sources.
There are three different archives of T 3.1 from different FTP sites with different contents: t3.1-ai.tar (from the MIT AI laboratory), t3.1-cag.tar (from the MIT Computer Architecture Group), and t3.1-funet.tar (from the Finnish University and Research Network).
An archive of the original T mailing list is available in a tarball, though not in any web-browsable format. There is no extant mailing list; only if a sufficiently large number of people express interest shall we consider setting one up, and still probably not until it has been ported to the PPC.
The directory internal-doc/ contains documentation about some T system internals that Taylor R. Campbell wrote based on experiments and examination of the source. The directory hacks/ contains various useful T modules:
(COMPILE-FILE '(HOME INIT))or
(COMPILE-FILE '(HOME "Tinit")).)
(APROPOS id [root-env])and
(APROPOS-LIST id [root-env])search for any identifier that contains id, a string or a symbol, in its name, in all environments including and inferior to root-env, which defaults to
APROPOSprints the results of the search nicely formatted;
APROPOS-LISTreturns them as a nested list.
(ORBIT-EVAL exp env)compiles and runs exp in env with Orbit, suitably for setting
(REPL-EVAL)to it; it also early-binds using the T system early binding environment if env is
(ORBIT-NOISILY exp [env])compiles and runs exp in env, which defaults to the REPL environment, verbosely showing any debug output from Orbit, the CPS syntax tree, and a listing of assembly code.
(CL-NOISILY exp [env])is a cross between
CL: it compiles the code and prints verbose output about the compilation, but it does not run the resultant code, and exp may be a procedure as well, if its source can be obtained, in which case that source is used as the expression. Finally,
(COMPILE-FILE-NOISILY filespec [output-filespec]), or
COMFILE-NOISILY, compiles a file noisily, as with
T-IMPLEMENTATION-ENV; then type
(SHOW-UNDEFINED filespec [env])to show all of the undefined references in unit, a compiled module, or the unit compiled from filespec when it was loaded & linked into env, which defaults to the REPL environment.
The two current T Revival Project maintainers can be reached individually by email (please email us both if you have general questions pertaining to the project):
(format '#f "~A@~A.net" "campbell" "mumble")
(format '#f "~A@cs.~A.edu" "bmastenb" "indiana")
formatexpressions, just substitute successive arguments after the control string (the second argument to
format) for successive
~As in the control string. For example,
bmastenbwould be substituted for the first
~Ain the control string
A quick sketch of our current goals can be found here. Yes, we aren't planning on adding support for x86; neither Taylor nor Brian has any particular interest in that platform.
(Due to the business of schedules, little work has been done on this project as of late, but once time can be found, work will resume. If there is anyone who has a SPARC running Solaris, a Mac, some time to spare, and interest in T, please contact us: we could use one more person to accomplish the PPC port. Experience with and knowledge of Lisp implementation technology is not necessary.)
Last updated: Friday, 7th April, 2006