summaryrefslogtreecommitdiff
path: root/lang/ecl
AgeCommit message (Collapse)AuthorFilesLines
2009-12-15Update to ECL 9.12.3.asau2-6/+6
ECL 9.12.3: =========== * Visible changes: - When converting rationals to floats, ECL now rounds instead of using the routine in GMP, which truncates. - LOAD open streams in buffered mode. It does not cause any significant performance increase except in broken network filesystems that lack buffering such as some implementations of NFS. ECL 9.12.2: =========== * Bugs fixed: - RANDOM broken on 64-bits architectures. - The debugger now shows the package names of inspected variables. - The code in CLX that dealt with interrupts had become outdated. * Other changes: - Methods now show up in the debugger with their original name. - Enlarged the string buffers used for reading and parsing lisp data. ECL 9.12.1: =========== * Platform support: - Support for Itanium. - Support for Solaris and SunStudio compiler. - Support for Microsoft Visual Studio C++ 10 beta. - Support for Cygwin. * Visible changes: - New function EXT:ARRAY-RAW-DATA returns a non-adjustable vector of type (UNSIGNED-BYTE 8) with the content of an array. The returned array overlaps with the original, so any change on one will affect the other. - LOAD works on special files (/dev/null and the like). - New command line option --version outputs the version number preceded by the implementation name ("ECL 9.11.1" in this particular release). - MULTIPLE-VALUE-BIND is optimally replaced with a LET form when the number of variables is 1. - ECL now accepts Windows' UNC pathnames. (with-open-file (s #P"//JUANJO-IMAC/Public Folder/index.html" :direction :input) (loop for l = (read-line s nil nil) while l do (princ l))) - The default memory limits are increased up to 512Mb for 32 bit images and 4Gb for 64-bits systems. - The bignums generated by RANDOM did not contain enough random bits. * Bugs fixed: - In single-threaded builds, ECL did not properly restore the signal mask before jumping out of a signal handler. - Floating point exceptions were sometimes ignored, leading to infinite loops. - A new configuration flag is added, --with-dffi. This flag allows deactivating the foreign function interface when the compiler does not support inline assembly with the GCC syntax and libffi is not available. - In a multithreaded ECL, when handling a Ctr-C/SIGINT asynchronous interrupt, the CONTINUE restart was not always available. - In cygwin, LOAD was unable to load and execute binary files. - In cygwin, FASL files can not lack a file extension, because dlopen() then looks for a file ending in ".dll" and fails. - In cygwin, files that are dlopen'ed must have executable permissions. - ECL ignored the IGNORABLE declaration. - The IGNORE/IGNORABLE declarations accept (but ignore) arguments of the for (FUNCTION function-name). - SUBTYPEP caused a SIGSEGV when the input was a not finalized class. - Due to the SUBTYPEP bug, ECL could not compile DEFMETHOD forms whose arguments referenced non-finalized classes - When supplied an error value, (EXT:SAFE-EVAL form env &optional err-value) never returned the output of the evaluated form. - FIND-SYMBOL accepted string designators instead of just strings, as mandated by the ANSI specification. - APPEND copied also the last argument. - (LOG #C(x x)) now produces a better result when x == 0 - (ATAN #C(0.0 1.0)) no longer produces an infinite recursion. - Solved a hard to hit bug in DEFCLASS's routine for detecting collisions in slot names - LOG and LOG1P did not work properly with NaNs under linux. - ECL had problems combining #. and #n=/#n# reader macros. - FDEFINITION and SYMBOL-FUNCTION caused an incorrect error condition when acting on NIL. - The optimizer for TYPEP did not work when passed three arguments. * Clos: - CLOS:SET-FUNCALLABLE-INSTANCE-FUNCTION broke the value if SI:INSTANCE-SIG, preventing any further access to the instance slots. - The optimized slot accessors check that the instances are up to date. - The use of MAKE-INSTANCES-OBSOLETE now forces UPDATE-INSTANCE-FOR-REDEFINED-CLASS to be invoked even if the slots did not change. - ENSURE-GENERIC-FUNCTION-USING-CLASS does not provide a default method class. * Sockets: - The socket option TCP_NODELAY option has been fixed: it was improperly using the socket interface SOL_SOCKET instead of IPPROTO_TCP (Chun Tian) - sockopt-linger and (setf sockopt-linger) now work as they should, using the struct linger argument (M. Mondor) * ASDF: - ASDF:MAKE-BUILD now accepts also a :PROLOGUE-CODE argument with code to be executed before all lisp files are run. - C:BUILDER's argument :PROLOGUE-CODE can now be a lisp form. In the case of standalone programs the prologue code is always executed after cl_boot() has been invoked. - QUIT did not work from standalone executables created with neither ASDF nor with C:BUILDER.
2009-10-11Update to ECL 9.10.2. Changes since previous package:asau3-7/+7
ECL 9.10.2: =========== * Bugs fixed: - Fixed typo in src/c/unixint.d that affected single-threaded builds - The GMP library did not build in OS X Snow Leopard in 64-bits mode. - The package MP is needed also in single-threaded versions (for fake mp:with-lock, which is used in CLX). - In CLX, there were a couple of typos in the code related to locks and ECL. These typos only revealed in multithreaded builds of the CLX library. - In Linux there is a problem with handlers for SIGFPE being totally ignored by the system. The problem seems to be solved by avoiding the use of feenableexcept() and restricting to C99 exception tests. That is bad because we can not reliably and cheaply detect underflow exceptions. - Under OS X, --enable-rpath works again. It was broken for about a year due to my misunderstanding of how -install_name works and the differences between that and -rpath. ECL 9.10.1: =========== * Configuration flags: - The option --enable-slow-config is now always on in Solaris and it does not take more time than an ordinary build using --with-system-gmp=no - A new compiler macro ECL_NO_LEGACY can be defined to remove all deprecated macros and functions. Have a look at the end of src/h/external.h to see what functions are deprecated on each release -- typically they are functions that have been renamed with one of the prefixes, ecl_, cl_, si_, ext_ or _ecl. - Under OS X, you can use the environment variable ABI to select between 32-bits (ABI=32) or 64-bits pointers (ABI=64). * Bignums: - When embedded, ECL may coexist with code that uses the GMP library in different ways, and sometimes that code may use different memory allocation routines. In order to solve this problem ECL introduces a new option, ECL_OPT_SET_GMP_MEMORY_FUNCTIONS, which determines whether GMP will use the Boehm-Weiser garbage collector to allocate memory or not. - The previous change also implies that ECL must do all bignum computations using GMP-allocated numbers that are then automatically freed. More precisely, this is done using big_register[0-2]_get() and big_register_normalize() everywhere and operating destructively on those numbers. These functions have been made aware of the fact that GMP may use other allocation routines and always call mpz_clear() to free memory. - The internal functions dealing with bignums have been renamed with the usual prefix "_ecl", and some of them have been turned into macros. Do not use those functions if possible. - Bignums are now allocated as a compact IMMUTABLE unit that combines the lisp object and the data for the GMP integer itself. Since it can be now allocated as an atomic (i.e. pointerless) region of memory, the garbage collector has to work less for marking and collecting them. - The function ecl_alloc_simple_vector() also creates arrays as a compact unit with pointerfree memory whenever possible. - The functions cl_alloc_simple_{base,extended}_string() now carry the prefix ecl_ instead of cl_, and they are simple aliases for ecl_alloc_simple_vector. - ECL now implements weak pointers. The interface is (ext:make-weak-pointer value) => weak-pointer (ext:weak-pointer-value weak-pointer) => value and it defines a new built-in type, EXT:WEAK-POINTER - When running in multithreaded mode, the streams for *terminal-io*, *standard-input* and *standard-output* are created using non-locking C pipes, instead of locking C streams. This is essential to allow background threads gain control of the console. * Native threads: - ECL now implements WITHOUT-INTERRUPTS and WITH-INTERRUPTS similarly to SBCL. It creates three local macros, ALLOW-WITH-INTERRUPTS and WITH-LOCAL-INTERRUPTS, and an additional one WITH-RESTORED-INTERRUPTS, which executes the forms with the value of interrupts of the forms that surround WITHOUT-INTERRUPTS. - Symbol SI:*INTERRUPT-DISABLE* changes name to SI:*INTERRUPTS-DISABLED*. - New function MP:PROCESS-JOIN, waits for a thread to terminate (J.C.Beaudoin) For this to work, threads are always created in a joinable state, and they only detach themselves when exiting and no process is waiting. - EXT:QUIT now has a different definition (ext:quit &optional (exit-code 0) (kill-all-threads nil)) The first difference is that QUIT will execute all unwind-protect forms that surrounds the form that caused the exit. The second one is that we can explicitely kill all threads and wait for them to exit before exiting. - Two new functions MP:PROCESS-SUSPEND and MP:PROCESS-RESUME allow suspending and resuming a thread. - The C function ecl_import_current_thread() now automatically registers the thread with the garbage collector. You should use ecl_release_current_thread() before the thread exits, for consistency. - Due to the change in ecl_import_current_thread(), ECL now needs a slightly more modern version of the Boehm-Weiser garbage collector. Hence, even if you try to enforce --enable-boehm=system, you may find that ECL ignores the pre-installed library in favor of the one shipped with it. * Bugs fixed: - WITH-LOCK might run into a race condition when the lock acquisition process was interrupted. - The following functions are now interrupt safe: MP:MAKE-LOCK. - The use of GIVEUP-LOCK in WITH-LOCK is now protected against interrupts. - Forms in toplevel EVAL-WHEN or PROGN statements did not have a proper value of bytecodes.definition, causing the debugger to enter an infinite chain of errors - In Solaris 8 ECL failed because it did not find inttypes.h - When signbit() is not available, ECL now looks for existence of copysign. * Signals and environment: - The toplevel now allows handling multiple processes in the same console. Two new commands, :w and :s, allow reading the list of processes waiting for grabbing the console and switching to that given process. - ECL now has a signal handling thread running in the background. When Ctrl-C or Ctrl-Break is pressed or the process gets a SIGINT signal, then a separate thread is spawned for handling that event. This thread typically enters the debugger, allowing either to continue or to interrupt specific processes. * Packages: - The package hash tables are not destructively extended, but rather a new hash table is created when we need more room. ecl_sethash() now returns the pointer to the possibly reallocated hashtable. - ECL now follows the SBCL model, by which there is a global lock for destructive package operations (INTERN, EXPORT, etc), but not for query only operations (FIND-SYMBOL, PACKAGE-USE-LIST), etc. * Windows: - The latest version of Visual Studio introduced a number of automatically generated files (*.implib, *.manifest, *.expdef) which are not used at all by ECL, but which were also not deleted, causing the temporary directory to be filled with garbage. - FASLs created by COMPILE and LOAD in the directory for temporary files are now properly deleted before exiting ECL. - ECL now embeds the manifest file in the generated executables and shared libraries. * Other errors: - Extended strings (i.e. strings with characters that are not base-characters) were not identified as valid documentation strings by the interpreter.
2009-08-22Provide licence information (GNU LGPL v. 2).asau1-2/+2
2009-08-19Update comment on threads support.asau1-2/+3
2009-08-19Update to ECL 9.8.4:asau3-7/+10
* Bugs fixed: - si_{set,get}_finalizer were not exported from ecl.dll and thus the library TRIVIAL-GARBAGE failed to build in Windows - The MSVC port did not define @ECL_LDRPATH@ and failed to build ecl.dll - The sequence functions did not understand the newest specialized array types. * Visible changes: - The configuration flag --with-__thread now defaults to NO because many platforms do not support it and GCC does not complain, making reliable detection impossible. - For further compatibility with SBCL, ECL now supports two additional buffer types :FULL and :LINE which are compatible with :FULLY-BUFFERED and :LINE-BUFFERED (Thanks to Matthew Mondor) - The sockets library can now be loaded using either (REQUIRE 'SOCKETS) or (REQUIRE 'SB-BSD-SOCKETS).
2009-08-14Remove stray "@dirrm".asau1-1/+0
2009-08-13Update to ECL 9.8.3.asau5-12/+194
Changes since previous packaged version (8.12.0) include half year of very active development: - The dynamic FFI is now implemented using libffi. - Support of UNICODE. - Multithreading (provided Boehm-GC built with threads support). - Command line flags to control the different memory limits: --heap-size, --lisp-stack, --frame-stack and --c-stack. - 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. - Better compiler, optimizer, debugger. - Improved handling of compiler errors. - New and more easily extensible implementation of streams. - *STANDARD-INPUT*, *{STANDARD,ERROR,TRACE}-OUTPUT* are no longer synonyms to *TERMINAL-IO* but directly the input or output streams associated to stdin, stdout and stderr. - Improved numerics. - Read-only readtables. - Numerous bug fixes.
2009-06-14Remove @dirrm entries from PLISTsjoerg1-3/+1
2009-03-20Simply and speed up buildlink3.mk files and processing.joerg1-13/+6
This changes the buildlink3.mk files to use an include guard for the recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS, BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of enter/exit marker, which can be used to reconstruct the tree and to determine first level includes. Avoiding := for large variables (BUILDLINK_ORDER) speeds up parse time as += has linear complexity. The include guard reduces system time by avoiding reading files over and over again. For complex packages this reduces both %user and %sys time to half of the former time.
2008-12-19Update to ecl-8.12.0. From Aleksej Saushev via pkgsrc-wip.tnn4-23/+24
This release is the last one before a major redesign of ECL, which will affect issues like Unicode streams and handling of interrupts. Most notable changes since 0.9l include: - new versioning scheme, based on <year>.<month>.<patchlevel>; - compiler error, warning, notes and messages handling; - float point number exceptions handling; - signals handling; - improvements to help file; - improvements to operating system interface; - CLX 0.7.3; - many bug fixes.
2008-08-12Import ecl-0.9.12 (ecl-0.9l) as lang/ecl. From pkgsrc-wip, packaged by asau@tnn5-0/+106
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.