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

KL1 to C compiler system: KLIC (alpha version)
==============================================
July 9, 1993
Takashi Chikayama (ICOT)

Copyright 1993 Institute for New Generation Computer Technology
(Read COPYRIGHT for detailed information)

[CAUTION: PLEASE DO NOT EXPECT THIS VERSION TO BE A COMPLETE SYSTEM]

This version is an alpha version that is only for trying out the
implementation scheme of KLIC.  More user-friendly systems are planned
to be released before long.  We are releasing this version in hope
that sharing its implementation ideas can help research in this area.

[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.

In the KLIC implementation, KL1 programs are compiled into C programs
and then compiled by C compilers, linked with runtime libraries 
(including libraries provided by UNIX).

The current system is a sequential implementation.  Release of a
parallel version is 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 but is meant to be executable
with any Edinburgh Prolog compatibles.  It 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 only running "make" in the
"runtime" subdirectory.  Installation procedure for the compiler may
differ depending on the Prolog system used.  See the file INSTALL for
details.

[5] Portability Issues

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

	Sun 3/260 running SunOS 3.5
	Sun SparcStation 1+, 2 and 10, running SunOS 4.1.X
	SparcCenter 2000 running SunOS 5.2
	Sequent Symmetry S81 running DYNIX

Klic have been 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 (at least BSD-based) 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 or C-Prolog.

[6] Functions provided

Basic functions of KL1 program (equivalent to Flat GHC) can be
executed sequencialy (pseude parallely).

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

	- Some built-in predicates (Integer arithmetics, etc.)
	- Tracer (Spy is also available)

Following functions are not provided yet.

	- Input/Output functions. (Current system supports integer inputs 
	  from stdin, and term output for stdout.)
	- Strings and Vectors.
	- Floating point arithmetics.
	- Priority control mechanisms.
	- Parallel execution mechanisms.
	- Shoen mechanisms.

[7] Bugs

PLEASE DO NOT EXPECT THIS VERSION TO BE A COMPLETE SYSTEM.

The manual is quite incomplete.

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

The current system sure has many bugs and is missing many required
features.  This version is released not for casual users but for those
who are interested in implementation techniques of concurrent logic
programming languages so that they can inspect the way KLIC is
implemented.

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

	klic-bugs@icot.or.jp
