/*****************************************************************************\
*                                                                             *
*                 @       @ @@                                                *
*                 @      @   @                                                *
*                 @     @    @   @@@@@   @ @@@@@    @@@@@@@                   *
*                 @@@@@@     @  @     @  @@     @  @       @                  *
*                 @     @    @ @       @ @       @ @@@@@@@@@                  *
*                 @      @   @  @     @  @       @ @                          *
*                 @       @ @@@  @@@@@   @       @  @@@@@@@                   *
*                                                                             *
*                                                                             *
*                                                                             *
*                   _/_     /) /)    _/_                            /         *
*        o __   _   /  __. // // __. /  o ______       _,  . . o __/ _        *
*       (_/) )_/_)_(__(_(_(/_(/_(_(_(__(_(_) /) )_    (_)_(_/_(_(_(_(<_       *
*                                                       /|                    *
*                                                      |/                     *
*                                                                             *
*******************************************************************************
* WARNING:                                                                    *
* I would REALLY appreciate if you download klone to just send me a mail with *
* your coordinates (an "electronic business card").                           *
\*****************************************************************************/

WHAT IS KLONE?
=============

KLONE is a small and fast fully interpreted language intended to be embedded
into C applications to provide them with a powerful, yet fast and small
extension language. Its syntax is very inspired from Lisp (its external syntax
has been kept as close as possible to Common Lisp as possible), but its
implementation is original and efficient, to give full extensibility, intimate
interfacing to C, incremental garbage collection, and full portability on
either K&R or ANSI C.

WARNING: KLONE IS NOT FULLY FREE. Its use is only granted free of charge in
non-commercial software, all other uses must be negociated with Bull.

HISTORY:
=======

Wool v1, a lisp-like dialect, has been developed in november 1987 at the Koala
Project in Bull Research center, and used in GWM, the extensible X11 window
manager since april 1988. Its success and use in other products has led to the
development of a new powerful commercial version of Wool from scratch: Wool
v2.  But, we as a research team needed an experimental platform to test new
ideas, so we developed the new language Klone to have a flexible platform
based on the Wool v1 kernel to experiment new and original Object-Oriented
concepts (with prototypes and cloning, hence the name), while Wool2 had become
a stable, non-modifiable industrial language with a CLOS OO model.

Although the OO layer of Klone is still higly changing, the present state of
the base Klone is quite useful for day-to-day programming to make all kinds of
scripts, and this is what we make availbale now.

Klone vs other customization languages: (my own biased opinion, of course :-)
TCL: Klone is faster and more powerful (more data types), and better suited for
     coding non-toy applications. TCL shell syntax has bad scalability.
     But: TCL has multiple interpreters and a very nice X toolkit TK
XLISP: Klone is faster and better integrated to C
REXX: Klone has much cleaner semantics
PERL: Klone is much more readable
PYTHON: Klone has a GC
KSH: Ksh is not a language :-)
SCHEMES: Although plenty of scheme implementations exist, the base language 
     being too poor for actual real-world programming, each one has its own
     weird libraries and OO extension, adding to the confusion. 
     However, STK (Scheme+TK) is worth looking at.

UNPACKING a new distribution:
=============================

Is patterned along the GWM one: First, you should make a directory (for
instance "/usr/local/klone/") which we will call BUILDDIR in the following
text, where you will build the klone distribution. If you already have a
BUILDDIR with old klone sources in it, just use it: new klone files will
overwrite the existing ones, but your local configuration files (in the Configs/
subdirectory) will be preserved.

The installation of klone will look like:

				BUILDDIR
				  |
				 src
				  |
C source files     +----+----+-------+
	   	   |	|    |	     |
		  tests doc  Configs kl

The files will be then compiled in brother directories of "klone" (sons of
BUILDDIR) in a stand-alone installation. Source files will be referred to via
symbolic links.

If you plan to update your sources by applying distributed patches, please do
a copy of the sources just as you got them before doing any changes to the
distributed files (except the Configs/ directory of local configuration
files). The Configs/ directory will contain all your configuration options,
that you will be able to re-use between different klone releases.

INSTALLATION:
=============

QUICK INSTALL: if your machine is listed in the available predefined configs,
must type "make <name>", such as "make sun4", "make alpha"
A listing of available configs can be given by typing just "make"

FULL INSTALL:
Old users might read the CHANGES file for a history of changes interesting
the user.

	To compile or install klone, you must, in the "klone" directory you just
	for each type of machine on which you decide to install it:

	decide which name you will give to this type of machine ("dpx1000", 
	"sun", "vax"). Suppose it is "sun4" in the following. Don't try to name
	it "src" however!

	type: "make DIR=sun4 dir"

	This will build a directory "../sun4" with symbolic links to all the
	source files (via a "SRC" link)

	go into it ("cd ../sun4"), and edit the "Config.sun4" file to adapt it
	to your local installation. This file is a symbolic link to the file
	src/Configs/sun4, directory in which all the installation parameters
	are saved

	Then, type "make" and the klone library "libklone.a" and a "klone"
	executable, a sample toplevel shell should be built.
	In case of errors, a simple "make" should resume the
	compilation process after the first "make" command has been issued.
	If you have the message "Make:  Don't know how to make .dir.  Stop.",
	that means that you have forgotten to do "cd ../sun4".

	VERY IMPORTANT: if you encounter compilation problems, please mail me
	the problems and the patches you had to apply to make it compile
	on your system, so that I can include them in future releases!

	The thing you need to keep is the "Configs" directory, which contains all
	the things you may have defined or adapted for your configuration. 

	The advantage of this scheme over the "imake" approach is that your
	local modifications are kept in the Configs directory, and
	are not overwritten by new updates, so re-compiling new
	updates of klone is just typing "make", and that is is much easier to
	have multiple versions with different compile-time options on the same
	machine. Imake is better for distributing final code, this solutions
	allows more personal flexibility.

TESTING SUITE:
==============

Launching "klone" will allow to interactiveley try commands in a standard klone.
the klone executable can be used to code scripts, just like shell, awk, sed,
etc... Klone understands the unix convention of putting the line:

#!/usr/local/bin/klone

as the first line of your scripts (change of course the path of klone depending
on where you installed it).

A mini test suite is included in tests/
To run this test, type "klone t"

MISC UTILITIES:
===============

lots of klone scripts are included in the kl/ subirectory

REPORTING BUGS:
===============

See the file doc/BUG_REPORT to mail back bugs to me

COPYRIGHT:
==========

  Copyright 1989-93 GROUPE BULL -- See license conditions in file COPYRIGHT
  See the COPYRIGHT file in the KLONE distribution
  This is the same COPYRIGHT as the rest of the X tape.

Please mail any bug reports or modifications done (with RCS version number
and .klonerc used), comments, suggestions, requests for updates or patches to
port on another machine to:

colas@mirsa.inria.fr		(INTERNET)

33 (FRANCE) 93.65.77.70		(VOICE PHONE)
33 (FRANCE) 93.65.77.66		(FAX)

Colas Nahaboo			(SURFACE MAIL)
INRIA
B.P. 93
06902 Sophia Antipoilis cedex
FRANCE

SOFTWARE USED:
==============

I use the freely distributable regexp package Written by Henry Spencer,
Copyright (c) 1986 by University of Toronto

Colas Nahaboo, colas@sa.inria.fr, Bull Research, Koala Project, GWM X11 WM
Phone:(33) 93.65.77.70(.66 Fax), INRIA, B.P.109 - 06561 Valbonne Cedex, FRANCE.
