From: Juanjo
Subject: [ANN] ECL 8.12
Date: 
Message-ID: <bdaf1b0f-229f-443f-92e6-4e139fbcbb2d@v39g2000pro.googlegroups.com>
Announcement of ECL v8.12.0
===========================

ECL stands for Embeddable Common-Lisp. The ECL project aims to produce
an
implementation of the Common-Lisp language which complies to the ANSI
X3J13
definition of the language.

The term embeddable refers to the fact that ECL includes a lisp to C
compiler,
which produces libraries (static or dynamic) that can be called from C
programs. Furthermore, ECL can produce standalone executables from
your lisp
code and can itself be linked to your programs as a shared library.

ECL supports the operating systems Linux, FreeBSD, NetBSD, OpenBSD,
Solaris (at
least v. 9), Microsoft Windows and OSX, running on top of the Intel,
Sparc,
Alpha and PowerPC processors. Porting to other architectures should be
rather
easy.

ECL is currently hosted at Common-Lisp.net and SourceForge. The home
page of
the project is http://ecls.sourceforge.net, and in it you will find
source code
releases, a CVS tree and some useful documentation.

Notes for this release
======================

This release is the last one before a major redesign of ECL, which
will affect
issues like Unicode streams and handling of interrupts.

This is also the first one to follow the new numbering scheme,
inspired by that
of Ubuntu. The release number follows the scheme year.month.[0-9],
where the
last digit marks the patch release. The numbering is now incorporated
in the
library names, so that different versions of ECL may coexit on the
same system.

ECL 8.12.0:
==========

* Visible changes:

 - The compiler now signals compiler-error, compiler-warning and
compiler-note
  for errors, warnings and notes, respectively.

 - Printing of compiler messages is now ruled by *COMPILE-PRINT*,
*COMPILE-VERBOSE*
  and *SUPPRESS-COMPILER-MESSAGES*. The latter is either NIL or a
valid lisp type
  which denotes which compiler messages are suppressed. If
*SUPPRESS-COMPILER-MESSAGES*
  is NIL and *COMPILE-VERBOSE* is NIL, then no messages are shown.

 - *SUPPRESS-COMPILER-NOTES* and *SUPPRES-COMPILER-WARNINGS* are
deprecated and
  will be removed in next release.

 - ECL allows the user to set up handlers for different compiler
conditions,
  including errors, warnings and simple notes. The recommended
procedure is to
  use HANDLER-BIND and _NOT_ to transfer control out of the
compilation
  environment, but to defer to the default handlers or use the
restarts ABORT
  and MUFFLE-WARNING.

       (use-package :c)
       (let ((warnings nil))
         (handler-bind ((compiler-message #'(lambda (c)
                                              (push c warnings))))
           (compile-file "foo.lsp" :verbose nil :print nil))
         (format t "~&;;; Printing compiler messages")
         (loop for m in (nreverse warnings)
            for i from 0
            do (format t "~&·@<;;; ·@;Message #~D~%~A~:>" i m)))

 - On Windows, ECL recognizes the environment variables HOMEDRIVE and
HOMEPATH
  and uses them to construct the output of user-homedir-pathname.

 - We switch to an Ubuntu-like versioning system, based on $(year).$
(month).x
  where "x" is 0 for a release or any higher number for a patched
version.

 - In Unix-type systems, ECL now installs with a "soname" and using
versioned
  directory names, such as /usr/lib/ecl-8.9.0, /usr/lib/libecl.so.8.9,
etc

 - New configuration flag, --without-fpe, to disable floating point
exception
  code in platforms that have buggy implementations of feenableexcept
().

 - Changes in the build process of the Microsoft Visual C++ port
contributed
  by Muhammad Haggag.

 - All known C signals are now exported by ECL as constants in the EXT
package,
  such as EXT:+SIGINT+, EXT:+SIGFPE+, etc.

 - Function (EXT:CATCH-SIGNAL signal-code boolean) can be used to tell
ECL to
  trap or ignore certain signals. In a near future a function can be
provided.

 - In platforms that support sigaltstack(), ECL may detect stack
overflows and
  gracefully quit.

 - The help file now contains all functions in the library, including
  internal ones.

 - A new configuration flag, --with-signed-zero, determines whether
ECL supports
  IEEE 754 signed zeros

 - EXT:RUN-PROGRAM now returns two values: the two way stream and the
exit code
  of the process if :WAIT is T (Josh Elsasser)

 - Some symbols now belong in the EXT package: EXT:GETENV, EXT:SETENV,
  EXT:GETCWD, EXT:CHDIR.

 - EXT:GETCWD by default always update the value of *DEFAULT-PATHNAME-
DEFAULTS*

 - *DEFAULT-PATHNAME-DEFAULTS* is initialized to the value of
EXT:GETCWD.

 - A new command line option, -debug, enables the debugger whenever an
error
  happens. The converse is -nodebug.

 - We now ship version 0.7.3 of the portable CLX library.

 - A new method, STREAM-FILE-POSITION, has been added to the Gray
streams package.

* Embedding:

 - ECL now implements a more transparent interface for setting and
querying
  options related to signal trapping, stack sizes and general
behavior. These
  are options that should be set before calling cl_boot() to customize
later
  behavior. It does not make sense to change them at run time. The
current
  list of options is set with ecl_set_option(code, value) and queried
with
  ecl_get_option(code):
       ECL_OPT_INCREMENTAL_GC,
       ECL_OPT_TRAP_SIGSEGV,
       ECL_OPT_TRAP_SIGFPE,
       ECL_OPT_TRAP_SIGINT,
       ECL_OPT_TRAP_SIGILL,
       ECL_OPT_TRAP_SIGBUS,
       ECL_OPT_BOOTED, /* read only */
       ECL_OPT_BIND_STACK_SIZE,
       ECL_OPT_BIND_STACK_SAFETY_AREA,
       ECL_OPT_FRAME_STACK_SIZE,
       ECL_OPT_FRAME_STACK_SAFETY_AREA,
       ECL_OPT_LISP_STACK_SIZE,
       ECL_OPT_LISP_STACK_SAFETY_AREA,
       ECL_OPT_C_STACK_SIZE,
       ECL_OPT_C_STACK_SAFETY_AREA,
       ECL_OPT_SIGALTSTACK_SIZE,
       ECL_OPT_LIMIT

 - Two new convenience functions, ecl_defparameter() and ecl_defvar.

* Bugs fixed:

 - The optimizer for COERCE might enter an infinite loop for certain
  type intervals.

 - The sharp macros #n# and #n=... did not work well with arrays of an
  specialized type.

 - Deactivate --enable-asmapply by default, because it is still an
experimental
  feature.

 - In compiled files, externalize package objects using FIND-PACKAGE.

 - In RUN-PROGRAM, there were two bugs: first, the keyword :WAIT was
not
  defined in the C core and caused an error when used; second, if the
output
  stream was missing or directed to the standard output, it would
fail.

 - SI:LOAD-FOREIGN-MODULE does not coerce the library name to a
truename
  before loading. Instead, it leaves this task to the appropriate
routine,
  dlopen or similar.

 - Bytecode objects created inside an eval-when had an invalid name.

 - SI:LOAD-FOREIGN-MODULE now relies on dlopen/LibraryLoad/... to find
the
  foreign libraries. Nevertheless, duplicate libraries are still
identified
       > (si::load-foreign-module "libm.dylib")
       #<codeblock "libm.dylib">
       > (si::load-foreign-module "/usr/lib/libm.dylib")
       #<codeblock "libm.dylib">

 - In reading functions, the value of :RECURSIVE-P should not
interfere with
  that of :EOF-ERROR-P.

 - The MSVC port can be built with support for unicode characters.

 - PROCLAIM/DECLAIM now understand the abbreviated form of type
declarations
  user-defined and complex types.

 - Sharp-dot macro reader (#.) gets its own sharp-equal context (#=)
so that
  the following form
       (read-from-string "'#.(princ (list '#1=(1 2) '#1#))")
  actually prints the right list (#1=(1 2) #1#).

 - Inline/not-inline declarations for SETF-functions are not ignored
(Josh
  Elsasser).

 - When a SETF place is a macro, it has to be expanded with
MACROEXPAND-1.

 - In FTYPE proclamations and declarations, the type may now be a user
defined
  function type (Josh Elsasser).

 - COMPILE would create an extra empty file which would not get
deleted after
  finishing compilation (Josh Elsasser).

 - On overflow, binding and frame stack signal a correctable error
with
  STACK-OVERFLOW condition.<
       (block faa
             (labels ((foo (x)
                        (catch 'foo (foo (1+ x))))
                      (handle-overflow (c)
                        (let ((s (ext:stack-overflow-size c)))
                                  (if (< s 2304)
                              (continue)
                              (return-from faa (ext::stack-overflow-
type c))))))
               (handler-bind ((ext:stack-overflow #'handle-overflow))
                 (foo 1))))

 - New function (EXT:SET-STACK-SIZE type size) can resize type =
  EXT:BINDING-STACK, EXT:LISP-STACK and EXT:FRAME-STACK.

 - FLOAT-SIGN returns the right value on negative zeros.

 - The reader and the printer now understand negative zeros.

 - Negative and nonnegative zeros are not EQL.

 - ENSURE-DIRECTORIES first has to merge the path with *DEFAULT-
PATH...*

 - SUBTYPEP does not support complex CONS type specifiers. This caused
the
  compiler to choke on declaration such as (CONS INTEGER (CONS T T))
  and the like.

 - The value of *DEFAULT-PATHNAME-DEFAULTS* has to be of type
pathname. Other
  pathname designators are not allowed and a correctable error is
signaled
  when the value of this variable is found to be of the wrong type.

 - DIRECTORY would fail to handle symbolic links under certain
conditions.

 - The optional type checks generated by the compiler are based on
TYPEP and
  thus they fail when the declaration type contains a function type
(FUNCTION
  (...) ...)  This is now solved by replacing parts of these types
with the
  simple type FUNCTION.

 - Hash tables were not properly serialized.

 - WRITE/READ-LINE and READ-BYTE did not work with gray streams (A.
Vodonosov)

 - When working with Gray streams, READ-LINE did not handle the EOF
properly.

 - The routine that computed the class precedence list produced the
wrong
  result for moderately complex class hierarchies. It has been
replaced with
  a version that exactly implements the algorithm in the ANSI
specification.

 - At the toplevel, the value of *read-suppress* is ignored, so that
  setting (setf *read-suppress* nil) does not prevent the user from
entering
  new commands.

From: Francogrex
Subject: Re: ECL 8.12
Date: 
Message-ID: <95a02302-a2d6-4beb-bba6-ec8ca7002ed2@z28g2000prd.googlegroups.com>
On Dec 17, 4:55 pm, Juanjo <·····················@googlemail.com>
wrote:
> Announcement of ECL v8.12.0

Thanks, I already installed this new version. I'm eagerly waiting for
the next update which seems will involve a major redesign of ECL
From: jimka
Subject: Re: ECL 8.12
Date: 
Message-ID: <52d2d00c-c1d3-461e-b204-96f030fe3080@d42g2000prb.googlegroups.com>
does anyone know whether there is a git repository for ECL?
From: D Herring
Subject: Re: ECL 8.12
Date: 
Message-ID: <494d1a91$0$17068$6e1ede2f@read.cnntp.org>
jimka wrote:
> does anyone know whether there is a git repository for ECL?

Yes.  I fetch from
http://ecls.sourceforge.net/git/ecl/.git

- Daniel
From: jimka
Subject: Re: ECL 8.12
Date: 
Message-ID: <8e0c234e-9e9e-4658-aa81-0a7c5e515439@u18g2000pro.googlegroups.com>
On Dec 20, 4:44 pm, D Herring <········@at.tentpost.dot.com> wrote:
> jimka wrote:
> > does anyone know whether there is a git repository for ECL?
>
> Yes.  I fetch fromhttp://ecls.sourceforge.net/git/ecl/.git
>
> - Daniel

great, thanks, worked like a charm.
git clone http://ecls.sourceforge.net/git/ecl/.git