ecl/src/CHANGELOG

158 lines
5.7 KiB
Text

ECL 1.0:
========
* New platforms:
- Support for GNU/kFreeBSD
* New features:
- 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.
* Bugs fixed:
- 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.
* 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".
* Other visible changes:
- 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 <math.h>")
(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.
- C functions which disappear: si_set_compiled_function_name(),
si_extended_string_concatenate()
- Lisp functions which disappear: si:set-compiled-function-name,
si:extended-string-concatenate.
- New C functions: ecl_stream_to_handle(), ecl_base_char_code().
- Functions renamed: backup_fopen() -> ecl_backup_fopen()
char_code() -> ecl_char_code()
* Contributed code:
- New examples: cmdline/ls.lsp, ffi/uffi.lsp, ffi/cffi.lsp
;;; Local Variables: ***
;;; mode:text ***
;;; fill-column:79 ***
;;; End: ***