Wed Dec 9 21:00:47 2015 UTC ()
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.
(asau)
diff -r1.20 -r1.21 pkgsrc/lang/ecl/Makefile
diff -r1.8 -r1.9 pkgsrc/lang/ecl/buildlink3.mk
diff -r1.8 -r1.9 pkgsrc/lang/ecl/options.mk
diff -r1.16 -r1.17 pkgsrc/lang/ecl/distinfo
diff -r1.4 -r1.5 pkgsrc/lang/ecl/patches/patch-aa
diff -r0 -r1.1 pkgsrc/lang/ecl/patches/patch-ac
--- pkgsrc/lang/ecl/Makefile 2015/08/30 10:12:29 1.20
+++ pkgsrc/lang/ecl/Makefile 2015/12/09 21:00:47 1.21
@@ -1,17 +1,14 @@
-# $NetBSD: Makefile,v 1.20 2015/08/30 10:12:29 kamil Exp $
+# $NetBSD: Makefile,v 1.21 2015/12/09 21:00:47 asau Exp $
-DISTNAME= ecl-13.5.1
-PKGREVISION= 2
+DISTNAME= ecl-16.0.0
CATEGORIES= lang
-MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=ecls/}
+MASTER_SITES= https://common-lisp.net/project/ecl/files/
EXTRACT_SUFX= .tgz
MAINTAINER= asau@inbox.ru
HOMEPAGE= https://common-lisp.net/project/ecl/
COMMENT= Embeddable Common Lisp
LICENSE= gnu-lgpl-v2
-
-MAKE_JOBS_SAFE= no
USE_PKGLOCALEDIR= yes
GNU_CONFIGURE= yes
--- pkgsrc/lang/ecl/buildlink3.mk 2014/04/30 14:19:40 1.8
+++ pkgsrc/lang/ecl/buildlink3.mk 2015/12/09 21:00:47 1.9
@@ -1,12 +1,12 @@
-# $NetBSD: buildlink3.mk,v 1.8 2014/04/30 14:19:40 wiz Exp $
+# $NetBSD: buildlink3.mk,v 1.9 2015/12/09 21:00:47 asau Exp $
BUILDLINK_TREE+= ecl
.if !defined(ECL_BUILDLINK3_MK)
ECL_BUILDLINK3_MK:=
-BUILDLINK_API_DEPENDS.ecl+= ecl>=10.3.1
-BUILDLINK_ABI_DEPENDS.ecl+= ecl>=13.5.1nb2
+BUILDLINK_API_DEPENDS.ecl+= ecl>=16.0.0
+BUILDLINK_ABI_DEPENDS.ecl+= ecl>=16.0.0
BUILDLINK_PKGSRCDIR.ecl?= ../../lang/ecl
.include "../../devel/boehm-gc/buildlink3.mk"
--- pkgsrc/lang/ecl/options.mk 2012/07/26 22:58:33 1.8
+++ pkgsrc/lang/ecl/options.mk 2015/12/09 21:00:47 1.9
@@ -1,8 +1,8 @@
-# $NetBSD: options.mk,v 1.8 2012/07/26 22:58:33 asau Exp $
+# $NetBSD: options.mk,v 1.9 2015/12/09 21:00:47 asau Exp $
PKG_OPTIONS_VAR= PKG_OPTIONS.ecl
PKG_SUPPORTED_OPTIONS+= debug threads unicode ffi clx
-PKG_SUGGESTED_OPTIONS+= # empty
+PKG_SUGGESTED_OPTIONS+= unicode ffi clx
# Unicode support proved to break Axioms.
# Threads are off, since threaded ECL requires threads support
# in Boehm GC (off by default).
@@ -20,12 +20,13 @@
CONFIGURE_ENV+= THREAD_CFLAGS=${PTHREAD_CFLAGS:Q}
CONFIGURE_ENV+= THREAD_LDLAGS=${BUILDLINK_LDLAGS.pthread:Q}
CONFIGURE_ENV+= THREAD_LIBS=${BUILDLINK_LIBS.pthread:Q}
+# XXX Although NetBSD-6+ supports TLS, ECL oddly crashes on startup
+# on NetBSD-6 when it's used here. Untested yet with NetBSD-7.
.if ${OPSYS} == "FreeBSD" || ${OPSYS} == "Linux" || ${OPSYS} == "Darwin"
CONFIGURE_ARGS+= --with-__thread=yes
.else
CONFIGURE_ARGS+= --with-__thread=no
.endif
-PLIST_SRC+= PLIST.threads
.include "../../mk/pthread.buildlink3.mk"
.else
CONFIGURE_ARGS+= --disable-threads
--- pkgsrc/lang/ecl/distinfo 2015/11/03 22:50:34 1.16
+++ pkgsrc/lang/ecl/distinfo 2015/12/09 21:00:47 1.17
@@ -1,8 +1,8 @@
-$NetBSD: distinfo,v 1.16 2015/11/03 22:50:34 agc Exp $
+$NetBSD: distinfo,v 1.17 2015/12/09 21:00:47 asau Exp $
-SHA1 (ecl-13.5.1.tgz) = db7f732e5e12182118f00c02d8d2531f6d6aefb2
-RMD160 (ecl-13.5.1.tgz) = e704fbe2d598376d9818bd5512a9457ca3661feb
-SHA512 (ecl-13.5.1.tgz) = a09f8b824aa78e461d700eefb1a8b68b876e15d49124a397e0b5b58ad73b80f818133a7b8e48ddb83505eea2f9c5fb024de8701b527524004e336e456eb07c84
-Size (ecl-13.5.1.tgz) = 9401163 bytes
-SHA1 (patch-aa) = 84c5a7617843594d83229bb8621d897a183dc8f9
+SHA1 (ecl-16.0.0.tgz) = 3309b5f4126d1a024f7eacaec6aca0e391dd3c75
+RMD160 (ecl-16.0.0.tgz) = adf1e77f0bf602534566fd986d27a7c84deac045
+Size (ecl-16.0.0.tgz) = 8009304 bytes
+SHA1 (patch-aa) = 2f4ce3ab55b4d8a03480191bf2820b9655d4fc3c
SHA1 (patch-ab) = f0229ede69a04648eadf03e0d4bcbed2c200c340
+SHA1 (patch-ac) = d4266cdf41f1df3fe3014dcd28c03113d798efd5
--- pkgsrc/lang/ecl/patches/Attic/patch-aa 2012/07/26 21:09:29 1.4
+++ pkgsrc/lang/ecl/patches/Attic/patch-aa 2015/12/09 21:00:47 1.5
@@ -1,28 +1,28 @@
-$NetBSD: patch-aa,v 1.4 2012/07/26 21:09:29 asau Exp $
+$NetBSD: patch-aa,v 1.5 2015/12/09 21:00:47 asau Exp $
---- src/c/file.d.orig 2012-07-24 16:51:53.000000000 +0000
-+++ src/c/file.d
-@@ -5358,7 +5358,7 @@ ecl_integer_to_off_t(cl_object offset)
- } else if (ECL_BIGNUMP(offset)) {
- if (sizeof(ECL_BIGNUM_LIMBS(offset)[0]) == sizeof(cl_index)) {
- if (ECL_BIGNUM_SIZE(offset) > 2) {
-- goto ERR;
-+ goto ERROR;
- }
- if (ECL_BIGNUM_SIZE(offset) == 2) {
- output = ECL_BIGNUM_LIMBS(offset)[1];
-@@ -5367,12 +5367,12 @@ ecl_integer_to_off_t(cl_object offset)
- output += ECL_BIGNUM_LIMBS(offset)[0];
- } else if (sizeof(ECL_BIGNUM_LIMBS(offset)[0]) >= sizeof(ecl_off_t)) {
- if (ECL_BIGNUM_SIZE(offset) > 1) {
-- goto ERR;
-+ goto ERROR;
- }
- output = ECL_BIGNUM_LIMBS(offset)[0];
- }
- } else {
-- ERR: FEerror("Not a valid file offset: ~S", 1, offset);
-+ ERROR: FEerror("Not a valid file offset: ~S", 1, offset);
- }
- return output;
+--- src/c/file.d.orig 2015-08-24 02:41:27.000000000 -0400
++++ src/c/file.d 2015-10-25 15:28:33.000000000 -0400
+@@ -5367,7 +5367,7 @@ ecl_integer_to_off_t(cl_object offset)
+ } else if (ECL_BIGNUMP(offset)) {
+ if (sizeof(ECL_BIGNUM_LIMBS(offset)[0]) == sizeof(cl_index)) {
+ if (ECL_BIGNUM_SIZE(offset) > 2) {
+- goto ERR;
++ goto ERROR;
+ }
+ if (ECL_BIGNUM_SIZE(offset) == 2) {
+ output = ECL_BIGNUM_LIMBS(offset)[1];
+@@ -5376,12 +5376,12 @@ ecl_integer_to_off_t(cl_object offset)
+ output += ECL_BIGNUM_LIMBS(offset)[0];
+ } else if (sizeof(ECL_BIGNUM_LIMBS(offset)[0]) >= sizeof(ecl_off_t)) {
+ if (ECL_BIGNUM_SIZE(offset) > 1) {
+- goto ERR;
++ goto ERROR;
+ }
+ output = ECL_BIGNUM_LIMBS(offset)[0];
+ }
+ } else {
+- ERR: FEerror("Not a valid file offset: ~S", 1, offset);
++ ERROR: FEerror("Not a valid file offset: ~S", 1, offset);
+ }
+ return output;
}
$NetBSD: patch-ac,v 1.1 2015/12/09 21:00:47 asau Exp $
Post-release fix:
commit d077473517d2f5d62a297037b466826b4f0d7d11
check for GC_get_thr_restart_signal only on threaded build
--- src/aclocal.m4.orig
+++ src/aclocal.m4
@@ -935,12 +935,12 @@ if test "${enable_boehm}" = auto -o "${enable_boehm}" = system; then
dnl Try first with the prebuilt versions, if installed and accessible
dnl
system_boehm=yes
- AC_CHECK_LIB( [gc], [GC_get_thr_restart_signal],
- [], [system_boehm="no"] )
if test "${enable_threads}" = no; then
AC_CHECK_LIB( [gc], [GC_malloc],
[], [system_boehm="no"] )
else
+ AC_CHECK_LIB( [gc], [GC_get_thr_restart_signal],
+ [], [system_boehm="no"] )
AC_CHECK_LIB( [gc], [GC_register_my_thread],
[], [system_boehm="no"] )
fi
--- src/configure.orig
+++ src/configure
@@ -5841,9 +5841,10 @@ case "${enable_boehm}" in
esac
if test "${enable_boehm}" = auto -o "${enable_boehm}" = system; then
system_boehm=yes
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GC_get_thr_restart_signal in -lgc" >&5
-$as_echo_n "checking for GC_get_thr_restart_signal in -lgc... " >&6; }
-if ${ac_cv_lib_gc_GC_get_thr_restart_signal+:} false; then :
+ if test "${enable_threads}" = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GC_malloc in -lgc" >&5
+$as_echo_n "checking for GC_malloc in -lgc... " >&6; }
+if ${ac_cv_lib_gc_GC_malloc+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -5857,27 +5858,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#ifdef __cplusplus
extern "C"
#endif
-char GC_get_thr_restart_signal ();
+char GC_malloc ();
int
main ()
{
-return GC_get_thr_restart_signal ();
+return GC_malloc ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_gc_GC_get_thr_restart_signal=yes
+ ac_cv_lib_gc_GC_malloc=yes
else
- ac_cv_lib_gc_GC_get_thr_restart_signal=no
+ ac_cv_lib_gc_GC_malloc=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gc_GC_get_thr_restart_signal" >&5
-$as_echo "$ac_cv_lib_gc_GC_get_thr_restart_signal" >&6; }
-if test "x$ac_cv_lib_gc_GC_get_thr_restart_signal" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gc_GC_malloc" >&5
+$as_echo "$ac_cv_lib_gc_GC_malloc" >&6; }
+if test "x$ac_cv_lib_gc_GC_malloc" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBGC 1
_ACEOF
@@ -5888,10 +5889,10 @@ else
system_boehm="no"
fi
- if test "${enable_threads}" = no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GC_malloc in -lgc" >&5
-$as_echo_n "checking for GC_malloc in -lgc... " >&6; }
-if ${ac_cv_lib_gc_GC_malloc+:} false; then :
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GC_get_thr_restart_signal in -lgc" >&5
+$as_echo_n "checking for GC_get_thr_restart_signal in -lgc... " >&6; }
+if ${ac_cv_lib_gc_GC_get_thr_restart_signal+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -5905,27 +5906,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#ifdef __cplusplus
extern "C"
#endif
-char GC_malloc ();
+char GC_get_thr_restart_signal ();
int
main ()
{
-return GC_malloc ();
+return GC_get_thr_restart_signal ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_gc_GC_malloc=yes
+ ac_cv_lib_gc_GC_get_thr_restart_signal=yes
else
- ac_cv_lib_gc_GC_malloc=no
+ ac_cv_lib_gc_GC_get_thr_restart_signal=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gc_GC_malloc" >&5
-$as_echo "$ac_cv_lib_gc_GC_malloc" >&6; }
-if test "x$ac_cv_lib_gc_GC_malloc" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gc_GC_get_thr_restart_signal" >&5
+$as_echo "$ac_cv_lib_gc_GC_get_thr_restart_signal" >&6; }
+if test "x$ac_cv_lib_gc_GC_get_thr_restart_signal" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBGC 1
_ACEOF
@@ -5936,7 +5937,6 @@ else
system_boehm="no"
fi
- else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GC_register_my_thread in -lgc" >&5
$as_echo_n "checking for GC_register_my_thread in -lgc... " >&6; }
if ${ac_cv_lib_gc_GC_register_my_thread+:} false; then :