Commit graph

9 commits

Author SHA1 Message Date
asau
74f58e9ea3 Update to ECL 16.0.0.
Based on changes from Matthew Mondor as forwarded by Kamil Rytarowski.


Changes since 15.3.7:
 API changes
 - There is no UFFI nickname for FFI package - we piggyback on
   cffi-uffi-compat for UFFI dependent systems (our UFFI wasn't version 2.0
   compatible and there were problems with ADSF dependencies on UFFI - it
   wasn't a system)
 - CLOS has the new nickname "MOP"
 - The new ext:run-program :error argument can automatically create a
   separate stream if provided with the :stream keyword.
   The external-process structure also has a new field to hold that stream.
 - ext:run-program accepts new arguments - :if-input-does-not-exist,
   :if-error-exists and :external-format
 - ext:system no longer binds *standard-input* and *standard-output* and
   now ignores input and output (use ext:run-program for more control)
 - methods can be specialized on both single-float and double-float
   (built-in classes were added for them)
 - LET/FLET/LABELS will signal error if parameter of the same name will
   appear multiple times
 - lambda lists with repeated required parameter name are considered invalid
 - deprecated configure options "--with-system-boehm=x" and
   "--enable-slow-config" removed

 Enhancements:
 - Verification if manual is up-to-date, providing corrections for
   outdated parts
 - Documentation is now included in the main repository under the
   toplevel directory `doc'
 - Update libffi to version 3.2.1
 - Update asdf to version 3.1.5.4
 - Update Boehm-Demers-Weiser garbage collector to version 7.4.2
 - Pathname string-parts internal representation is now character,
   not base-char
 - Dead code removal, tabulators were replaced by spaces
 - Better quality of generated code (explicit casting when necessary)

 Issues fixed:
 - Various fixes of bogus declarations
 - Remove deprecated GC calls
 - ROTATEF, SHIFTF, PSETF reworked to conform to the ANSI standard.
   Places were handled improperly in regard of multiple values.
 - Improved unicode support in character handling
 - Format handles floats and exponentials correctly (major format rework)
 - Stack limits refinements and cleanup, inconsistency and bug fixes
 - Duplicate large block deallocation with GMP 6.0.0a fixed
 - ECL builds on OpenBSD with threads enabled
 - Closures put in mapcar work as expected in both compiled and
   interpreted code
 - Improved readtable-case handling (:invert and character literals now
   conform)
 - Library initialization functions have unique names - no risk of
   clashing symbol names in object files
 - Format float bug fixed, when width and fdigits were not set, but k was
 - `logical-pathname-translations' now throws an error if logical
   pathname wasn't defined yet, to conform with ANSI (it used to return NIL)
 - Wildcards in logical pathname translations are replaced correctly
 - Regression testing framework and unit tests cleanup
 - deftype ANSI conformity fix (deftype accepts macro labda-lists)
 - ECL built with MSVC doesn't crash when Control-C is pressed
 - Other minor tweaks


Changes in 15.3.7 since 15.2.21:
 Issues fixed:
 - DEFUN functions not defined as toplevel forms were also directly
   referenced by other code in the same file.
 - STABLE-SORT works as desired (bogus optimization for strings fixed).
 - broken --with-sse=yes configure flag works once again.

 Enhancements:
 - autoconf scripts are rewritten to support version 2.69 stack.
 - stack direction is now correctly determined, fixing gcc 5.x builds.
 - compilation of ECL under MSVC (2008/2010/2012) even with custom
   code pages.
 - In compiled code it is possible to declare variables to have a C
   type such as in (declare (:double a)) and then the variable is
   enforced to be unboxed to such type.
 - New form FFI:C-PROGN used to interleave C statements with lisp
   code, where the lisp code may refer to any number of variables.
   Example:
       (lambda (i)
         (let* ((limit i)
                (iterator 0))
           (declare (:int limit iterator))
           (ffi:c-progn (limit iterator)
                        "for (#1 = 0; #1 < #0; #1++) {"
                        (print iterator)
                        "}")))


Changes in 15.2.21 since 13.5.1:
 - Features coverity scan model, ffi-unload-module implementation,
   probably more.
 - Build system enhancements, parallel builds, fixes, simplifications,
   cleanups, maintenance.  minor cleanup, maintenance.
 - Numerous fixes.
2015-12-09 21:00:47 +00:00
wiz
11676f935e Bump PKGREVISION for boehm-gc default-on threads, just to be on
the safe side.
2014-04-30 14:19:40 +00:00
wiz
140d239e83 recursive bump for boehm-gc API bump 2014-04-21 13:25:53 +00:00
dholland
7e751949e4 Set BUILDLINK_ABI_DEPENDS correctly (with +=, not ?=)
It turns out there were a lot of these.
2012-05-07 01:53:12 +00:00
asau
1807ff2338 Recursive revision bump for GMP update, 2nd part. 2010-03-24 21:54:15 +00:00
asau
c50627aae3 Update to ECL 10.3.1, contributed by Matthew Mondor.
ECL 10.3.1:
===========

This release has three important focuses: performance improvements in various
fronts (garbage collection and hash tables), extending the run-process function
and important fixes to let ECL work better with Slime. To quote one lisper
ECL "this feels like a real Lisp implementation now"

* Bugs fixed:

 - DIRECTORY used stat() also on files that did not match the directory masks.

 - The syntax for matching strings in DIRECTORY is now the same as in
   PATHNAME-MATCH-P. Formerly there were small differences, such as DIRECTORY
   understanding characters #\? and #\\ and PATHNAME-MATCH-P not.

 - Standalone executables do not require the existence of the ECLDIR directory
   to start up -- it may be required, though, for working Unicode because the
   encodings are stored there.

 - PROCESS-JOIN was exported from the wrong package.

 - PROCESS-JOIN failed when invoked with a thread that was in the process of
   being set up.

 - The output values of a process or thread are now collected in the process
   object and returned by PROCESS-JOIN.

 - ECL's interrupt servicing thread could not be shut down.

 - When compiling LET forms, ECL emitted warnings about removal of variables
   even when they were declared IGNORABLE.

 - An internal variable MP:*ALLOW-WITH-INTERRUPTS* was not declared special.

 - The compiler now understands function type proclamations with &OPTIONAL
   values.

 - The compiler now accepts THE special forms with a VALUES type.

 - If file A.lsp explicitely loads B.lsp to use a package that is only defined
   in B, then ECL signaled an error in the compiled version of A even after
   this one had required B.lsp.

 - ECL accepts FTYPE proclamations for SETF-functions.

 - On platforms where a stack overflow does not trigger a SIGSEGV, ECL was
   unable to recover from the overflow. Now it jumps to the outermost
   protection frame (typically the toplevel).

 - Socket streams are now two-way streams. This solves a problem with certain
   platforms (OS X) where a C stream can not be used to read and write
   simultaneously by two different threads.

 - TRUENAME and PROBE-FILE were not thread safe.

* Visible changes:

 - Hash tables now use hand-coded specialized loops for EQ, EQL, EQUAL, EQUALP
   and package types, achieving a reduction of about 30% time in lookups.

 - A new function EXT:ENVIRON returns the list of strings that makes up the
   process environment. This is the equivalent of POSIX (char **environ)
   and Windows' GetEnvironmentStrings.

 - EXT:RUN-PROGRAM now accepts a keyword argument, :ENVIRON, with a list of
   strings used to configure the environment of the child process. For instance
   '("PWD=/home" "PATH=/usr/bin")

 - EXT:RUN-PROGRAM returns as third value an EXT:EXTERNAL-PROCESS structure,
   which supports the queries EXT:EXTERNAL-PROCESS-{PID,INPUT,OUTPUT,STATUS},
   following CCL's conventions.

 - The new function EXT:EXTERNAL-PROCESS-WAIT can be used to wait indefinitely
   for termination of a process or simply to query its status.

 - ECL implements a new garbage collector marking mode which at the overhead of
   one word per object achieves precise marking of heap objects, reducing
   accidental data retention and improving the time spent in garbage
   collection. This mode is only available when using --enable-boehm=system at
   configuration time.

 - ECL now ships with ASDF version 1.604

 - The variables C:*USER-CC-FLAGS* and C:*USER-LD-FLAGS* are lists of strings
   which can used to change the behavior of the C compiler and the
   linker. Note, however, that the flags that ECL uses may take priority.

 - In the C code we are beginning to use GCC's attributes (__attribute__) and
   branch annotation (__builtin_expect). This decreases the size of code that
   checks for errors and improves performance.

 - When printing compiler notes, instead of printing the macroexpanded form,
   ECL now prints the toplevel form, as follows
    ;;; Warning: in file src:lsp;autoload.lsp.NEWEST, position 1178 and top form
    ;;;   (DEFMACRO WITH-COMPILATION-UNIT (OPTIONS &REST BODY) ...)
    ;;; The variable OPTIONS is not used.

 - ECL now implements EXT:*INVOKE-DEBUGGER-HOOK*, which works like *DEBUGGER-HOOK*
   but is also observed by BREAK. (SBCL extension adopted by ECL)

 - The UFFI interface now supports C99 types, such as :int8-t, :uint32-t, etc,
   but only when the corresponding types do exist in the underlying C environment.

 - SOCKET-MAKE-STREAM defaults :BUFFERING to :FULL and allows three new keyword
   arguments, :INPUT, :OUTPUT and :EXTERNAL-FORMAT, as in SBCL.

 - COMPILE-FILE admits the keyword argument :EXTERNAL-FORMAT.

 - A new function EXT:ALL-ENCODINGS lists all encondings known to ECL.

 - Improved readability of compiler messages.

 - SERVE-EVENT now allows time resolution of less than one second.

 - The PROFILE package now has an alias, SB-PROFILE.

 - ECL now stores the location of its source files in a logical hostname,
   "SRC:", which points to the directory where Announcement is located.

 - When building ECL, if "etags" is installed, a file TAGS is created which
   contains references to the location of all C functions. This file can be
   used to locate functions from the core library in Slime, using M-.

 - Documentation files now allow for annotation of arbitrary symbols,
   based on a key and a sub-key which are both symbols.

 - New function EXT:FUNCTION-LAMBDA-LIST which currently only works with
   functions from the core ECL library, generic functions and interpreted
   functions.

 - The debugger now is capable of showing the special variable bindings
   from a function, as well as the restarts newly bound by that function.

 - When using git, a new function EXT:LISP-IMPLEMENTATION-VCS-ID returns a
   unique identifier denoting the last commit. This can be used to discriminate
   between unstable releases and remove stale FASL files.

 - COMPILE-FILE admits two new keyword arguments, :SOURCE-TRUENAME and
   :SOURCE-OFFSET which can be used to change the value returned by
   EXT:COMPILED-FUNCTION-FILE when acting on compiled functions.
2010-03-15 05:20:13 +00:00
joerg
2d1ba244e9 Simply and speed up buildlink3.mk files and processing.
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.
2009-03-20 19:23:50 +00:00
tnn
845e25c534 Update to ecl-8.12.0. From Aleksej Saushev via pkgsrc-wip.
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-12-19 23:12:46 +00:00
tnn
cd934671e1 Import ecl-0.9.12 (ecl-0.9l) as lang/ecl. From pkgsrc-wip, packaged by asau@
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.
2008-08-12 19:57:45 +00:00