[ANN] ECL 9.6.2

Discussion of Common Lisp
Post Reply
jjgarcia
Posts: 38
Joined: Mon Oct 13, 2008 2:48 pm

[ANN] ECL 9.6.2

Post by jjgarcia » Thu Jun 18, 2009 6:30 am

ECL 9.6.2:
==========

* Visible changes:

- Reimplemented winsock streams using the new file structures (D. Statyvka)

- TRUENAME now properly reinterprets file pathnames as directory pathnames
if the file system shows that the user supplied a wrong value. For instance
(TRUENAME "/tmp") => #P"/tmp/"

* Bugs:

- Fixed a bug in the compiler that prevented building with MSVC

- Fixed a bug in src/clx/dependent.lisp that prevented compiling CLX.

- si:unbound is now a self-referential constant (symbol-value 'si:unbound)
= si:unbound

- si:bds-value returns si:unbound when finding a binding for a
previously unbound variable.

- The command :bds no longer chokes when finding unbound special variables.

- Fixed a problem with SI:MKSTEMP under windows (DS).

* Numerics:

- EXT:OUTPUT-FLOAT-NAN and EXT:OUTPUT-FLOAT-INFINITY can be redefined to
customized how NaNs and infinities are output.

- RATIONAL and FLOAT work more accurately with long-floats.

- IMAGPART returns (* 0 x) when the argument X is a real. This follows the
ANSI specification, but has the (wrong?) side effect that the imaginary
part of -0.0 is -0.0, not 0.

- Three new C constants {single,double,long}float_minus_zero in cl_core
save memory when creating zeros.

- The constants in cl_core are now used in compiled code.

- (MINUSP -0.0) => NIL

* Characters:

- ECL now uses ISO Latin names for the lowest part of the character set.

ECL 9.6:
========

* MOP:

- CALL-METHOD has only one required argument. Affects only calls to this
macro inside nonstandard method combinations.

* Visible changes:

- Physical pathnames do not always have a namestring from which they can be
reconstructed. This is the case of directory pathnames with version numbers,
for instance. Formerly ECL would refuse to print those pathnames if
*PRINT-READABLY* was true, but now it uses instead a #. form.
> (write (make-pathname :directory '(:relative)
:name nil :type nil :version :newest)
:readably t))
#.(MAKE-PATHNAME :HOST NIL :DEVICE NIL :DIRECTORY '(:RELATIVE) :NAME NIL
:TYPE NIL :VERSION :NEWEST :DEFAULTS NIL)

- WITH-CSTRING automatically coerces extended strings to base strings,
signalling an error when this is not possible.

- New command line arguments, --heap-size, --lisp-stack, --frame-stack and
--c-stack control the different memory limits.

- The stack size is now measured in bytes, not in lisp words.

- The out of memory error (ext:storage-exhausted) can now be recovered.
By default a correctable error is signaled and the user is given the
chance to increase the heap size.

* Function names:

- Added a new section in external.h for defining compatibility macros
for functions that changed name.

- make_longfloat() is renamed ecl_make_longfloat().

- Some functions got new names: ecl_make_cfun, ecl_make_cfun_va,
ecl_make_cclosure_va, ecl_def_c_function, ecl_def_c_function_va.

* Numerics:

- A new configuration flag --with-ieee-fp adds support for NaN's, infinities
and signed zeros, disabling certain floating point exceptions by default.
In addition, when this is set, functions like LOG or ATAN will not
signal errors when their arguments are not valid, but rather return NaN's
(LOG 0) => -infinity, (ATAN 0.0 0.0) => NaN

- A new command line option --trap-fpe / --no-trap-fpe tells whether ECL
should ignore floating point exceptions and produce NaNs and infinities
or either use the condition system to produce the associated errors.

- Two new functions, EXT:FLOAT-NAN-P and EXT:FLOAT-INFINITY-P.

- Eight new constants for the eight possible infinities
EXT:{SHORT,SINGLE,DOUBLE,LONG}-FLOAT-{POSITIVE,NEGATIVE}-INFINITY

* Interrupt handling:

- Under Mac OS/X, ECL now uses its own modified version of the Boehm-Weiser
garbage collector that allows both --enable-gengc and our optimized
code for signal handling.

- New condition EXT:SEGMENTATION-VIOLATION signaled by SIGSEGV and SIGBUS
events.

- Added support for the floating point exception FE_INVALID, which is
signalled when trying to do 0/0 or sqrt(-1) (A. Gavrilov)

- SI:TRAP-FPE always returns an integer denoting the new active / inactive
floating point traps. In particular, (SI:TRAP-FPE 'LAST T) returns the
currently active traps. This value can be passed to SI:TRAP-FPE as first
argument again. This is useful for performing a computation without traps
(let* (( (si::trap-fpe 'last nil)))
(prog1 (/ 0.0 0.0) (si::trap-fpe bits t)))

- A new configurable option ECL_OPT_THREAD_INTERRUPT_SIGNAL determines
which Unix interrupt type is used to communicate between threads.

* Debugger:

- Compiled functions now carry information about their source file
(based on patches by Jean-Claude Beaudoin)

- The compiler can now generate some Lisp constants as static C expressions
(based on patches by JCB)

- The debugger is now fit for multithreaded environments (JCB)

- Compiled functions with DEBUG=3 now produce information about their
arguments and variables, that can be inspected in the debugger
(evolved from patches by JCB).

- ECL records the file position of a compiled form / function instead of
the form number in that file.

* Bugs fixed:

- Remove an obsolete #if statement for Solaris that broke current builds
with Solaris 10.

- The mechanism for checking the existence of [u]int{16,32,64}_t or other
replacement types was not used for [u]int8_t.

- When COMPILE-FILE is invoked with a non-nil value of :OUTPUT-FILE, ECL
now honors the file type supplied by the user, instead of overriding it
with "fas" or "fasl". The same applies to COMPILE-FILE-PATHNAME.

- When building ECL's C preprocessor (dpp), the value of CPPFLAGS was
not used.

- A wrong order in the list of libraries (-lpthread -lgc) prevented ECL
from having multithread support in FreeBSD, OpenBSD and NetBSD.

- Removed a shell command from src/Makefile.in The command used braces {}
which FreeBSD does not understand.

- Changed the way in which threads are created and registered with ECL to
avoid certain race conditions and data loss when it takes a long time
betwee calls to mp:make-proceess and mp:process-enable

- ecl_import_current_thread() now properly stores the thread handle in
the process object and can be called multiple times for the same thread.

- When performing unoptimized function calls, the interpreter did not save
actual value of the lexical environment, thus preventing the debugger from
inspecting it (fixed by JCB).

As usual, releases are available in http://ecls.sourceforge.net/download.html

lambdax
Posts: 4
Joined: Thu Sep 17, 2009 5:50 am

Re: [ANN] ECL 9.6.2

Post by lambdax » Tue Dec 29, 2009 6:18 am

which link?

nuntius
Posts: 538
Joined: Sat Aug 09, 2008 10:44 am
Location: Newton, MA

Re: [ANN] ECL 9.6.2

Post by nuntius » Tue Dec 29, 2009 7:54 pm

For a simple download, start here.
http://sourceforge.net/projects/ecls/files/

lambdax
Posts: 4
Joined: Thu Sep 17, 2009 5:50 am

Re: [ANN] ECL 9.6.2

Post by lambdax » Tue Dec 29, 2009 9:59 pm

I downloaded ecl-9.12.3 then uncompressed it, but no file can be open. I don't find any file to start it. Witch do I need?

nuntius
Posts: 538
Joined: Sat Aug 09, 2008 10:44 am
Location: Newton, MA

Re: [ANN] ECL 9.6.2

Post by nuntius » Tue Dec 29, 2009 10:52 pm

I'm gonna guess you're running on mswin. If so, try using http://www.7-zip.org/ to extract this and any other compressed file. I thought there were precompiled binaries, but they seem to be no more.

To compile ecl yourself,
- install a C compiler, either gcc (both MinGW and MSYS -- see http://mingw.org/wiki/MSYS) or Visual C++ 2008 (express should work -- http://www.microsoft.com/express/download/default.aspx)
- extract the ecl sources
- follow the instructions in INSTALL (a text file at the top of the source tree) (for gcc, use the unix instructions in the msys shell)

Hope that helps, I haven't compiled ecl on mswin in a couple years, so YMMV.

If you want an easier install experience, consider http://trac.clozure.com/openmcl or http://clisp.cons.org/

gugamilare
Posts: 406
Joined: Sat Mar 07, 2009 6:17 pm
Location: Brazil
Contact:

Re: [ANN] ECL 9.6.2

Post by gugamilare » Wed Dec 30, 2009 8:23 am

Assuming you are under Windows, you may try Cygwin to compile ECL as well - just choose to install gcc and perhaps libgc (I installed more things, but I guess this is enough). I compiled ECL here under Cygwin with unicode support without problems:

Code: Select all

./configure --enable-unicode && make && make install
Without --enable-unicode works too, of course. Just a note: it didn't work with --enable-threads here.

If you find this too complicated, you have easier and newbie-friendlier options: Cusp, Lisp Starter Pack or Able with SBCL (as I can see, Able have a few dependencies you'll need to install, though, which may be a little tricky in Windows).

Suroy
Posts: 46
Joined: Sat Dec 19, 2009 11:20 am

Re: [ANN] ECL 9.6.2

Post by Suroy » Wed Dec 30, 2009 12:50 pm

Compiling on windows is a utter breeze.

Download Microsoft Visual studio C++ 2008 (I had some problems with 2010 for the next step but eventually got it to work).

Open the Microsoft Visual Studio Tools Command Prompt (this sets the environment variables needed to compile). You can find it under the program start menu under visutal studio c++->visual studio tools

Browse to your ecl directory then browse to msvc under it.

Open up the make file (or whatever they call it) in there and search for 'unicode' if you want unicode support. add a '1' after = sign (instructions are above it in the makefile)

Better make sure there are no spaces in your path to the msvc folder or it will fail!

type
nmake
type
nmake install prefix=C:\path\to\wherever\you\want\ecl\

You're done!

Now don't close the command prompt yet. You need to set the correct variables. This is how i did it on windows 7. If it says setx doesn't exist thats because you dont have C:\Windows\System32 in your path environment variable.
type the below (WARNING! THIS WILL PERMANENTLY RESET your environment variables. so, type in echo %path% and similar and make sure that what is listed there is what you want to reset your vars to. )

setx path “%path%”
setx lib “%lib%”
setx include “%include%”


This page gives you pretty much the same steps
http://ecls.sourceforge.net/new-manual/ ... eface.msvc

Post Reply