diff --git a/src/CHANGELOG b/src/CHANGELOG index 1c874f365..ff0bc5478 100644 --- a/src/CHANGELOG +++ b/src/CHANGELOG @@ -1,343 +1,11 @@ -ECL 0.9j-p1: -============ +ECL 0.9k: +========= -* Fixes with respect 0.9j +* Visible changes: - - Added a disambiguation prefix that allows an executable to have the same - name as one of the object files that are used to create it. - - - Fixed examples/threads/import.c to ensure that the GC_pthread is used. - - - Fixed the code for inspecting the generic function hash table - (Ralph Campbell) - - - Added fixes for the Boehm-Weiser garbage collector under Mac OS X - Leopard/PPC (Aleix Conchillo) - -* New platforms: - - - Support for GNU/kFreeBSD and Mac OS X Leopard. - - - ECL has additionally been ported to GNU/Hurd (Pierre Thierry) and - HP NonStop S-Series (Craig McDaniel) - -* New features: - - - ECL now has POSIX condition variables when built with threads. Moreover, - locks can be now recursive or non-recursive, that is, the kind that signals - an error when tried to grabed twice from the same thread (Dan Corkill). - - - SBCL's SERVE-EVENT package has been ported to ECL by Steve Smith. - - - New commands, :RESTART, :R1, :R2, etc, allow invoking restarts (contributed - by Chui Tey). - - - Interpreted functions can now be disassembled in the debugger. The commands - are :D and :DISASSEMBLE. - - - New (private) function EXT::FUNCTION-LAMBDA-LIST, returns the lambda list of - a function whenever it was recorded. - - - Implemented finalization on the lisp level. Only available for the Boehm - Weiser GC. Finalizers are closures which can be attached to objects - using SI:SET-FINALIZER and SI:GET-FINALIZER. Only one closure per - object is allowed. - - - [Win32] Command-line arguments are now available for programs compiled with - :SYSTEM set to :WINDOWS (M. Goffioul) - - - MAPCAR, MAPLIST, MAPC, MAPL, MAPCAN, MAPCON have now compiler macro functions - which create equivalent inlined forms. - - - Support for C "long double" as lisp long-double datatype (originated from - a patch by Lars Brinkhoff). Still missing compiler support for unboxed - long double types. - - - TIME outputs information about consed bytes and calls to the garbage - collector. - - - MAKE-ARRAY accepts a foreign pointer as an argument to :DISPLACED-TO That - creates a lisp array on top of the foreign data and can be used to directly - scan C strings, or unboxed arrays of numbers. - - - DFFI works now on AMD64 or Intel EMT64 (DFFI stands for Dynamical Foreign - Function Interface and it is the component that allows ECL call directly - C functions and create C callbacks without the C compiler being around). - (initial code by M. Goffioul) - - - Using version 6.8 of the Boehm-Weiser garbage collector. - - - Using version 4.2.1 of the GMP library. - - - Random number generator based on the Mersenne-Twister algorithm (Based on - code contributed by Roy Zywina). - - - GET-INTERNAL-RUN/REAL-TIME now have a better resolution of microseconds - when the platform allows it. - -* Bugs fixed: - - - The Windows installer works again. - - - Local C variables are now always marked as volatile if the function code - uses setjmp/longjmp. Detection of this cases is also more accurate. - - - COMPILE-FILE-PATHNAME accepts the same keyword arguments as COMPILE-FILE. - - - COMPILER-LET is not standard and belongs in the EXT package. However, it had - not been imported into the compiler and thus it did not work at all. - - - Remove ancient, bogus optimizers for: ASH, LDB. - - - MINGW's compiler is broken: it does not accept directories with trailing - slashes as an argument to "-I". We include a hack in cmpmain.lsp for that. - - - Streamp signals an error for Gray streams. - - - ENOUGH-NAMESTRING provided too large directory names (Contributed by Tim S) - - - ADJUST-ARRAY accepted a fill-pointer even for arrays that did not have any. - - - Instead of using SHORT-FLOAT and LONG-FLOAT as basic floating point types, - we use SINGLE-FLOAT and DOUBLE-FLOAT now. The names of the C functions have - changed accordingly (Contributed by Lars Brinkhoff). - - - There was a problem with the variable capture when creating accessors - methods for classes. - - - [Win32] Processes are now correctly listed with MP:ALL-PROCESSES (M. Goffioul) - - - DIRECTORY behaves more according to people's expectations - (DIRECTORY "*/") => List all directories in current path - (DIRECTORY "*.*") => List all files in current path - This means you need to make two calls to DIRECTORY to get all the content of - it, but it allows you to select whether you want to list files or - not. Furthermore, the paths returned by DIRECTORY are more or less - guaranteed to match the mask -- the exception are links, for whose the - truename is returned. - - - [Win32] DIRECTORY did not take the drive letter into account. - - - [Win32] si_trap_fpe is now exported by ecl.dll - - - Instead of sharing a single string buffer (cl_env.token), ECL now has a pool - of small strings which can be used for temporary operations. This fixes a - number of problems with the reader. - - - DIRECTORY would always match NIL entries, independent of the mask. Now, the - following two statements differ: - (directory "foo*") => ("foo") - (directory "foo*.*") => ("foo" "foo.log") - - - The code in contrib/sockets.lisp was not compatible with C++ because of - multiple implicit pointer conversions, and additionally it had some pointer - miscalculations. - - - GET-INTERNAL-REAL-TIME now works on Windows with 1/60s precision - (contributed by Dustin Long) - - - When :INITFORM was a constant variable but not self evaluating (i.e. not T, - NIL, or a keyword), it was not processed properly - (defclass a () ((a :initform most-positive-fixnum))) - (slot-value (make-instance a) 'a) => most-positive-fixnum - - - The namestring "." was improperly parsed as having file type "". - - - Now the file type is determined by the last dot in the name. - (pathname-type "foo.mpq.txt") => "txt" - - - When iterating over a hash table we now check that the argument is really a - hash table. - - - *COMPILE-VERBOSE* and *COMPILE-PRINT* now also have effect when compiling - isolated lambda forms using COMPILE. Additionally, these variables are - defined even without the compiler loaded. - - - DESCRIBE was not prepare for the number range types returned by TYPE-OF. - - - In OS X, ECL can now load shared libraries (Extension *.dylib) thanks - to using dlopen() instead of the obsolete NSLinkModule() function. - - - (CONCATENATE 'STRING ...) does no longer have an ad-hoc limit in the number - of strings. - - - Reader for #( did not always read the last parenthesis, what lead to a warning: - > #3(1 2 3) - #(1 2 3) - > ;;; Warning: Ignoring an unmatched right parenthesis. - - - RANDOM no longer overflows when the input is a bignum that does not fit in a - double-float. - - - MAKE-PATHNAME should remove all occurrences of single dots "." in physical - pathnames and does not interpret the directory component :BACK properly. - - - ENOUGH-NAMESTRING did not simplify a pathname when it had the same directory - as the default pathname. - - - Some toplevel forms with closures caused the compiler to abort, for example - (let ((data '(a b))) - (flet ((get-it () - (second data))) - (defun print-it-1 () - (print (get-it))))) - - - COPY-READTABLE did not copy entries when supplied a second argument. - - - When expanding tilde pathnames, as in "~/bin/foo", the device is also - taken into account. So if HOME=c:/jjgarcia, the previous path becomes - "c:/jjgarcia/bin/foo" - - - If the homedir component contains a tilde itself, ECL entered an infinite - loop when expanding the pathname - - - Now it should be possible to load the same FASL files multiple times, - even if previous instances have not completely garbage collected. - - - SI:MKSTEMP now works on Windows for more than 26 temporary file names - (Dustin Long) - - - There was no builtin type for loaded libraries. - - - EXT:RUN-PROGRAM has now a keyword argument :WAIT, which defaults to T and - which determines whether the function should wait for the process to finish - before returning. - -* Unicode: - - - MAKE-STRING only allowed :ELEMENT-TYPE to be one of CHARACTER, BASE-CHAR, or - STANDARD-CHAR. - - - The FFI will signal a type error when converting extended characters to - the C types "char" or "unsigned char". - - - Unicode support for ALPHA-CHAR-P, ALPHANUMERICP, CHAR-UPCASE, CHAR-DOWNCASE, - etc, based on the ISO C99 library functions for wide characters. - - - Following functions fixed to work with Unicode strings: EQUAL, EQUALP, - PARSE-INTEGER, STRING-TRIM, STRING-LEFT-TRIM, STRING-RIGHT-TRIM, - COPY-STRUCTURE, SHADOW. - - - Most functions dealing with sequences (REMOVE, DELETE, etc) would - output a STRING even if the input was a BASE-STRING. - - - TYPE-OF did not recognized EXTENDED-CHARs. - - - Type BASE-STRING and STRING were defined as equivalent. - - - Pathnames now allow extended strings in the names. Errors are signalled, - however, when a file name contains illegal characters. UTF-8 encoding - of file names is not supported. - -* Other visible changes: - - - New conditional feature, PREFIXED-API, signals that the internal C functions - now have a common prefix, "ecl_". - - - The interpreter now makes an attempt at showing the offending form - when a syntax error happens. - > (progn (setq a 1) (setq b) (setq c 2)) - In form - (SETQ B) - Syntax error: list with too few elements or improperly terminated. - Broken at SI:EVAL-WITH-ENV.No restarts available. - Broken at SI::BREAK-WHERE. - - - The documentation shipped with ECL was outdated. To enforce moving on - to the new manual, the build and installation process now ignores anything - inside src/doc. - - - LOAD no longer defaults to loading a file as binary if the file type is - different from FAS or FASL. Use either SI:LOAD-BINARY or configure the - variable SI:*LOAD-HOOKS* accordingly to load FASL files with unusual - extensions. - - - EXT:PROCESS-COMMAND-ARGS now allows for a default rule. - - - Variable EXT:*HELP-MESSAGE* and EXT:+DEFAULT-COMMAND-ARG-RULES+ exported. - - - C:BUILD-PROGRAM now uses a unique prefix for the initialization function, - init_ECL_PROGRAM, to avoid collisions when both the program and a component - have the same name: - (C:BUILD-PROGRAM "ls" :lisp-files '("ls.o")) - - - FFI:CLINES is no longer restricted to appear as a toplevel form. The - following code is thus valid: - (defun c-sin (x) - (ffi:clines "#include ") - (ffi:c-inline (x) (:double) :double "sin(#0)" :one-liner t)) - - - Minimized the number of headers included by ecl/ecl.h. In particular, - stdio.h, inittypes.h and pthread.h are no longer used. - - - When a compiler finds a literal standard object, the load and initialization - forms it generates are now closer to the first reference to the object. This - allows to have, in the same file, a class definition and a constant which - is an object of that class. - - - Support for hierarchical package names, as in Allegro Common-Lisp. - - - The debugger now prints a list of available restarts. - - - Added restarts to the errors signaled by several functions: SIN, COS, EXP, - EXPT, TAN, TANH, SINH, COSH, LOG, ATAN, RATIONAL, NUMERATOR, DENOMINATOR, - FLOOR, CEILING, ROUND, TRUNCATE, FLOAT-PRECISION, FLOAT-SIGN, DECODE-FLOAT, - SCALE-FLOAT, FLOAT-RADIX, FLOAT-DIGITS, INTEGER-DECODE-FLOAT, REALPART, - IMAGPART, COMPLEX, etc - - - DIGIT-CHAR-P and DIGIT-CHAR will signal an error if the radix is not an - integer value between 2 and 36, both included. - - - The slot accessors for structures with type VECTOR or LIST now rely on - the standard function ELT, instead of si:list-nth and si:rplaca-nthcdr. - - - TYPE-OF returns expanded types for arrays. For instance, - (ARRAY CHARACTER (12)) instead of (STRING 12). - - - C functions which disappear: si_set_compiled_function_name(), - si_extended_string_concatenate(), assert_type_string(), - assert_type_character(), assert_type_symbol(), make_symbol(), - parse_number(), parse_integer(), adjust_displaced(). - - - Lisp functions which disappear: si:set-compiled-function-name, - si:extended-string-concatenate, si:list-nth, si:rplaca-nthcdr. - - - New C functions: ecl_stream_to_handle(), ecl_base_char_code(), - ecl_type_error(), ecl_check_cl_type(), ecl_check_type_string(), - ecl_fixnum_in_range(), ecl_stringp(), ecl_parse_number(), - ecl_parse_integer(), ecl_char(), ecl_char_set(), ecl_base_char_p(). - - - New Lisp functions: si:wrong-type-argument. - - - Functions renamed: backup_fopen() -> ecl_backup_fopen() char_code() -> - ecl_char_code(), cl_log1() -> ecl_log1(), cl_log2() -> ecl_log2(), - NUMBER_TYPE() -> ECL_NUMBER_TYPE_P(). - - - Additionally, most functions have got now the prefix "ecl_" - - - LOAD-FOREIGN-LIBRARY accepts an additional keyword argument :SYSTEM-LIBRARY - which, when true, tells ECL to link object files against the system version - of that library instead of directly referencing the shared library: i.e. use - linker flag -lmylib instead of libmylib.so (Brian Spilsbury) - - - When compiling lisp files, ECL now creates different entry functions - depending on the file type. FASL, library and object files get a function - with the prefix {init_fas, init_lib, init_} prepended to the file name. - This solves the problem of a shared library having the same name as one - of the components it is made of. - - - C:BUILDER searches the ASDF module list for libraries. (Thanks to F.R. Rideau) - - - In Windows, CLX is no longer built by default: use "nmake ECL_CLX=1". - - - ECL now uses standard Unix paths for installation: assuming prefix=/usr, the - shared library libecl.so is typically installed in /usr/lib/, the C header - files under /usr/include/ecl and all remaining data and FASL files under - /usr/lib/ecl. - -* Contributed code: - - - New examples: cmdline/ls.lsp, ffi/uffi.lsp, ffi/cffi.lsp + - The documentation is slowly disappearing form this source tree, as there + is a different tree (ecl-doc) which contains the XML sources for a more + complete manual. ;;; Local Variables: *** ;;; mode:text *** diff --git a/src/doc/benchmark.in.html b/src/doc/benchmark.in.html deleted file mode 100644 index 42d482369..000000000 --- a/src/doc/benchmark.in.html +++ /dev/null @@ -1,27 +0,0 @@ -

Benchmark

- -Benchmarks should be taken with a grain of salt. ECL does not aim to compete with any -commercial or open source implementation. The purpose of these benchmarks are, -thus, to show the progress of ECL -itself from version to version. - -

It also serves to show how well other implementations perform: CLISPc, which -is based on bytecodes, is astonishingly fast, compared to other bytecodes -implementations (ECLi, CMUCLi) and to native code implementations (ECLc, -CMUCLc). - -

All benchmarks are executed one after another. The benchmark currently shows -just mean execution times in seconds, using English decimal point (0.03 = 3/100 -seconds). This means that performance of garbage collectors has a deep impact -in these numbers. - -

It would be nice to collect some other information, such as memory use and -garbage collector timings, but that is beyond my reach for now. Help is always -welcome. - -

Finally, I have decided to distribute Gabriel's benchmarks together with ECL. The reason is that this code seems -to belong to public domain and I had to perform several changes in order to let -it run with different implementations. To recreate the benchmark just get in -build/gabriel/ and type make. diff --git a/src/doc/cvs.in.html b/src/doc/cvs.in.html deleted file mode 100644 index b81c93746..000000000 --- a/src/doc/cvs.in.html +++ /dev/null @@ -1,28 +0,0 @@ -

CVS repository

- -

Beginning on March, ECL partially moved to the common-lisp.net -server. If you keep up to date with the latest improvements and fixes of -the ECL environment, you can use CVS to pull the latest sources from -there. - -

If you have a modern version of the CVS program, such as the one -shipped with Mingw or with any Linux distribution, the command to get -the development sources is -

-# ADDRESS=anonymous@common-lisp.net:/project/ecl/cvsroot
-# cvs -z3 -d :pserver:anonymous:$ADDRESS co ecl
-
-

Additionally you can test ECL with Paul Dietz's ANSI test -suite. For that you need to download some additional files using -

-# cvs -z3 -d :pserver:anonymous:$ADDRESS co ecl-test
-
-

Typing make from the top of the ecl-test -directory will download the latest version of the test suite and run -it using the version of ECL which is available on your machine. - -

Browsing CVS

- -

Additionally you can browse the ECL source code and download -tarballs using this address. diff --git a/src/doc/download.in.html b/src/doc/download.in.html deleted file mode 100644 index 72c8ce7ec..000000000 --- a/src/doc/download.in.html +++ /dev/null @@ -1,4 +0,0 @@ -

Downloading

- -

You can always get the latest source-code release at -the project page.

diff --git a/src/doc/end b/src/doc/end deleted file mode 100644 index d2f71b362..000000000 --- a/src/doc/end +++ /dev/null @@ -1,12 +0,0 @@ - -

 

- - - - - -
-

SourceForge Logo

-
- - diff --git a/src/doc/goals.in.html b/src/doc/goals.in.html deleted file mode 100644 index 6c2b32c54..000000000 --- a/src/doc/goals.in.html +++ /dev/null @@ -1,116 +0,0 @@ -

Introduction

- -ECL stands for Embeddable -Common-Lisp "Spain", and I usually read it as "e-klos". It is a an -implementation of the Common-Lisp language -which aims to comply to the ANSI X3J13 -definition of the language. - -

ECL combines a bytecodes -compiler/interpreter and a translator to C. The first one is specially suited -for prototyping and debugging. The second one produces fast code that can be -dynamically loaded into the interpreter or statically linked to build -standalone executables. - -

ECL is distributed under the GNU Library General Public License (GNU LGPL). - -

ECL vs other implementations

- -

ECL is not a brand new -product. It has evolved from the EcoLisp implementation by Giuseppe Attardi -which in turn was based on the Kyoto Common-Lisp implementation done by Taiichi -Yuasa and Masami Hagiya, with contributions from several people. Nevertheless -the program has been seriously modified and the current code base bears little -resemblance to the previous implementations and the author of those -implementations should not be blamed for the faults of ECL. - -

I have received several questions concerning why I work on ECL -instead of improving GCL. The main reason for this is the simplicity -of the code base. The EcoLisp implementation on which ECL is based -already was Cltl2 compliant. It had low level support for CLOS, a LOOP -package, DEFPACKAGE and the code in general was much more readable and -easier to maintain. It would be a huge task to get all these -improvements back and the code I put into ECL back into GCL.

- -

Project goals

- - - diff --git a/src/doc/head b/src/doc/head deleted file mode 100644 index 0a144fdc0..000000000 --- a/src/doc/head +++ /dev/null @@ -1,37 +0,0 @@ - - - -ECL - a Common-Lisp implementation - - - - - - -
-

ECL

-
-

- - - -
- - - - - - - - - - - - - - -
Home page
Project
Latest release
Installing
License
Documentation
CLX manual
Benchmarks
Distribution
Browse CVS
Checkout CVS
Mailing list
Wiki
- NewsRSS Feed Available -
-
- diff --git a/src/doc/index.in.html b/src/doc/index.in.html deleted file mode 100644 index 0a3f0f49d..000000000 --- a/src/doc/index.in.html +++ /dev/null @@ -1,41 +0,0 @@ -

What is ECL

- -ECL stands for Embeddable -Common-Lisp. The ECL project is -an effort to modernize Giuseppe Attardi's ECL environment to produce an -implementation of the Common-Lisp language -which complies to the ANSI X3J13 -definition of the language. - -

The current ECL implementation features:

-
    -
  • A bytecodes compiler and interpreter.
  • -
  • A translator to C.
  • -
  • A UFFI-compatible interface to C code.
  • -
  • A dynamic loader.
  • -
  • The possibility to build standalone executables and DLLs.
  • -
  • The Common-Lisp Object System (CLOS).
  • -
  • Conditions and restarts for handling errors.
  • -
  • Sockets as ordinary streams.
  • -
  • The Gnu Multiprecision library for fast bignum operations.
  • -
  • A simple conservative mark & sweep garbage collector.
  • -
  • The Boehm-Weiser garbage collector.
  • -
- -

ECL supports the operating systems Linux, FreeBSD, NetBSD, Solaris, -Windows, running on top of the Intel, Sparc, Alpha and PowerPC -processors.Porting to other architectures should be rather easy.

- -

The author

- -The original version was written by Giuseppe Attardi. -The current maintainer of ECLS is -Juan Jose Garcia -Ripoll, who can be reached at the ECLS mailing list. - -

We seek volunteers willing to test or improve the -implementation. We accept both code and constructive critics, so feel -free to share your toughts at the mailing list. - -

Latest news

diff --git a/src/doc/install.in.html b/src/doc/install.in.html deleted file mode 100644 index 334cf891c..000000000 --- a/src/doc/install.in.html +++ /dev/null @@ -1,113 +0,0 @@ -

Installation

- -

You should read the Autoconf based configuration -if you use ECL on a unix-like platform, such as -

    -
  • Linux, NetBSD, FreeBSD, Solaris 9 -
  • Mac OSX (See below) -
  • Cygwin or Mingw32 on Windows. -
- -

If you want to compile ECL using Microsoft C++ you should read the appropiate section. - -

For OSX you should also read a section which specifies how -to build ECL for different versions of the operating system. - -

If you want to cross-compile ECL, there is also a -chapter on how to pre-configure, write down a configuration file -and finish the compilation. - -

Autoconf based configuration

- -
    -
  • Unpack the tar file -
    -	gunzip -c ecl.tgz | tar xf -
    -
    - -
  • Run the configuration file. -
    -	cd ecl-@PACKAGE_VERSION@
    -	./configure
    -
    -The previous step creates a directory with the name build, and -stores a bunch of makefiles in it. Note: If you are building -under Solaris 9, you should rather use -
    -	./configure --enable-slow-config --with-system-gmp=no
    -
    -because otherwise ECL will fail to detect the 64-bit capabilities of -the operating system. - -
  • Use GNU make to begin building ECL -
    -	make
    -
    - -
  • If you want to test the fresh new executable before installing, -you can do it. You should invoke ECL from withing the build directory -using the "-dir ./" argument to advice it about the right place to -find header files, libraries, etc -
    -	$ ./configure --prefix=$HOME
    -	[...]
    -	$ cd build
    -	$ make
    -	[...]
    -	$ ./ecl -dir ./
    -
    - -
  • Install it in the preconfigured location -
    -	make install
    -
    -
- -

Microsoft C++

- -

If you have a commercial version of Microsoft Visual Studio, the -steps are simple: -

    -
  • Change to the msvc directory. - -
  • Run nmake to build ECL. - -
  • Run nmake flatinstall prefix=d:\Software\ECL where the -prefix is the directory where you want to install ECL. - -
  • Optionally, if you want to build a self-installing executable, you can install NSIS -and run nmake windows-nsi. -
- -

If you want to build ECL using the free Microsoft Visual C++ -Toolkit 2003, you should follow these before building ECL: -

    -
  • Download and install Microsoft Visual C++ Toolkit. -
  • Download and install the Microsoft Platform SDK -
  • Download NMAKE and install. There is an old version in Microsoft's download page. -
  • Download and install the .NET Framework SDK. Copy the files msvcrt.lib an msvcrtd.lib from this toolkit to the directory where the Visual C++ Toolkit keeps it libraries. Afterwards you can uninstall the .NET SDK. -
  • Make sure that -
      -
    • %PATH% includes the directories bin of both the C++ Toolkit, NMAKE and the SDK. -
    • %INCLUDE% includes the directories include of both the C++ Toolkit and the SDK. -
    • %LIB%includes the directories lib of both the C++ Toolkit and the SDK. -
    -
- -

Mac OSX

- -

ECL now compiles with GCC 4.0. You need not specify any particular -options. But if you still experience some strange behaviour, try -compiling with a previous version of the compiler before reporting the -bug. - -

For compiling with GCC 3.3 (shipped with XCode >= 2) you -must instruct configure to use a different compiler, as in -

-$ CC=gcc-3.3 ./configure --prefix=/opt/local
-
- -

Cross compiling ECL

- -[To be written] diff --git a/src/doc/license.in.html b/src/doc/license.in.html deleted file mode 100644 index 08f98fbb1..000000000 --- a/src/doc/license.in.html +++ /dev/null @@ -1,62 +0,0 @@ -
-_______________________________________________________________________________
-
-  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
-_______________________________________________________________________________
-
-Summary:
-
-  Permission is granted to use, copy, modify this program,
-  EXCEPT that the copyright notice must be reproduced on copies, and
-  credit should be given to the authors where it is due.
-  WE MAKE NO WARRANTY AND ACCEPT NO LIABILITY FOR THIS PROGRAM.
-
-
-In detail:
-
-  1. Permission to use, copy, modify this software and its documentation
-     for any purpose is hereby granted without fee, provided that
-     - the above copyright notice appears in all copies,
-     - both that copyright notice and this permission notice appears in
-       supporting documentation, and that
-     - you cause modified files to carry prominent notices stating that
-       you changed the files and the date of any change.
-
-  2. Please notify us if you are going to sell this software or its
-     documentation for profit.
-
-  3. WE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
-     IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
-     WE BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-     ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-     WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-     ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-     SOFTWARE.
-
-
-Additionally:
-
-  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
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  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.
-
-Please reporting bugs, comments, suggestions at
-  ECL Mailing list
-  ecls-list@lists.sourceforge.net
-or directly to the maintainer
-  Juan Jose Garcia Ripoll
-  http://juanjose.garciaripoll.googlepages.com
-
\ No newline at end of file