========================================================
(C)1993, 1994 Institute for New Generation Computer Technology
(Read COPYRIGHT for detailed information.)
========================================================

KL1 to C compiler system: KLIC (version 1.1)
=================================================
Last Revision: April 28th, 1993
Takashi Chikayama (ICOT)

[1] What is KLIC

KLIC is an implementation of a concurrent logic programming language
KL1.  KL1 is based on a flat version of the Guarded Horn Clauses (GHC)
language.  GHC is a member of so-called commited-choice logic
programming language family and has sibblings such as Concurrent
Prolog, Parlog, Janus and Fleng.

The KLIC implementation compiles KL1 programs into C programs, then
compiles them using C compilers of the host system, and then links the
objects with runtime libraries (including libraries provided by UNIX).

The current system is a sequential implementation.  Future releases of
parallel versions are planned before long.

[2] Execution Environment

The current version of the compiler is written in Prolog.  It has been
tested with SICStus Prolog version 2.1#8 but is meant to be executable
with any Edinburgh Prolog compatibles.  The compiler is planned to be
rewritten in KL1 itself.

KL1 programs compiled by the KLIC compiler have to be compiled by a C
compiler and linked with the KLIC runtime library and libraries
provided by UNIX.

In summary, to run KL1 programs under the current version of KLIC, a
UNIX system with a C compiler and Edinburgh Prolog compatible is
needed.

[3] Files

See the file MANIFEST.

[4] Installation

Installing the runtime system requires running the configuration
script Configure in the root directory of the KLIC system, and running
make.  See the file INSTALL for details.

[5] Portability Issues

The current system has been tested on several UNIX systems, including
the following.

	Sun SparcStation 10, running SunOS 4.1.3
	SparcCenter 2000 running SunOS 5.2
	Gateway P5-60 and some other PC AT compatibles
		running Linux 1.0 (Slackware 1.2.0)

KLIC have been mainly tested with gcc, but the runtime system and the
object code generated by the compiler (in C) are meant to be portable
to almost any UNIX systems.

The compiler has been tested only with SICStus 2.1 but should
basically have no problems porting it to Edinburgh Prolog compatibles,
such as Quintus Prolog.

[6] Functions provided

This system provides the basic execution mechanism for KL1 programs.

In addition to the basic functions, following functions are provided.

	- Some built-in predicates (integer arithmetics, etc.)
	- Strings, vectors and their primitive operations
	- Tracer (stepping, spying, etc)
	- Input/output including asynchronous I/O on sockets (not on Linux)
	- Priority control mechanisms

The following functions are planned but not provided yet.

	- Floating point numbers
	- Parallel execution mechanisms

[7] Bugs

- Manuals are provided in Texinfo format but is quite incomplete
  (please find them in "documents" directory).

- Prolog is needed for compilation. (It is planned to be rewritten
  in KL1 itself)

- Many mandatory features are missing.

- We are sure there are many others.

Please send bug reports and comments on the system to the following
address.

	klic-bugs@icot.or.jp

Please do let us know of all bugs or inconveniences you find.  That'll
help us improve the subsequent versions for all the users.

[8] Announcements and Information Exchange

Announcements of bugs, bug fixes, availability of newer versions and
so on will be made on a mailing list with the following address.

	klic-users@icot.or.jp

This same mailing list may also be used to exchange information among
users.

Please send a request mail to the following address to register in or
delete from this mailing list.

	klic-requests@icot.or.jp
