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.diff -r1.20 -r1.21 pkgsrc/lang/ecl/Makefile
(asau)
@@ -1,28 +1,25 @@ | @@ -1,28 +1,25 @@ | |||
1 | # $NetBSD: Makefile,v 1.20 2015/08/30 10:12:29 kamil Exp $ | 1 | # $NetBSD: Makefile,v 1.21 2015/12/09 21:00:47 asau Exp $ | |
2 | 2 | |||
3 | DISTNAME= ecl-13.5.1 | 3 | DISTNAME= ecl-16.0.0 | |
4 | PKGREVISION= 2 | |||
5 | CATEGORIES= lang | 4 | CATEGORIES= lang | |
6 | MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=ecls/} | 5 | MASTER_SITES= https://common-lisp.net/project/ecl/files/ | |
7 | EXTRACT_SUFX= .tgz | 6 | EXTRACT_SUFX= .tgz | |
8 | 7 | |||
9 | MAINTAINER= asau@inbox.ru | 8 | MAINTAINER= asau@inbox.ru | |
10 | HOMEPAGE= https://common-lisp.net/project/ecl/ | 9 | HOMEPAGE= https://common-lisp.net/project/ecl/ | |
11 | COMMENT= Embeddable Common Lisp | 10 | COMMENT= Embeddable Common Lisp | |
12 | LICENSE= gnu-lgpl-v2 | 11 | LICENSE= gnu-lgpl-v2 | |
13 | 12 | |||
14 | MAKE_JOBS_SAFE= no | |||
15 | ||||
16 | USE_PKGLOCALEDIR= yes | 13 | USE_PKGLOCALEDIR= yes | |
17 | GNU_CONFIGURE= yes | 14 | GNU_CONFIGURE= yes | |
18 | USE_LIBTOOL= yes | 15 | USE_LIBTOOL= yes | |
19 | USE_TOOLS+= gmake makeinfo | 16 | USE_TOOLS+= gmake makeinfo | |
20 | INFO_FILES= yes | 17 | INFO_FILES= yes | |
21 | 18 | |||
22 | CONFIGURE_ARGS+= --enable-boehm=system --with-system-gmp | 19 | CONFIGURE_ARGS+= --enable-boehm=system --with-system-gmp | |
23 | 20 | |||
24 | SUBST_CLASSES+= fix-libffi-include | 21 | SUBST_CLASSES+= fix-libffi-include | |
25 | SUBST_STAGE.fix-libdir= post-patch | 22 | SUBST_STAGE.fix-libdir= post-patch | |
26 | SUBST_MESSAGE.fix-libdir= Fixing libffi layout. | 23 | SUBST_MESSAGE.fix-libdir= Fixing libffi layout. | |
27 | SUBST_FILES.fix-libdir= src/c/ffi.d | 24 | SUBST_FILES.fix-libdir= src/c/ffi.d | |
28 | SUBST_SED.fix-libdir= -e '/include.*<ffi/ffi.h>/s:ffi/ffi.h:ffi.h:' | 25 | SUBST_SED.fix-libdir= -e '/include.*<ffi/ffi.h>/s:ffi/ffi.h:ffi.h:' |
@@ -1,16 +1,16 @@ | @@ -1,16 +1,16 @@ | |||
1 | # $NetBSD: buildlink3.mk,v 1.8 2014/04/30 14:19:40 wiz Exp $ | 1 | # $NetBSD: buildlink3.mk,v 1.9 2015/12/09 21:00:47 asau Exp $ | |
2 | 2 | |||
3 | BUILDLINK_TREE+= ecl | 3 | BUILDLINK_TREE+= ecl | |
4 | 4 | |||
5 | .if !defined(ECL_BUILDLINK3_MK) | 5 | .if !defined(ECL_BUILDLINK3_MK) | |
6 | ECL_BUILDLINK3_MK:= | 6 | ECL_BUILDLINK3_MK:= | |
7 | 7 | |||
8 | BUILDLINK_API_DEPENDS.ecl+= ecl>=10.3.1 | 8 | BUILDLINK_API_DEPENDS.ecl+= ecl>=16.0.0 | |
9 | BUILDLINK_ABI_DEPENDS.ecl+= ecl>=13.5.1nb2 | 9 | BUILDLINK_ABI_DEPENDS.ecl+= ecl>=16.0.0 | |
10 | BUILDLINK_PKGSRCDIR.ecl?= ../../lang/ecl | 10 | BUILDLINK_PKGSRCDIR.ecl?= ../../lang/ecl | |
11 | 11 | |||
12 | .include "../../devel/boehm-gc/buildlink3.mk" | 12 | .include "../../devel/boehm-gc/buildlink3.mk" | |
13 | .include "../../devel/gmp/buildlink3.mk" | 13 | .include "../../devel/gmp/buildlink3.mk" | |
14 | .endif # ECL_BUILDLINK3_MK | 14 | .endif # ECL_BUILDLINK3_MK | |
15 | 15 | |||
16 | BUILDLINK_TREE+= -ecl | 16 | BUILDLINK_TREE+= -ecl |
@@ -1,41 +1,42 @@ | @@ -1,41 +1,42 @@ | |||
1 | # $NetBSD: options.mk,v 1.8 2012/07/26 22:58:33 asau Exp $ | 1 | # $NetBSD: options.mk,v 1.9 2015/12/09 21:00:47 asau Exp $ | |
2 | 2 | |||
3 | PKG_OPTIONS_VAR= PKG_OPTIONS.ecl | 3 | PKG_OPTIONS_VAR= PKG_OPTIONS.ecl | |
4 | PKG_SUPPORTED_OPTIONS+= debug threads unicode ffi clx | 4 | PKG_SUPPORTED_OPTIONS+= debug threads unicode ffi clx | |
5 | PKG_SUGGESTED_OPTIONS+= # empty | 5 | PKG_SUGGESTED_OPTIONS+= unicode ffi clx | |
6 | # Unicode support proved to break Axioms. | 6 | # Unicode support proved to break Axioms. | |
7 | # Threads are off, since threaded ECL requires threads support | 7 | # Threads are off, since threaded ECL requires threads support | |
8 | # in Boehm GC (off by default). | 8 | # in Boehm GC (off by default). | |
9 | 9 | |||
10 | .include "../../mk/bsd.options.mk" | 10 | .include "../../mk/bsd.options.mk" | |
11 | 11 | |||
12 | PLIST_SRC= PLIST # default value | 12 | PLIST_SRC= PLIST # default value | |
13 | 13 | |||
14 | .if !empty(PKG_OPTIONS:Mdebug) | 14 | .if !empty(PKG_OPTIONS:Mdebug) | |
15 | CONFIGURE_ARGS+= --enable-debug | 15 | CONFIGURE_ARGS+= --enable-debug | |
16 | .endif | 16 | .endif | |
17 | 17 | |||
18 | .if !empty(PKG_OPTIONS:Mthreads) | 18 | .if !empty(PKG_OPTIONS:Mthreads) | |
19 | CONFIGURE_ARGS+= --enable-threads | 19 | CONFIGURE_ARGS+= --enable-threads | |
20 | CONFIGURE_ENV+= THREAD_CFLAGS=${PTHREAD_CFLAGS:Q} | 20 | CONFIGURE_ENV+= THREAD_CFLAGS=${PTHREAD_CFLAGS:Q} | |
21 | CONFIGURE_ENV+= THREAD_LDLAGS=${BUILDLINK_LDLAGS.pthread:Q} | 21 | CONFIGURE_ENV+= THREAD_LDLAGS=${BUILDLINK_LDLAGS.pthread:Q} | |
22 | CONFIGURE_ENV+= THREAD_LIBS=${BUILDLINK_LIBS.pthread:Q} | 22 | CONFIGURE_ENV+= THREAD_LIBS=${BUILDLINK_LIBS.pthread:Q} | |
23 | # XXX Although NetBSD-6+ supports TLS, ECL oddly crashes on startup | |||
24 | # on NetBSD-6 when it's used here. Untested yet with NetBSD-7. | |||
23 | .if ${OPSYS} == "FreeBSD" || ${OPSYS} == "Linux" || ${OPSYS} == "Darwin" | 25 | .if ${OPSYS} == "FreeBSD" || ${OPSYS} == "Linux" || ${OPSYS} == "Darwin" | |
24 | CONFIGURE_ARGS+= --with-__thread=yes | 26 | CONFIGURE_ARGS+= --with-__thread=yes | |
25 | .else | 27 | .else | |
26 | CONFIGURE_ARGS+= --with-__thread=no | 28 | CONFIGURE_ARGS+= --with-__thread=no | |
27 | .endif | 29 | .endif | |
28 | PLIST_SRC+= PLIST.threads | |||
29 | .include "../../mk/pthread.buildlink3.mk" | 30 | .include "../../mk/pthread.buildlink3.mk" | |
30 | .else | 31 | .else | |
31 | CONFIGURE_ARGS+= --disable-threads | 32 | CONFIGURE_ARGS+= --disable-threads | |
32 | .endif | 33 | .endif | |
33 | 34 | |||
34 | .if !empty(PKG_OPTIONS:Municode) | 35 | .if !empty(PKG_OPTIONS:Municode) | |
35 | CONFIGURE_ARGS+= --enable-unicode | 36 | CONFIGURE_ARGS+= --enable-unicode | |
36 | .else | 37 | .else | |
37 | CONFIGURE_ARGS+= --disable-unicode | 38 | CONFIGURE_ARGS+= --disable-unicode | |
38 | .endif | 39 | .endif | |
39 | 40 | |||
40 | .if !empty(PKG_OPTIONS:Mffi) | 41 | .if !empty(PKG_OPTIONS:Mffi) | |
41 | .include "../../devel/libffi/buildlink3.mk" | 42 | .include "../../devel/libffi/buildlink3.mk" |
@@ -1,8 +1,8 @@ | @@ -1,8 +1,8 @@ | |||
1 | $NetBSD: distinfo,v 1.16 2015/11/03 22:50:34 agc Exp $ | 1 | $NetBSD: distinfo,v 1.17 2015/12/09 21:00:47 asau Exp $ | |
2 | 2 | |||
3 | SHA1 (ecl-13.5.1.tgz) = db7f732e5e12182118f00c02d8d2531f6d6aefb2 | 3 | SHA1 (ecl-16.0.0.tgz) = 3309b5f4126d1a024f7eacaec6aca0e391dd3c75 | |
4 | RMD160 (ecl-13.5.1.tgz) = e704fbe2d598376d9818bd5512a9457ca3661feb | 4 | RMD160 (ecl-16.0.0.tgz) = adf1e77f0bf602534566fd986d27a7c84deac045 | |
5 | SHA512 (ecl-13.5.1.tgz) = a09f8b824aa78e461d700eefb1a8b68b876e15d49124a397e0b5b58ad73b80f818133a7b8e48ddb83505eea2f9c5fb024de8701b527524004e336e456eb07c84 | 5 | Size (ecl-16.0.0.tgz) = 8009304 bytes | |
6 | Size (ecl-13.5.1.tgz) = 9401163 bytes | 6 | SHA1 (patch-aa) = 2f4ce3ab55b4d8a03480191bf2820b9655d4fc3c | |
7 | SHA1 (patch-aa) = 84c5a7617843594d83229bb8621d897a183dc8f9 | |||
8 | SHA1 (patch-ab) = f0229ede69a04648eadf03e0d4bcbed2c200c340 | 7 | SHA1 (patch-ab) = f0229ede69a04648eadf03e0d4bcbed2c200c340 | |
8 | SHA1 (patch-ac) = d4266cdf41f1df3fe3014dcd28c03113d798efd5 |
@@ -1,28 +1,28 @@ | @@ -1,28 +1,28 @@ | |||
1 | $NetBSD: patch-aa,v 1.4 2012/07/26 21:09:29 asau Exp $ | 1 | $NetBSD: patch-aa,v 1.5 2015/12/09 21:00:47 asau Exp $ | |
2 | 2 | |||
3 | --- src/c/file.d.orig 2012-07-24 16:51:53.000000000 +0000 | 3 | --- src/c/file.d.orig 2015-08-24 02:41:27.000000000 -0400 | |
4 | +++ src/c/file.d | 4 | +++ src/c/file.d 2015-10-25 15:28:33.000000000 -0400 | |
5 | @@ -5358,7 +5358,7 @@ ecl_integer_to_off_t(cl_object offset) | 5 | @@ -5367,7 +5367,7 @@ ecl_integer_to_off_t(cl_object offset) | |
6 | } else if (ECL_BIGNUMP(offset)) { | 6 | } else if (ECL_BIGNUMP(offset)) { | |
7 | if (sizeof(ECL_BIGNUM_LIMBS(offset)[0]) == sizeof(cl_index)) { | 7 | if (sizeof(ECL_BIGNUM_LIMBS(offset)[0]) == sizeof(cl_index)) { | |
8 | if (ECL_BIGNUM_SIZE(offset) > 2) { | 8 | if (ECL_BIGNUM_SIZE(offset) > 2) { | |
9 | - goto ERR; | 9 | - goto ERR; | |
10 | + goto ERROR; | 10 | + goto ERROR; | |
11 | } | 11 | } | |
12 | if (ECL_BIGNUM_SIZE(offset) == 2) { | 12 | if (ECL_BIGNUM_SIZE(offset) == 2) { | |
13 | output = ECL_BIGNUM_LIMBS(offset)[1]; | 13 | output = ECL_BIGNUM_LIMBS(offset)[1]; | |
14 | @@ -5367,12 +5367,12 @@ ecl_integer_to_off_t(cl_object offset) | 14 | @@ -5376,12 +5376,12 @@ ecl_integer_to_off_t(cl_object offset) | |
15 | output += ECL_BIGNUM_LIMBS(offset)[0]; | 15 | output += ECL_BIGNUM_LIMBS(offset)[0]; | |
16 | } else if (sizeof(ECL_BIGNUM_LIMBS(offset)[0]) >= sizeof(ecl_off_t)) { | 16 | } else if (sizeof(ECL_BIGNUM_LIMBS(offset)[0]) >= sizeof(ecl_off_t)) { | |
17 | if (ECL_BIGNUM_SIZE(offset) > 1) { | 17 | if (ECL_BIGNUM_SIZE(offset) > 1) { | |
18 | - goto ERR; | 18 | - goto ERR; | |
19 | + goto ERROR; | 19 | + goto ERROR; | |
20 | } | 20 | } | |
21 | output = ECL_BIGNUM_LIMBS(offset)[0]; | 21 | output = ECL_BIGNUM_LIMBS(offset)[0]; | |
22 | } | 22 | } | |
23 | } else { | 23 | } else { | |
24 | - ERR: FEerror("Not a valid file offset: ~S", 1, offset); | 24 | - ERR: FEerror("Not a valid file offset: ~S", 1, offset); | |
25 | + ERROR: FEerror("Not a valid file offset: ~S", 1, offset); | 25 | + ERROR: FEerror("Not a valid file offset: ~S", 1, offset); | |
26 | } | 26 | } | |
27 | return output; | 27 | return output; | |
28 | } | 28 | } |
$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 :