Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.


[9e7c20]: preface.xmlf Maximize Restore History

Download this file

preface.xmlf    207 lines (171 with data), 9.9 kB

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "">
<book lang="en">
<preface id="preface">

 <section id="preface.words">
  <title>About this book</title>

  <para>This manual is part of the &ECL; software system. It documents
  deviations of &ECL; from various standards (&ANSI;, &AMOP;,...), extensions,
  daily working process (compiling files, loading sources, creating programs,
  etc) and the internals of this implementation.</para>

  <para>This book is not intended as a source to learn &CommonLisp;. There are
  other tutorials and textbooks available in the Net which serve this
  purpose. The homepage of the <ulink url="">Association of
  Lisp Users</ulink> contains a good list of links of such teaching and
  learning material.</para>

  <para>This book is structured into three parts. We begin with <xref
  linkend="part.standards"/> which documents all parts of the standard which
  are left as <emphasis>implementation specific</emphasis>. For instance,
  precision of floating point numbers, available character sets, actual
  input/output protocols, etc.</para>

  <para><xref linkend="part.extensions"/> introduces all features which are
  specific to &ECL; and which lay outside the standard. This includes
  configuring, building and installing &ECL; multiprocessing capabilities,
  graphics libraries, interfacing with the operating system, etc.</para>

  <para><xref linkend="part.internals"/> deals with the internals of the
  implementation. This part is only intended for experienced programmers that
  want to learn how &ECL; does its work and wish to extend it, customize it or
  port it to new architectures. This part of the documentation is the most
  fragile one and prone to change.</para>

 <section id="">
  <title>What is &ECL;?</title>

  <para>&CommonLisp; is a general purpose programming language. It lays its
  roots in the <acronym>LISP</acronym> programming language <xref
  linkend="bib.LISP1.5"/> developed by John McCarthy in the 80s. &CommonLisp;
  as we know it &ANSI; is the result of an standarization process aimed at
  unifying the multiple lisp dialects that were born from that language.</para>

  <para>&ECL; is an implementation of the Common-Lisp language. As such it
  derives from the implementation of the same name developed by Giuseppe
  Attardi, which itself was built using code from the Kyoto Common-Lisp <xref
  linkend="bib.KCL"/>. See <xref linkend="preface.history"></xref> for the
  history of the code you are about to use.</para>

  <para>&ECL; (ECL for short) uses standard C calling conventions for Lisp
  compiled functions, which allows C programs to easily call Lisp functions
  and vice versa. No foreign function interface is required: data can be
  exchanged between C and Lisp with no need for conversion.</para>

  <para>&ECL; is based on a Common Runtime Support (CRS) which provides basic
  facilities for memory management, dynamic loading and dumping of binary
  images, support for multiple threads of execution.  The CRS is built into a
  library that can be linked with the code of the application.  &ECL; is
  modular: main modules are the program development tools (top level,
  debugger, trace, stepper), the compiler, and CLOS.  A native implementation
  of CLOS is available in &ECL;: one can configure &ECL; with or without CLOS.
  A runtime version of &ECL; can be built with just the modules which are
  required by the application.</para>

  <para>The &ECL; compiler compiles from Lisp to C, and then invokes
  the GNU C compiler to produce binaries. While former releases of ECL
  adhere to the the reference of the language given in &Steele84;, the
  aim of &ECL; is now to achieve maximum compliance with ANSI
  Common-Lisp, the most up to date standard for Common-Lisp.</para>


 <section id="preface.history">

  <para><figure float="1" id="">
   <title>ECL's family tree</title>
     <imagedata align="center" fileref="figures/hierarchy.png"
		format="PNG" width="300px"/>

  The &ECL; project is an implementation of the Common-Lisp language inherits
  from many other previous projects, as shown in <xref
  linkend=""/>. The oldest ancestor is the Kyoto Common Lisp, an
  implementation developed at the the Research Institute for Mathematical
  Sciences, Kyoto University <xref linkend="bib.KCL"/>. This
  implementation was developed partially in C and partially in Common Lisp
  itself and featured a lisp to C translator.</para>

  <para>The <acronym>KCL</acronym> implementation remained a propietary project
  for some time. During this time, William F. Schelter improved
  <acronym>KCL</acronym> in several areas and developed Austin Kyoto
  Common-Lisp (<acronym>AKCL</acronym>). However, those changes had to be
  distributed as patches over the propietary <acronym>KCL</acronym>
  implementation and it was not until much later that both
  <acronym>KCL</acronym> and <acronym>AKCL</acronym> became freely available
  and gave rise to the GNU Common Lisp project, <acronym>GCL</acronym>.</para>

  <para>Around the 90's, Giusseppe Attardi worked on the <acronym>KCL</acronym>
  and <acronym>AKCL</acronym> code basis to produce an implementation of
  &CommonLisp; that could be embedded in other C programs <xref
  linkend="bib.ECL"/>. The result was an implementation sometimes known as
  <acronym>ECL</acronym> and sometimes as <acronym>ECoLisp</acronym>, which
  achieved rather good compliance to the informal specification of the language
  in &Steele84;, and which run on a rather big number of platforms.</para>

  <para>The &ECL; project stagnated a little bit in the coming years. In
  particular, certain dependencies such as object binary formats, word sizes
  and some C quirks made it difficult to port it to new platforms. Furthermore,
  &ECL; was not compliant with the <acronym>ANSI</acronym> specification, a
  goal that other Common Lisps were struggling to achieve.</para>

  <para>This is where the <acronym>ECLS</acronym> or
  <acronym>ECL</acronym>-Spain project began. Juanjo Garc&iacute;a-Ripoll took
  the ECoLisp sources and worked on them, with some immediate goals in mind:
  increase portability, make the code 64-bit clean, make it able to build
  itself from scratch, without other implementation of &CommonLisp; and restore
  the ability to link &ECL; with other C programs.</para>

  <para>Those goals were rather quickly achieved. &ECL; became ported to a
  number of platforms and with the years also compatibility with the
  <acronym>ANSI</acronym> specification became a more important goal. At some
  point the fork <acronym>ECLS</acronym>, with agreement of Prof. Attardi, took
  over the original <acronym>ECL</acronym> implementation and it became what it
  is nowadays, a community project.</para>

  <para>The &ECL; project owes a lot to different people who have contributed
  in many different aspects, from pointing out bugs and incompatibilities of
  &ECL; with other programs and specifications, to actually solving these bugs
  and porting &ECL; to new platforms.</para>

  <para>Currently, development of &ECL; is still driven by Juanjo
  Garc&iacute;a-Ripoll with the help of Michael Goffioul in the Windows
  port. The project homepage is located at <ulink
  and there is a mailing list where questions, bug reports and other
  discussions may be carried out.</para>

 <section id="Copyright">

  <para>&ECL; is distributed under the GNU LGPL, which allows for commercial
  uses of the software. A more precise description is given in the Copyright
  notice which is shipped with &ECL;.</para>


  Copyright (c) 2000, Juan Jose Garcia Ripoll
  Copyright (c) 1990, 1991, 1993 Giuseppe Attardi
  Copyright (c) 1984 Taiichi Yuasa and Masami Hagiya
	      All Rights Reserved

  ECL is free software; you can redistribute it and/or modify it
  under the terms of the GNU Library General Public License as published
  by the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version; see file 'Copying'.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  GNU Library General Public License for more details.

  You should have received a copy of the GNU Library General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


  This license covers all of the ECL program except for the files
	src/lsp/loop2.lsp	; Symbolic's LOOP macro
	src/lsp/pprint.lsp	; CMUCL's pretty printer
	src/lsp/format.lsp	; CMUCL's format
  and the directories
	contrib/		; User contributed extensions
	src/clx/		; portable CLX library from Telent
  Look the precise copyright of these extensions in the corresponding

  Report bugs, comments, suggestions to the ecl mailing list:


<!-- Keep this comment at the end of the file
      Local variables:
      mode: nxml
      sgml-parent-document: "ecl.xml"
      sgml-indent-step: 1
      nxml-child-indent: 1
      fill-column: 79