-- (C) Copyright International Business Machines Corporation 23 January 
-- 1990.  All Rights Reserved. 
--  
-- See the file USERAGREEMENT distributed with this software for full 
-- terms and conditions of use. 

Hermes Language System, Release 0.4 (alpha)

This directory roots the Hermes language system tree.  The file USERAGREEMENT
describes the conditions for using Hermes.  The file INSTALLATION describes how
to install the Hermes system.

The language tutorial and manual is available in hardcopy only; it will be
published by Springer-Verlag sometime this year.

If you have problems, questions, comments, bug reports, etc. send them to
hermes@ibm.com.  If you want additional copies of the manual, or if other
people want copies of the system, send mail to hermes-request@ibm.com.

The Hermes system consists of two basic parts: one written in C, and the other
written in Hermes.  The C code (parser, abstract machine interpreter, run-time
environment) is written as portably as possible and should be easy to port to
any 32-bit Unix machine that supports long filenames, BSD sockets, and the Sun
RPC/XDR protocols.  Binaries are included for IBM RT 4.3bsd, and Sun 3 and Sun
4 SunOS 4.0.3.  It has also been ported to the IBM RS/6000 and a ports are
underway to the Silicon Graphics 4D series and the IBM ACE multiprocessor
running Mach.

The Hermes code is compiled into a machine-independent binary format using XDR,
so that Hermes binaries can be shared by heterogeneous architectures mounting
the same filesystem.  A full set of Hermes binaries is included (in
hermes/bin), so it should not be necessary to recompile them unless you wish to
change some part of the system.

This is an alpha release of the Hermes system.  Interfaces are subject to
change, and the language itself is very likely to undergo some changes.
Documentation and testing of some features is still in progress (particularly:
the network code and make tool).  The windows are being converted to X;
currently they only work under SunView.

Subdirectories
--------------
asm		C code: converts Hermes abstract machine code programs into
		compiled Hermes program objects.  Used to bootstrap the 
		compiler.

bin		Machine-independent compiled Hermes programs (in XDR format).

cfunc		C code: fake Hermes processes written in C for Hermes-Unix
		interoperability.

cherm		C code: utility routines to allow yacc compiler front end and
		cfunc processes to operate on Hermes structures from C.

codegen		Hermes code: the code generator for Hermes.

demo		Hermes code: a demonstration Hermes application: a distributed
		appointment scheduler (requires windows, below).

disassembler	Hermes code: converts a compiled Hermes program object into
		assembler code (see asm, above).

doc		User's manual and other minor documentation.  

tutorial_examples
		Online code for the Hermes tutorial examples.

fe		C, lex, and yacc code: parser for the Hermes compiler.  
		Converts source text into an "abstract program object" which is
		a Hermes data structure.

gnu		Gnu emacs mode for Hermes.

hermes		Hermes code: top-level routines for the Hermes system: root
		process, standard I/O, etc.

include		C code: include files shared by the rest of the C code.

interface	Hermes code: definitions modules used by the rest of the Hermes
		code.  Look here for all important interface definitions.

li		C code: the interpreter and run-time system for Hermes.

lib		C code: standard support: linked lists, storage allocation,
		asynchronous rpc handling, etc.

mbin		Machine-dependent binaries for IBM RT 4.3bsd, Sun 3 and Sun 4
		SunOS 4.0.3.  Others will be included in future releases.

make		Shared makefile code for the rest of the system.

optimize	Hermes code: optimization phases for the compiler (not yet
		used).

sysbin		Shell scripts to run the Hermes programs, intended for 
		installation in your local binaries directory (/usr/local/bin).

tools		Hermes code: various tools: shells, resource managers, string
		handling, remote execution, etc.  Not required for building the
		compiler.

type		Hermes code: the type-checker portion of the compiler.

typestate	Hermes code: the typestate-checker portion of the compiler.

windows		C code: very primitive window support for SunView: allows 
		multiple text windows to be opened.


