2012-05-03 Sam Steingold update berkeley-db to 5.1 * modules/berkeley-db/bdb.c (add_message): fix (DB-VERSION): use db_full_version when available (DBE-CREATE): remote is no longer supported by upstream (dbt_to_object): also return nil when p_dbt->size==0 (DB-COMPACT): add (DB-VERIFY): mark the db handle invalid because it "may not be accessed again after DB->verify() is called, regardless of its return" 2012-04-27 Sam Steingold Fix bug#3467762: symlink to directory handling * modules/syscalls/calls.c (symlink_file): strip trailing "/" from new_pathstring (copy_one_file): use PROBE-PATHNAME instead of PROBE-FILE to accommodate directories * pathname.d (delete_directory): when rmdir() fails with ENOTDIR, call unlink() because we are dealing with a symbolic link 2012-04-23 Sam Steingold * format.lisp (format-apply): do not bind *FORMAT-CS* here ... (formatter): ... do it here instead for run-time error reporting in compiled FORMAT calls [bug#3498026] 2012-04-23 Sam Steingold Do not signal errors inside begin/end_blocking_system_call blocks Reported by Don Cohen http://article.gmane.org/gmane.lisp.clisp.devel:22914 * modules/syscalls/calls.c (POSIX:OPENLOG): use clisp_realloc instead of clisp_malloc/free (my_chmod, my_chown, my_utime): return status instead of signaling (SET-FILE-STAT): signal errors after end_blocking_system_call (FILE-INFO): do not jump out of a begin/end_blocking_system_call block 2012-04-23 Sam Steingold * modules/gdbm/gdbm.c (error_bad_type): fix declaration (for g++) * modules/rawsock/rawsock.c (RAWSOCK:CONVERT-ADDRESS): add a cast 2012-04-23 Sam Steingold * makemake.in (XCFLAGS): do not add -Wimplicit when compiling with C++: "warning: command line option `-Wimplicit' is valid for C/ObjC but not for C++" 2012-04-20 Sam Steingold Fix bug#3517196: APPLY reacts differently to dotted list when compiled * eval.d (error_apply_dotted): remove; use error_subr_toofew() instead (apply_subr, apply_closure): more checks for dotted argument list 2012-04-23 Sam Steingold * defs1.lisp (logical-pathname-translations): signal TYPE-ERROR on non-existent logical host as per ANSI [bug#3520570] 2012-04-19 Sam Steingold The official binary IP address representation is now a byte vector, not an integer. * socket.d (string_to_addr1): use data_to_sb8vector instead of LEbytes_to_UI * modules/rawsock/rawsock.c (CONVERT-ADDRESS): ipv6 is 128 bits, not 64; accept byte vectors too * modules/rawsock/test.tst: use CONVERT-ADDRESS instead of ip->ve 2012-04-19 Sam Steingold * array.d (data_to_sbvector): add a modexp function (copy_sbvector): use it * lispbibl.d (data_to_sbvector): add the prototype (data_to_sb8vector): add a #define and export both to clisp.h * modules/berkeley-db/bdb.c, modules/clx/new-clx/clx.f: * modules/dirkey/dirkey.c, modules/gdbm/gdbm.c: * modules/pcre/cpcre.c, modules/rawsock/rawsock.c: * modules/syscalls/calls.c: use them 2012-04-18 Sam Steingold * error.d (error_pos_integer): add, based on charstrg.d:error_posint * lispbibl.d (error_pos_integer): add the prototype * charstrg.d (error_posint): remove (test_index): use error_pos_integer instead * sequence.d (error_posint): remove (test_start_end, test_start_end_1, test_count_arg): use error_pos_integer instead 2012-03-27 Sam Steingold * modules/pcre/cpcre.c (pcre_config_option): check the return value of pcre_config() and use a long for value storage 2012-03-27 Sam Steingold * modules/i18n/gettext.c (bool_char_lconv, int_char_lconv): treat -1 like CHAR_MAX and use sfixnum instead of fixnum 2012-03-10 Vladimir Tzankov * hashtabl.d (prepare_resize): check kvtable size against ARRAY-DIMENSION-LIMIT 2012-03-10 Vladimir Tzankov * lispbibl.d (arraysize_limit_1) [MACOSX, WIDE_HARD]: set to 2^24-2 since HEAPCODES memory model is used 2012-03-10 Vladimir Tzankov * spvw.d (signal_handler_thread) [MULTITHREAD, MACOSX]: ignore SIGHUP & SIGCONT until I know how to handle them (vfork() causes SIGHUP - e.g. (DISASSEMBLE 'CAR)) 2012-03-10 Vladimir Tzankov * foreign.d (FOREIGN-CALL-OUT): foreign call may block. use begin/end_block_system_call() 2012-02-13 Bruno Haible * clos-genfun2b.lisp (compute-dispatch): Don't blindly assume that (bc-and-not class test-class) is non-nil; test it explicitly. [bug#3487338] 2012-02-02 Sam Steingold * socket.d (get_hostname): turn into a function and allocate the array in the caller to support gcc 4.7 [patch#3474660] 2012-02-02 Sam Steingold * modules/syscalls/calls.c (file_stat_to_STACK): use off_to_I instead of L_to_I for st_size [bug#3483340] [S_IFMT]: split st_mode into mknod_type_check and check_chmod_mode 2012-01-10 Vladimir Tzankov * spvw.d (mt_main_actions): main thread should be the same as any other - initialize time, reader and set normal exit flag 2012-01-10 Vladimir Tzankov * zthread.d (xlock_lock_helper): fix possible deadlock when acquiring a lock released by xcondition_wait() (THREAD-INTERRUPT): release thread's _signal_reenter_ok spinlock on error 2012-01-10 Vladimir Tzankov * xthread.d (testandset) [ARM]: implement spinlocks for ARM 2011-10-17 Vladimir Tzankov * zthread.d (xlock_lock_helper): remove wrong "shortcut" on acquiring a lock held by thread that exemption-wait-ed on it [bug#3424574] 2011-09-16 Sam Steingold * pathname.d (assure_dir_exists): call merge-pathnames on the truename to ensure that all truenames have non-NIL version because a NIL component means "unfilled" (19.2.2.2.1) [bug#3405120] 2011-09-16 Sam Steingold * m4/clisp.m4 (CL_DECOLONIZE): fix the 2011-07-25 15472 patch which broke the native msys/mingw build Reported by Dan Stanger 2011-09-14 Sam Steingold * modules/readline/readline.lisp: include rlconf.h for DEFAULT_INPUTRC and SYS_INPUTRC and tilde.h for tilde_expand 2011-09-14 Sam Steingold * makemake.in (clean5): do not remove modules.h twice 2011-08-29 Sam Steingold add interface to VerQueryValue, GetFileVersionInfo et al http://msdn.microsoft.com/en-us/library/ms647464(v=vs.85).aspx * modules/syscalls/calls.c (OS:FILE-VERSION): add function * modules/syscalls/posix.lisp (OS:FILE-VERSION): add structure * modules/syscalls/configure.in (LIBS): add -lversion 2011-08-29 Sam Steingold * clisp.rc.in: extract from makemake.in * makemake.in (clisp.rc): use it 2011-08-29 Sam Steingold * makemake.in (MODULE_CPPFLAGS_VAR): remove (MODULE_CPPFLAGS): always define and use to avoid adding ${GNULIB_INCLUDE} to CPPFLAGS twice 2011-08-26 Sam Steingold * makemake.in (clisp.rc) [win32]: add version information for filever http://msdn.microsoft.com/en-us/library/aa381058(v=VS.85).aspx 2011-08-25 Sam Steingold Report failures in init_language * spvw_language.d (init_language): accept lisp_error_p and report all failures using either fprintf() or error(); use classify_namestring on all platforms to check argv_localedir (language_deutsch): rename to language_german for consistency (language_francais): rename to language_french for consistency * i18n.d (SET-CURRENT-LANGUAGE): pass lisp_error_p=true to init_language * lispbibl.d (init_language): update the prototype (file_kind_t): move here from pathname.d and rename from namestring_kind_t (classify_namestring): add the prototype * pathname.d (classify_namestring): make global * spvw.d (main): pass lisp_error_p=false to init_language 2011-08-24 Sam Steingold * configure (makemake_args) [win32gcc]: add --with-dynamic-modules=no (host_arg): add both --host and --build argument Suggested by Eric Blake https://lists.gnu.org/archive/html/bug-libsigsegv/2011-08/msg00006.html 2011-08-24 Sam Steingold * error.d (format_message, FORMAT-MESSAGE): move here from ... * errwin32.d: here for the sake of cygwin 2011-08-24 Sam Steingold * makemake.in: save & restore CC around setting it for XCC_CREATESHARED Suggested by Eric Blake http://article.gmane.org/gmane.comp.shells.bash.bugs:17158 2011-08-24 Sam Steingold * misc.d (LISP-IMPLEMENTATION-VERSION): add missing GETTEXT calls (MACHINE-TYPE, MACHINE-VERSION): make return value immutable * spvw.d (main): localize the name of the main thread 2011-08-24 Sam Steingold * spvw_language.d (init_language): danish locale is "da_DK" Reported by Bruno Haible 2011-08-23 Sam Steingold * win32.d (WSAEAGAIN, WSAENOENT): remove unused defines (ioctl): do not define to ioctlsocket because gnulib defines it to rpl_ioctl which calls ioctlsocket 2011-08-23 Sam Steingold revert most of the 2011-08-17 patch * win32.d: include for NtQueryInformationFile because that's what works with i686-pc-mingw32-gcc and is recommended by http://msdn.microsoft.com/en-us/library/ff567052.aspx; do not include ntstatus.h because it is included by winddk/ntddk which is included by ntifs * configure.in: do not test for windows headers 2011-08-19 Sam Steingold Implement RFE#3384688: use OS facilities to print os-error * condition.lisp (try-coerce-to-condition): special handling of NIL datum for the sake of OS-ERROR & its subclasses (os-error): add $CODE slot and :REPORT option (os-error-win32, os-stream-error, os-file-error): new conditions, subclasses of OS-ERROR (simple-os-error): remove (%defclcs): remove OS-ERROR -> SIMPLE-OS-ERROR map * lispbibl.d (cint_white_p): do not export (condition_t): remove os_error (OS_file_error): signal OS-FILE-ERROR, not SIMPLE-FILE-ERROR * constsym.d (simple_os_error): remove (os_error, os_file_error, os_stream_error, strerror): add (os_error_win32, format_message) [WIN32|CYGWIN]: add * subr.d (strerror): add (format_message) [WIN32|CYGWIN]: add * error.d (end_error): for os_stream_error, os_file_error, os_error, os_error_win32: reset errstring (known as datum to COERCE-TO-CONDITION, see above) to NIL; complete :CODE (error_code_converter_t, convert_error_code): add (OS_filestream_error): signal OS-ERRORs, not SIMPLE-ERRORs * errunix.d (os_error_t, get_errormsg): remove (STRERROR): preliminary implementation: required numeric argument (OS_error, OS_error_arg): push errcode on STACK for the :CODE argument (errno_out_low): use ANSIC_error_code_converter & strerror_r * errwin32.d (get_OS_error_info): remove (OS_error_internal_body): remove (format_message): add (OS_error_internal): use it (FORMAT-MESSAGE): preliminary implementation: required numeric argument (OS_error, OS_error_arg): push errcode on STACK for the :CODE argument * spvw.d (libopen, find_name): define when WIN32_NATIVE|HAVE_DLOPEN for the sake of finding converters in error.d:convert_error_code * modules/syscalls/calls.c (RESOLVE-HOST-IPADDR): signal error_condition, not os_error because there is no errno (errno_to_symbol_w, errno_to_symbol_a): add error_code_converter_t objects for error.d:convert_error_code (ERRNO, LAST-ERROR): convert from symbolic to numeric too (STRERROR, FORMAT-MESSAGE): use and override the preliminary definitions in errunix.d and errwin32.d * modules/syscalls/preload.lisp: unlock the SYSTEM package and remove it from *SYSTEM-PACKAGE-LIST* to enable overriding STRERROR & FORMAT-MESSAGE in calls.c * modules/syscalls/posix.lisp: import and export SYS::STRERROR & SYS::FORMAT-MESSAGE; re-add SYSTEM to *SYSTEM-PACKAGE-LIST* 2011-08-18 Sam Steingold * makemake.in (LIBS): prepend ${GLLIB_A} before -lws2_32 & -lintl 2011-08-18 Sam Steingold * modules/syscalls/calls.c (check_last_error) [WIN32|CYGWIN]: renamed from check_errno (OS::LAST-ERROR) [WIN32|CYGWIN]: extracted from OS:ERRNO (OS::FORMAT-MESSAGE) [WIN32|CYGWIN]: extracted from OS::STRERROR (POSIX:ERRNO, POSIX:STRERROR): always define * modules/syscalls/posix.lisp (last-error, format-message): export * lispbibl.d (cint_white_p): export to clisp.h for FORMAT-MESSAGE to strip terminating whitespace and periods to conform to strerror 2011-08-17 Sam Steingold * configure.in: check for many more windows headers which might declare NtQueryInformationFile * win32.d: try to include all those header one by one Suggested by Michael Kappert & Yaroslav Kavenchuk &c 2011-08-08 Sam Steingold * spvw_mmap.d (munmap, mprotect) [HAVE_MACH_VM|HAVE_WIN32_VM]: declare when defined to avoid a "warning: no previous declaration" 2011-08-08 Sam Steingold Rename errno_t to os_error_code_t to avoid a conflict with mingw * unix.d (os_error_code_t): typedef to int; replaces errno_t * win32.d (os_error_code_t): typedef to DWORD; replaces errno_t * unixaux.d, win32aux.d (namestring_file_id, handle_file_id): return os_error_code_t instead of errno_t * pathname.d (check_file_reopen): update for the new type name 2011-08-08 Sam Steingold * configure.in: check for , and * win32.d: include them only when detected (the first two on cygwin/mingw, the last one on msys/mingw) 2011-08-05 Sam Steingold fix the 2011-03-31 fix for bug#1731469 * loop.lisp (*nullvar*): new unbound global (destructure): use it instead of (helpvar 0) for null patters (expand-loop): bind it; repeat count var does not depend on preceding (expand-loop@note-initialization): do not barf on *nullvar* reuse 2011-08-03 Sam Steingold fix bug#3384698: loop does not warn on REPEAT before FOR * loop.lisp (expand-loop): REPEAT is a TERMINATION-TEST which is a MAIN-CLAUSE, not a VARIABLE-CLAUSE 2011-08-03 Sam Steingold * modules/syscalls/calls.c (check_errno): add ERFKILL & EHWPOISON 2011-08-02 Sam Steingold fix bug#3384693: no warning when lambda is incompatible with arglist * compiler.lisp (inline-callable-function-lambda-p): call c-warn when the lambdalist is incompatible with the argument count 2011-08-02 Sam Steingold * Makefile.devel (src/aclocal.m4): run aclocal in src 2011-08-02 Sam Steingold fix bug#3384825: simple condition printing ignores user-supplied methods * condition.lisp (simple-condition): use :REPORT option instead of a PRINT-OBJECT :AROUND method 2011-08-01 Sam Steingold fix recent breakage * socket.d (CLOSE) [win32]: define * win32.d (ioctl): define to ioctlsocket 2011-08-01 Sam Steingold fix "clean" targets * makemake.in (anymodule): do not remove gllib; there is no such dir (clean1): do not remove build-aux, but do remove dynmod (clean5): remove modules.h and build-aux unless building in src (clean6): do not remove Makefile (clean7): depend on distclean-subdirs (clean-subdirs, distclean-subdirs): new targets (clean): depend on clean-subdirs * po/Makefile.in.in (distclean): remove Makefile.in 2011-08-01 Sam Steingold * utils/txt2c.c (process_file): avoid a segfault by checking that standard_include_path is not NULL before accessing it 2011-08-01 Sam Steingold revert the parts of the 2011-07-29 15496:d628d9ac3fce patch which broke the in-place build (in the src directory) * _clisp.c: include w32shell & execname with "", not <> * encoding.d: include nls_* with "", not <> * eval.d: include lightning with "", not <> * lispbibl.d: include version.h with "", not <> * modules.c: include lispbibl & clisp with "", not <> * spvw.d: include spvw_calendar.c with "", not <> 2011-08-01 Sam Steingold * modules/berkeley-db/configure.in, modules/clx/new-clx/configure.in: * modules/syscalls/configure.in: call AC_SYS_LARGEFILE before the first AC_CHECK_SIZEOF to ensure 64-bit size_t Reported by Vladimir Tzankov in 2011-07-29 Sam Steingold link over fewer files into the build directory * makemake.in (CLISP_LIBDIR): do not set (EVERY_INCLUDES_H): remove gllib files (UNICODE_INCLUDES, NLS_INCLUDES, SPVW_VERSION, w32shell.c) (execname.c, spvw_calendar.c, with_jitc): do not link over (TXT2CINCL): use SRCDIR, not SRCTOPDIR (gllib): pass top_srcdir, not CLISP_LIBDIR to make (modules.h): create with touch (LINKKIT): link files directly into linkkit/ * modules.h: remove * Makefile.devel (src/gllib/Makefile.in): replace $(top_srcdir)/src/build-aux with $(top_srcdir)/build-aux instead of CLISP_LIBDIR * _clisp.c: include w32shell & execname with <>, not "" * encoding.d: include nls_* with <>, not "" * eval.d: include lightning with <>, not "" * lispbibl.d: include version.h with <>, not "" * modules.c: include lispbibl & clisp with <>, not "" * spvw.d: include spvw_calendar.c with <>, not "" 2011-07-29 Sam Steingold * makemake.in (GNULIB_INCLUDE): -I$(builddir)/gllib -I$(srcdir)/gllib (XCPPFLAGS): add GNULIB_INCLUDE (UNICODE_EXTRA, GLLIB_MODULE_HEADERS): remove (anymodule): add GNULIB_INCLUDE to CPPFLAGS * encoding.d: include localcharset as <>, not as "" 2011-07-28 Sam Steingold * socket.d (CLOSE): do not redefine the unix.d definition 2011-07-28 Sam Steingold * configure: do not link over anything * makemake.in (po): new target (makemake.in, config.h.in, configure): remove link_dep targets (makemake, config.h, config.status): depend on files in SRCDIR * po/Makefile.in.in (VPATH): add 2011-07-28 Sam Steingold * makemake.in (GLLIB_MODULE_HEADERS): set to regex.h for regexp 2011-07-27 Sam Steingold * lispbibl.d (ANSIC_error): export to clisp.h 2011-07-27 Sam Steingold * Makefile.devel (GNULIB_CORE): fix a typo: setsockopt was requested twice while getsockopt was not requested at all (GNULIB_IMPORTS): add recvfrom & sendto for rawsock * modules/rawsock/rawsock.c: use ANSIC_error instead of OS_error 2011-07-27 Sam Steingold fix mingw compilation * lispbibl.d (setjmp) [__MINGW32__]: do not define Include before to avoid a warning * stream.d (QueryInformationFile) [WIN32_NATIVE]: do not include here, instead ... * win32.d: include & (_exit): remove prototype (get it from gnulib) (lseek): undef before redefining (CoGetCurrentProcess): remove prototype, rely on above headers 2011-07-27 Sam Steingold * modules/syscalls/calls.c: when the portability is ensured by gnulib, use ANSIC_error; when we use WIN32_NATIVE functions directly, use OS_error (POSIX:MKSTEMP) [WIN32_NATIVE]: use _get_osfhandle to convert the return value of gnulib mkstemp() to a windows file handle Include & for CLSID_ShellLink & IID_IShellLink * modules/regexp/Makefile.in (NO_CXX): removed unused variable 2011-07-27 Sam Steingold * spvw_ctype.d (init_ctype): add "#ifdef LC_MESSAGES" for mingw 2011-07-26 Sam Steingold * m4/clisp.m4 (CL_CLISP): use AC_MSG_ERROR instead of setting variables to bad values 2011-07-26 Sam Steingold * Makefile.devel (GNULIB_CORE): add select 2011-07-26 Sam Steingold revert last patch; fix the gnulib defines in a more robust way: change C names for Lisp symbols to avoid clashes with the C world Suggested by Bruno * undef-gnulib.h: remove * Makefile.devel, makemake.in: remove undef-gnulib.h * spvwtabf.d, spvwtabo.d, spvwtabs.d: do not include undef-gnulib.h * constsym.d, eval.d, io.d, package.d, pathname.d, stream.d, * subr.d, time.d (read): rename to readL (listen): ... listenL (write): ... writeL (sleep): ... psleep (time): ... pptime (close): ... closeL Thanks to Yaroslav Kavenchuk for extensive testing 2011-07-25 Sam Steingold * Makefile.devel (src/undef-gnulib.h): new target (gnulib-imported): call it at the end * spvwtabf.d, spvwtabo.d, spvwtabs.d: include undef-gnulib.h after lispbibl to undefine the lisp symbols redefined by gnulib * makemake.in: link undef-gnulib.h into the build directory (spvwtab*.o): depend on undef-gnulib.h * undef-gnulib.h: new file, regenerated on each gnulib-imported 2011-07-25 Sam Steingold * m4/clisp.m4 (CL_DECOLONIZE): even when $ac_cv_build is mingw, use cygpath when available because cross-compiling on cygwin is not detected 2011-07-20 Sam Steingold * Makefile.devel (GNULIB_CORE): add close, ioctl, and make stdlib inclusion explicit (it has always been present as a dependency) * modules/rawsock/rawsock.c, socket.d, stream.d, unix.d, win32.d: use close() instead of closesocket() and ioctl() instead of ioctlsocket() on all platforms 2011-07-20 Sam Steingold * Makefile.devel (RMRF, HG): new variables (gnulib-imported): remove gnulib directories before import to see added and deleted files right away 2011-07-20 Sam Steingold * makemake.in: pass "--execute netrc=off" to wget to avoid "unknown token" errors 2011-07-20 Sam Steingold * Makefile.devel (GNULIB_CORE): add sys_select 2011-07-19 Sam Steingold * configure.in: do not call gt_LC_MESSAGES * spvw_ctype.d, spvw_language.d: assume LC_MESSAGES is present * win32.d: do not define HAVE_LC_MESSAGES 2011-07-19 Sam Steingold * bdb.c, clx.f, dirkey.c, gdbm.c, cpcre.c, rawsock.c, calls.c: * aridecl.d, array.d, charstrg.d, control.d, debug.d, encoding.d: * error.d, errunix.d, errwin32.d, eval.d, flo_konv.d, foreign.d: * funarg.d, genclisph.d, intbyte.d, intdiv.d, intelem.d, intmal.d: * io.d, lfloat.d, lisparit.d, lispbibl.d, makemake.in, pathname.d: * record.d, sequence.d, spvw.d, spvw_allocate.d, stream.d, symbol.d: * unix.d, win32.d, win32aux.d: gnulib module stdlib prodvides macro _Noreturn; use it instead of nonreturning_function() 2011-07-19 Sam Steingold use gnulib modules to convert windows WSAGetLastError to errno * Makefile.devel (GNULIB_CORE): add bind accept listen recv send setsockopt shutdown connect socket setsockopt getsockname getpeername replace strerror with strerror_r-posix * errwin32.d (SOCK_error): remove * lispbibl.d: include * socket.d, stream.d, win32aux.d: use ANSIC_error instead of SOCK_error; use errno instead of sock_errno_is/sock_set_errno * unix.d, win32.d (SHUT_RD, SHUT_WR, SHUT_RDWR): do not defined here, ensured by gnulib (in sys/socket) (sock_errno, sock_errno_is, sock_set_errno, SOCK_error): remove 2011-07-15 Sam Steingold * spvw_language.d (language): make it static to avoid warning: non-local variable ' language' uses anonymous type 2011-07-15 Sam Steingold * socket.d (ipv4_ntop, ipv6_ntop): remove (addr_to_string): simplify (MACHINE-INSTANCE): use it (socket_getlocalname_aux, socket_getpeername): use inet_ntop instead of ipv[46]_ntop 2011-07-15 Sam Steingold * encoding.d, lispbibl.d, pathname.d, socket.d, spvw.d, stream.d: * unix.d: always include & in lispbibl.d (socket, setsockopt): drop explicit prototypes, they are declared in (from gnulib, if necessary) 2011-07-14 Sam Steingold * configure.in: restore the readline check (accidentally removed) 2011-07-14 Sam Steingold * makemake.in (UTILS): fix the last patch by making utils depend on ${EXTRAOBJ} 2011-07-13 Sam Steingold * win32.d (HAVE_IPV4, HAVE_IPV6): define to 1 to avoid warning: "HAVE_IPV4" redefined Reported by Yaroslav Kavenchuk 2011-07-11 Sam Steingold * lispbibl.d (listen): undef after including unistd because gnulib defines it to listen_used_without_including_sys_socket_h 2011-07-11 Sam Steingold * makemake.in (EXTRAOBJ): set to ${GLLIB_A} to avoid "undefined reference to `rpl_malloc'" on mingw; but put it after the C file in the compilation command 2011-07-08 Sam Steingold * modules/regexp/regexi.c (REGEXP-EXEC): accept :return-type 'boolean instead of :boolean t * modules/regexp/regexp.lisp (regexp-matcher): pass :return-type 'boolean to regexp-exec 2011-07-08 Sam Steingold * win32.d, unix.d, lispbibl.d (stdlib, sys/types, unistd, locale) (errno): include files which are included in both unix.d and win32.d from lispbibl.d instead * socket.d: do not include these files here 2011-07-08 Sam Steingold * makemake.in: avoid $@ in single-target rules 2011-07-07 Sam Steingold * configure: pass --with-debug to makemake * makemake.in: accept --with-debug instead of positional 2011-07-06 Sam Steingold * m4/clisp.m4 (CL_CLISP): quote variable in test to avoid error "test: too many arguments" 2011-06-24 Sam Steingold * modules/libsvm/configure.in: check for svm_free_and_destroy_model * modules/libsvm/libsvm.lisp: in libsvm 3.1 svm_destroy_model is replaced with svm_free_and_destroy_model with a different signature, so we have to work around that 2011-06-24 Sam Steingold * modules/syscalls/calls.c (PRIORITY, %SET-PRIORITY) [WIN32_NATIVE]: compare handles with INVALID_HANDLE_VALUE, not NULL (PRIORITY) [WIN32_NATIVE]: make sure failed_p is always set * modules/bindings/win32/win32.lisp (GetPriorityClass): add 2011-06-01 Sam Steingold * pathname.d, subr.d (PROBE-PATHNAME): mark as seclass_rd_sig because it may signal permission errors 2011-06-01 Sam Steingold finish the 2011-05-13 possible_symlink patch * pathname.d (my_readlink) [UNIX_LINUX]: do not handle /proc specially (stat_for_search) [UNIX_LINUX]: ditto 2011-06-01 Sam Steingold avoid errors on weird pathnames like ~/.gvfs under gnome * pathname.d (get_path_info): accept tolerantp (assure_dir_exists): pass tolerantp to get_path_info (namestring_kind_t): add NAMESTRING_BAD for existing objects for which no information could be obtained (classify_namestring): return NAMESTRING_BAD instead of signaling (PROBE-PATHNAME): signal the error here (directory_search_direntry_ok): never signal any errors, just return false (directory_search_scandir): call OS_file_error instead of error_file_not_exists after a failed directory_search_direntry_ok when if_none=DIR_IF_NONE_ERROR Reported by Don Cohen http://article.gmane.org/gmane.lisp.clisp.general:13778 2011-05-24 Sam Steingold * _clisp.c (main) [WIN32_NATIVE]: use FormatMessage() instead of strerror() for GetLastError() Reported by Bruno Haible 2011-05-24 Sam Steingold * Makefile.devel (GNULIB_CORE): import mkfifo mknod mkstemp mkdtemp getloadavg * modules/syscalls/calls.c (MKSTEMP, MKDTEMP, LOADAVG, MKNOD): define uniformly on all platforms * modules/syscalls/posix.lisp (mknod): export on all platforms 2011-05-20 Sam Steingold * spvw_language.d (clgettext) [!GNU_GETTEXT]: define for CLSTEXT 2011-05-19 Sam Steingold * subrkw.d: remove * spvw.d (init_subr_tab_2): use subr with LISPFUN_H instead of subrkw * subr.d (LISPFUN_H): fix * makemake.in (OTHER_INCLUDES): remove subrkw * po/Makefile.devel (DSOURCES): ditto * check-lispfun.lisp (check-lisp-defs): do not look at subrkw.d 2011-05-19 Sam Steingold * zthread.d (EXEMPTION-WAIT): fix the key count in the definition to match the (correct) declaration in subr.d 2011-05-19 Sam Steingold * constobj.d, constsym.d, hashtabl.d, io.d, lispbibl.d, * pathname.d, predtype.d, spvw.d, spvw_debug.d, subr.d, subrkw.d: remove the LOGICAL_PATHNAMES CPP macro; logical pathnames are unconditionally present in CLISP 2011-05-19 Sam Steingold * constobj.d, constsym.d, lispbibl.d, pathname.d, subr.d: remove HAVE_SHELL which is always defined on all platforms supported by CLISP 2011-05-19 Sam Steingold * modules/syscalls/calls.c (processor_architecture): add DEFCHECKER (SYSTEM-INFO): use it; also push dwProcessorType on STACK * modules/syscalls/posix.lisp (system-info): add PROCESSOR-TYPE slot 2011-05-19 Sam Steingold * constobj.d, constsym.d, lispbibl.d, misc.d, socket.d: * spvw_memfile.d, subr.d: remove MACHINE_KNOWN which is always defined on all platforms supported by CLISP 2011-05-19 Sam Steingold * constsym.d, lispbibl.d, misc.d, subr.d: remove HAVE_ENVIRONMENT which is always defined on all platforms supported by CLISP 2011-05-18 Vladimir Tzankov * time.d (thread_from_arg) [MULTITHREAD]: fix g++ gcsafety build 2011-05-18 Vladimir Tzankov * xthread.d: use "raw" mutexes for emulating spinlocks on architectures with no inline asm versions 2011-05-18 Vladimir Tzankov * spvw_sigcld.d (sigcld_enabled_INCF/DECF): fix counting 2011-05-19 Sam Steingold * makemake.in (UTILCOMPILE): turn into a make variable and use it on win32 and when cross-compiling 2011-05-18 Sam Steingold simplify UI language code * lispbibl.d (ENGLISH, LANGUAGE_STATIC): remove (language_english): move to ... * spvw_language.d (language_english): ... here (language): static enum (init_language): simplify, remove gotos * spvw_memfile.d (loadmem_from_handle): LANGUAGE_STATIC => !GNU_GETTEXT * i18n.d (TEXT) [!GNU_GETTEXT]: return the argument as string 2011-05-18 Sam Steingold * makemake.in: finish the 2008-05-31 CL_CC_NEED_CCPAUX patch by removing the special case of comment5 in UTIL building (full): fix the grep REPLACE_ regexp (gnulib replacements) 2011-05-18 Sam Steingold * modules/rawsock/rawsock.c: do not include twice * modules/rawsock/configure.in: is checked by gl_SOCKETLIB; add LIBSOCKET to LIBS while checking for functions 2011-05-18 Sam Steingold * modules/i18n/configure.in: gl_FUNC_NL_LANGINFO is already called by gl_INIT in the top-level config file 2011-05-18 Sam Steingold * modules/clx/new-clx/clx.f, modules/clx/new-clx/configure.in: * modules/fastcgi/configure.in, modules/regexp/configure.in: * modules/rawsock/configure.in, modules/rawsock/rawsock.c: * modules/syscalls/configure.in, configure.in, m4/general.m4: * m4/rusage.m4: do not check for gnulib files * Makefile.devel (GNULIB_CORE): add sys_uio & socketlib (already present as dependencies) * m4/putenv.m4: remove (should have been removed on 2010-09-27) * modules/syscalls/calls.c, modules/syscalls/configure.in: and are provided by gnulib 2011-05-18 Sam Steingold * makemake.in (SUBDIR_CFLAGS): add @NO_CXX@ because gnulib regexp and fnmatch cannot be compiled with C++ 2011-05-17 Sam Steingold * modules/rawsock/rawsock.c, modules/berkeley-db/bdb.c: * modules/berkeley-db/configure.in, modules/syscalls/configure.in: * modules/fastcgi/fastcgi_wrappers.c, modules/gdbm/gdbm.c: * rawsock/rawsock.c, modules/rawsock/configure.in: no need to check and guard gnulib #include files and functions 2011-05-17 Sam Steingold merge the wildcard module into syscalls; import gnulib into src only before: clisp:52,284k modules:14,136k src:25,876k after: clisp:44,200k modules: 8,684k src:24,836k * Makefile.devel (MODULES): remove wildcard (GNULIB_USERS, MAKEFILE_IN): remove (gnulib-imported): import files into src/ only (GNULIB_CORE): import explicitly "unistd alloca-opt environ" which have been already included because of dependencies; also import lstat, stat, readlink * gnulib-tool.patch: remove * configure.in: rely on lstat, stat, readlink * makemake.in (GLLIB_A): no need for "_cl" suffix * pathname.d: lstat() is always present (from gnulib) * unix.d: readlink, lstat, gethostname come from gnulib * win32.d: gethostname comes from gnulib * m4/stat.m4: remove * modules/wildcard, modules/regexp/gl*, modules/syscalls/gl*: remove * modules/regexp/Makefile.in, modules/syscalls/Makefile.in: remove gnulib targets (GENERATED): remove libgnu_*.a (config.h): add target * modules/regexp/configure.in, modules/syscalls/configure.in: remove gnulib calls * modules/regexp/link.sh.in, modules/syscalls/link.sh.in (NEW_FILES): remove libgnu_*.a * modules/syscalls/calls.c (FNMATCH): add * modules/syscalls/posix.lisp: export FNMATCH & FNMATCH-MATCHER (fnmatch-matcher): implement (wildcard:match, wildcard:wildcard-matcher): add for backward-compatibility 2011-05-17 Sam Steingold * misc.d (environ) [HAVE_ENVIRONMENT]: included for dependencies gnulib module environ already provides the declaration * socket.d: no need to guard including - it is always provided by the gnulib module unistd * unix.d: no need to guard including , , , - they are always provided by gnulib * aridecl.d, arilev0.d, arilev1.d, lispbibl.d, win32.d: remove the last vestiges of Borland support * _clisp.c: add '#include "config.h"' (necessary for gnulib) * lispbibl.d: rely on alloca.h provided by gnulib/alloca-opt 2011-05-17 Sam Steingold * configure: detect building for mingw from $CC -dumpmachine 2011-05-17 Sam Steingold * utils/modprep.lisp (print-tables-1): DEFFLAGSET(..., !CONST) means that to add CONST to flags one passes NIL to the lisp function 2011-05-16 Sam Steingold * spvw_language.d (language): static, not global (current_language_o): global, not static (init_language): do not call bindtextdomain() with a nonexistent localedir because that it is usually called by SET-CURRENT-LANGUAGE with a NULL second argument * lispbibl.d (current_language_o) [!LANGUAGE_STATIC]: declare extern * spvw.d (init_memory): update initialization of O(current_language) * i18n.d (SET-CURRENT-LANGUAGE): use current_language_o() to set O(current_language) 2011-05-13 Sam Steingold * pathname.d (possible_symlink): remove (linux 2.0.35 is long gone) 2011-05-10 Sam Steingold * pathname.d (starp): remove (multiwild_char_p, singlewild_char_p, wild_char_p): use consistently throughout the file (DEF_WILD_CHECKER): new macro (word_wild_p, wild_p): define using it 2011-05-04 Sam Steingold * stream.d (IS_EINVAL_EXTRA) [UNIX_SUNOS5]: add ENXIO 2011-05-04 Sam Steingold * Makefile.devel (GNULIB_CORE): replace close-hook with fd-hook (renamed in gnulib 2011-04-19) (gnulib-imported): pipe stderr to $(GNULIB_IMPORTED_LOG) too 2011-05-04 Sam Steingold * spvw_language.d (init_language): fix the 2011-04-10 patch (use strcpy instead of strcat) 2011-05-04 Sam Steingold * symbol.d (GENTEMP): add a cast to fix g++ compilation 2011-05-04 Sam Steingold * Makefile.devel (GNULIB_CORE): add arpa_inet, netinet_in, inet_ntop, inet_pton * lispbibl.d: assume that is always present * win32.d (CONNECT_NAME_T, CONNECT_CONST, CONNECT_ADDRLEN_T) (HAVE_NETINET_IN_H, HAVE_ARPA_INET_H, RET_INET_ADDR_TYPE) (INET_ADDR_SUFFIX, INET_ADDR_CONST): remove * socket.d: assume HAVE_ARPA_INET_H, HAVE_INET_NTOP, HAVE_INET_PTON, thus inet_addr() is never used (connect, inet_addr): remove the prototypes (all_digits_dots): remove the function * configure.in: do not call CL_CONNECT (LIBS): add -lnsl & -lsocket if required for connect() & gethostbyname() * m4/connect.m4, m4/socket.m4: remove * m4/tcpconn.m4: do not check for inet_pton & inet_ntop (get them from gnulib) and inet_addr (never used) * modules/rawsock/rawsock.c, modules/syscalls/calls.c: include & unconditionally * modules/syscalls/configure.in: do not check for & ; do not call CL_SOCKET 2011-05-03 Sam Steingold * genclisph.d (include_file): renamed from print_file; when fname does not exist, emit "#include " * lispbibl.d (stdbool.h): do not check for HAVE_STDBOOL_H because it is no longer defined by gnulib 2011-05-02 Sam Steingold * modules/syscalls/calls.c, modules/syscalls/posix.lisp (stdio): enable even without FFI because it is useful for bypassing the normal CL filename processing 2011-05-01 Bruno Haible Disallow &WHOLE if it comes too late. * defmacro.lisp (analyze1): Report an error if &WHOLE appears after the first required variable or after &OPTIONAL. Refer to CLHS 3.4.4 and 3.4.5 Reported at bug#3295448. 2011-04-28 Sam Steingold * modules/clx/new-clx/clx.f (check_family): add (XLIB:ACCESS-HOSTS): handle all host families from my X.h and Xauth.h 2011-04-28 Sam Steingold fix bug#3292605: GET-PROPERTY unpacks properties incorrectly on 64bit http://www.x.org/releases/X11R7.6/doc/man/man3/XChangeProperty.3.xhtml format = 8/16/32 means char/short/long, __NOT__ int8/int16/int32 * modules/clx/new-clx/clx.f (get_client_message_format1): add, return the format_bytesize in addition to the actual format (get_client_message_format): call it (XLIB:CHANGE-PROPERTY): use it instead of format/8 (make_client_message_data, XLIB:GET-PROPERTY): use fixnum & L_to_I for conversion instead of make_int* (get_client_message_data, coerce_into_map): use get_fixnum & I_to_L for conversion instead of get_int* * modules/clx/new-clx/clx.lisp (decode-wm-size-hints): revert the ZEROP check accidentally committed on 2009-09-18 2011-04-27 Elliott Slaughter * win32msvc/nsis/install.nsi: Fix PATH bug by insisting that packager uses long strings version of NSIS. Also upgrade EnvVarUpdate library. * win32msvc/nsis/add_to_path.nsh: Obsoleted by env_var_update.nsh. * win32msvc/nsis/env_var_update.nsh: Added to supercede add_to_path.nsh. * makemake.in: Use env_var_update.nsh rather than add_to_path.nsh. 2011-04-22 Sam Steingold * places.lisp (setf-VALUES-aux): even if subform sets no values, it should consume one assigned value (bug#3291585) 2011-04-21 Sam Steingold * Makefile.devel (CP): new variable; do _not_ pass "-u" so that fresh checkouts will not override updating in build-aux-update et al (LIBTOOL_VERSION): bump to 2.4 (build-aux-update): get compile & ylwrap from a specific automake version instead of whatever happens to be currently installed 2011-04-18 Sam Steingold * configure (makemake_args): when configure detects mingw/msys, pass --win32gcc to makemake Reported by Elliott Slaughter . 2011-04-15 Sam Steingold * compiler.lisp (c-GLOBAL-FUNCTION-CALL): issue a style-warning when PARSE-NAMESTRING, MERGE-PATHNAMES, or READ-FROM-STRING, i.e., a function which accept both &KEY arguments and an even number of &OPTIONAL arguments, is, apparently, invoked with &KEY but without &OPTIONAL arguments 2011-04-15 Sam Steingold * compiler.lisp (c-LAMBDABODY): issue a style-warning when lambda list contains both &optional and &key 2011-04-12 Sam Steingold On Max OS X the value of *PATHNAME-ENCODING* is set to UTF-8 and cannot be changed because MacOSX pathnames are UTF-8 strings, not byte sequences (http://thread.gmane.org/gmane.lisp.clisp.general/13725 and http://developer.apple.com/library/mac/#qa/qa2001/qa1173.html) * lispbibl.d (CONSTANT_PATHNAME_ENCODING) [UNIX_MACOSX]: define to UTF-8 * encoding.d (init_dependent_encodings) [CONSTANT_PATHNAME_ENCODING]: set O(pathname_encoding) to CONSTANT_PATHNAME_ENCODING (SYSTEM::SET-PATHNAME-ENCODING): signal an error when the encoding argument is not CONSTANT_PATHNAME_ENCODING * spvw.d (argv_encoding_pathname): do not define when CONSTANT_PATHNAME_ENCODING is defined (parse_options): do not accept -Epathname * makemake.in (encflags) [TSYSOS=darwin]: do not add -Epathname Thanks to Carlos Ungil for testing. 2011-04-10 Sam Steingold * spvw_language.d (init_language): use strcat and strncat instead of while and dotimespL 2011-04-10 Sam Steingold * modules/bindings/glibc/linux.lisp (wait, waitpid): restore (revert the 2011-03-23 patch); recommend POSIX:WITH-SUBPROCESSES in comments 2011-04-09 Sam Steingold * modules/syscalls/calls.c (POSIX:SERVICE): fix non-missing protocol handling (bug#3280915) 2011-04-08 Vladimir Tzankov * spvw_sigpipe.d [MULTITHREAD, UNIX_MACOSX, GENERATIONAL_GC]: patch for strange SIGPIPE delivered to libsigsegv thread 2011-04-06 Sam Steingold fix bug#3182597: WRITE-BYTE-SEQUENCE :no-hang t is only for byte vectors * sequence.d (WRITE-BYTE-SEQUENCE): implement "persev != persev_full" for sequences other than (VECTOR (UNSIGNED-BYTE 8)) 2011-04-06 Sam Steingold * sequence.d (interactive_no_hang): new function (READ-BYTE-SEQUENCE, WRITE-BYTE-SEQUENCE): use it 2011-04-06 Sam Steingold * unixaux.d (fd_read): revert the 2008-12-30 patch which closed the fd on ECONNRESET without marking the lisp stream as closed, thus leading to EBADF when the stream was closed 2011-04-05 Bruno Haible Tweak last two changes. * lispbibl.d (GENERATIONAL_GC): Add more comments. * spvw.d (SIGSEGV_FAULT_ADDRESS_ALIGNMENT): Define fallback. * spvw_fault.d (handle_fault): Simplify use of SIGSEGV_FAULT_ADDRESS_ALIGNMENT. 2011-04-04 Sam Steingold * spvw_fault.d (handle_fault): fix last patch to restore support to libsigsegv-2.9 and earlier * lispbibl.d (GENERATIONAL_GC): ditto 2011-04-03 Bruno Haible Support for generational GC on Linux/S390. * configure (SIGSEGV): Recommend libsigsegv-2.10. * lispbibl.d (GENERATIONAL_GC): Consider also SIGSEGV_FAULT_ADDRESS_ALIGNMENT. * spvw_fault.d (handle_fault): Likewise. Reported by Christoph Egger . 2011-03-31 Sam Steingold fix bug#1731469: loop expansion: spurious LET twice * loop.lisp (destructure): warn on destructuring empty patterns (expand-loop): do not destructure empty patterns and bind useless variables; this makes macroexpansion smaller but does not affect compiled code 2011-03-29 Sam Steingold fix bug#3258485: HANDLER-BIND: no CONSTANTLY as a handler * compiler.lisp (insert-combined-LAPs): we have HANDLER-BEGIN&PUSH but not HANDLER-BEGIN, so insert a (PUSH)+(POP) after HANDLER-BEGIN which is not followed by a (PUSH) 2011-03-29 Sam Steingold * compiler.lisp (insert-combined-LAPs): remove noop GOs 2011-03-29 Sam Steingold fix bug#3147908: too much consing in IGNORE-ERRORS, partially reverting the 2005-01-21 patch * compiler.lisp (c-form-table): map HANDLER-BIND to c-HANDLER-BIND and SYS::%HANDLER-BIND to c-%HANDLER-BIND (c-handler-bind-handler-anode, c-handler-bind-anode): extract from c-HANDLER-BIND (c-HANDLER-BIND, c-%HANDLER-BIND): use them * init.lisp (%expand-handlers): remove unused code * modules/asdf/asdf.lisp (module-provide-asdf): work around the upcoming bug#3258485 which was fixed by the 2005-01-21 patch and is now being reintroduced 2011-03-29 Sam Steingold * trace.lisp (subclosure-pos, trace1): use SYMBOL-SUFFIX instead of CONCAT-PNAMES to keep the named of the traced definition in the same package as the original name 2011-03-28 Sam Steingold fix bug#3182685: socket-connect with timeout non-zero ->ETIMEDOUT * socket.d (connect_via_ip): do not reuse "ret" when checking for socket errors (fixes patch 2008-06-30) 2011-03-28 Sam Steingold fix bug#3165405: LOOP mixing WITH & Hash Table FOR * loop.lisp (expand-loop): reverse the order of INITFORMS and ENDTEST-FORMS in preamble (tweak the 2006-07-20 patch) 2011-03-27 Sam Steingold fix bug#3243683: (posix:wait) race condition * spvw_sigcld.d (sigcld_enabled): static var which counts how many times we have enabled SIGCLD (sigcld_enabled_lock) [MULTITHREAD]: spinlock for sigcld_enabled (install_sigcld_handler) [MULTITHREAD]: init sigcld_enabled_lock (begin_want_sigcld, end_want_sigcld): only act if sigcld_enabled==0 * modules/syscalls/calls.c (BEGIN-SUBPROCESSES, END-SUBPROCESSES): add * modules/syscalls/posix.lisp (with-subprocesses): add 2011-03-24 Sam Steingold Fix bug#3198722: arg warnings despite :ALLOW-OTHER-KEYS T * compiler.lisp (test-argument-syntax): report all wrong keys but only if :ALLOW-OTHER-KEYS T is not supplied (c-DIRECT-FUNCTION-CALL): duplicate and ignored keys are STYLE warnings 2011-03-24 Sam Steingold * configure.in (AC_REVISION): explicitly call hg instead of using $Id$ * m4/general.m4, modules/rawsock/configure.in: quote AC_LANG_PROGRAM to avoid an autoconf 2.68 warning * m4/address.m4, m4/filecharset.m4: use AC_LANG_PROGRAM to avoid an autoconf 2.68 warning * m4/eloop.m4, m4/param.m4: use AC_LANG_SOURCE to avoid an autoconf 2.68 warning 2011-03-23 Sam Steingold * modules/bindings/glibc/linux.lisp (wait, waitpid): remove, these functions never worked properly because clisp ignores SIGCLD by default; one should be using POSIX:WAIT instead (bug#3224360) 2011-03-13 Sam Steingold * makemake.in (clean-modules, check-doc): update for the cvs->hg switch 2011-03-08 Sam Steingold * Makefile.devel: update for the cvs->hg switch 2011-03-01 Vladimir Tzankov * spvw_garcol.d (split_gen0_on_holes) [MULTITHREAD]: correctly mark the end of old generation (it is possible the split-hole to be for read-only pinned object) 2011-02-17 Sam Steingold * modules/clx/new-clx/clx.f (XLIB:CREATE-GCONTEXT): use error_required_keywords() Reported by Peter Van Eynde 2011-02-11 Vladimir Tzankov * lispbibl.d (WITH_DEFERRED_INTERRUPTS): fix typo in name and really execute deferred interrupts * spvw.d (create_thread): allow interrupts in newly created threads * zthread.d (thread_stub): defer interrupts until low level per thread variables are initialized 2010-12-30 Arseny Slobodyuk * pathname.d (classify_namestring) [WIN32_NATIVE]: fixed condition. 2010-12-29 Arseny Slobodyuk Fix for bug#3144993: OS:FILE-INFO crashes when file's times are corrupted (Y2.04k bug) * time.d (convert_time_to_universal) [WIN32_NATIVE]: use 64 bit when dividing ticks by ticks_per_second, because universal time exceeds 32 bits around year 2035. 2010-12-10 Sam Steingold Fix bug#3124200: setting *DEFAULT-PATHNAME-DEFAULTS* breaks REQUIRE * init.lisp (open-for-load): accept ignore-pathname-defaults and do not call MERGE-PATHNAMES if it is non-NIL; use PROBE-PATHNAME instead of DIRECTORY to probe for a directory (load): accept :IGNORE-PATHNAME-DEFAULTS and pass it to OPEN-FOR-LOAD; pathname merging is done in OPEN-FOR-LOAD (search-file): call PATHNAME instead of MERGE-PATHNAMES on the argument to avoid being killed by *DEFAULT-PATHNAME-DEFAULTS* * defs1.lisp (with-augmented-load-path): do not use UNION since the augmentations must come first in *LOAD-PATHS* (simple-require): pass :IGNORE-PATHNAME-DEFAULTS T to LOAD 2010-12-10 Sam Steingold * modules/asdf/asdf.lisp: update to upstream "2.011" * src/gmalloc.c: update from upstream (emacs) 2010-12-10 Sam Steingold * Makefile.devel (update-gmalloc): new target: get gmalloc.c from emacs 2010-12-02 Sam Steingold * defs1.lisp (load-path-augmentations): delete NILs (augment-load-path): remove (with-augmented-load-path): use UNION instead of AUGMENT-LOAD-PATH to avoid modifying the global value of *LOAD-PATHS* 2010-12-01 Sam Steingold * pathname.d (SET-LIB-DIRECTORY): call TRUENAME on argument to ensure an existing absolute path 2010-11-29 Sam Steingold fix bug#3122505: LOAD does not close FAS files with a bad version marker * init.lisp (open-for-load): catch errors when READing the version marker 2010-11-26 Sam Steingold * constsym.d, subr.d, subrkw.d, stream.d (make_stream, stream_handles): define even when SOCKET_STREAMS is not defined 2010-11-25 Sam Steingold * init.lisp, constsym.d (stream-handles): move from SOCKET to EXT 2010-11-21 Sam Steingold * makemake.in: use ${MODULESDIR_} instead of ${SRCTOPDIR}modules 2010-11-14 Vladimir Tzankov [MULTITHREAD]: thread safe GENSYM and GENTEMP * lispbibl.d (gensym_lock, gentemp_lock): add locks guarding gensym and gentemp counters * spvw.d (init_multithread): initialize gensym_lock and gentemp_lock * defs1.lisp (GENTEMP): remove. implemented in C * subr.d, constsym.d: add GENTEMP to subr and symbol tables * constobj.d: add gentemp prefix and counter to object table * threads.lisp (*DEFAULT-SPECIAL-BINDINGS*): remove *gensym-counter* * symbol.d: define gensym_lock, gentemp_lock (GENSYM): re-implement. lock *gensym-counter* increment (GENTEMP): implement in C 2010-11-08 Sam Steingold * modules/rawsock/rawsock.c (check_sockopt_name): add (get_sock_opt, set_sock_opt): use it instead of NOTREACHED 2010-10-30 Vladimir Tzankov [MULTITHREAD]: add optional :TEST predicate to MT:EXEMPTION-WAIT * subr.d, subrkw.d (EXEMPTION-WAIT): accept optional :TEST argument * xthread.d (xcondition_wait): accept timeout as void pointer. with POSIX_THREADS it is absolute struct timespec, with WIN32_THREADS it is unsigned integer specifying milliseconds to wait * zthread.d (EXEMPTION-WAIT): loop until :TEST predicate is satisfied thus simplifies EXEMPTION-WAIT usage with POSIX_THREADS where spurious wakeups are possible (xcondition_wait): handle timeout parameter properly 2010-10-28 Sam Steingold * modules/berkeley-db/bdb.c (time_stamp): make "prefix" const to avoid warning: deprecated conversion from string constant to 'char*' * modules/syscalls/calls.c (POSIX:FILE-TREE-WALK): add a cast to fix g++ compilation 2010-10-27 Bruno Haible * clhs.lisp (*browsers*): Add :firefox-window and :firefox-tab. 2010-10-22 Vladimir Tzankov * time.d (get_running_times_helper): fix real time calculation. use the value returned from get_real_time() 2010-10-21 Sam Steingold * time.d (GET-INTERNAL-RUN-TIME): when *ANSI*!=NIL, reject the optional argument (for strict ANSI compliance) 2010-10-21 Vladimir Tzankov [MULTITHREAD]: provide real/run time information on individual threads when supported by OS * lispbibl.d: remove HAVE_RUN_TIME and dependencies (get_thread_run_time, get_run_time): obtain thread or process run time (struct clisp_thread_t): add thr_realstart_time - real time at which thread has started (check_thread): make it global (used from time.d) * spvw_gcstat.d (gc_timer_on, gc_timer_off): use get_run_time() instead of get_running_time() (which was causing unused C stack area to be overwritten) * stream.d: remove run_time_start()and run_time_restart() calls (anyway these were nop when HAVE_RUN_TIME was not defined i.e. always) * zthread.d (check_thread): make it global (thread_stub): initialize thread real start time * subr.d (GET-INTERNAL-RUN-TIME, SYSTEM::%%TIME): accept optional thread argument * time.d: remove HAVE_RUN_TIME and dependencies (realstart_time_initialized): flag whether process start time was initialized (thread_from_arg): returns thread record from optional argument passed to GET-INTERNAL-RUN-TIME and SYSTEM::%%TIME (real_start_time): return the real start time of a thread or process (get_thread_run_time): was get_run_time(). handle thread argument (get_running_times_helper): was get_running_times(). handle thread argument. never fails and does not GC when called for process wide data (get_running_times): use it (GET-INTERNAL-RUN-TIME, %%TIME): handle optional thread argument (init_time): initialize thread real start time in MT 2010-10-21 Arseny Slobodyuk * makemake.in (cygwin_finish): use realpath and cygpath to avoid cygcheck bug with symbolic links 2010-10-21 Arseny Slobodyuk Fix PROBE-PATHNAME: proper handle of "/" on UNIX, DWIM on WIN32 (broken 10-18) "lisp.exe/" -> "path/lisp.exe" * pathname.d (PROBE-PATHNAME): strip last "/" in a loop (classify_namestring) [UNIX]: handle ENOTDIR like ERROR_INVALID_NAME is handled on WIN32 2010-10-20 Sam Steingold * modules/syscalls/calls.c (check_rusage): add (USAGE): accept `what' argument and return a single value 2010-10-18 Sam Steingold fix bug#3089988: (loop for x do (print x)) should barf * loop.lisp (expand-loop): fail when the FOR clause lacks subclauses 2010-10-18 Arseny Slobodyuk * pathname.d (FIND_DATA_FWD) [WIN32_NATIVE]: fixed condition 2010-10-18 Julian Squires Arseny Slobodyuk fix bug#3087668: probe-pathname on root directories on WIN32 * pathname.d (PROBE-PATHNAME) [!UNIX]: do not remove trailing slash (classify_namestring) [WIN32_NATIVE]: use GetFileAttributesEx instead of FindFirstFile to retrieve size and modification date/time, because GetFileAttributesEx unlike FFF can handle root directories 2010-10-17 Vladimir Tzankov fix bug#3088751: SIGSEGV on large (unsigned-byte 8) arrays * spvw_typealloc.d (allocate_bit_vector): use uintM; uintL overflows on 64 bit builds for large vectors * spvw_objsize.d (size_sbvector): use uintM instead of uintL * spvw_garcol.d (fill_varobject_heap_holes) [MULTITHREAD]: holes may be larger than 2^32 bytes (uintL); use uintM 2010-10-15 Sam Steingold * pathname.d (PROBE-PATHNAME): fix open stream handling 2010-10-12 Sam Steingold * modules/editor: resurrect editor.lisp from 1998; update and fix the most glaring problems; maintainer is wanted! 2010-10-12 Sam Steingold * makemake.in (GLLIB_MODULE_HEADERS): some headers, e.g., sockets.h, are only needed by modules/*/gllib, not boot 2010-10-12 Sam Steingold * modules/regexp/gllib/stddef.in.h, modules/regexp/gllib/stdlib.in.h: * modules/regexp/gllib/unistd.in.h, modules/regexp/glm4/stdlib_h.m4: * modules/syscalls/gllib/stddef.in.h, modules/syscalls/gllib/strerror.c: * modules/syscalls/gllib/strings.in.h: * modules/syscalls/gllib/sys_socket.in.h: * modules/syscalls/gllib/sys_utsname.in.h: * modules/syscalls/gllib/time.in.h: * modules/syscalls/gllib/unistd.in.h, modules/wildcard/glm4/fnmatch.m4: * gllib/errno.in.h, gllib/langinfo.in.h, gllib/malloca.c: * gllib/stddef.in.h, gllib/stdint.in.h, gllib/stdlib.in.h: * gllib/string.in.h, gllib/sys_socket.in.h, gllib/sys_time.in.h: * gllib/sys_wait.in.h, gllib/unistd.in.h, gllib/wchar.in.h: * gllib/wctype.in.h, glm4/errno_h.m4, glm4/include_next.m4: * glm4/stdlib_h.m4, glm4/threadlib.m4: update from gnulib to fix error: redefinition of `struct random_data' 2010-10-12 Sam Steingold * makemake.in (module_configure_flags): fix according to 2010-10-12 Sam Steingold * gmalloc.c: move from src/malloc/ to src/ * malloc/getpagesize.c: remove obsolete file * makemake.in: update 2010-10-11 Sam Steingold * makemake.in: make charstrg.o depend on $(GLLIB_A) instead of gllib because the latter is _always_ rebuilt 2010-10-08 Sam Steingold * genclisph.d (check_typecodes): run in the generated clisp-test-lispbibl instead of genclisph so that the check is always enabled 2010-10-05 Sam Steingold * makemake.in (full): print gnulib replacements only when -verbose and do not fail the build when none is found 2010-10-04 Sam Steingold * modules/syscalls/calls.c (POSIX:STRING-TIME): when calling strptime, init tm fields to reasonable values because strptime does not set fields which are not specified by datum 2010-10-04 Vladimir Tzankov * zthread.d (default_thread_name): returns name for functionp object (MAKE-THREAD): use it 2010-10-04 Sam Steingold * makemake.in (full): show which system supplied functionality is replaced by gnulib 2010-10-03 Vladimir Tzankov fix bug#3077583: show-stack segfaults with MT * lispbibl.d (THREAD_LISP_STACK_START): remove * spvw.d (delete_thread): calculate thread stack address and free it * debug.d (show_stack): do not use cmpSTACKop for testing end of stack. FRAME == STACK_start should be correct end condition in all cases * zthread.d (thread_stub): no back trace for new thread 2010-10-02 Sam Steingold * makemake.in: make charstrg.o depend on gllib 2010-09-29 Sam Steingold do not use gnulib module getdate which should have been called get_date * modules/syscalls/calls.c (xalloc_die): remove (GETDATE): condition on HAVE_GETDATE & HAVE_DECL_GETDATE_ERR * modules/syscalls/configure.in: do not call AC_PROG_YACC; check for getdate and getdate_err * modules/syscalls/gllib/c-ctype.c, modules/syscalls/gllib/c-ctype.h: * modules/syscalls/gllib/getdate.h, modules/syscalls/gllib/getdate.y: * modules/syscalls/gllib/gettext.h, modules/syscalls/gllib/gettime.c: * modules/syscalls/gllib/timespec.h, modules/syscalls/gllib/xalloc.h: * modules/syscalls/gllib/xmalloc.c, modules/syscalls/glm4/bison.m4: * modules/syscalls/glm4/clock_time.m4, modules/syscalls/glm4/error.m4: * modules/syscalls/glm4/getdate.m4, modules/syscalls/glm4/gettime.m4: * modules/syscalls/glm4/inline.m4, modules/syscalls/glm4/timespec.m4: * modules/syscalls/glm4/xalloc.m4: remove 2010-09-29 Sam Steingold * configure.in, modules/syscalls/configure.in: do not call macros which are already called by gl_INIT 2010-09-29 Sam Steingold * modules/syscalls/calls.c (module__syscalls__init_function_2): if DATEMSK is not set, point it to the included file ... * modules/syscalls/datemsk: add (based on http://www.opengroup.org/onlinepubs/009695399/functions/getdate.html) * modules/syscalls/Makefile.in (GENERATED): add datemsk (datemsk): new target 2010-09-29 Sam Steingold * makemake.in (lisp${SHREXT}, lisp${LEXE}): put ${GLLIB_A} before $(OBJECTS) so that gllib is rebuilt before compiling charstrg.d 2010-09-28 Sam Steingold implement POSIX:GETDATE using gnulib * Makefile.devel (gnulib-imported): import getdate into syscalls (build-aux-update): get ylwrap from automake * modules/syscalls/calls.c (tm_to_lisp): extract from STRING-TIME (POSIX:GETDATE, xalloc_die): implement * modules/syscalls/posix.lisp: export GETDATE * modules/syscalls/configure.in: call gl_GETDATE & AC_PROG_YACC * modules/syscalls/gllib/c-ctype.c, modules/syscalls/gllib/c-ctype.h: * modules/syscalls/gllib/getdate.h, modules/syscalls/gllib/getdate.y: * modules/syscalls/gllib/gettext.h, modules/syscalls/gllib/gettime.c: * modules/syscalls/gllib/timespec.h, modules/syscalls/gllib/xalloc.h: * modules/syscalls/gllib/xmalloc.c, modules/syscalls/glm4/bison.m4: * modules/syscalls/glm4/clock_time.m4, modules/syscalls/glm4/error.m4: * modules/syscalls/glm4/getdate.m4, modules/syscalls/glm4/gettime.m4: * modules/syscalls/glm4/inline.m4, modules/syscalls/glm4/timespec.m4: * modules/syscalls/glm4/xalloc.m4: add 2010-09-28 Sam Steingold fix bug#3076160: pass the top-level configure arguments --build= & --host= to the module configures * makemake.in (module_configure_flags): strip out -srcdir* & -cache-file* 2010-09-28 Sam Steingold * modules/rawsock/rawsock.c (module__rawsock__init_function_2): use _GL_UNUSED instead of the ad hoc `unused' 2010-09-28 Sam Steingold * Makefile.devel ($(MAKEMAKE_TMP)): substitute --disable-option-checking for @module_configure_flags@ * configure.in: substitute $ac_configure_args for @module_configure_flags * makemake.in (module_configure_flags): use @module_configure_flags@ instead of hard-wired --disable-option-checking 2010-09-28 Sam Steingold get strerror from gnulib for POSIX:STRERROR * Makefile.devel (GNULIB_CORE): explicitly request already present errno (gnulib-imported): request strerror for syscalls * modules/syscalls/configure.in: call gl_HEADER_ERRNO_H instead of checking for ; call gl_FUNC_STRERROR instead of checking for strerror * modules/syscalls/calls.c: include unconditionally (STRERROR): always define (errno.h & strerror ensured by gnulib) * modules/syscalls/gllib/errno.in.h, modules/syscalls/glm4/errno_h.m4: remove (already present in src/) * modules/syscalls/gllib/intprops.h, modules/syscalls/gllib/strerror.c: * modules/syscalls/glm4/strerror.m4: add 2010-09-28 Sam Steingold * configure.in: simplify makemake generation, substitute SHELL * makemake.in: use @SHELL@ * Makefile.devel ($(MAKEMAKE_TMP)): substitute @SHELL@ Suggested by Ralf Wildenhues 2010-09-28 Sam Steingold * stream.d (resize_screen): call redisplay() 2010-09-27 Sam Steingold rely on gnulib for setenv portability * lispbibl.d (clisp_setenv): remove * misc.d (push_envar): return no values (GETENV): remove dead code (cat_env_var, setenv_via_environ, clisp_setenv): remove (SETENV): use setenv and unsetenv instead of clisp_setenv * spvw_language.d (init_language): ditto * Makefile.devel (GNULIB_CORE): add setenv & unsetenv * gllib/malloca.c, gllib/malloca.h, gllib/malloca.valgrind: * gllib/setenv.c, gllib/stdlib.in.h, gllib/unsetenv.c: * glm4/eealloc.m4, glm4/environ.m4, glm4/malloca.m4: * glm4/setenv.m4, glm4/stdlib_h.m4: add 2010-09-27 Sam Steingold * Makefile.devel (GNULIB_CORE): add sys_wait * configure.in: call gl_SYS_WAIT_H * pathname.d (EXECUTE): assume that WEXITSTATUS et al are present * gllib/sys_wait.in.h, glm4/sys_wait_h.m4: add 2010-09-27 Sam Steingold SIGWINCH updates the SCREEN's idea of window size * lispbibl.d (resize_screen) [SCREEN]: declare * spvw_sigwinch.d (update_linelength) [SCREEN]: call resize_screen() * stream.d (resize_screen) [SCREEN]: implement Reported by 2010-09-21 Vladimir Tzankov * pathname.d (unblock_all_signals): unblocks all blocked signals. used in child processes to clear parent's signal mask (EXT::LAUNCH, EXT:EXECUTE): use it 2010-09-21 Sam Steingold * modules/syscalls/calls.c (POSIX::CHROOT): add * modules/syscalls/posix.lisp (chroot) [unix]: export * modules/syscalls/configure.in: check for chroot 2010-09-20 Sam Steingold * init.lisp (load): if filename is a non-file stream, do not call TRUENAME on it 2010-09-17 Sam Steingold * m4/proto.m4 (CL_PROTO): remove $ac_t (obsolete for 10 years!) 2010-09-17 Sam Steingold * makemake.in (LIBS): add LIBSOCKET after GLLIB_A so that gethostname is found in the right place on woe32 (SUBDIRS): depend on config.status 2010-09-17 Vladimir Tzankov * modules/syscalls/calls.c (nftw_fn): do not call lisp code while current thread is marked to be in blocking system call 2010-09-15 Sam Steingold * modules/rawsock/rawsock.c (rawsock_error): use ecode instead of errno which can be reset by strerror 2010-09-15 Sam Steingold * .gdbinit (run_mod_test): accept "linkset" argument 2010-09-15 Sam Steingold * utils/modprep.lisp (checker): remove obsolete reverse * lispbibl.d (c_lisp_map_t): remove obsolete use_default_function_p * misc.d (map_lisp_to_c, map_c_to_lisp): do not use it * modules/syscalls/calls.c: update DEFCHECKER invocations 2010-09-15 Sam Steingold * win32.d (gethostname): #undef after including and before including winsock headers, as per 2010-09-15 Sam Steingold * utils/gen-uninames: remove, superseded by src/gllib/uniname/gen-uninames.lisp 2010-09-15 Sam Steingold update gnulib * modules/regexp/gllib/regex.h, modules/regexp/glm4/regex.m4: * gllib/langinfo.in.h, gllib/nl_langinfo.c, gllib/string.in.h: * gllib/wctype.in.h, gllib/uniwidth/width.c, glm4/langinfo_h.m4: * glm4/lib-ld.m4, glm4/memchr.m4, glm4/progtest.m4: * glm4/sockets.m4, glm4/wctype_h.m4: update * glm4/socketlib.m4: add 2010-09-15 Sam Steingold * makemake.in (XCC_CREATESHARED): use soname & output_objdir separately because of cygwin 2010-09-14 Sam Steingold * init.lisp (load): return the truename of the loaded file 2010-09-14 Sam Steingold interface to the POSIX function nftw() * modules/syscalls/calls.c (FILE-TREE-WALK): add * modules/syscalls/posix.lisp (file-tree-walk) [unix]: export * modules/syscalls/configure.in: check for nftw and ftw.h 2010-09-14 Sam Steingold * utils/modprep.lisp (parse-signature): accept :SECLASS and pass it to MAKE-SIGNATURE (defun-p): pass SEC to PARSE-SIGNATURE instead of ignoring it 2010-09-13 Sam Steingold bundle ASDF2 as a module * Makefile.devel (update-asdf): new .PHONY target (pre-release): depend on it * modules/asdf: add (based on asdf 2.008) * makemake.in, unix/INSTALL: mention asdf in the docs 2010-09-14 Sam Steingold * modules/clx/mit-clx/Makefile (clisp-module): depend on link.sh which is required by clisp-link.sh * modules/clx/mit-clx/link.sh (NEW_MODULES): add "clx" (NEW_FILES): one loop instead of two 2010-09-14 Sam Steingold * clisp-link.in: support module which have no C component: build dll only if NEW_LIBS is non-empty 2010-09-02 Sam Steingold * compiler.lisp (ignore-check): warn about assigned but never read vars 2010-09-01 Sam Steingold use gnulib sockets.m4 and socklen.m4 instead of the clisp ones * Makefile.devel (GNULIB_CORE): add socklen, sockets, close-hook * modules/rawsock/rawsock.c, stream.d, socket.d, win32.d: use socklen_t instead of CLISP_SOCKLEN_T * configure.in: use gl_SOCKETS instead of CL_SOCKET and gl_TYPE_SOCKLEN_T instead of CL_SOCKLEN_T * makemake.in: use LIBSOCKET instead of assuming everything is in LIBS 2010-09-01 Sam Steingold use gnulib/host-cpu-c-abi * Makefile.devel (GNULIB_CORE): add host-cpu-c-abi * configure.in: use gl_HOST_CPU_C_ABI instead of CL_CANONICAL_HOST_CPU * makemake.in (host_cpu_c_abi): replaces host_cpu_abi * m4/general.m4 (CL_CACHE_EGREP_CPP, CL_SET_CPU_ABI) (CL_CANONICAL_HOST_CPU): remove (superseded by gnulib/host-cpu-c-abi) 2010-09-01 Sam Steingold update gnulib * modules/regexp/gllib/malloc.c, modules/regexp/gllib/stdlib.in.h: * modules/regexp/gllib/unistd.in.h, modules/regexp/glm4/btowc.m4: * modules/regexp/glm4/codeset.m4, modules/regexp/glm4/gnulib-comp.m4: * modules/regexp/glm4/malloc.m4, modules/regexp/glm4/mbrtowc.m4: * modules/regexp/glm4/ssize_t.m4, modules/regexp/glm4/stdlib_h.m4: * modules/regexp/glm4/wchar_t.m4, modules/regexp/glm4/wcrtomb.m4: * modules/syscalls/gllib/unistd.in.h, modules/syscalls/glm4/mbrlen.m4: * modules/syscalls/glm4/wchar_t.m4: * gllib/string.in.h, gllib/sys_time.in.h, gllib/unistd.in.h: * glm4/codeset.m4, glm4/fcntl-o.m4, glm4/gettext.m4: * glm4/iconv.m4, glm4/include_next.m4, glm4/intdiv0.m4: * glm4/intl.m4, glm4/intlmacosx.m4, glm4/intmax.m4: * glm4/inttypes-pri.m4, glm4/inttypes_h.m4, glm4/lcmessage.m4: * glm4/lib-link.m4, glm4/lock.m4, glm4/mbrtowc.m4: * glm4/mbsrtowcs.m4, glm4/printf-posix.m4, glm4/size_max.m4: * glm4/stdbool.m4, glm4/stdint_h.m4, glm4/threadlib.m4: * glm4/visibility.m4, glm4/wchar_t.m4, glm4/wint_t.m4: update * modules/syscalls/glm4/socklen.m4: add 2010-08-31 Sam Steingold * init.lisp (open-for-load): use MUFFLE-CERRORS to ignore encoding errors in DIRECTORY to avoid the DOS attack of CLISP not starting when HOME contains a file incompatible with *PATHNAME-ENCODING*. This finishes the work started on 2008-07-16. 2010-08-31 Sam Steingold * compiler.lisp (c-EVAL-WHEN): use AND instead of (IF ... ... NIL) 2010-08-18 Sam Steingold * defs1.lisp (*module-provider-functions*): add (simple-require): extract from REQUIRE (require): use the above, now one can hook asdf into clisp 2010-08-18 Sam Steingold * clisp.spec: remove obsolete file, it has not been used for many years, most linux distributions now offer clisp themselves 2010-08-17 Sam Steingold * clisp-link.in (prepare_dynamic_module): better comment placement in reqfile; do not call set_dynamic_module_location; append the names of the new files to DYNDIR_FILES (add, install): call set_dynamic_module_location outside of the loop (install): handle DESTDIR correctly, install DYNDIR_FILES there * makemake.in (install-modules) [with_dynamic_modules]: new target, allows "a la carte" module installation (install-bin) [with_dynamic_modules]: depend on install-modules 2010-08-16 Sam Steingold fix 2010-07-09 ${DESTDIR} patch which broke "make install DESTDIR=...": only respect DESTDIR in "install", not in "add" mode * clisp-link.in (try_set_LIBDIR): extract from ... (set_dynamic_module_location): use try_set_LIBDIR; accept DESTDIR as an argument (prepare_dynamic_module): accept DESTDIR as an argument (add): pass "" as the DESTDIR to prepare_dynamic_module (install): pass DESTDIR as DESTDIR to prepare_dynamic_module 2010-08-16 Sam Steingold * clisp-link.in: revert the 2010-07-09 ${DESTDIR} patch because it breaks "make install DESTDIR=..." 2010-08-13 Sam Steingold * type.lisp (typep-number-test, c-typep-number): reuse error string * init.lisp: use reader (#1#) instead of let for the list of exported MOP symbols 2010-08-09 Sam Steingold * condition.lisp (clos-style-warning, clos-novice-warning) (class-obsolescence-warning): add (gf-already-called-warning, gf-replacing-method-warning): inherit from CLOS-STYLE-WARNING, not CLOS-WARNING * init.lisp, clos-package.lisp (clos-style-warning) (clos-novice-warning, class-obsolescence-warning): export * clos-class3.lisp (defclass): the novice warning is now of type CLOS-NOVICE-WARNING; drop the weird non-standard :DEFAULT-INITARGS cleanup and warning (make-instances-obsolete--nonrecursive): obsolescence warnings are now of type CLASS-OBSOLESCENCE-WARNING * clos-genfun2b.lisp (std-add-method): do not use WARN-IF-GF-ALREADY-CALLED, mention the method in the warnings message (std-remove-method): do not use GF-ALREADY-CALLED-WARNING, one warning instead of two (gf-already-called-warning, warn-if-gf-already-called): remove * clos-genfun3.lisp (ensure-generic-function-using-class-): do not call WARN-IF-GF-ALREADY-CALLED 2010-08-09 Sam Steingold * compiler.lisp (c-DEFUN): when redefining a functions with the same signature, issue a STYLE-WARNING, not a WARNING 2010-08-09 Sam Steingold * compiler.lisp (c-source-location): fix the messages, messed-up by the 2009-10-28 patch 2010-08-06 Sam Steingold fix bug#3040648: documentation strings broken for structs * clos-class3.lisp (shared-initialize-): do not ignore the documentation argument, set the documentation slot instead (define-structure-class): accept documentation (ABI change) * constobj.d (version): bump because of that! * defstruct.lisp (defstruct): pass docstring to define-structure-class * documentation.lisp ((setf documentation)@class&structure): go through (setf documentation), not sys::%set-documentation 2010-08-06 Arseny Slobodyuk * makemake.in (cygwin_finish): use sophisticated grep string to make cygwin dependence check more reliable. 2010-08-05 Sam Steingold * spvw.d (print_banner): flush *standard-output* 2010-08-05 Sam Steingold * genclisph.d (check_typecodes) [TYPECODES]: check that the type tests are correct (normally disabled) 2010-08-05 Arseny Slobodyuk Fix for a bug#3039298 introduced by 2010-04-13 patch: short (DOS) filenames were not handled properly. * w32shell.c (real_path): care of the zero byte at the end of filename. 2010-08-04 Sam Steingold * array.d (elt_reverse): use SIMPLE_REVERSE for strings too 2010-08-02 Bruno Haible * realelem.d (ffloat_uint32_equal, dfloat_uint32_equal): New functions. 2010-08-02 Sam Steingold * predtype.d (elt_compare_t): add a typedef 2010-08-01 Bruno Haible * realelem.d (ffloat_dfloat_equal) [FAST_FLOAT&FAST_DOUBLE]: Optimize. 2010-08-01 Bruno Haible New functions for comparing an ffloat or dfloat with a number. * ffloat.d (ffloat_decode): New macro, extracted from FF_decode. (FF_decode): Use it. * dfloat.d (dfloat_decode): New macro, extracted from DF_decode. (DF_decode): Use it. (dfloat_decode2): New macro, extracted from DF_decode2. (DF_decode2): Use it. * realelem.d (ffloat_R_equal, dfloat_R_equal, ffloat_dfloat_equal): New functions. * compelem.d (ffloat_N_equal, dfloat_N_equal): New functions. 2010-08-01 Bruno Haible * lispbibl.d (dfloat, dfloatjanus): Make definition in clisp.h consistent with the one in lispbibl.d. 2010-08-01 Bruno Haible * aridecl.d (FF_exp_low, FF_exp_mid, FF_exp_high, DF_exp_low) (DF_exp_mid, DF_exp_high): Hardcode values from IEEE 754. * flo_konv.d (c_float_to_FF, FF_to_c_float, c_double_to_DF) (DF_to_c_double): Simplify accordingly. 2010-07-29 Sam Steingold * foreign.d (convert_to_foreign): minor code simplification * foreign1.lisp (convert-from-foreign): fix a typo (convert-to-foreign): inline float conversion 2010-07-28 Sam Steingold * foreign.d (convert_to_foreign): when fvd is a FLOAT type and obj is not of the right type, call coerce_float so that one can use any REAL to initialize a FLOAT (helps GSLL a LOT!) 2010-07-27 Sam Steingold * makemake.in (manual_print): move `if' outside of the `for' loop ($IMPNOTES_FILES, $DOC, $TOP_DOC): use link_dep 2010-07-23 Sam Steingold * makemake.in (LIB_TYPE): remove obsolete unused code 2010-07-21 Sam Steingold * m4/general.m4 (CL_CANONICAL_HOST_CPU): sync with ffcall to use CL_SET_CPU_ABI, CL_CACHE_EGREP_CPP, and substitute host_cpu_abi * makemake.in (cpu): use @host_cpu_abi@ 2010-07-20 Sam Steingold * stream.d (IS_EINVAL_EXTRA) [*bsd]: when ENOTSUP is not defined, use EOPNOTSUPP (e.g., on UNIX_OPENBSD) 2010-07-16 Sam Steingold * version.sh: 4.49+ (2010-07-17) 2010-07-13 Sam Steingold * makemake.in (cpu) [mips]: by default gcc runs in 32-bit mode, so use the same heuristic as sparc: when "uname -m" is mips64, set cpu to mips64 only if `gcc -print-multi-os-directory` ends in 64 2010-07-12 Sam Steingold * modules/libsvm/libsvm.lisp (save-problem): use WRITE instead of FORMAT to avoid creating intermediate LONG-FLOATs 2010-07-12 Sam Steingold * m4/ffcall.m4 (CL_FFCALL): use `test' instead of `[]' Reported by Arseny Slobodyuk 2010-07-09 Vladimir Tzankov * stream.d (QueryInformationFile_t) [WIN32]: fix calling convention. NT API is uses __stdcall not __cdecl (handle_pathname): pass correct buffer size to NtQueryInformationFile 2010-07-09 Aleksej Saushev * clisp-link.in: use ${DESTDIR} to support staged module installation 2010-07-09 Sam Steingold * makemake.in (XCC_PICFLAG, XCC_CREATESHARED): set using libtool, like we already do with EXPORT_DYNAMIC_FLAG_SPEC 2010-07-09 Sam Steingold * modules/pari/pari.lisp (pari-call-out, pari-cgetg): no need for (:LANGUAGE :STDC) since we already use DEFAULT-FOREIGN-LANGUAGE (extract0, extract1, pari-mantissa, pari-set-component) (pari-make-object): use MEMORY-AS instead of WITH-C-VAR/DEREF+CAST for performance (10%) as per Joerg's suggestions 2010-07-08 Sam Steingold * init.lisp (sys::check-redefinition): signal STYLE-WARNING instead of WARNING (warn-of-type): add a predefun 2010-07-08 Vladimir Tzankov * spvw.d (main_actions): move all MT specific stuff to mt_main_actions (mt_main_actions): implement main thread killing here 2010-07-07 Sam Steingold * Makefile.devel (upload-sf): use scp instead of rsync 2010-07-07 Sam Steingold * version.sh: 2.49 (2010-07-07) 2010-07-07 Sam Steingold Fix MSVC support * Makefile.devel (win32msvc/makefile.msvc6, win32msvc/makefile.msvc7): pass --without-dynamic-modules to makemake ($(MAKEMAKE_TMP)): substitute CLISP_DECOLONIZE * makemake.in: check for ./libtool before invoking it 2010-07-07 Vladimir Tzankov * zthread.d (thread_stub): fix double call to set_current_thread. causes problems with USE_CUSTOM_TLS = 2 * spvw.d (main) [USE_CUSTOM_TLS = 2]: remove the thread specific value for signal handling (main) thread 2010-07-05 Yaroslav Kavenchuk * makemake.in (CLISP_LIBDIR): use "$(@CLISP_DECOLONIZE@)" 2010-07-04 Sam Steingold Fix unbuffered output pipe stream initialization (bug#3024887). * stream.d (make_pipe): init output unbuffered streams appropriately 2010-07-03 Bruno Haible Support for MacOS X in 64-bit mode. * m4/mmap.m4 (CL_MMAP): On MacOS X in 64-bit mode, use a base address, so that the test succeeds. * lispbibl.d (HEAPCODES): Define by default on MacOS X in 64-bit mode. * spvw.d (init_memory): Hardcode bounds for mmap on MacOS X in 64-bit mode. * makemake.in (cpu): On MacOS X in 64-bit mode, set it to x86_64. 2010-07-02 Sam Steingold * init.lisp (load): add RETRY restart to SKIP and STOP * condition.lisp (eval-loaded-form): ditto 2010-06-27 Sam Steingold Support libsvm 2.91 * modules/libsvm/configure.in: check for svm_set_print_string_function; drop pkg-config support * modules/libsvm/libsvm.lisp: call svm_set_print_string_function when it is available 2010-06-25 Sam Steingold * spvw.d (quit): FINISH-OUTPUT on standard streams before saying "Bye" 2010-06-24 Sam Steingold * stream.d (IS_EINVAL_EXTRA): treat all *BSD flavors like DARWIN 2010-06-24 Sam Steingold * makemake.in (anymodule): use CLISP_LIBDIR instead of HEREP because it is decolonized to prevent "multiple target patterns" 2010-06-24 Sam Steingold fix bug#3020933: (SETF STREAM-EXTERNAL-FORMAT) fails on TWO-WAY-STREAM * stream.d (SET-STREAM-EXTERNAL-FORMAT): handle TWO-WAY-STREAM and ECHO-STREAM together with TWO-WAY-SOCKET; use stream_reset_eltype to reset pseudofunctions in case line terminator changed 2010-06-24 Sam Steingold * m4/termcap.m4 (CL_TERMCAP): fix a $LIBTERMCAP test Reported by Yaroslav Kavenchuk 2010-06-24 Yaroslav Kavenchuk * m4/clisp.m4 (CL_DECOLONIZE): fix a typo in the mingw regexp 2010-06-18 Barry Fishman Sam Steingold * clhs.lisp (*browsers*): remove firefox-window & firefox-tab, add chromium, conkeror, opera; use emacsclient for emacs * cfgunix.lisp (*browser*): recommend firefox 2010-06-18 Sam Steingold * modules/i18n/gettext.c (get_locale_info) [WIN32_NATIVE]: accept errorp to avoid errors when asked for the full list by (I18N:LANGUAGE-INFORMATION) (thousands_sep_to_STACK, locale_string_to_STACK) (locale_int_to_STACK, locale_bool_to_STACK): pass 1 to get_locale_info() (get_lang_info, res_to_obj): merge (I18N:LANGUAGE-INFORMATION): update 2010-06-18 Sam Steingold fix the 2010-04-15 patch: rl_deprep_term_function is not always present * spvw.d (fini_lowest_level): call rl_deprep_term_function only if it has been defined in ; include it then * m4/readline.m4 (CL_READLINE): check for rl_deprep_term_function declaration Reported by Yaroslav Kavenchuk 2010-06-18 Sam Steingold * spvw.d (init_memory) [DEBUG_SPVW]: fflush(stderr) so that debug output comes before the first lisp output 2010-06-17 Sam Steingold * modules/syscalls/calls.c (string_version_compare): call strverscmp and clear the STACK (OS:VERSION-COMPARE, OS:VERSION<, OS:VERSION<=, OS:VERSION>) (OS:VERSION>=): use it * modules/syscalls/posix.lisp (OS:VERSION<, OS:VERSION<=) (OS:VERSION>, OS:VERSION>=, OS:VERSION-COMPARE): export * modules/syscalls/configure.in: call gl_FUNC_STRVERSCMP * Makefile.devel (gnulib-imported): import strverscmp into syscalls 2010-06-17 Sam Steingold * stream.d (IS_EINVAL, IS_EINVAL_EXTRA): extracted from finish_tty_output and force_tty_output (finish_tty_output, force_tty_output, clear_tty_output) (listen_handle): use IS_EINVAL Reported by José H. Espinosa 2010-06-16 Sam Steingold * makemake.in (check-script): fix "make check | tee": redirect output under nohup because nohup only creates nohup.out if there is no redirection 2010-06-16 Sam Steingold * Makefile.devel (LIBTOOL_VERSION): bump to 2.2.8 (GNULIB_MODULES): remove obsolete modules memmove & memcmp (build-aux-update): also get ltoptions ltsugar ltversion lt~obsolete * configure.in: add AC_CONFIG_MACRO_DIR([m4]) for libtoolize * modules/syscalls/glm4/sockpfaf.m4, build-aux/config.sub: update 2010-06-16 Sam Steingold * version.sh: 2.48++ (2010-06-16) 2010-06-16 Sam Steingold * makemake.in (distrib): hln merges pathnames, which means that if the source pathname is absolute, the destination must be absolute as well 2010-06-15 Sam Steingold Try to flush buffers even if CLOSE was called with :ABORT T. this partially reverts patch 2010-02-25 and fixes bug#3014919 * stream.d (handle_close_errors, MAYBE_IGNORE_ERRORS): add (close_str_in, close_buff_in): do not accept unused abort arg (builtin_stream_close): do not pass abort to them (close_buff_out, close_generic, close_ochannel, close_buffered): use MAYBE_IGNORE_ERRORS around calls which may signal errors (oconv_unshift_output_buffered): accept abort arg * constobj.d (handler_for_error): add * lispbibl.d (clisp_thread_t) [MULTITHREAD]: add _running_handle_close_errors (running_handle_close_errors) [MULTITHREAD]: define * makemake.in (check-script): test for bug#3014919 2010-06-15 Sam Steingold * pathname.d (handle_directory_encoding_error): use unwind_upto instead of a home-brewed concoction 2010-06-15 Sam Steingold * spvw_debug.d (venv_out) [DEBUG_SPVW]: add 2010-06-13 Sam Steingold * stream.d (BUILT-IN-STREAM-ELEMENT-TYPE): return NIL for an empty CONCATENATED-STREAM (bug#3014921) 2010-06-10 Sam Steingold * modules/syscalls/calls.c (POSIX:LOADAVG): fix a GC-safety bug; use round() for integer returns 2010-06-10 Sam Steingold * io.d (STRUCTURE-READER): fix g++ compilation and a GC-safety bug 2010-06-10 Sam Steingold make OS:BOGOMIPS work even when clisp is compiled with -O * modules/syscalls/bogomips.c: extract from calls.c * modules/syscalls/calls.c (BOGOMIPS): call extern bogomips() * modules/syscalls/Makefile.in (bogomips.o): compile without $(CPPFLAGS) and $(CFLAGS) to avoid all optimizations (GENERATED): add bogomips.o * modules/syscalls/configure.in: do not check for clock, it is always present on all platforms * modules/syscalls/link.sh.in (NEW_FILES): add bogomips.o 2010-06-09 Sam Steingold update gnulib * modules/regexp/gllib/regex_internal.c: * modules/regexp/gllib/regex_internal.h: * modules/syscalls/gllib/time.in.h: * modules/syscalls/glm4/time_h.m4: * build-aux/c++defs.h, build-aux/warn-on-use.h: * glm4/fcntl-o.m4, glm4/gnulib-comp.m4, glm4/iconv.m4: * glm4/langinfo_h.m4, glm4/lib-link.m4, glm4/stddef_h.m4: * glm4/stdint.m4, glm4/wchar_h.m4, glm4/wctype_h.m4: update * glm4/libunistring-base.m4: add * gllib/uniname.in.h: replaces gllib/uniname.h * gllib/unitypes.in.h: replaces gllib/unitypes.h * gllib/uniwidth.in.h: replaces gllib/uniwidth.h * makemake.in (UNICODE_EXTRA): remove these 3 files 2010-06-09 Sam Steingold * makemake.in (bench): use base, not boot, for benchmarking because it includes syscalls with bogomips 2010-06-09 Sam Steingold * makemake.in (MAKE): remove unused and unset variable (GNU_MAKE): fix setting and usage 2010-06-09 Sam Steingold * lisparit.d (make_random_state): fix a warning on 32-bit platforms by conforming with the official rand_r() declaration 2010-06-09 Sam Steingold fix bug#3013406: "make distrib" does not play well with dynamic modules * _distmakefile (CFLAGS): add @@EXPORT_DYNAMIC_FLAG_SPEC@@ * makemake.in (distmakefile): substitute EXPORT_DYNAMIC_FLAG_SPEC (XCC_DLOPENABLE_EXE_FLAG): replace with EXPORT_DYNAMIC_FLAG_SPEC as in libtool.m4 (XCC_LINKER_FLAG_PREFIX): remove (EXPORT_DYNAMIC_FLAG_SPEC): get from libtool 2010-06-04 Sam Steingold * modules/pari/pari.lisp (%read-from-string): use gp_read_str instead of the obsolete readseq; use DEF-CALL-OUT instead of PARI-CALL-OUT to avoid shadowing the CL function (pari-reader): gp_read_str takes care of whitespace (resultant-vector): add (calls vecbezoutres) 2010-06-03 Sam Steingold init the PARI internal data structures properly, enabling nice error messages to the screen * modules/pari/configure.in: do not check for killallfiles, freeall; check for pari_close * modules/pari/cpari.c (clispErrDie): revert to trivial error message (clisp_exception_handler): remove (init_for_clisp): pass INIT_DFTm to pari_init_opts; do not set GP_DATA (done by pari_init_opts) and default_exception_handler (fini_for_clisp): remove * modules/pari/pari.lisp (pari-fini): call pari_close(), also call pari_close() in :FINI 2010-06-03 Sam Steingold * defs1.lisp (require): fix the 2010-05-25 patch: do not lock *SYSTEM-PACKAGE-LIST* if "SYSTEM" is not locked, i.e., CLISP was started with "-d" and thus locking is not desired 2010-06-03 Sam Steingold * modules/pari/pari.lisp (convert-to-pari): use symbols instead of numbers as the typecode argument in pari-cgetg invocations (convert-from-pari-vector): replaces convert-from-pari-VEC and convert-from-pari-COL (convert-from-pari): use it instead of them (convert-to-pari@vector): simplify (convert-from-pari-REAL): treat empty mantissa as 0 (no signed 0 in CLISP) (convert-from-pari-SER): fix (pari-object): remove the spurious "nil" slot (pari-real-qf): fix definition (4 slots, not 3) 2010-06-02 Sam Steingold * modules/pari/pari.lisp (pari-typecode): export names (variable-order): add (call reorder) (euler): remove DEFINE-SYMBOL-MACRO (pari-real-precision): re-add function, setf, and symbol-macro (pari-real-precision-words): add a function on top of a variable (pari-call-out-prec): prec is specified in number of decimals 2010-06-01 Sam Steingold * modules/pari/pari.lisp: use DEFSTRUCT instead of DEFCLASS for CLISP representation of PARI objects for speed and i/o 2010-06-01 Sam Steingold * reploop.lisp (main-loop): exit if (RETURN-FROM MAIN-LOOP) fails * makemake.in (check-script): check that loading a broken file from -x with -repl does not hang CLISP 2010-06-01 Sam Steingold Fix bug#3009966: Problems with wild-inferiors in DIRECTORY :FULL T * pathname.d (directory_search): respect :FULL T on recursive subdirectory search 2010-05-30 Vladimir Tzankov * spvw.d (interrupt_thread): make sure interrupt will not be lost when interrupted thread is waiting on mutex or exemption * zthread.d (EXEMPTION-WAIT): store in thread struct associated mutex (xlock_lock_helper): when handling pending interrupts - lock internal mutex before entering "safe for gc/interrupt" region. 2010-05-28 Sam Steingold * modules/pari/pari.lisp (getstack, gettime) (gisprime, gispseudoprime): fix declarations (make-internal-pari-object): return NIL when PTR is NULL (pari-reader): use MAKE-INTERNAL-PARI-OBJECT (pari-to-lisp@null): return NIL (primpart, primitive-part, maxprime): add declarations (make-initargs): do not upcase SYMBOL-NAME (convert-from-pari-10, convert-from-pari-11): use %COMPONENT (pari-get-integer-data, pari-set-integer-data): define using DEF-CALL-OUT and int_W because the order of words in the data segment of integers depend on whether PARI is build with gmp (low bytes first) or not (high bytes first); see (convert-to-pari@integer): use PARI-SET-INTEGER-DATA (convert-from-pari-1): use PARI-GET-INTEGER-DATA 2010-05-27 Sam Steingold * modules/pari/pari.lisp (pari-mantissa): do not call PARI-LENGTH-RAW, use PARI-LENGTH-BYTE to avoid allocating an extra FOREIGN-VARIABLE (PARIINFO): define (pari-version): also return PARIINFO (legendre-polynomial, tchebychev-polynomial, hilbert-matrix) (pascal-triangle, binomial-coefficient, set-random-seed) (get-random-seed, pari-random): fix definitions (pari-effective-length-raw, pari-mantissa-eff): restore using PARI-LENGTH-BYTE (convert-from-pari-1, convert-from-pari-10): use PARI-MANTISSA-EFF 2010-05-26 Sam Steingold * modules/pari/pari.lisp: update all names to v2 using (pari-pi): remove DEFINE-SYMBOL-MACRO to avoid shadowing a foreign var (pari-sign-raw): fix for 64-bit negatives (convert-to-pari): NIL->NIL (VERYBIGINT, BIGINT): add (get-varno): use BIGINT instead of 256 to check validity (extract-mantissa): extract from CONVERT-TO-PARI (INTEGER & FLOAT) (convert-to-pari@integer&float): use it; use (BITSIZEOF 'ULONG) instead of a literal 32 which fixes bignum & (almost) float conversion 2010-05-26 Arseny Slobodyuk * modules/syscalls/calls.c [WIN32_NATIVE || UNIX_CYGWIN32] (OS::%SET-CLIPBOARD): behave according to setf logic: return the value given. Raise a lisp error on failure. Do not try to use unicode when it is not a unicode build. (OS:CLIPBOARD): The same unicode guarding ifdefs. Expect blocking behaviour of GetClipboardData. 2010-05-25 Sam Steingold * modules/pari/pari.lisp (pari-get-real-prec-raw) (pari-real-precision, pari-get-real-prec-digits): remove (pari-call-out-prec): use (EXT:LONG-FLOAT-DIGITS) instead of (PARI-GET-REAL-PREC-RAW) as the default PREC value 2010-05-25 Sam Steingold * modules/pari/pari.lisp (pari-byte): add (SIGNBITS, SIGNSHIFT, TYPBITS, TYPSHIFT, LGBITS, EXPOBITS) (HIGHEXPOBIT, VALPBITS, HIGHVALPBIT, PRECPBITS, PRECPSHIFT) (VARNBITS, VARNSHIFT, CLONEBIT): define using DEF-C-CONST (pari-sign-byte, pari-type-byte, pari-length-byte) (pari-exponent-byte, pari-valuation-byte, pari-precision-byte) (pari-varno-byte): define using PARI-BYTE (LGEFBITS): remove (gone from PARI) (pari-effective-length-byte, pari-effective-length-raw): remove (pari-mantissa-eff, pari-mant): remove (pari-mantissa, pari-set-component, pari-make-object): fix (use a single WITH-C-VAR, shift using (sizeof 'c-pointer)) (convert-to-pari@integer, convert-to-pari@pari-poly): use PARI-LENGTH-BYTE instead of PARI-EFFECTIVE-LENGTH-BYTE (convert-from-pari-1, convert-from-pari-10): use PARI-MANTISSA instead of PARI-MANTISSA-EFF 2010-05-25 Sam Steingold * foreign1.lisp (DEF-C-CONST): move checking whether we are writing to a C file from here to ... (note-c-const): ... here (c-const-value): when the constant is not defined, VALUE-P is 0, not NIL 2010-05-25 Sam Steingold * defs1.lisp (require): lock *SYSTEM-PACKAGE-LIST* after loading because we might have loaded a system package 2010-05-25 Sam Steingold * foreign1.lisp (maximize-integer-type): add (DEF-C-CONST): use it so that we can accept any integer C type but only create two C functions: for long and ulong 2010-05-25 Sam Steingold * clisp-link.in (install): do not "make clisp-module-distrib" when moduledir==distribdir; useful for updating dynmod in the build directory 2010-05-25 Sam Steingold * modules/pari/cpari.c (clisp_exception_handler): new function; saves errmessage[numerr] in global_err_data (clispErrDie): incorporate global_err_data in the error message (init_for_clisp): set default_exception_handler to clisp_exception_handler 2010-05-25 Sam Steingold * modules/pari/pari.lisp (clispTemp): remove (extract0, extract1, pari-set-component, pari-make-object) (convert-from-pari-10, convert-from-pari-11): use WITH-C-VAR instead of TEMP (pari-mant): extract the common part of PARI-MANTISSA-EFF and PARI-MANTISSA and use WITH-C-VAR instead of TEMP (pari-mantissa-eff, pari-mantissa): use PARI-MANT (collect-mantissa): extract & use (ASH . 32) instead of (* . x100000000) (convert-from-pari-1, convert-from-pari-2): use it 2010-05-24 Sam Steingold * modules/pari/pari.lisp (symmetric-matrix-perfection): fix declaration (MAXVARN): use DEF-C-CONST * modules/pari/cpari.c: include for GP_DATA (init_for_clisp): init GP_DATA for #Z"" i/o 2010-05-24 Sam Steingold * modules/pari/configure.in: do not check for init_opts (LIBS): append "-lm" (required for linking with LIBPARI) * modules/pari/cpari.c (init_for_clisp): do not use init_opts 2010-05-23 Sam Steingold * modules/berkeley-db/bdb.c (txn_status_check): add DEFCHECKER (TXN-CHECK): use it to output stat->st_txnarray->status symbolically * modules/berkeley-db/dbi.lisp (db-txn-active): status may be a keyword 2010-05-21 Sam Steingold * modules/pari/Makefile.in (pari.o): pass -I. first thing to CC so that pari/config.h was included instead of the clisp config.h 2010-05-18 Sam Steingold * modules/postgresql/postgresql.lisp: sync with libpq-fe.h 1.147 (8.4) (PG_COPYRES_ATTRS,PG_COPYRES_TUPLES, PG_COPYRES_EVENTS) (PG_COPYRES_NOTICEHOOKS, PGresAttDesc, PQconninfoParse, PQinitOpenSSL) (PQcopyResult, PQsetResultAttrs, PQresultAlloc, PQsetvalue) (lo_import_with_oid): add * modules/postgresql/configure.in: check for the new functions 2010-05-18 Sam Steingold * modules/berkeley-db/bdb.c: support 4.8 (DB_XIDDATASIZE): when undefined, use DB_GID_SIZE (BDB:DB-CREATE): do not accept :XA (BDB:DBC-DEL): accept :CONSUME (BDB:DBC-PUT): accept :OVERWRITE-DUP * modules/berkeley-db/configure.in: check for the new field names in DB_TXN_ACTIVE * modules/berkeley-db/dbi.lisp (db-txn-active): rename fields: `xid' to `gid' and `xa_status' to `status' use :DB-GID-SIZE instead of :DB-XIDDATASIZE 2010-05-18 Sam Steingold * modules/pari/Makefile.in (ALL_CFLAGS): collect all CFLAGS et al variables here and add -I$(srcddir) for cpari.h (pari.o, cpari.o): use it instead of listing all variables explicitly 2010-05-18 Sam Steingold update gnulib * build-aux/arg-nonnull.h, build-aux/c++defs.h, build-aux/warn-on-use.h: * gllib/langinfo.in.h, gllib/nl_langinfo.c, gllib/stddef.in.h: * glm4/fcntl-o.m4, glm4/langinfo_h.m4, glm4/nl_langinfo.m4: * glm4/stddef_h.m4, glm4/warn-on-use.m4, glm4/wchar_h.m4: * glm4/wctype_h.m4: add * modules/regexp/gllib/Makefile.am, modules/regexp/gllib/btowc.c: * modules/regexp/gllib/gettext.h, modules/regexp/gllib/regcomp.c: * modules/regexp/gllib/stdlib.in.h, modules/regexp/gllib/unistd.in.h: * modules/regexp/glm4/btowc.m4, modules/regexp/glm4/gnulib-common.m4: * modules/regexp/glm4/gnulib-comp.m4, modules/regexp/glm4/mbrtowc.m4: * modules/regexp/glm4/regex.m4, modules/regexp/glm4/stddef_h.m4: * modules/regexp/glm4/stdlib_h.m4, modules/regexp/glm4/unistd_h.m4: * modules/regexp/glm4/wcrtomb.m4, modules/syscalls/gllib/Makefile.am: * modules/syscalls/gllib/sys_socket.in.h: * modules/syscalls/gllib/time.in.h, modules/syscalls/gllib/time_r.c: * modules/syscalls/gllib/unistd.in.h: * modules/syscalls/glm4/gnulib-common.m4: * modules/syscalls/glm4/gnulib-comp.m4: * modules/syscalls/glm4/stddef_h.m4: * modules/syscalls/glm4/strings_h.m4, modules/syscalls/glm4/strptime.m4: * modules/syscalls/glm4/sys_socket_h.m4: * modules/syscalls/glm4/sys_utsname_h.m4: * modules/syscalls/glm4/time_h.m4, modules/syscalls/glm4/time_r.m4: * modules/syscalls/glm4/unistd_h.m4: * modules/wildcard/glm4/gnulib-common.m4: * modules/wildcard/glm4/gnulib-comp.m4: update 2010-05-18 Sam Steingold * genclisph.d: undef PACKAGE_URL together with the other PACKAGE_* 2010-05-18 Sam Steingold Implement RFE#3001956: *PRINT-CLOSURE* now controls interpreted closure output too * io.d (STRUCTURE-READER): read #S(FUNCTION ...) as an Iclosure (pr_closure): when *PRINT-CLOSURE* is non-NIL, print Iclosure using #S(FUNCTION ...) syntax 2010-05-13 Sam Steingold * pathname.d (direntry_to_string) [!ENABLE_UNICODE]: handle len==-1 2010-05-12 Sam Steingold * modules/syscalls/calls.c (OS::%SET-CLIPBOARD): rename from SET-CLIPBOARD; use L() instead of `` for PRINC-TO-STRING (OS:CLIPBOARD): rename from GET-CLIPBOARD * modules/syscalls/posix.lisp (clipboard): add DEFSETF, export instead of SET-CLIPBOARD & GET-CLIPBOARD 2010-05-12 Arseny Slobodyuk * modules/syscalls/calls.c [WIN32_NATIVE || UNIX_CYGWIN32] (nlines_a, nlines_w, strzcpy12_a, strzcpy12_w, strzcpy21_a) (strzcpy21_w): new static utility functions. (SET-CLIPBOARD, GET-CLIPBOARD): new defuns to manage textual contents of Windows clipboard. * modules/syscalls/posix.lisp [win32 || cygwin]: export SET-CLIPBOARD, GET-CLIPBOARD. 2010-05-09 Vladimir Tzankov * spvw.d (main_actions) [MULTITHREAD]: cleanup stack when main thread terminates 2010-05-07 Arseny Slobodyuk * modules/syscalls/calls.c (USER-INFO): skip entries with uid of -1 when returning a list. These entries appearing in cygwin correspond to user records not synchronized with /etc/passwd. 2010-05-02 Vladimir Tzankov * eval.d (interpret_bytecode_ JMP) [MULTITHREAD]: insert GC safe point in JMP instructions and discard mv_space for ones that invalidate it 2010-04-27 Sam Steingold * modules/syscalls/calls.c (GetSecurityInfoFunc_t) (LookupAccountSidFunc_t, GetLengthSidFunc_t, CopySidFunc_t) (EqualSidFunc_t, ConvertSidToStringSidFunc_t): add typedefs (initialize_sid_apis): use them instead of explicit types 2010-04-27 Arseny Slobodyuk Response to bug#2959335 (a feature request, actually) * modules/syscalls/calls.c [WIN32_NATIVE || UNIX_CYGWIN32] (GET-USER-SID): new DEFUN. Returns security identifier (SID) of current user or of the user thar's name is specified. * modules/syscalls/posix.lisp (GET-USER-SID): exported. 2010-04-27 Arseny Slobodyuk * modules/syscalls/calls.c [WIN32_NATIVE || UNIX_CYGWIN32] (initialize_sid_apis): dynamic loading of SID API moved out of get_owner block and made available on cygwin. (get_owner): fixed potential bugs. Comments, cosmetics. 2010-04-22 Arseny Slobodyuk Finish and fix COM init patch. * win32aux.d (com_initialized): revoke the variable. (init_win32): do not init COM. (done_win32) [!MULTITHREAD]: unconditionally call CoUninitialize. * modules/syscalls/calls.c (BTCoCreateInstance): define static function for cygwin. 2010-04-21 Sam Steingold * makemake.in: use "&&" instead of "if+then" for simplicity 2010-04-20 Sam Steingold * spvw_language.d (init_language_from): accept NULL argument (init_language): simplify logic 2010-04-20 Sam Steingold * stream.d (rd_ch_terminal3): use alloca instead of malloc to allocate the prompt 2010-04-20 Sam Steingold COMPILER-DIAGNOSTICS:USE-HANDLER: COMPILE-FILE must notice the warnings signaled by EVAL-WHEN * compiler.lisp (c-warn): do not increase *WARNING-COUNT* here (c-style-warn): do not increase *STYLE-WARNING-COUNT* & *WARNING-COUNT* * condition.lisp (warn-of-type): increase *WARNING-COUNT* and *STYLE-WARNING-COUNT* here when they are bound * utils/clispload.lsp (*expected-failures*): remove COMPILE-FILE.2 & COMPILE-FILE.2A 2010-04-19 Sam Steingold * stream.d (make_terminal_stream_) [HAVE_TERMINAL3]: disable readline signal handling by setting "rl_catch_signals = 0" 2010-04-19 Arseny Slobodyuk Fix COM library initialization in MT version. * w32shell.c (BTCoCreateInstance): CoCreateInstance with call of CoInitialize if needed. (resolve_shell_shortcut): use it. * spvw.d (delete_thread) [WIN32_NATIVE]: call CoUninitialize on each thread exit. * win32aux.d (done_win32) [MULTITHREAD]: do not call CoUninitialize. * modules/syscalls/calls.c (BTCoCreateInstance) [WIN32_NATIVE]: declare (POSIX::MAKE-SHORTCUT, POSIX::SHORTCUT-INFO) [WIN32_NATIVE]: use BTCoCreateInstance instead of CoCreateInstance. 2010-04-16 Sam Steingold * makemake.in (check-recompile): remove the 2001-06-15 *GENSYM-COUNTER* hack because we no longer have GENSYMs in FLETs 2010-04-16 Sam Steingold * utils/clispload.lsp: use RT:REM-TEST to disable CHAR-INT.2 instead of redefining a function 2010-04-15 Sam Steingold fix bug #2986052: mt/readline: terminal is left raw on crash * spvw.d (fini_lowest_level) [GNU_READLINE]: call rl_deprep_term_function to restore the terminal state (signal_handler_thread): call fini_lowest_level 2010-04-15 Vladimir Tzankov fix bug#2987732: mt: clisp hangs repeating sched_yield() * stream.d (begin_rl_callback, end_rl_callback): define and use instead of begin_callback() and end_callback() in readline callbacks 2010-04-15 Sam Steingold * query.lisp (y-or-n-p, yes-or-no-p): call (FORCE-OUTPUT *QUERY-IO*) after every output to *QUERY-IO* 2010-04-14 Sam Steingold * clhs.lisp: set package/impnotes documentation for package THREADS 2010-04-13 Vladimir Tzankov * spvw.d (fill_terminating_signals_mask): add terminating signals to sigset_t mask (async_signal_mask): unblock terminating signals if the process is exiting due to such signal (signal_wait): ignore signals not set in the mask passed to sigwait() (signal_handler_thread) [UNIX_MACOSX]: do not ignore SIGHUP 2010-04-13 Arseny Slobodyuk Fix for a bug#1481218 with default drive directory: within CLISP default_directory_of() is used to fill missed pathname directory component in pathnames like C:lisp.exe. This functionality now added to real_path as well to support lisp invocation like 'C:\>e:lisp.exe -M e:lispinit.mem'. * w32shell.c (real_path): detect and handle default drive directory references. Optimization: less use of strlen. 2010-04-12 Vladimir Tzankov * spvw_sigterm.d (quit_on_signal_in_progress): move to spvw.d * spvw.d (quit_on_signal_in_progress): define it here (async_signal_mask) [POSIX_THREADS]: do not add terminating signals if process was already signaled with one of them (signal_handler_thread): set proper exit code on terminating signal. print to stderr "Exiting on signal ...". fix erroneous message on terminating signal 2010-04-12 Sam Steingold * spvw_sigterm.d (quit_on_signal_in_progress): always define * spvw.d (signal_handler_thread) [MULTITHREAD]: fix last patch: set quit_on_signal_in_progress when terminating 2010-04-11 Sam Steingold fix bug#2795278: when quitting on signals, do not enter the debugger * lispbibl.d (quit_on_signal_in_progress): declare * error.d (signal_and_debug): quit if quit_on_signal_in_progress * debug.d (break_driver): ditto * spvw_sigterm.d (quit_on_signal_in_progress): make global 2010-04-02 Sam Steingold * pathname.d (SAVEMEM): use nullp(.) instead of eq(NIL,.) * zthread.d (MAKE-MUTEX, MUTEX-LOCK): ditto 2010-03-30 Arseny Slobodyuk Fix for a bug#2813561 with cygwin symlinks: lack of discrimination between cygwin symlinks, used in build process and other Windows shortcuts. * w32shell.c (win_shortcut_hdr): lnk file header (cmp_shortcut_header, is_cygwin_symlink): new static functions (resolve_shell_shortcut): use is_cygwin_symlink 2010-03-29 Sam Steingold * condition.lisp (prompt-for-new-value): terminate the prompt for the new value with (PROMPT-FINISH) instead of ": " to indicate that this is a regular prompt and the value will be evaluated * macros2.lisp (prompt-for-new-value-string): ditto Suggested by Pascal J. Bourguignon 2010-03-26 Sam Steingold * condition.lisp (prompt-for-new-value): EVAL the value entered by the user 2010-03-25 Sam Steingold * modules/libsvm/configure.in: on ubuntu libsvm is managed by pkg-config which seems rather silly because there is no real connection between gnome and libsvm; we must support both pkg-config and non-pkg-config installations 2010-03-24 Sam Steingold * modules/libsvm/libsvm.lisp: remove DEFAULT-FOREIGN-LIBRARY 2010-03-24 Sam Steingold * m4/general.m4 (CL_MODULE_COMMON_CHECKS): require CL_PROG_LN_S * modules/berkeley-db/Makefile.in, modules/clx/new-clx/Makefile.in: * modules/dbus/Makefile.in, modules/dirkey/Makefile.in: * modules/fastcgi/Makefile.in, modules/gdbm/Makefile.in: * modules/gtk2/Makefile.in, modules/i18n/Makefile.in: * modules/libsvm/Makefile.in, modules/oracle/Makefile.in: * modules/pari/Makefile.in, modules/pcre/Makefile.in: * modules/postgresql/Makefile.in, modules/rawsock/Makefile.in: * modules/readline/Makefile.in, modules/regexp/Makefile.in: * modules/syscalls/Makefile.in, modules/wildcard/Makefile.in: * modules/zlib/Makefile.in: use @LN@ and @LN_S@ 2010-03-24 Sam Steingold * modules/libsvm/Makefile.in, modules/libsvm/link.sh: restore TO_PRELOAD, necessary because of DEF-CALL-IN in libsvm.lisp 2010-03-22 Sam Steingold * modules/libsvm: remove the upstream sources; install locally and pass --with-libsvm-prefix to the top-level configure instead * Makefile.devel (MODULES): add libsvm 2010-03-22 Sam Steingold * modules/libsvm: upgrade to upstream 2.90 2010-03-19 Sam Steingold * modules/gdbm/gdbm.c (GDBM-VERSION): cache return value 2010-03-19 Sam Steingold * utils/modprep.lisp (print-tables-1): when OBJDEF-INIT is STRINGIFY(FOO), print it as "\"~S\"" to use the quoted CPP definition 2010-03-19 Sam Steingold upgrade to pcre 8.01 * modules/pcre/cpcre.c (fullinfo_bool): add (PCRE-CONFIG): also accept :MATCH-LIMIT-RECURSION :BSR (PCRE-COMPILE): also accept :DFA-SHORTEST :DFA-RESTART :FIRSTLINE :DUPNAMES :NEWLINE-CR :NEWLINE-LF :NEWLINE-CRLF :NEWLINE-ANY :NEWLINE-ANYCRLF :BSR-ANYCRLF :BSR-UNICODE :JAVASCRIPT-COMPAT :NO-START-OPTIMIZE :NO-START-OPTIMISE :PARTIAL-HARD :NOTEMPTY-ATSTART (PATTERN-INFO): also accept :OKPARTIAL :JCHANGED :HASCRORLF :MINLENGTH (PCRE-VERSION): also return PCRE_DATE 2010-03-19 Sam Steingold * genclisph.d (print_file) [!HAVE_STDBOOL_H]: enable (see lispbibl.d) Reported by Raymond Toy 2010-03-18 Sam Steingold * Makefile.devel (GET_PREFIX): add ($(MAKEFILE_IN)): use it (gnulib-imported): remove macro-prefix from _GL_UNUSED which is defined in config.h using gnulib-common.m4:gl_COMMON_BODY and thus is not amenable to the macro-prefix strategy 2010-03-18 Sam Steingold * stream.d (handle_direction_compatible) [WIN32_NATIVE]: fix bug#2805778 ("0>/dev/null") by using GetNumberOfConsoleInputEvents for FILE_TYPE_CHAR and PeekNamedPipe for FILE_TYPE_PIPE 2010-03-17 Sam Steingold * makemake.in, modules/regexp/Makefile.in: * modules/syscalls/Makefile.in, modules/wildcard/Makefile.in (gllib): do not pass build_aux= to make in subdir (revert the 2010-03-17 patch because it does not look like gnulib will ever use $(build_aux)) 2010-03-17 Sam Steingold * makemake.in (MODULE_AM): avoid not portable "fgrep -q" Reported by Christian Walther 2010-03-17 Sam Steingold * m4/clisp.m4 (CL_DECOLONIZE): add (CL_CLISP): use it instead of inline code * configure.in: call CL_DECOLONIZE * makemake.in: use CLISP_DECOLONIZE on CLISP_LIBDIR & XCPPFLAGS 2010-03-17 Sam Steingold * stream.d (find_open_file): add a cast to fix g++ compilation 2010-03-17 Sam Steingold update gnulib * modules/regexp/gllib/stdlib.in.h, modules/regexp/gllib/unistd.in.h: * modules/regexp/glm4/stdlib_h.m4, modules/regexp/glm4/unistd_h.m4: * modules/syscalls/gllib/sys_socket.in.h: * modules/syscalls/gllib/time.in.h, modules/syscalls/gllib/unistd.in.h: * modules/syscalls/glm4/sys_socket_h.m4: * modules/syscalls/glm4/sys_utsname_h.m4: * modules/syscalls/glm4/time_h.m4, modules/syscalls/glm4/unistd_h.m4: * build-aux/warn-on-use.h, gllib/langinfo.in.h, gllib/string.in.h: * gllib/sys_time.in.h, gllib/unistd.in.h, gllib/wchar.in.h: * gllib/wctype.in.h, glm4/gnulib-comp.m4, glm4/langinfo_h.m4: * glm4/string_h.m4, glm4/sys_time_h.m4, glm4/unistd_h.m4: update * build-aux/c++defs.h: add * glm4/wchar_h.m4: rename from glm4/wchar.m4 * glm4/wctype_h.m4: rename from glm4/wctype.m4 2010-03-17 Sam Steingold * Makefile.devel ($(MAKEFILE_IN)): transform just generated Makefile.in to add gnulib prefix substitution to rules generating headers which come from build-aux 2010-03-16 Sam Steingold * m4/clisp.m4 (CL_CLISP): when running on woe32, we must ensure that cl_cv_clisp_libdir contains no colons because this will confuse make ("multiple target patterns") when $(CLISP_LIBDIR) appears in the list of dependencies * makemake.in (gllib): ditto 2010-03-16 Sam Steingold * makemake.in, modules/regexp/Makefile.in: * modules/syscalls/Makefile.in, modules/wildcard/Makefile.in (gllib): pass build_aux= to make in subdir 2010-03-04 Sam Steingold * spvw.d (INVALID_ARG): also "return 1" (parse_options): simplified based on the above 2010-03-03 Vladimir Tzankov * spvw.d (realloc_threads_symvalues): expand all threads symvalues tables and initialize new cells to SYMVALUE_EMPTY * spvw_global.d (add_per_thread_special_var): use it * spvw_memfile.d (loadmem_from_handle): ditto 2010-03-02 Sam Steingold * pathname.d (CD): do not merge *DEFAULT-PATHNAME-DEFAULTS* because the merging breaks the advertised behavior: (CD) is actually equivalent to (CD *DEFAULT-PATHNAME-DEFAULTS*), and does not just return the current directory as advertised 2010-02-28 Vladimir Tzankov * zthread.d (xlock_unlock_helper): signal lock's condition variable before unlocking internal mutex. fixes possible deadlock if signal is missed 2010-02-27 Vladimir Tzankov * spvw_garcol.d (gar_col_normal) [MULTITHREAD]: mark active threads before weak pointers (SPLIT_REF_LISTS): remove 'condition' argument 2010-02-27 Vladimir Tzankov * zthread.d (xlock_lock_helper): do not try to handle pending interrupts for signal processing thread (no clisp_thread_t for it) (win32_xcondition_wait): cleanup 2010-02-26 Sam Steingold * configure.in: call gl_FCNTL_O_FLAGS, needed by the new localcharset.c 2010-02-26 Sam Steingold Handle headers placed in build-aux by gnulib * m4/clisp.m4 (CL_CLISP): add AC_SUBST(CLISP_LIBDIR) * Makefile.devel ($(MAKEFILE_IN)): manually substitute CLISP_LIBDIR for $(top_srcdir)/src/build-aux et al * modules/regexp/Makefile.in, modules/syscalls/Makefile.in: * modules/wildcard/Makefile.in: use CLISP_LIBDIR when passing CFLAGS to make in gllib * makemake.in ($(SUBDIRS)): pass CLISP_LIBDIR to MAKE; depend on build-aux (BUILD_AUX): add build-aux headers, found in Makefile.am's 2010-02-25 Sam Steingold Ensure that (CLOSE s :ABORT T) never signals. * stream.d (ChannelStream_fini): accept abort argument and do not signal errors when it is true (close_ichannel): pass abort to ChannelStream_fini (close_ochannel): do not call oconv_unshift_output_unbuffered() if abort is true; pass abort to ChannelStream_fini (close_buffered): do not call oconv_unshift_output_buffered() and buffered_flush_everything(); pass abort to ChannelStream_fini (SET-STREAM-EXTERNAL-FORMAT): pass abort=0 to ChannelStream_fini (builtin_stream_close): do not call harden_elastic_newline if abort is true 2010-02-25 Sam Steingold * stream.d (stream_lend_handle): support sockets 2010-02-23 Sam Steingold * Makefile.devel (GNULIB_MODULES): add nl_langinfo, which is now required by regexp, so that i18n have it always available * modules/i18n/configure.in: call gl_FUNC_NL_LANGINFO * modules/i18n/gettext.c [!WIN32_NATIVE]: assume that nl_langinfo is always present 2010-02-23 Sam Steingold update gnulib * modules/regexp/gllib/Makefile.am, modules/regexp/gllib/regcomp.c: * modules/regexp/gllib/regex_internal.c: * modules/regexp/gllib/regex_internal.h, modules/regexp/gllib/regexec.c: * modules/regexp/gllib/stdlib.in.h, modules/regexp/gllib/unistd.in.h: * modules/regexp/glm4/btowc.m4, modules/regexp/glm4/regex.m4: * modules/regexp/glm4/stdlib_h.m4, modules/regexp/glm4/unistd_h.m4: * modules/syscalls/gllib/Makefile.am: * modules/syscalls/gllib/mktime.c, modules/syscalls/gllib/sockets.c: * modules/syscalls/gllib/strftime.c, modules/syscalls/gllib/strftime.h: * modules/syscalls/gllib/strings.in.h: * modules/syscalls/gllib/sys_socket.in.h: * modules/syscalls/gllib/sys_utsname.in.h: * modules/syscalls/gllib/time.in.h, modules/syscalls/gllib/unistd.in.h: * modules/syscalls/gllib/w32sock.h, modules/syscalls/glm4/strings_h.m4: * modules/syscalls/glm4/sys_socket_h.m4: * modules/syscalls/glm4/sys_utsname_h.m4: * modules/syscalls/glm4/unistd_h.m4: * modules/wildcard/gllib/Makefile.am: * modules/wildcard/gllib/fnmatch.in.h: * modules/wildcard/gllib/fnmatch_loop.c: * gllib/Makefile.am: * gllib/gettimeofday.c, gllib/localcharset.c, gllib/memcmp.c: * gllib/string.in.h, gllib/sys_time.in.h, gllib/unistd.in.h: * gllib/wchar.in.h, gllib/wctype.in.h, glm4/extensions.m4: * glm4/gettimeofday.m4, glm4/iconv.m4, glm4/localcharset.m4: * glm4/string_h.m4, glm4/sys_time_h.m4, glm4/unistd_h.m4: * glm4/wchar.m4: update * modules/regexp/glm4/warn-on-use.m4: * modules/syscalls/gllib/mktime-internal.h: * modules/syscalls/glm4/warn-on-use.m4: * build-aux/arg-nonnull.h, build-aux/warn-on-use.h: * gllib/langinfo.in.h, gllib/nl_langinfo.c: * glm4/fcntl-o.m4, glm4/langinfo_h.m4, glm4/nl_langinfo.m4: * glm4/warn-on-use.m4: add 2010-02-23 Vladimir Tzankov [MULTITHREAD]: fix interrupt safety and deferred interrupt handling * lispbibl.d (WITH_DEFERED_INTERRUPTS): executes body with deferred interrupts (after body finishes deferred interrupts are executed) (WITH_MUTEX_LOCK_HELP_): release lock only if it was really acquired (GC_SAFE_MUTEX_LOCK): set a flag if the lock has been acquired (before handling pending interrupts) (LISP_MUTEX_UNLOCK_HELP_): use WITH_DEFERED_INTERRUPTS (lock_threads, unlock_threads): remove (allthreads_lock): make it global * spvw.d (allthreads_lock): ditto (lock_threads, unlock_threads): remove (create_thread): initialize all per thread value cells as empty (delete_thread): lock allthreads_lock only if needed (tsd_slow_getspecific) [USE_CUSTOM_TLS=2, MACOSX]: return NULL if called from non-lisp thread (libsigsegv creates one) (signal_handler_thread): exit immediately if some thread has failed to be stopped (on terminating signals) * spvw_global.d (add_per_thread_special_var): use WITH_OS_MUTEX_LOCK. do not lock allthreads_lock (value cells are already initialized as empty) (clear_per_thread_symvalues): use WITH_OS_MUTEX_LOCK * spvw_typealloc.d (allocate_mutex): add newly allocated mutex to O(all_mutexes) - prevents memory xmutex_t memory leak in case later all_mutexes lock is not acquired (due to interrupt) (allocate_exemption): ditto * stream.d (get_open_files_lock, release_open_files_lock): remove (add_to_open_streams, remove_from_open_streams, find_open_file): use WITH_OS_MUTEX_LOCK * pathname.d (openp): ditto * record.d (FINALIZE): ditto * package.d (find_package, MAP-ALL-SYMBOLS): ditto * zthread.d (MAKE-THREAD, SYMBOL-VALUE-THREAD, SET-SYMBOL-VALUE-THREAD): ditto (LIST-THREADS): do not lock allthreads_lock, just copy O(all_threads) (MUTEX-OWNER): return second value - how many times the mutex is locked by the owner (for non-recursive mutexes this is at most 1) (allocate_mutex, allocate_exemption): do not add to O(all_mutexes) and O(all_exemption) * threads.lisp (WITH-MUTEX-LOCK): unlock the mutex only if it was really locked (WITH-DEFERRED-INTERRUPTS): fix it. handle nested case and execute interrupts only if allowed 2010-02-19 Vladimir Tzankov * zthread.d (SET-SYMBOL-VALUE-THREAD): fix stack layout on unbound_variable error 2010-02-19 Vladimir Tzankov * zthread.d (THREAD-JOIN): add :TIMEOUT argument (on timeout return values are: NIL; :TIMEOUT) * subr.d, subrkw.d: ditto 2010-02-18 Sam Steingold * package.d (PACKAGE-ITERATE): remove unused variable (symbol_list_lookup, shadowing_delete): move selecting the comparison function (inverted or not) out of the loop 2010-02-17 Sam Steingold * modules/rawsock/rawsock.c: requires (check_socket_protocol): use "-" in NETLINK_*, like in all others * modules/rawsock/configure.in: check for 2010-02-17 Sam Steingold * Makefile.devel (AUTOCONF, AUTOHEADER): remove variables; to run autoconf/automake from a non-standard location one has to prepend it to PATH because aclocal calls autoconf directly 2010-02-17 Sam Steingold * lisparit.d (make_random_state): use rand_r() when it is available because rand() is neither reentrant nor thread-safe * configure.in: check for rand_r() Reported by Tobias C. Rittweiler 2010-02-17 Vladimir Tzankov * zthread.d (thread_symbol_place): remove (SYMBOL-VALUE-THREAD): return (NIL THREAD-ACTIVE-P) if thread is not active. lock threads only when really needed (SET-SYMBOL-VALUE-THREAD): more specific errors. lock threads only when really needed 2010-02-16 Sam Steingold * zthread.d (check_thread, check_mutex, check_exemption) (check_name_arg): fix subr_self usage (it is a Subr, not a symbol) 2010-02-15 Vladimir Tzankov [MULTITHREAD]: make all threads joinable * constsym.d, subr.d, subrkw.d: remove :JOINABLE-P * spvw_typealloc.d (allocate_thread): allocate mutex and exemption used by THREAD-JOIN * zthread.d (thread-cleanup): signal waiters in THREAD-JOIN for thread completion (thread_stub): delegate all cleanup to thread_cleanup (MAKE-THREAD): revert last commit (THREAD-JOIN): all threads are joinable now * spvw.d (main_actions): set main thread return value when it is killed 2010-02-13 Vladimir Tzankov [MULTITHREAD]: add THREAD-JOIN * lispbibl.d (struct Thread): add mutex, exemption, return values and flags to thread record (thread_killedp): predicate whether the thread has exited abnormally * spvw_typealloc.d (allocate_thread): initialize xth_values to unbound * constsym.d, subr.d, subrkw.d: add THREAD-JOIN and :JOINABLE-P to MAKE-THREAD keyword arguments * threads.lisp: export THREAD-JOIN (THROW-TAG): add second optional argument for catch result * zthread.d (MAKE-THREAD): accept :JOINABLE-P and allocate mutex and exemption for signaling thread exit (thread_stub): signal thread join exemption when the thread ends. set thread return values and thread exit status (THREAD-JOIN): implement. wait on exemption while thread return values are available (push_interrupt_arguments): pass :arguments (i.e. thread return values) to thread being killed (THREAD-ACTIVE-P): update condition for inactive thread * io.d (pr_orecord): ditto 2010-02-11 Sam Steingold * condition.lisp (c-warning): do not concat (C-CURRENT-LOCATION) to the FORMAT-STRING because the former may contain "~" Reported by Gabriel Dos Reis 2010-02-05 Sam Steingold * makemake.in (build-aux): when LN_S is "cp", use "cp -r" 2010-02-02 Sam Steingold * makemake.in (full) [with_dynamic_modules]: remove dynmod (install-bin) [with_dynamic_modules]: handle empty dynmod properly (distrib) [with_dynamic_modules]: ditto Reported by Gabriel Dos Reis 2010-01-31 Sam Steingold * lambdalist.lisp (check-item): quote PERMISSIBLE here, update callers (process-required, push3, process-optional, err-no-default) (process-allow-other-keys, process-keywords): new local macros 2010-01-29 Sam Steingold * lambdalist.lisp (dolist, check-exhausted, symbol-or-pair-p) (singleton-symbol-p, err-missing, last-parameter): new local macros 2010-01-28 Sam Steingold better error reporting in lambda list processing * lambdalist.lisp (lambda-list-error): new function, calls ERROR-OF-TYPE EXT:SOURCE-PROGRAM-ERROR (err-misplaced, err-invalid, skip-L, analyze-lambdalist) (analyze-generic-function-lambdalist, analyze-defsetf-lambdalist) (analyze-modify-macro-lambdalist) (analyze-method-combination-lambdalist): errfunc accepts FORM in addition to DETAIL * compiler.lisp (c-analyze-lambdalist): ditto * clos-method2.lisp (decompose-specialized-lambda-list): ditto * clos-genfun2b.lisp (check-gf-lambdalist+argorder): ditto * clos-methcomb2.lisp (define-method-combination): ditto + use SYS::LAMBDA-LIST-ERROR * clos-method1.lisp (initialize-instance-): ditto (program-error-reporter, analyze-method-description): ditto * clos-method3.lisp (method-signature): ditto * defstruct.lisp (ds-make-boa-constructor): ditto * places.lisp (defsetf, define-modify-macro): ditto * clos-genfun3.lisp (analyze-defgeneric-lambdalist): ditto * clos-genfun4.lisp (generic-function-signature): ditto * clos-methcomb2.lisp (check-em-arguments-option) (build-effective-method-function-form): ditto 2010-01-28 Sam Steingold fix bug#2941408: segfault after giving invalid replacement value * error.d (check_symbol_special): do not break out of the loop early 2010-01-28 Sam Steingold * lispbibl.d (roughly_SP) [USE_CUSTOM_TLS >=2]: simplify the CPP logic Reported by Yaroslav Kavenchuk 2010-01-27 Ivan Shvedunov * lispbibl.d (dfloat) [ARM]: do NOT swap hi/lo when __ARM_EABI__ is defined (fixes READ-FLOAT/WRITE-FLOAT on Maemo Fremantle) 2010-01-26 Sam Steingold * pathname.d (EXECUTE): do not resolve links in the file argument because some programs dispatch on argv[0], which could be a symbolic link. E.g., in Maemo Fremantle OS used in Nokia N900 phone, /bin/sh is a symlink to busybox, so RUN-PROGRAM which calls SHELL which calls EXECUTE fails because EXECUTE calls "busybox -c" instead of "/bin/sh -c". Reported by Ivan Shvedunov in 2010-01-06 Sam Steingold upgrade from readline 6.0 to 6.1 * modules/readline/readline.lisp (state-redisplaying): add 2009-12-30 Sam Steingold eliminate yet another static: allocaing_room_pointer * lispbibl.d (converter_malloc_t, convert_to_foreign): accept "void** state" argument * foreign.d (convert_to_foreign): ditto, pass it to converter_malloc (allocaing_room_pointer): remove (allocaing): accept address of allocaing_room_pointer (mallocing, nomalloc): accept and ignore the state argument (SET-FOREIGN-VALUE, WRITE-MEMORY-AS, FOREIGN-ALLOCATE. callback): pass NULL as state to convert_to_foreign (EXEC-ON-STACK, FOREIGN-CALL-OUT): declare and pass allocaing_room_pointer to convert_to_foreign 2009-12-29 Sam Steingold * io.d (token_escape_flag): remove global static variable, which appears to be messing up "make check-tests-parallel" (read_token, read_token_1, test_number_syntax, radix_2): accept token_escape_flag argument instead of using the global static (read_internal, CHAR-READER, radix_1, RADIX-READER, UNINTERNED-READER) (BIT-VECTOR-READER): allocate token_escape_flag on the stack here 2009-12-27 Vladimir Tzankov [MULTITHREAD, SPVW_BLOCKS]: reuse heap holes for allocations * spvw_heap.d (struct heap_hole): strut at the beginning of heap hole describing it (struct Heap): add heap holes list (MIN_HOLE_SIZE_FOR_REUSE): minimum heap hole to consider for reuse * spvw_global.d (init_heaps_mt): was init_heap_locks. initialize heap holes list * spvw.d (main): use it * spvw_allocate.d (allocate_in_heap_hole): allocates varobject in heap hole (if any of required size is available) (allocate_true): try first to allocate in heap hole (if any) * spvw_garcol.d (fill_varobject_heap_holes): initialize heap holes list (split_gen0_on_holes) [GENERATIONAL_GC]: split generation 0 if there is a large hole at its end (gar_col_normal): clear heap holes before performing GC. may be split generation 0 if there is large hole at its end. take into account heap holes when computing used space * spvw_space.d (heap_holes_space): calculates space occupied by holes for reuse in given heap (used_space): take into account heap holes when computing used space 2009-12-10 Sam Steingold when compiling REQUIRE, if the module is not found (e.g., it is a dynamic module), call REQUIRE right away, at compile time. * defs1.lisp (augment-load-path, load-path-augmentations) (with-augmented-load-path): extracted from require (require): use with-augmented-load-path * compiler.lisp (load-or-compile): extracted from c-REQUIRE (c-REQUIRE): use load-or-compile 2009-12-08 Sam Steingold * modules/rawsock/rawsock.c: include when present (check_socket_protocol): add NETLINK_* * modules/rawsock/configure.in: check for 2009-12-02 Sam Steingold * modules/rawsock/demos/sniffer.lisp: add a demo * modules/rawsock/Makefile.in (clisp-module-distrib): install it 2009-12-02 Sam Steingold * modules/rawsock/rawsock.c (get_socket_protocol) [HAVE_GETPROTOBYNAME]: fix argument order in the error message 2009-12-01 Sam Steingold * modules/clx/new-clx/clx.f, modules/rawsock/rawsock.c (unused): define depending on __GNUC__, not GNU 2009-12-01 Sam Steingold * modules/rawsock/rawsock.c (configdev): use strncpy/IFNAMSIZ instead of strcpy for copying the interface name 2009-11-29 Sam Steingold * m4/clisp.m4 (CL_CLISP): use "." instead of "source" (bash-specific) 2009-11-25 Sam Steingold * pathname.d (RENAME-FILE): fix the error_too_many_args invocation for the ANSI case 2009-11-25 Sam Steingold fix bug#2902716: CLEAR-INPUT should clear the EOF condition * stream.d (clear_input_unbuffered): reset status and strm_rd_ch_last slots on all streams, not just tty (clear_input_buffered): add, clear the have_eof_p slot (clear_input): call clear_input_buffered 2009-11-21 Vladimir Tzankov * spvw.d (dynload_modules): guard libopen() with begin_blocking_system_call() * foreign.d (open_library): ditto * pathname.d (DYNLOAD-MODULES): store libpath on the C stack before calling dynload_modules * lispbibl.d (dynload_modules): maygc 2009-11-19 Sam Steingold * eval.d (interpret_bytecode_): use error_mv_toomany * control.d (error_mv_toomany): use the message from eval.d 2009-11-19 Sam Steingold RENAME-FILE accepts :IF-EXISTS (unless *ANSI* is T) * pathname.d (move_file) [WIN32_NATIVE]: atomic rename when available using MoveFileEx (available since windows 2000) (rename_existing_file): use it (rename_existing_path): add, use it in rename_file & RENAME-DIRECTORY (rename_file): accept if_exists (RENAME-FILE): accept :IF-EXISTS unless *ANSI* is T * subr.d, subrkw.d (rename_file): modify the declaration * modules/syscalls/calls.c (copy_one_file): pass :IF-EXISTS to RENAME-FILE 2009-11-19 Sam Steingold * eval.d (funcall_iclosure): use error_too_few_args (interpret_bytecode_): use error_too_many_args * control.d (MULTIPLE-VALUE-CALL, APPLYHOOK): ditto 2009-11-19 Sam Steingold * check-lispfun.lisp (check-lisp-defs): check for LISPFUNs with keywords not mentioned in subrkw.d 2009-11-15 Sam Steingold * makemake.in: dynamic modules do not work with C++ because of symbol mangling, so with_dynamic_modules defaults to !CC_CPLUSPLUS; and fail if --with-dynamic-modules is specified with a C++ compiler 2009-11-13 Vladimir Tzankov * package.d (intern): perform additional symbol lookup after CERROR when package is locked - the symbol may have been interned while processing handlers (or by CERROR itself) 2009-11-12 Sam Steingold * lispbibl.d (unused): do not export to clisp.h, it is never used in any module and causes trouble on some platforms * modules/berkeley-db/bdb.c, modules/dirkey/dirkey.c: * modules/gtk2/gtk.lisp, modules/syscalls/calls.c: no need to "#under unused" anymore * modules/clx/new-clx/clx.f, modules/rawsock/rawsock.c: define unused which is actually used here a few times, but only _after_ all #include's 2009-11-11 Sam Steingold * modules/syscalls/calls.c (unused): undef unused before all the system includes and do not restore it because it is not used here 2009-11-11 Sam Steingold * makemake.in (cpu): fallback to ${host_cpu} (fail): add function, use everywhere 2009-11-10 Sam Steingold * configure (ffi_modules): fix the configure.in test for module requiring FFI 2009-11-10 Sam Steingold * makemake.in (distrib): use FULLTOPDIR for build-aux 2009-11-05 Sam Steingold * compiler.lisp (note-function-used): use STYLE-WARNING for deprecated functions because WARNING implies non-NIL 3rd return value (failure-p) from COMPILE which is an overkill * deprecated.lisp (type-expand-1): ditto 2009-11-05 Vladimir Tzankov * zthread.d (initialize_thread_bindings): allocate per thread value cell for symbols that do not have one 2009-11-04 Sam Steingold * eval.d (interpret_bytecode_): fix a type error in the last patch 2009-11-03 Vladimir Tzankov [MULTITHREAD]: create dynamic bindings for all special variables * zthread.d (initialize_thread_bindings): initializes symbols per thread value cells during thread creation (thread_stub): use it (MAKE-THREAD): check that :initial-bindings is proper list * lispbibl.d (initialize_thread_bindings): declare as global * spvw.d (mt_main_actions): use it * control.d (make_variable_frame): allocate per thread value cells for locally declared special variables (if needed) * eval.d (progv, cod_bind): ditto * threads.lisp (*DEFAULT-SPECIAL-BINDINGS*): initialize per thread bindings with global symbol values 2009-11-01 Sam Steingold * compiler.lisp (c-cerror): extract predefun from ... (c-error): use it; accept DETAIL as the 1st argument (test-list, c-form, test-argument-syntax, c-illegal-syntax) (c-analyze-lambdalist, bind-fixed-var-1, bind-movable-var) (bind-movable-var, c-DECLARE, c-SETQ, c-PSETQ) (c-MULTIPLE-VALUE-SETQ, c-MULTIPLE-VALUE-BIND, check-blockname) (c-RETURN-FROM, c-TAGBODY, c-GO, c-FUNCTION, err-syntax) (c-SYMBOL-MACROLET, c-EVAL-WHEN, c-COND, c-CASE, c-FUNCALL-INLINE): pass DETAIL to C-ERROR * condition.lisp (c-cerror): defun here: signal source-program-error 2009-11-01 Sam Steingold * compiler.lisp (c-current-location): when returning a non-empty value, terminate it with ": " (c-warning, c-error): C-CURRENT-LOCATION is either empty or is terminated by ": ", so adjust its use * condition.lisp (c-warning): ditto; also bind *ERROR-OUTPUT* to *C-ERROR-OUTPUT*, never to *C-LISTING-OUTPUT* which may be NIL, because *COMPILE-VERBOSE* does not affect condition handling 2009-11-01 Sam Steingold * error.d (begin_error): ensure *ERROR-OUTPUT* is valid first thing 2009-10-31 Sam Steingold * makemake.in (fsstnd): infer based on TSYSOS instead of HSYSOS and actively discriminate between linuxes and bsds 2009-10-31 Vladimir Tzankov [MULTITHREAD]: acquire package mutex lock before calling use_package * package.d (unuse_package): package mutex should be locked by caller (UNUSE-PACKAGE, USE-PACKAGE, %IN-PACKAGE): lock the package 2009-10-30 Vladimir Tzankov * spvw_garcol.d (gc_sweep1_varobject_page): fix the build when HAVE_SMALL_SSTRING is not defined 2009-10-29 Sam Steingold * compiler.lisp (ignore-check, value-form-index): revert last patch: 3.2.5 prescribes style-warning here, the writeup is not normative 2009-10-29 Sam Steingold * stream.d (fresh_line_low): replaces elastic_newline_pending_p (fresh_line): use it for all legwork so that fresh-line is called individually on each constituent stream of a BROADCAST-STREAM instead of broadcasting a newline to all streams when only one needs it 2009-10-29 Sam Steingold * stream.d (handle_set, handle_isset): use nullp(.) instead of eq(NIL,.) 2009-10-29 Vladimir Tzankov [MULTITHREAD]: fix GC safety issue in SOCKET-STATUS * stream.d (parse_sock_list): do not return pointer in heap, rather return the cons whose cdr should be filled with socket status (handle_set, handle_isset): use new return from parse_sock_list and preserve it across maygc calls 2009-10-28 Sam Steingold * defs2.lisp (date-string): fix the original bug: the date was printed to the stdout instead of being returned as a string 2009-10-28 Sam Steingold * compiler.lisp (ignore-check, value-form-index): make style-warning "used despite IGNORE declaration" a regular warning as per COMPILER-DIAGNOSTICS:USE-HANDLER 2009-10-28 Sam Steingold Implement the ANSI issue COMPILER-DIAGNOSTICS:USE-HANDLER: use the CL Condition system for compiler diagnostics. * compiler.lisp (c-current-location): add (c-warning): add predefun, uses c-comment (c-warn): use it (c-style-warn): use it instead of c-warn * condition.lisp (simple-style-warning): add (c-warning): define 2009-10-28 Sam Steingold remove the "COMPILER" nickname from # * package.d (init_packages): do not add "COMPILER" nickname to SYS * clos-class5.lisp, clos-genfun3.lisp, clos-package.lisp: * clos-slots2.lisp, compiler.lisp, defs2.lisp, deprecated.lisp: * disassem.lisp, foreign1.lisp, init.lisp, loadform.lisp: * macros1.lisp, places.lisp, trace.lisp: use SYS instead of COMPILER 2009-10-26 Sam Steingold fix (describe 'linux:wait) * foreign.d (PARSE-FOREIGN-INTTYPE): implement * constsym.d, subr.d (parse_foreign_inttype): declare * foreign1.lisp (parse-c-type): use it for internal int types (deparse-c-type): handle internal int types 2009-10-25 Vladimir Tzankov * time.d (seconds_west) [MULTITHREAD]: use reentrant functions for getting time (localtime_r, gmtime_r) 2009-10-25 Vladimir Tzankov [WIN32_THREADS]: use thread safe C run-time (CRT) * xthread.d (xthread_create): use _beginthreadex() for thread creation. close returned handle immediately in order to prevent leaks (xthread_exit): use _endthreadex() - releases per thread allocated resources (THREADPROC_SIGNATURE): add. specify correct calling convention and return type of start thread procedure * spvw.d (mt_main_actions): use THREADPROC_SIGNATURE * zthread.d (thread_stub): ditto 2009-10-25 Vladimir Tzankov * control.d (make_variable_frame) [MULTITHREAD]: do not allocate per thread value cells for locally declared special variables * eval.d (interpret_bytecode_) [MULTITHREAD]: ditto for cod_bind - the code here was plain wrong 2009-10-21 Vladimir Tzankov [MULTITHREAD]: handle SIGWINCH signal * spvw_sigwinch.d (update_linelength): update SYS::*PRIN-LINELENGTH* global value * spvw.d (main): set SYS::*PRIN-LINELENGTH* in MT builds (signal_handler_thread): handle SIGWINCH 2009-10-21 Vladimir Tzankov * spvw_fault.d (LOCK_PAGE_CACHE, UNLOCK_PAGE_CACHE): acquire/release spinlock guarding physical page cache (handle_fault, handle_fault_range): use them 2009-10-20 Vladimir Tzankov * lispbibl.d (jmpl_value) [MULTITHREAD]: make it per thread and export to modules * spvw.d: do not define jmpl_value in MT builds 2009-10-19 Sam Steingold * makemake.in (check-script): fix the non-UNICODE build Reported by Angel Popov 2009-10-16 Sam Steingold * configure.in (AC_INIT): use m4_esyscmd instead of esyscmd 2009-10-15 Sam Steingold * built.d (built_flags) [DYNAMIC_FFI]: add libffcall version based on LIBFFCALL_VERSION 2009-10-15 Vladimir Tzankov * lispbibl.d [MULTITHREAD]: allow USE_CUSTOM_TLS=2 on 64bit builds. gcc on osx 10.6+ still does not support __thread qualifier 2009-10-14 Sam Steingold * stream.d (handle_direction_compatible): NtQueryInformationFile is for FILE_TYPE_DISK only, for FILE_TYPE_CHAR, FILE_TYPE_PIPE, FILE_TYPE_REMOTE assume compatibility 2009-10-12 Sam Steingold * stream.d (handle_pathname): extract from handle_to_stream and implement for WIN32_NATIVE (handle_to_stream): use it 2009-10-12 Sam Steingold * stream.d (handle_direction_compatible): implement for WIN32_NATIVE using NtQueryInformationFile (fixes check-script) 2009-10-09 Vladimir Tzankov [MULTITHREAD]: simplify alternative TLS on 32 bit builds * lispbibl.d (struct thread_specific_data): use spinlock instead of mutex and export it * spvw.d (tsd_initialize, tsd_setspecific, tsd_remove_specific): ditto (tsd_slow_getspecific): lock (with spinlock) hash table modifications. prevents races with tsd_remove_specific. contention is unlikely (get_stack_region): implement for WIN32_THREADS. stack range returned is [*base ... (*base + *size)] regardless SP_DOWN/UP (current_stack_base, current_stack_size): remove (set_current_thread): use get_stack_region() (main) [USE_CUSTOM_TLS=3]: clear all thread mappings before spawning "main thread" 2009-10-09 Sam Steingold * .gdbinit (run_mod_test): add (run_ansi_tests): rename from ansi_tests (run_ansi_tests_compiled): renamed from ansi_tests_compiled 2009-10-08 Sam Steingold * lispbibl.d (STACK, back_trace): do not write the declaration into clisp.h if the symbol is defined as a CPP macro 2009-10-08 Sam Steingold * win32aux.d (CHECK_ERROR_IGNORE_INVALID): add (fd_read_wont_hang_p): use it to ignore both ERROR_INVALID_FUNCTION and ERROR_INVALID_HANDLE in GetNumberOfConsoleInputEvents and ClearCommError 2009-10-08 Sam Steingold * makemake.in (full-mod-check): use base, not full, and require the module from the test files 2009-10-08 Sam Steingold * modules/regexp/gllib/Makefile.am, modules/regexp/gllib/stddef.in.h: * modules/regexp/gllib/stdlib.in.h, modules/regexp/gllib/unistd.in.h: * modules/regexp/glm4/unistd_h.m4, modules/syscalls/gllib/Makefile.am: * modules/syscalls/gllib/errno.in.h, modules/syscalls/gllib/stddef.in.h: * modules/syscalls/gllib/strings.in.h, modules/syscalls/gllib/uname.c: * modules/syscalls/gllib/sys_socket.in.h, gllib/wchar.in.h: * modules/syscalls/gllib/sys_utsname.in.h, gllib/wctype.in.h: * modules/syscalls/gllib/time.in.h, modules/syscalls/gllib/unistd.in.h: * modules/syscalls/glm4/unistd_h.m4 * gllib/Makefile.am, gllib/alloca.in.h, gllib/stdbool.in.h: * gllib/stddef.in.h, gllib/stdint.in.h, gllib/streq.h: * gllib/string.in.h, gllib/sys_time.in.h, gllib/unistd.in.h: update from gnulib, using the gnulib-tool hack 2009-10-08 Sam Steingold * Makefile.devel (gnulib-imported): since Bruno refuses to apply my gnulib-tool patch, we have to patch gnulib-tool before importing * gnulib-tool.patch: add gnulib-tool hack to support multiple gllib directories: headers are generated for each gllib differently, depending on which features are actually used, so we need to be able to include all these generated headers without fear that one will shadow another, so we prepend the macro-prefix before the guard macros 2009-10-08 Sam Steingold support DYNAMIC_MODULES on woe32 (native & cygwin) using dll def file * array.d, charstrg.d, control.d, encoding.d, error.d, errunix.d: * errwin32.d, eval.d, flo_konv.d, foreign.d, hashtabl.d, intelem.d: * intlog.d, intplus.d, intserial.d, lisparit.d, list.d, misc.d: * package.d, pathname.d, predtype.d, sequence.d, socket.d, spvw.d: * spvw_allocate.d, spvw_debug.d, spvw_fault.d, spvw_global.d: * spvw_language.d, spvw_module.d, spvw_sigcld.d, spvw_sigpipe.d: * spvw_typealloc.d, spvwtabf.d, spvwtabo.d, spvwtabs.d, stream.d: * symbol.d, time.d, unixaux.d, win32aux.d: mark objects exported to modules with modexp instead of global * clisp-link.in (prepare_dynamic_module): add @CLISP_DEF@ to libs * genclisph.d (emit_dll_def, exportV, exportF, exportE): add; accept the second command line argument: the dll def file name * lispbibl.d (DYNAMIC_TABLES, modexp, modimp): define; use modimp to declare objects exported to modules instead of extern (use exportV, exportF and exportE for that) and output then into the dll def file using emit_dll_def * makemake.in (CLISP_DEF) [with_dynamic_modules]: define to "lisp.def" on woe32 (both native and cygwin) and add it to FILES; generated it together with clisp.h (makevars): add it to LIBS (clisp-link): substitute it (clean1): remove it * modules.c: when DYNAMIC_TABLES is defined, i.e., on woe32+dynamic modules, we cannot use, e.g., &subr_tab_data to init the modules list, so init to NULL and leave the actual initialization to... * spvw_module.d (init_modules_0) [DYNAMIC_TABLES]: init main_module.stab and main_module.otab Thanks to Daniel Leidert for much enlightening! 2009-10-08 Sam Steingold * makemake.in (anymodule): add -I${HEREP} to CPPFLAGS for localcharset.h et al 2009-10-08 Vladimir Tzankov [MULTITHREAD]: fix USE_CUSTOM_TLS=2 build * lispbibl.d (struct thread_specific_data): export properly * spvw.d (tsd_remove_specific): clear cache for removed entry (tsd_slow_getspecific): simplify (delete_thread): cleanup thread thread specific entry 2009-10-07 Sam Steingold try to produce meaningful error messages on platforms without dlerror http://groups.google.com/group/microsoft.public.win32.programmer.kernel/browse_thread/thread/e720d92269df1398/b2381f02f3bfc8a3 * spvw.d (error_dlerror) [DYNAMIC_MODULES]: accept an object instead of an ASCII string as the last argument (dlerror_message): produce object error message using dlerror() or FormatMessage (get_module_symbol, dynload_modules): use dlerror_message instead of dlerror in the error_dlerror call * constobj.d (unknown_error, oomst_error) [DYNAMIC_MODULES]: add 2009-10-07 Vladimir Tzankov * package.d (rehash_symtab): do not use dotimespC but do/while. simplifies the code and enables stepping in gdb 2009-10-05 Sam Steingold * clisp-link.in: similar to the 2009-10-01 m4/clisp.m4 patch, redirect stderr of 'clisp --version' to /dev/null 2009-10-02 Bruno Haible Use -DENABLE_UNICODE instead of -DUNICODE. * makemake.in (XCFLAGS): Use -DENABLE_UNICODE instead of -DUNICODE. * *.d: Test ENABLE_UNICODE instead of UNICODE. * modules/clx/new-clx/clx.f: Likewise. * win32.d (UNICODE_SAVED): Remove macro. * _clisp.c (UNICODE): Remove undef. * modules/berkeley-db/bdb.c (UNICODE): Likewise. * modules/dirkey/dirkey.c (UNICODE): Likewise. * modules/i18n/gettext.c (UNICODE): Likewise. * modules/rawsock/rawsock.c (UNICODE): Likewise. * modules/syscalls/calls.c (UNICODE): Likewise. 2009-10-01 Bruno Haible * spvw.d (init_subr_tab_1): Correct error message. Reported by Sam Steingold. 2009-10-01 Sam Steingold * makemake.in (SYSLIBS): remove obsolete unused win32-specific code 2009-10-01 Sam Steingold * m4/clisp.m4 (CL_CLISP): remove an unnecessary subshell; redirect 'clisp --version' stderr to /dev/null because 'head -n 1' closes its input and clisp errors out with "[stream.d:5473] *** - Win32 error 232 (ERROR_NO_DATA): The pipe is being closed." 2009-10-01 Sam Steingold * modules/regexp/gllib/unistd.in.h, modules/regexp/glm4/unistd_h.m4: * modules/syscalls/gllib/unistd.in.h, modules/syscalls/glm4/unistd_h.m4: * gllib/unistd.in.h, glm4/unistd_h.m4: update from gnulib 2009-09-29 Sam Steingold * configure.in: call AC_SUBST(LIBTOOL_DEPS) * makemake.in (libtool): regenerate from LIBTOOL_DEPS 2009-09-30 Sam Steingold * win32aux.d (fd_read_wont_hang_p): support serial communication devices using ClearCommError Reported by Angel Popov 2009-09-30 Vladimir Tzankov [MULTITHREAD]: do not lock packages while iterating over them * constsym.d, subr.d (package_iterate_cleanup): remove * defs1.lisp (with-package-iterator): roll back changes from 2009-08-28 (package-iterator-function): ditto * package.d: remove extra (LOCKED) field from Package Iterator State (PACKAGE-ITERATE): do not lock current package (PACKAGE-ITERATE-CLEANUP): remove (MAP-SYMBOLS, MAP-EXTERNAL-SYMBOLS): do not lock packages. symtabs have "copy-on-rehash" semantics and insertion/deletion is segfaul safe (MAP-ALL-SYMBOLS): do not lock individual packages. make a copy of all packages list and iterate over it * constobj.d (version): revert to old ABI * loop.lisp (expand-loop): do not use WRAP-UNWIND-PROTECT when iterating over packages 2009-09-30 Vladimir Tzankov * lispbibl.d (symbol_value_b): fix MT g++ build 2009-09-29 Sam Steingold * spvw_debug.d (nobject_out_level): extract from nobject_out 2009-09-27 Sam Steingold fix bug#2868147: declaim signals an error on an invalid declaration * compiler.lisp (parse-optimize-quality): can be called by DECLAIM, so call c-WARN or WARN depending on *COMPILING* 2009-09-27 Bruno Haible * m4/connect.m4 (CL_CONNECT): Terminate the expansion with a newline. 2009-09-26 Vladimir Tzankov [MULTITHREAD]: fix thread safety issue in printer * lispbibl.d (Symbol_thread_binding): returns symbol binding in current thread (if any) * io.d (pr_external_1, BIND_UNLESS): use it 2009-09-26 Vladimir Tzankov * package.d (intern) [MULTITHREAD]: search for symbol before locking package (it is faster) 2009-09-25 Aleksej Saushev * makemake.in (BUILD_AUX): do not link_dep if building in src to avoid cyclic dependency 2009-09-25 Sam Steingold * makemake.in (HERE): set to "./" on all platforms: it seems to be needed on mingw and should not be able to hurt anyway 2009-09-25 Sam Steingold fix bug#2868166: Do not eliminate function calls which are advertised to have exceptional situation in unsafe code. * lispbibl.d (seclass_t): add seclass_rd_sig: same as read, but is also advertised to have "Exceptional situations" in unsafe code (seclass_object): handle it * constobj.d (seclass_rd_sig): add * control.d (FDEFINITION): seclass_rd_sig * io.d (GET-DISPATCH-MACRO-CHARACTER, PARSE-INTEGER): seclass_rd_sig * pathname.d (PARSE-NAMESTRING, LOGICAL-PATHNAME, WILD-PATHNAME-P) (PATHNAME-MATCH-P, TRUENAME, PROBE-FILE, PROBE-DIRECTORY, DIRECTORY): (FILE-WRITE-DATE, FILE-AUTHOR): seclass_rd_sig * predtype.d (COERCE): seclass_rd_sig * sequence.d (CONCATENATE): seclass_rd_sig * subr.d: update all of the above Reported by "Tobias C. Rittweiler" 2009-09-25 Vladimir Tzankov * package.d (intern): fix possible races in MT builds. guard both - symtab lookup and insert with package mutex. it was possible to have different interned symbols with same print name 2009-09-23 Sam Steingold * makemake.in (lisp${SHREXT}): only define on with_dynamic_modules & woe32 (and cygwin) and add $(LIBS) to libs; depend on ${GLLIB_A} 2009-09-22 Sam Steingold * modules/regexp/gllib/unistd.in.h, modules/syscalls/gllib/unistd.in.h: * gllib/unistd.in.h, glm4/link-follow.m4: update from gnulib 2009-09-22 Sam Steingold * makemake.in (.PHONY): add am--refresh (SUBDIRS): teeny code simplification (config.status): also rm $(SUBDIRS) (anymodule): ditto: reconfiguring obsoletes gllib (GLLIB_A): do not re-execute the code already done in gllib (install-bin): depend on full instead of lispinit et al 2009-09-21 Sam Steingold * pathname.d (DYNLOAD-MODULES): report what is being done * constsym.d (loading_message, load_level): export for DYNLOAD-MODULES 2009-09-21 Sam Steingold * clisp-link.in (with_dynamic_modules): load the modules files with an explicit .fas extension, both to override .lisp inherited from *load-truename* and to ensure that the module is compiled Reported by Barry Fishman 2009-09-20 Sam Steingold * modules/regexp/gllib/stdlib.in.h, modules/regexp/gllib/unistd.in.h: * modules/regexp/glm4/stdlib_h.m4, modules/regexp/glm4/unistd_h.m4: * modules/syscalls/gllib/unistd.in.h, modules/syscalls/glm4/unistd_h.m4: * gllib/unistd.in.h, glm4/unistd_h.m4: update from gnulib * modules/regexp/gllib/Makefile.am, modules/syscalls/gllib/Makefile.am: * gllib/Makefile.am: regenerate 2009-09-20 Sam Steingold * glm4/absolute-header.m4, glm4/btowc.m4, glm4/malloc.m4: * glm4/regex.m4, glm4/ssize_t.m4, glm4/stdlib_h.m4, * glm4/wcrtomb.m4: remove obsolete files (now in modules/regexp/glm4) * glm4/fnmatch.m4: remove obsolete file (now in modules/wildcard/glm4) 2009-09-20 Sam Steingold * Makefile.devel (gnulib-imported): remove backups in glm4 too 2009-09-18 Sam Steingold * m4/clisp.m4 (CL_CLISP): fix cl_cv_have_clisp caching; accept an optional second argument to specify whether the features and clisp itself are required or not (default=true) 2009-09-17 Sam Steingold Update gnulib imports (mostly for mktime fixes for NetBSD/i386) * modules/regexp/gllib/stddef.in.h, modules/regexp/glm4/stddef_h.m4: * modules/regexp/glm4/wchar_t.m4, modules/syscalls/gllib/stddef.in.h: * modules/syscalls/glm4/stddef_h.m4, modules/syscalls/glm4/wchar_t.m4: * gllib/stddef.in.h, glm4/stddef_h.m4: add * modules/regexp/gllib/Makefile.am, modules/regexp/gllib/stdlib.in.h: * modules/regexp/gllib/unistd.in.h, modules/regexp/glm4/gnulib-comp.m4: * modules/regexp/glm4/stdlib_h.m4, modules/regexp/glm4/unistd_h.m4: * modules/syscalls/gllib/Makefile.am, modules/syscalls/gllib/mktime.c: * modules/syscalls/gllib/sys_socket.in.h: * modules/syscalls/gllib/time.in.h: * modules/syscalls/gllib/unistd.in.h: * modules/syscalls/glm4/gethostname.m4: * modules/syscalls/glm4/gnulib-comp.m4: * modules/syscalls/glm4/sockets.m4: * modules/syscalls/glm4/sockpfaf.m4: * modules/syscalls/glm4/sys_socket_h.m4: * modules/syscalls/glm4/time_r.m4, modules/syscalls/glm4/unistd_h.m4: * modules/wildcard/gllib/Makefile.am * gllib/Makefile.am, gllib/string.in.h, gllib/unistd.in.h: * gllib/wctype.in.h, glm4/gnulib-comp.m4, glm4/link-follow.m4: * glm4/string_h.m4, glm4/threadlib.m4, glm4/unistd_h.m4: * glm4/wchar.m4, glm4/wctype.m4: update * modules/syscalls/configure.in: gl_AC_FUNC_LINK_FOLLOWS_SYMLINK has been renamed to gl_FUNC_LINK_FOLLOWS_SYMLINK 2009-09-17 Sam Steingold * Makefile.devel (update-gnulib): add a missing semicolon (gnulib-imported): add a missing dollar sign 2009-09-16 Sam Steingold * package.d (MAP-SYMBOLS, MAP-EXTERNAL-SYMBOLS): lock the individual packages being iterated over (MAP-ALL-SYMBOLS): ditto, instead of locking all_packages_lock (RE-EXPORT): lock TO-PACK 2009-09-17 Vladimir Tzankov * xthread.d (spinlock_release) [I80386, AMD64]: add gcc optimization barrier (reimplemented in inline asm) 2009-09-14 Sam Steingold * m4/ffcall.m4 (CL_FFCALL): suggest cvs/savannah instead of wget/gnu.org because there is no ffcall tarball on gnu.org 2009-09-14 Sam Steingold * m4/clisp.m4 (CL_CLISP): upcase the features for messages and variables Thanks to Eric Blake for much enlightening! 2009-09-13 Sam Steingold * clisp-link.in (set_dynamic_module_location): *user-lib-directory* may be NIL which is not a valid pathname designator 2009-09-13 Sam Steingold * makemake.in (BUILD_AUX): when verbose, report it (full): pass CLISP=... to clisp-link to possibly override the user setting pointing somewhere else; [with_dynamic_modules]: mkdir dynmod 2009-09-13 Sam Steingold * m4/clisp.m4 (CL_CLISP): check for a specified list of features (CL_CLISP_NEED_FFI): remove * m4/general.m4 (CL_MODULE_COMMON_CHECKS): fix AC_REQUIRE(CL_CLISP) * modules/dbus/configure.in, modules/fastcgi/configure.in: * modules/gtk2/configure.in, modules/oracle/configure.in: * modules/pari/configure.in, modules/postgresql/configure.in: * modules/readline/configure.in, modules/wildcard/configure.in: * modules/zlib/configure.in: replace CL_CLISP_NEED_FFI with an argument to CL_MODULE_COMMON_CHECKS 2009-09-13 Sam Steingold * modules/i18n/configure.in: remove the spurious FFI dependency 2009-09-12 Aleksej Saushev * makemake.in (INSTALL_SCRIPT): use instead of INSTALL_PROGRAM for clisp-link (avoids stripping the script, which is a problem on NetBSD) 2009-09-11 Sam Steingold * m4/clisp.m4 (CL_CLISP): use cl_use_clisp instead of cl_cv_use_clisp to avoid unnecessary caching 2009-09-11 Sam Steingold * makemake.in (check-doc): pass "--tries=1" to wget, "-connect_timeout=10" to lynx and "--max-time 10" to curl to limit wait time; try only one of wget/lynx/curl, not every one of them in order (base): set CLISP='./clisp -K boot' for clisp-link because base is not present yet thus the default will not work (anymodule): no need to pass localeflags to clisp 2009-09-11 Sam Steingold * m4/clisp.m4: move FFI check from CL_CLISP to CL_CLISP_NEED_FFI and AC_REQUIRE CL_CLISP in CL_CLISP_NEED_FFI 2009-09-11 Sam Steingold * clisp-link.in (current_linking_set): use (sys::program-name) instead of (aref (argv) 0) 2009-09-11 Sam Steingold * m4/clisp.m4 (CL_CLISP): add an early cl_cv_have_clisp=no rename cl_cv_clisp_modset to cl_cv_clisp_linkset also check for ${cl_cv_clisp_libdir}linkkit/modules.c, as in clisp-link 2009-09-10 Sam Steingold * makemake.in (MYIMPROOT): revert the 2009-07-06 patch, use podval again 2009-09-10 Sam Steingold New user variable CUSTOM:*USER-LIB-DIRECTORY* is respected by REQUIRE and used by "clisp-link install". * clisp-link.in (link): remove the obsolete command (install): add command (set_dynamic_module_location, current_linking_set): add (prepare_dynamic_module): call set_dynamic_module_location * constsym.d (user_lib_directory): add * defs1.lisp (*user-lib-directory*): defvar (require): treat it the same as *lib-directory* * spvw.d (init_symbol_values): define_variable user_lib_directory (main_actions): init user_lib_directory * makemake.in: install clisp-link in bindir; generate and install its manpage 2009-09-10 Sam Steingold * modules/queens/Makefile (callqueens.m.c): fix modprep invocation * modules/queens/queens.c (queens): add a prototype to pacify gcc 2009-09-10 Sam Steingold * modules/berkeley-db/link.sh.in, modules/bindings/glibc/link.sh: * modules/bindings/win32/link.sh, modules/clx/mit-clx/link.sh: * modules/clx/new-clx/link.sh.in, modules/dbus/link.sh.in: * modules/dirkey/link.sh.in, modules/fastcgi/link.sh.in: * modules/gdbm/link.sh.in, modules/gtk2/link.sh.in: * modules/i18n/link.sh.in, modules/libsvm/link.sh: * modules/matlab/link.sh, modules/netica/link.sh: * modules/oracle/link.sh.in, modules/pari/link.sh.in: * modules/pcre/link.sh.in, modules/postgresql/link.sh.in: * modules/queens/link.sh, modules/rawsock/link.sh.in: * modules/readline/link.sh.in, modules/regexp/link.sh.in: * modules/syscalls/link.sh.in, modules/wildcard/link.sh.in: * modules/zlib/link.sh.in: pass CLISP="${CLISP}" to make 2009-09-08 Sam Steingold * modules/bindings/win32/Makefile (win32.o): do not depend on $(CLISP_LINKKIT)/clisp.h because, first, clisp is presumed to be set in stone while a module is compiles, and, second, $(CLISP_LINKKIT) may contain a colon (full path on win32 contains the drive!) and thus confuse make ("multiple target patterns") * modules/bindings/glibc/Makefile (linux.o): ditto 2009-09-03 Sam Steingold * modules/bindings/glibc/Makefile, modules/bindings/win32/Makefile: * modules/libsvm/Makefile, modules/matlab/Makefile: * modules/netica/Makefile, modules/queens/Makefile: * modules/berkeley-db/link.sh.in, modules/dbus/link.sh.in: * modules/dirkey/link.sh.in, modules/fastcgi/link.sh.in: * modules/gdbm/link.sh.in, modules/gtk2/link.sh.in: * modules/i18n/link.sh.in, modules/libsvm/link.sh: * modules/matlab/link.sh, modules/netica/link.sh: * modules/oracle/link.sh.in, modules/pari/link.sh.in: * modules/pcre/link.sh.in, modules/postgresql/link.sh.in: * modules/queens/link.sh, modules/rawsock/link.sh.in: * modules/readline/link.sh.in, modules/regexp/link.sh.in: * modules/syscalls/link.sh.in, modules/wildcard/link.sh.in: * modules/bindings/glibc/link.sh, modules/bindings/win32/link.sh: * modules/clx/mit-clx/link.sh, modules/clx/new-clx/link.sh.in: * modules/zlib/link.sh.in, clisp-link.in, makemake.in: use CLISP_LINKKIT instead of INCLUDES 2009-09-03 Sam Steingold * clisp-link.in (check_module): when ${CLISP} is set and $1/link.sh is not found, run "$1/configure --with-clisp=${CLISP}" 2009-09-03 Sam Steingold * modules/libsvm/Makefile (svm$(SHREXT)): no need to add -I$(INCLUDES) * modules/postgresql/Makefile.in (postgresql.fas): remove an extra rule * modules/clx/new-clx/Makefile.in (clisp-module-distrib): fix a typo; use "mkdir -p" 2009-09-03 Sam Steingold * modules/berkeley-db/Makefile.in, modules/clx/new-clx/Makefile.in: * modules/dbus/Makefile.in, modules/dirkey/Makefile.in: * modules/fastcgi/Makefile.in, modules/gdbm/Makefile.in: * modules/gtk2/Makefile.in, modules/i18n/Makefile.in: * modules/oracle/Makefile.in, modules/pari/Makefile.in: * modules/pcre/Makefile.in, modules/postgresql/Makefile.in: * modules/rawsock/Makefile.in, modules/readline/Makefile.in: * modules/regexp/Makefile.in, modules/syscalls/Makefile.in: * modules/wildcard/Makefile.in, modules/zlib/Makefile.in: (CLISP): init to @CLISP@ -norc -q (CLISP_LINKKIT): init to @CLISP_LINKKIT@ and use instead of INCLUDES * m4/clisp.m4 (CL_CLISP): define CLISP_LINKKIT instead of CLISP_INCLUDE 2009-09-02 Sam Steingold modules should be buildable using pre-installed clisp * makemake.in (build-aux): add link_dep target (modular): depend on it (BUILD_AUX): compute the files which module configures need (anymodule): pass --with-clisp to module configures (distrib, install, install-bin): install BUILD_AUX in libdir/build-aux * m4/clisp.m4 (CL_CLISP): major rewrite for better caching (CL_CLISP_NEED_FFI): add * m4/general.m4 (CL_MODULE_COMMON_CHECKS): require CL_CLISP, pass cl_cv_clisp_libdir/build-aux to AC_CONFIG_AUX_DIR * modules/berkeley-db/configure.in, modules/clx/new-clx/configure.in: * modules/dirkey/configure.in, modules/gdbm/configure.in: * modules/i18n/configure.in, modules/pcre/configure.in: * modules/rawsock/configure.in, modules/regexp/configure.in: * modules/syscalls/configure.in: call CL_MODULE_COMMON_CHECKS without arguments * modules/dbus/configure.in, modules/fastcgi/configure.in: * modules/gtk2/configure.in, modules/oracle/configure.in: * modules/pari/configure.in, modules/postgresql/configure.in: * modules/readline/configure.in, modules/wildcard/configure.in: * modules/zlib/configure.in: ditto and call CL_CLISP_NEED_FFI * Makefile.devel ($(MAKEFILE_IN)): create symlink $cl_cv_clisp_libdir before automake and remove it afterwards 2009-08-30 Vladimir Tzankov * lispbibl.d (GC_SAFE_ACK_SUSPEND_REQUEST_): do not try to acquire _gc_suspend_request spinlock - we already hold it (GC_SAFE_REGION_END_i): acquire (not 'try acquire') _gc_suspend_request 2009-08-30 Vladimir Tzankov fix WITH-PACKAGE-ITERATOR thread-safety * package.d (PIS_LOCK, PIS_UNLOCK): lock/unlock all_packages_lock prior/after package lock is locked/unlocked. use MUTEX-LOCK and MUTEX-UNLOCK for handling package locks (PACKAGE-ITERATE): release locks at the end of iteration 2009-08-30 Sam Steingold * loop.lisp (wrap-unwind-protect): add (expand-loop): use it when iterating over packages for thread safety 2009-08-28 Sam Steingold make WITH-PACKAGE-ITERATOR thread-safe * constsym.d, subr.d (package_iterate_cleanup): add * defs1.lisp (with-package-iterator): wrap MACROLET in UNWIND-PROTECT and call CLEANUPFUN, returned by ... (package-iterator-function): return two values: iterfun and cleanupfun * package.d: add an extra (7th) field to Package Iterator State (package-iterate): fill the extra LOCKED field when taking symtab and lock the appropriate package's internal mutex (package-iterate-cleanup): unlock the currently locked internal mutex * constobj.d (version): bump because the ABI function PACKAGE-ITERATOR-FUNCTION now returns two values and the previously compiled files will not call the cleanup function, resulting in a locked internal mutex and blocking READ 2009-08-28 Sam Steingold * package.d (PACKAGE-ITERATOR, PACKAGE-ITERATE): use symbolic macros PIS_* (for Package Iterator State) instead of literals 2009-08-26 Vladimir Tzankov [MULTITHREAD]: threads suspend/resume cleanup * spvw_global.d (gc_suspend_all_threads): do not try to acquire suspend request spinlock * lispbibl.d (GC_SAFE_REGION_END_i, GC_SAFE_ACK_SUSPEND_REQUEST_): try to get suspend request spinlock when resuming thread execution 2009-08-26 Sam Steingold * makemake.in (full-mod-check): same dependencies as base-mod-check 2009-08-25 Sam Steingold * makemake.in (PATH) [mingw]: do not set; there appears to be no good reason to set it, and the present setting reverses the normal order Reported by Cesar Romani in 2009-08-24 Sam Steingold * version.sh: 2.48+ (2009-08-24) 2009-08-24 Sam Steingold FFI:OPEN-FOREIGN-LIBRARY now accepts the :REQUIRE argument. * foreign.d (update_library): update the dependencies before handling the library itself (check_library): allocate space for dependencies in lib_spec (FFI:OPEN-FOREIGN-LIBRARY): accept :require (push_foreign_object): lib_spec now contains dependencies before objects * subr.d, subrkw.d (open_foreign_library): update * constsym.d (Krequire) [WIN32 || HAVE_DLOPEN]: add 2009-08-20 Sam Steingold accept -disable-readline run-time option * lispbibl.d (disable_readline): declare * spvw.d (disable_readline): define (usage): document -disable-readline (parse_options): set disable_readline when -disable-readline is given * stream.d (make_terminal_stream_): do not use readline when disable_readline is true 2009-08-19 Vladimir Tzankov * package.d (symbol_list_lookup): search for symbol name in a list (symtab_find, shadowing_lookup): use it 2009-08-18 Sam Steingold * makemake.in (XCC_PICFLAG) [cygwin]: empty: "warning: -fPIC ignored for target (all code is position independent)" 2009-08-17 Bruno Haible * spvw_sigsegv.d (stackoverflow_handler_continuation): Update reference to Linux/arm register to match current API. 2009-08-16 Sam Steingold * modules/berkeley-db/Makefile.in, modules/bindings/glibc/Makefile: * modules/bindings/win32/Makefile, modules/clx/mit-clx/Makefile: * modules/clx/new-clx/Makefile.in, modules/dbus/Makefile.in: * modules/dirkey/Makefile.in, modules/fastcgi/Makefile.in: * modules/gdbm/Makefile.in, modules/gtk2/Makefile.in: * modules/i18n/Makefile.in, modules/libsvm/Makefile: * modules/matlab/Makefile, modules/netica/Makefile: * modules/oracle/Makefile.in, modules/pari/Makefile.in: * modules/pcre/Makefile.in, modules/postgresql/Makefile.in: * modules/queens/Makefile, modules/rawsock/Makefile.in: * modules/readline/Makefile.in, modules/regexp/Makefile.in: * modules/syscalls/Makefile.in, modules/wildcard/Makefile.in: * modules/zlib/Makefile.in: avoid GNU extensions Reported by Aleksej Saushev 2009-08-16 Vladimir Tzankov [MULTITHREAD]: make packages threads safe * package.d (rehash_symtab): do not reuse old cons cell. allocate new symtab (make_present, unexport, make_external): assign returned symtab - possibly newly allocated (unuse_1package): do not lock anything. caller should have obtained both package mutexes (unuse_package): obtain package locks before calling unuse_1package (USE-PACKAGE, UNUSE-PACKAGE): obtain global packages lock since more than one package mutex will be locked at a time (%IN-PACKAGE): lock while modifying existing packages (DELETE-PACKAGE): lock existing package during unuse_1package (WITH_PACKAGE_LIST_MUTEX_LOCK): macro for obtaining all mutexes of a list of packages. on unwinding releases them (use_package): use it (make_package): guard insertion into all_packages 2009-08-13 Sam Steingold * makemake.in (lisp${SHREXT}) [dynamic_modules]: new target 2009-08-13 Sam Steingold * makemake.in: use $0 in all error messages 2009-08-13 Sam Steingold * makemake.in (distrib) [win32]: fix echo_dist_modules invocation Reported by Yaroslav Kavenchuk 2009-08-12 Sam Steingold * makemake.in (modcheck): pass :SRCDIR and :OUTDIR to RUN-SOME-TESTS 2009-08-11 Sam Steingold * gllib/unistd.in.h, modules/regexp/gllib/unistd.in.h: * modules/syscalls/gllib/unistd.in.h: import the gnulib fix of the 'close' socket dependency 2009-08-10 Sam Steingold * makemake.in (anymodule): do not do "cd $@" twice in the same shell 2009-08-11 Vladimir Tzankov * spvw_genera1.d (build_old_generation_cache) (rebuild_old_generation_cache): fix g++ build (goto crosses auto vars initialization) * spvw.d (get_module_symbol): add typecast 2009-08-10 Sam Steingold * modules/fastcgi/configure.in: use AC_LIB_LINKFLAGS to accept --with-libfcgi-prefix * modules/fastcgi/link.sh.in (NEW_LIBS): use @LIBS@ 2009-08-10 Sam Steingold * modules/oracle/configure.in: generate link.sh * modules/oracle/link.sh.in: renamed from link.sh * modules/oracle/Makefile.in (link.sh): remove target 2009-08-10 Sam Steingold * modules/fastcgi/configure.in: check for fcgi_stdio.h; generate link.sh * modules/fastcgi/link.sh.in: renamed from link.sh * modules/fastcgi/Makefile.in (link.sh): remove target 2009-08-10 Sam Steingold * modules/dirkey/configure.in: generate link.sh * modules/dirkey/link.sh.in: renamed from link.sh 2009-08-10 Sam Steingold * modules/syscalls/calls.c (MKNOD): use S(member) instead of `CL:MEMBER` to avoid wasting memory 2009-08-10 Sam Steingold * modules/regexp/Makefile.in (regexi.o): -I$(srcdir)/gllib * modules/syscalls/Makefile.in (calls.o): -I$(srcdir)/gllib * modules/wildcard/Makefile.in (wildcard.o): -Igllib -I$(srcdir)/gllib 2009-08-10 Sam Steingold * modules/regexp/regexi.c: #include "config.h" 2009-08-10 Sam Steingold * Makefile.devel (gnulib-imported): the log is in GNULIB_IMPORTED_LOG 2009-08-10 Sam Steingold * gllib/btowc.c, gllib/fnmatch.c, gllib/fnmatch.in.h: * gllib/fnmatch_loop.c, gllib/malloc.c, gllib/regcomp.c, gllib/regex.c: * gllib/regex.h, gllib/regex_internal.c, gllib/regex_internal.h: * gllib/regexec.c, gllib/stdlib.in.h, gllib/wcrtomb.c: remove files which moved to individual modules 2009-08-09 Sam Steingold * Makefile.devel (GNULIB_CORE): remove unistd, so that it is present in both src/gllib and modules/syscalls/gllib because unistd.h is generated differently depending on whether gethostname (required by uname) is present (GNULIB_USERS): new variable (src/aclocal.m4, MAKEFILE_IN): use it (gnulib-imported): keep the log in gnulib-imported.log 2009-08-09 Sam Steingold * configure.in: do not call gt_NO_CXX * makemake.in: do not pass $(NO_CXX) to gnulib make * gllib/gettimeofday.c: update from gnulib, now compiles with C++ 2009-08-07 Bruno Haible * spvw_sigsegv.d (stackoverflow_handler_continuation) [I80386]: Make it compile with libsigsegv 2.7. 2009-08-09 Sam Steingold * configure: remove the --install option; people should be careful with su(1) 2009-08-09 Sam Steingold * modules/regexp/configure.in, modules/syscalls/configure.in: * modules/wildcard/configure.in: AM_INIT_AUTOMAKE must come after AC_CONFIG_AUX_DIR 2009-08-07 Sam Steingold * modules/regexp/configure.in, modules/syscalls/configure.in: * modules/wildcard/configure.in, configure.in: pass ([no-define]) to AM_INIT_AUTOMAKE to avoid defining PACKAGE & VERSION (we already have PACKAGE_NAME and PACKAGE_VERSION defined by AC_INIT) 2009-08-07 Bruno Haible * configure: Don't leave abazonk files when $exex_prefix and $prefix are different. 2009-08-07 Sam Steingold * modules/regexp/Makefile.in (regexi.o): add -Igllib and depend on gllib * modules/syscalls/Makefile.in (calls.o): ditto * modules/wildcard/Makefile.in (wildcard.o): ditto 2009-08-06 Sam Steingold * configure, makemake.in (with_dynamic_modules): "yes" is now the default 2009-08-06 Sam Steingold * Makefile.devel (gnulib-imported): import uname into syscalls * modules/syscalls/calls.c (uname): implement unconditionally * modules/syscalls/posix.lisp (uname): export unconditionally * modules/syscalls/configure.in: call gl_FUNC_UNAME and gl_SYS_UTSNAME_MODULE_INDICATOR([uname]) and do not check for uname and * modules/syscalls/gllib/alignof.h: * modules/syscalls/gllib/close-hook.c: * modules/syscalls/gllib/close-hook.h: * modules/syscalls/gllib/errno.in.h: * modules/syscalls/gllib/gethostname.c: * modules/syscalls/gllib/sockets.c: * modules/syscalls/gllib/sockets.h: * modules/syscalls/gllib/sys_socket.in.h: * modules/syscalls/gllib/sys_utsname.in.h: * modules/syscalls/gllib/uname.c: * modules/syscalls/gllib/w32sock.h: * modules/syscalls/glm4/errno_h.m4: * modules/syscalls/glm4/gethostname.m4: * modules/syscalls/glm4/sockets.m4: * modules/syscalls/glm4/sockpfaf.m4: * modules/syscalls/glm4/sys_socket_h.m4: * modules/syscalls/glm4/sys_utsname_h.m4: * modules/syscalls/glm4/uname.m4: add * modules/syscalls/gllib/dummy.c: remove 2009-08-06 Sam Steingold * makemake.in (install-bin) [with_dynamic_modules]: do not install full, install individual module directories instead 2009-08-06 Sam Steingold * makemake.in (DVIPDF): remove (PS2PDF): add (manual_print): rename from manual_dvi; remove clisp.dvi from it (clisp.dvi): remove target (clisp.pdf): generate from clisp.ps * configure.in: check for PS2PDF instead of DVIPDF 2009-08-06 Sam Steingold * modules/clx/new-clx/Makefile.in (clisp-module-distrib): distribute demos 2009-08-06 Sam Steingold * modules/clx/new-clx/Makefile.in, modules/fastcgi/Makefile.in: * modules/libsvm/Makefile, modules/netica/Makefile: * modules/oracle/Makefile.in, modules/pari/Makefile.in: * modules/pari/README, modules/postgresql/Makefile.in: * modules/syscalls/Makefile.in (DISTRIBFILES): distribute README 2009-08-06 Sam Steingold fix bug#1237776: binary distribution does not include local libs * makemake.in (distrib): link local libs mentioned in base/makevars:LIBS into TOPDIR/base (same for full) and modify distmakefile accordingly 2009-08-06 Sam Steingold * modules/berkeley-db/Makefile.in, modules/bindings/glibc/Makefile: * modules/bindings/win32/Makefile, modules/clx/new-clx/Makefile.in: * modules/dbus/Makefile.in, modules/dirkey/Makefile.in: * modules/fastcgi/Makefile.in, modules/gdbm/Makefile.in: * modules/gtk2/Makefile.in, modules/i18n/Makefile.in: * modules/libsvm/Makefile, modules/matlab/Makefile: * modules/netica/Makefile, modules/oracle/Makefile.in: * modules/pari/Makefile.in, modules/pcre/Makefile.in: * modules/postgresql/Makefile.in, modules/queens/Makefile: * modules/rawsock/Makefile.in, modules/readline/Makefile.in: * modules/regexp/Makefile.in, modules/syscalls/Makefile.in: * modules/wildcard/Makefile.in, modules/zlib/Makefile.in: (DISTRIBFILES): include fas files for dynamic loading 2009-08-06 Sam Steingold * clisp-link.in (prepare_dynamic_modules): in the REQUIRE file, wrap LOADs in APPEASE-CERRORS because FFI modules might try to interface to functions absent on this platform 2009-08-06 Sam Steingold base modules are always linked statically * clisp-link.in (with_dynamic_modules): get from the environment with the default being @with_dynamic_modules@ * makemake.in (base): pass with_dynamic_modules=no to clisp-link 2009-08-06 Sam Steingold * clisp-link.in (lncp): rename from link to separate from link.sh (lncp_some): rename from link_some to simplify search 2009-08-06 Sam Steingold * Makefile.devel (MAKEFILE_IN): depend on aclocal.m4 2009-08-05 Sam Steingold * modules/regexp/link.sh.in (NEW_FILES): remove regexp.dvi * modules/regexp/Makefile.in (DISTRIBFILES, all): ditto * modules/regexp/regexp.dvi: remove 2009-08-05 Sam Steingold use gnulib in syscalls (just string-time for now) * Makefile.devel (MAKEFILE_IN): add modules/syscalls/gllib/Makefile * modules/syscalls/Makefile.in (libgnu_sc.a): add target * modules/syscalls/calls.c (STRING-TIME): implement unconditionally * modules/syscalls/posix.lisp (STRING-TIME): export unconditionally * modules/syscalls/configure.in: call sc_gl_EARLY, sc_gl_INIT, gl_FUNC_MKTIME, gl_FUNC_GNU_STRFTIME, gl_FUNC_STRPTIME; do not check for strftime strptime mktime * modules/syscalls/link.sh.in (NEW_FILES): add libgnu_sc.a * modules/syscalls/gllib/, modules/syscalls/glm4/: add 2009-08-05 Sam Steingold * Makefile.devel (gnulib-imported): import no-c++ * makemake.in (SUBDIRS): disable c++ using NO_CXX for gettimeofday.c * configure.in, modules/regexp/configure.in: call gt_NO_CXX * modules/regexp/Makefile.in (libgnu_rx.a): pass NO_CXX in CFLAGS to gllib because regex cannot be compiled with c++ 2009-08-05 Sam Steingold build modules without linking them over * configure: do not link module directories into the build directory * makemake.in (anymodule): do not link the module directory, run configure in place or link Makefile * lndir: remove * modules/berkeley-db/Makefile.in, modules/bindings/glibc/Makefile: * modules/bindings/win32/Makefile, modules/clx/mit-clx/Makefile: * modules/clx/new-clx/Makefile.in, modules/dbus/Makefile.in: * modules/dirkey/Makefile.in, modules/fastcgi/Makefile.in: * modules/gdbm/Makefile.in, modules/gtk2/Makefile.in: * modules/i18n/Makefile.in, modules/libsvm/Makefile: * modules/matlab/Makefile, modules/netica/Makefile: * modules/oracle/Makefile.in, modules/pari/Makefile.in: * modules/pcre/Makefile.in, modules/postgresql/Makefile.in: * modules/queens/Makefile, modules/rawsock/Makefile.in: * modules/readline/Makefile.in, modules/regexp/Makefile.in: * modules/syscalls/Makefile.in, modules/wildcard/Makefile.in: * modules/zlib/Makefile.in: use srcdir to enable building in a separate directory 2009-08-05 Sam Steingold * modules/gtk2/gtk.lisp (read-gtk-server-cfg): better logging, output the generated forms in the same order in which they are read; eval filename argument to permit compiling away from the source tree 2009-08-04 Sam Steingold * modules/regexp/Makefile.in, modules/wildcard/Makefile.in: pass "-I$(INCLUDES)/.." in CFLAGS to gllib make because these modules rely on src/gllib, so we must also include files in the build dir 2009-08-04 Sam Steingold * init.lisp (*internal-compiled-file-type*): add (*compiled-file-types*): init from *internal-compiled-file-type* * compiler.lisp (compile-file-pathname-helper): use *internal-compiled-file-type* instead of a string literal * utils/modprep.lisp (mod-file): use *internal-compiled-file-type* and compile-file-pathname to enable (modprep "bar/foo.c" "./") 2009-08-03 Sam Steingold keep gnulib files with the module which needs them * modules/regexp/gllib, modules/wildcard/gllib: * modules/regexp/glm4, modules/wildcard/glm4: add * Makefile.devel (MAKEFILE_IN): generate modules/regexp/gllib/Makefile.in & modules/wildcard/gllib/Makefile.in (gnulib-imported): update all gllib and glm4 directories * makemake.in: use libgnu.a as generated by the gnulib build process instead of individual object files * modules/regexp/Makefile.in, modules/wildcard/Makefile.in: * modules/regexp/link.sh.in, modules/wildcard/link.sh.in: link with libgnu.a 2009-08-01 Sam Steingold * genclisph.d (emit_typedef_test): avoid a compilation warning 2009-08-03 Sam Steingold * modules/berkeley-db/bdb.c (bdb_errno): do not call end_system_call() (LOCK-GET, TXN-RECOVER): move bdb_errno out of begin_blocking_system_call/end_blocking_system_call 2009-08-02 Vladimir Tzankov BERKELEY-DB: fix problems with MT * /modules/berkeley-db/bdb.c (SYSCALL1, my_fopen): move error reporting outside begin_blocking_system_call/end_blocking_system_call (BDB::DBE-SET-OPTIONS): fix a gc-safety bug 2009-07-31 Sam Steingold * lispbibl.d (with_pinned_varobject): add & export * modules/rawsock/rawsock.c (with_buffer_arg, with_sockaddr_arg): use it 2009-07-31 Vladimir Tzankov RAWSOCK: fix object unpinning * modules/rawsock/rawsock.c (with_sockaddr_arg, with_opt_sa_arg): when the "body" changes the STACK and pinned object is passed as STACK_x, ASSERT_VALID_UNPIN() aborts (SOCK-READ, SOCK-READ): unpin object after system calls returns 2009-07-30 Sam Steingold RAWSOCK: pin everything properly * modules/rawsock/rawsock.c (with_sockaddr_arg): replaces CHECK_SOCKADDR (PIN_ARG_USE, PIN_ARG_DECL, PIN_DECL, PIN_INIT): define based on MULTITHREAD to pass pinned_chain_t objects around (fill_iovec): accept a vector of pinned_chain_t on MULTITHREAD and pin subvectors (optional_sockaddr_argument): accept a pinned_chain_t on MULTITHREAD and ping the socket arg (with_opt_sa_arg): a wrapper for optional_sockaddr_argument() (SOCKADDR-FAMILY, BIND, CONNECT, GETNAMEINFO): use with_sockaddr_arg instead of CHECK_SOCKADDR (ACCEPT, GETPEERNAME, GETSOCKNAME, RECVFROM, SENDTO): use with_opt_sa_arg instead of optional_sockaddr_argument (fill_msghdr): accept a vector of pinned_chain_t on MULTITHREAD and pass it on to fill_iovec (RECVMSG, SENDMSG) [MULTITHREAD]: pass pinned_chain_t to fill_msghdr (SOCK-READ, SOCK-WRITE) [MULTITHREAD]: pass pinned_chain_t to fill_iovec 2009-07-30 Vladimir Tzankov * spvw.d (interrupt_thread) [MULTITHREAD]: prevent races when changing/reading pointers to objects on which thread waits 2009-07-29 Vladimir Tzankov * modules/syscalls/calls.c (POSIX::STAT-VFS): move error reporting outside begin_blocking_system_call/end_blocking_system_call. save open file stream on STACK around begin/end_blocking_system_call (POSIX::WAIT): fix GC-safety bugs 2009-07-29 Sam Steingold * Makefile.devel (UPLOAD): add src/NEWS so that SF FRS also gets it 2009-07-28 Sam Steingold * modules/syscalls/calls.c (POSIX::FILE-STAT): move error reporting outside begin_blocking_system_call/end_blocking_system_call (on_pnamestring): save physical namestring on STACK for possible GC in begin_blocking_system_call/end_blocking_system_call Reported by Vladimir Tzankov 2009-07-28 Reini Urban * utils/modprep.lisp (write-string-c-style): do not downcase chars when package is case-sensitive (new-fundef): do not fix case when package is case-sensitive (case-inverted-package-p): add (print-tables-2): use it to invertcase fundef-name 2009-07-28 Vladimir Tzankov * encoding.d (error_uni32_invalid): fix a GC-safety bug 2009-07-28 Sam Steingold * Makefile.devel ($(MAKEMAKE_TMP), src/version.h): when sourcing version.sh, do not expect "." to be in $PATH 2009-07-28 Sam Steingold * version.sh: 2.48 (2009-07-28) 2009-07-27 Sam Steingold * makemake.in (distrib) [win32]: include config.lisp & install.bat Reported by Elena Garrulo 2009-07-27 Vladimir Tzankov [MULTITHREAD]: allow (SETF (MT:SYMBOL-VALUE-THREAD sym thread)) if sym is not bound in thread * zthread.d (thread_symbol_place): return NULL only if the thread is dead or the symbol is not special variable (SYMBOL-VALUE-THREAD): check for per thread binding of symbol 2009-07-26 Vladimir Tzankov [MULTITHREAD]: fix SPVW_PAGES build * spvw_garcol.d (page_contains_pinned_object): use changed pinned_chain_t struct 2009-07-24 Vladimir Tzankov [MULTITHREAD]: do not modify STACK when varobject is pinned * lispbibl.d (struct pinned_chain_t): make pinned object GC invariant. save pointer above STACK at time of pinning - used for unpinning when the STACK is unwound. (pin_varobject_with_pc): pins varobject using already allocated (on C stack) pinned_chain_t struct (pin_varobject): use pin_varobject_with_pc() (unpin_varobjects): removes specified number of objects from the pinned object chain of current thread (unwind_pinned_objects): accept clisp_thread_t struct instead of current thread STACK. use modified pinned_chain_t struct * spvw_garcol.d (gar_col_normal): mark pinned objects 2009-07-24 Sam Steingold fix bug#2826572: regexp-quote doesn't quote correctly extended * modules/regexp/regexp.lisp (regexp-quote): quote "()" in extended expressions 2009-07-22 Sam Steingold * intlog.d (I_I_ash_I): fix a GC-safety bug 2009-07-22 Vladimir Tzankov * spvw_garcol.d (SPLI_REF_LISTS): remove type_accessor argument (gar_col_normal): use new definition 2009-07-16 Sam Steingold * modules/regexp/regexi.c (REGEXP-EXEC): pre-allocate #() (rettype_t, CHECK_RETTYPE): add (REGEXP-EXEC): remove "default: NOTREACHED;" from switch(rettype) 2009-07-14 Sam Steingold * utils/clispload.lsp (*expected-failures*): drop PRINT-LEVEL.8, PRINT-LEVEL.9 because I fixed them in the sources 2009-07-14 Sam Steingold * makemake.in (modcheck): add shell function to unify base-mod-check & full-mod-check target generation 2009-07-12 Reini Urban * makemake.in (full-mod-check): add (mod-check): depend on it 2009-07-10 Sam Steingold * makemake.in (TEXT, LEXE, SHREXT): ${host_os} is "mingw32" on msys/mingw, so fix the 2009-07-01 breakage (DEVPREFIX): only define on cygwin 2009-07-14 Sam Steingold * modules/postgresql/postgresql.lisp (PQexecParams, PQprepare) (PQexecPrepared, PQsendQueryParams, PQsendPrepare) (PQsendQueryPrepared, PQfn, PQescapeByteaConn): use C-ARRAY-PTR instead of C-ARRAY-MAX for :IN parameters Suggested by "Hoehle, Joerg-Cyril" Reported by SOS Sukaeto 2009-07-13 Sam Steingold * zthread.d (MUTEX-NAME, EXEMPTION-NAME): add (check_name_arg): add; use instead of test_stringsymchar_arg to allow any names (strings, symbols, integers &c) * constsym.d, subr.d (mutex_name, exemption_name): add * threads.lisp (MUTEX-NAME, EXEMPTION-NAME): export * constobj.d (type_name_arg): add 2009-07-13 Sam Steingold * constobj.d (printstring_inactive, printstring_recursive): add * io.d (pr_unreadably_with_prefix): rename from pr_unreadably and accept an optional prefix to print before string (pr_unreadably): define using pr_unreadably_with_prefix (pr_orecord): print INACTIVE for dead threads and RECURSIVE recursive mutexes 2009-07-12 Vladimir Tzankov [MULTITHREAD]: use per thread value cells in all DYNBIND frames * eval.d (progv): use Symbol_thread_value() instead of Symbol_value() (bindhooks): ditto * control.d (COMPILER-LET): ditto 2009-07-12 Vladimir Tzankov * threads.lisp (WITH-MUTEX-LOCK): rename WITH-LOCK to WITH-MUTEX-LOCK 2009-07-12 Vladimir Tzankov fix bug#1472478: Crashing CLISP with finalizers + weak hashtables and fix weak references to GC-ed threads objects * spvw_garcol.d (gar_col_normal): mark objects to be released after weak pointers have been cleaned 2009-07-12 Vladimir Tzankov * zthread.d (MAKE-THREAD, MAKE-MUTEX, MAKE-EXEMPTION): allow symbols and characters for :name argument 2009-07-09 Reini Urban * modules/gtk2/gtk.lisp: "#undef interface" because w32api/basetyps.h defines it to "struct" which breaks glade declarations like "(GladeInterface *interface)" * modules/dbus/dbus.lisp: ditto for "(const char *interface)" 2009-07-09 Sam Steingold * modules/syscalls/calls.c (WAIT): use begin_want_sigcld/end_want_sigcld around waitpid/wait4; return symbols for signals using check_signal_reverse * lispbibl.d (begin_want_sigcld, end_want_sigcld) [HAVE_SIGNALS]: export to clisp.h 2009-07-08 Sam Steingold add POSIX:WAIT (calls waitpid or wait4) * modules/syscalls/calls.c (rusage_to_lisp): do not call getrusage (USAGE): call getrusage here (WAIT): implement * modules/syscalls/posix.lisp (wait) [unix]: export * modules/syscalls/configure.in (wait4, sys/wait.h): test 2009-07-08 Sam Steingold * Makefile.devel (update-ansi-tests): use the common-lisp.net SVN repo instead of the GCL CVS 2009-07-07 Sam Steingold * Makefile.devel (gnulib-imported): pass --no-vc-files and --no-libtool to gnulib-tool; do not remove .cvsignore 2009-07-07 Sam Steingold * makemake.in (locale): use $(RMRF) 2009-07-07 Sam Steingold * modules/clx/new-clx/demos/recurrence.lisp (draw-ppict): add (declare (compile)) to avoid stack overflow Reported by Reini Urban 2009-07-07 Vladimir Tzankov * spvw_memfile.d (fill_memdump_header): zero-out header before filling. on x86_64 with MT there was 4 byte padding before _subr_tab_addr and this causes header validation failure (memcmp-ed) in find_memdump() (struct memdump_header_t): rename _per_thread_symvalues to _per_thread_symvalues_count (and use) 2009-07-06 Sam Steingold * lispbibl.d: guard the recently introduced jmp-related exports with "ifdef export_unwind_protect_macros", effectively disabling them 2009-07-06 Sam Steingold * constsym.d (:OPERATION, :OPERANDS): add * error.d (end_error): complete :OPERATION, :OPERANDS for ARITHMETIC-ERROR and its subtypes * aridecl.d (divide_0, error_overflow, error_underflow): push :OPERATION and :OPERANDS * flo_konv.d (error_nan): ditto * intelem.d (BN_ueberlauf): ditto * intlog.d (I_I_ash_I): ditto * intmal.d (mal_ueberlauf): ditto * lfloat.d (error_LF_toolong): ditto Reported by Gabriel Dos Reis 2009-07-06 Sam Steingold * makemake.in (MYIMPROOT): use http://clisp.cons.org/beta instead of http://clisp.podval.org/impnotes/ because the latter has been flaky lately; keep this in sync with doc/Makefile! 2009-07-06 Sam Steingold * modules/clx/new-clx/clx.f (XLIB:ACCESS-HOSTS): check the return value of gethostbyaddr and only call hostent_to_lisp on non-NULL Reported by Reini Urban 2009-07-02 Vladimir Tzankov [MULTITHREAD]: simplify object pinning and export it properly * lispbibl.d (struct pinned_chain_t): redefine. pinned object is always on the stack and pointer to it is kept. export it for modules (pin_varobject, unpin_varobject): do not use UNWIND_PROTECT frame. in case on non-local exit the object will be unpinned from enter_frame_at_STACK (like back_trace is unwound) (unwind_pinned_objects): unpins all objects beyond some position in the stack (enter_frame_at_STACK): use it * spvw_garcol.d (gar_col_normal, fill_relocation_memory_regions) (page_contains_pinned_object): update usage of pinned_chain_t 2009-07-01 Sam Steingold * modules/wildcard/configure.in: use $gl_cv_func_fnmatch_gnu instead of $ac_cv_func_fnmatch_gnu (fnmatch - serial 4); do not link ../gllib/fnmatch.h locally, CPPFLAGS takes care of it 2009-07-01 Sam Steingold * makemake.in (XCPPFLAGS): use a full path for gllib because CPPFLAGS is passed on to module subdirs 2009-07-01 Sam Steingold * _clisp.c (-b): print lisplibdir with printf instead of puts to avoid the woe32 CR confusing cygwin build tools 2009-07-01 Sam Steingold * modules/rawsock/rawsock.c (pin_varobject, unpin_varobject): redefine to NOOP because they are not properly exported yet 2009-07-01 Sam Steingold * makemake.in (HERE_) [host_os=cygwin]: use `cygpath -m` instead of `pwd` to help win32 2009-07-01 Sam Steingold * _clisp.c (usage): include bad option name in error reporting 2009-06-30 Sam Steingold * lispbibl.d (SPint, jmpbufsize, sp_jmp_buf): export to clisp.h (Pseudofun, stringarg, thread_specific_entry, thread_specific_data): use emit_typedef instead of puts 2009-06-30 Sam Steingold * modules/rawsock/rawsock.c (ipcsum, icmpcsum, tcpcsum, udpcsum): declare static to avoid "warning: no previous declaration" 2009-06-30 Sam Steingold * spvw.d (DROP_PRIVILEGES) [!UNIX]: avoid warning: empty body in an if-statement 2009-06-30 Sam Steingold * zthread.d (MAKE-THREAD): CONTROL-ERROR is not a CELL-ERROR 2009-06-30 Vladimir Tzankov [MULTITHREAD]: remove the 128 active threads limit * lispbibl.d (struct clisp_thread_t): add thr_next and thr_prev fields. all threads are kept in double-linked list (register_thread): remove * spvw.d (allthreads): redefine it as structure containing the head and tail of threads linked list (register_thread): remove. the thread is "registered" after its creation (single_running_threadp, current_stack_size, current_stack_base): use new allthreads structure for checking (create_thread): add the newly created thread structure to allthreads (delete_thread): remove thread from allthreads (for_all_threads): redefine to use allthreads structure (install_async_signal_handlers) [WIN32_THREADS]: use maximum possible semaphore count * spvw_memfile.d: use allthreads.head to access single running thread * spvw_global.d (gc_suspend_all_threads): re-implement. it used the index in threads array before * zthread.d (MAKE-THREAD): signal an error if thread creation fails 2009-06-30 Sam Steingold * makemake.in (PRECIOUS_VARS): list all vars for cflags.h and anymodule in one place, keep in sync with ac_precious_vars 2009-06-29 Sam Steingold * modules/rawsock/rawsock.c (parse_buffer_arg): set arg_ to the object to be pinned (with_buffer_arg): add; pin and unpin arg (RECV, RECVFROM, SOCK-READ, SEND, SENDTO, SOCK-WRITE) (IPCSUM, ICMPCSUM, TCPCSUM, UDPCSUM): use it instead of calling parse_buffer_arg directly 2009-06-29 Sam Steingold * win32.d (PROT_NONE, PROT_READ, PROT_READ_WRITE) [HAVE_MPROTECT]: use Unix constants because that's what libgcc uses Reported by Vladimir Tzankov 2009-06-29 Sam Steingold * modules/syscalls/calls.c (CONFSTR): fix STACK handling when res=0 Reported by Reini Urban 2009-06-29 Sam Steingold * makemake.in (DOC): remove editors * doc/editors.txt, doc/extend.txt: remove obsolete files 2009-06-28 Vladimir Tzankov * zthread.d (xlock_lock_helper) [WIN32_THREADS]: fix mutex locking. was typo when renaming xlock_t members 2009-06-27 Vladimir Tzankov * zthread.d (xlock_lock_helper): fix race condition causing deadlock between xlock_lock_helper and xcondition_wait_helper 2009-06-26 Sam Steingold decouple pin_varobject from unprotect_heap_range for the sake of modules * lispbibl.d (unprotect_heap_range): accept a flag instead of a bool (pin_varobject): do not call unprotect_heap_range() (pin_unprotect_varobject): add * stream.d: use pin_unprotect_varobject instead of pin_varobject 2009-06-26 Vladimir Tzankov [MULTITHREAD]: do not use/rely on "invalid" pthread_t value * xthread.d (xlock_t): better members names * zthread.d (xlock_init, xlock_destroy, xlock_lock_helper) (xlock_unlock_helper, xcondition_wait_helper): use the new names (xlock_lock_helper, xlock_unlock_helper): check both _owned and _owner (xlock_unlock_helper): set _owned to false; do not touch _owner * spvw.d (interrupt_thread): do not lock/unlock the internal mutex of the lock waited on. use new xlock_t members names 2009-06-26 Sam Steingold * makemake.in (check-exec-image): use ${TRCR} for cygwin Reported by Reini Urban 2009-06-25 Sam Steingold * glm4/mbrtowc.m4 (gl_MBRTOWC_SANITYCHECK): Include , for the mbtowc declaration. 2009-06-26 Vladimir Tzankov [MULTITHREAD]: fix xlock_t (MUTEX) unlocking * zthread.d (xlock_unlock_helper): set xlock_t _owner to NULL (xlock_lock_helper): add more asserts (MUTEX-LOCK): ditto (thread_cleanup): clear mutex owner before really unlocking it 2009-06-26 Sam Steingold * foreign1.lisp (finalize-coutput-file): avoid warning: deprecated conversion from string constant to 'char*' in the MODULE__name__CONSTANT_MAP_C_STRING function 2009-06-25 Sam Steingold * xthread.d (xlock_t): add _owned field because there are no guaranteed invalid xthread_t values * zthread.d (xlock_init): set _owned to false; do not init _owner (xlock_lock_helper): check _owned instead of _owner; init both (xlock_unlock_helper): set _owned to false; do not touch _owner 2009-06-25 Sam Steingold * pathname.d (directory_search_scandir) [MULTITHREAD]: avoid warning: empty body in an if-statement 2009-06-25 Sam Steingold * lispbibl.d (current_thread_alloccount, gcunsafe_object_t) (tsd_remove_specific, lock_threads, unlock_threads) (signal_timeout_call, handle_pending_interrupts): use (void) for prototypes of functions which take no arguments 2009-06-25 Sam Steingold * lispbibl.d (thread_cleanup): move the prototype here ... * spvw.d, zthread.d: ... from here 2009-06-25 Vladimir Tzankov [MULTITHREAD]: handle interrupts when the thread is still not entirely initialized * spvw.d (handle_pending_interrupts): check *DEFER-INTERRUPTS* for SYMVALUE_EMPTY. it is possible to have interrupts while not yet initialized with NIL * zthread.d (THREAD-INTERRUPT): :OVERRIDE is generalized boolean 2009-06-25 Vladimir Tzankov * threads.lisp (WITH-DEFERRED-INTERRUPTS): reverse arguments. was broken but seemed to be fine since all tests are with single argument 2009-06-25 Vladimir Tzankov * zthread.d (THREAD-INTERRUPT): check that :ARGUMENTS is list (push_interrupt_arguments): no need to check for missing args 2009-06-25 Vladimir Tzankov * threads.lisp (THREAD-KILL): remove 2009-06-25 Vladimir Tzankov * threads.lisp (THREAD-KILL): add :OVERRIDE keyword argument. Allows killing a thread even interrupts are deferred in it 2009-06-25 Vladimir Tzankov [MULTITHREAD]: allow THREAD-INTERRUPT to ignore WITH-DEFERRED-INTERRUPTS * zthread.d (THREAD-INTERRUPT): accept :FUNCTION, :OVERRIDE and :ARGUMENTS keyword arguments (push_interrupt_arguments): helper function to push on foreign thread stack required data for THREAD-INTERRUPT implementation (THREAD-KILL): remove * subr.d, subrkw.d: add :FUNCTION, :OVERRIDE and :ARGUMENTS to THREAD-INTERRUPT arguments (THREAD-KILL): remove * constsym.d: add :OVERRIDE and :FUNCTION symbols (THREAD-KILL): remove * spvw.d (handle_pending_interrupts): ignore WITH-DEFERRED-INTERRUPTS if asked to do so (signal_handler_thread): on SIGINT and fatal signals - force interrupt * threads.lisp (THREAD-KILL): implement via THREAD-INTERRUPT 2009-06-24 Sam Steingold * makemake.in (GLLIB_O): when REPLACE_GETPAGESIZE is 1, add gllib/getpagesize${TOBJ} (just like with gettimeofday) Reported by Yaroslav Kavenchuk 2009-06-23 Sam Steingold * .gdbinit [MULTITHREAD]: suggest "handle SIGUSR1 noprint nostop" 2009-06-23 Sam Steingold * spvw_mmap.d (mprotect) [HAVE_WIN32_VM]: guard the definition with #ifdef HAVE_MPROTECT because mingw may already have it in /lib/gcc/i686-pc-mingw32/3.4.4/libgcc.a(_trampoline.o):(.text+0x10) 2009-06-22 Sam Steingold fix bug#2807311: (expt 10 10000000) segfaults (cf. 2008-07-10, bug#2015118) * intmal.d (I_square_I): tighten the erglen check (use 16-bit intW instead of 32-bit intWC) so that the arithmetic-error "overflow during multiplication of large numbers" is signaled instead of a SP overflow (segfault) which results from __builtin_alloca not checking its argument and overwriting stack 2009-06-22 Sam Steingold * configure.in: restore gt_LC_MESSAGES: removing it removes #undef HAVE_LC_MESSAGES from src/config.h.in 2009-06-22 Sam Steingold * gllib/Makefile.am, gllib/memchr.valgrind, gllib/string.in.h: * glm4/gnulib-cache.m4, glm4/gnulib-comp.m4, glm4/lib-link.m4: * glm4/libsigsegv.m4, glm4/memchr.m4: update from gnulib 2009-06-22 Sam Steingold * Makefile.devel (gnulib-imported): request getpagesize & sys_time * configure.in: do not invoke macros which come from explicitly requested packages because they are already called by gl_INIT (gl_GNU_MAKE, gl_LIBSIGSEGV, gl_FUNC_GETTIMEOFDAY) (gl_HEADER_SYS_TIME_H, gl_FUNC_GETPAGESIZE): explicitly requested (gt_LC_MESSAGES): called by AM_INTL_SUBDIR which is called by AM_GNU_GETTEXT which we call explicitly 2009-06-21 Vladimir Tzankov * type.lisp (thread, mutex, exemption) [MULTITHREAD]: use THREADS instead of MT as package name 2009-06-20 Vladimir Tzankov * spvw.d (create_thread) [WIN32_THREADS]: initialize thread's _signal_reenter_ok on Win32 as well 2009-06-19 Sam Steingold * modules/postgresql/postgresql.lisp (PQexecParams, PQprepare) (PQexecPrepared, PQsendQueryParams, PQsendPrepare) (PQsendQueryPrepared, PQfn): fix the declarations (input parameters were declared as output) Reported by SOS Sukaeto 2009-06-19 Sam Steingold * type.lisp (thread, mutex, exemption) [MULTITHREAD]: add atomic types 2009-06-19 Sam Steingold * modules/postgresql/configure.in: check types Oid and pqbool 2009-06-19 Sam Steingold * foreign1.lisp (size_t, ssize_t): map to CS-CL:symbol-name in *C-TYPE-TABLE*, not to the symbol, as should be done as per DEF-C-TYPE 2009-06-18 Vladimir Tzankov [MULTITHREAD]: use CL:MAKUNBOUND instead of :UNBOUND (removed) * zthread.d (SYMBOL-VALUE-THREAD): use CL:MAKUNBOUND instead of :UNBOUND as second return value * constsym.d (:UNBOUND): remove 2009-06-18 Vladimir Tzankov [MULTITHREAD]: fix possible deadlock in SYMBOL-VALUE-THREAD * zthread.d (thread_symbol_place): do not check arguments. it is called when all_threads lock is held and if GC occurs we will get deadlock (SYMBOL-VALUE-THREAD): check arguments before acquiring all_threads lock (SET-SYMBOL-VALUE-THREAD): ditto 2009-06-17 Vladimir Tzankov * zthread.d (SYMBOL-VALUE-THREAD): return (VALUES NIL :UNBOUND) in case special variable was per thread bound and made unbound via MAKUNBOUND * constsym.d (:UNBOUND) [MULTITHREAD]: define it 2009-06-17 Sam Steingold * clisp-link.in (linkkitdir): when ./linkkit is not found, use `dirname $0`/linkkit because there is one in *LIB-DIRECTORY* 2009-06-17 Sam Steingold * makemake.in (install-bin): install clisp-link using INSTALL_PROGRAM instead of INSTALL_DATA so that it is made executable 2009-06-17 Sam Steingold * glm4/libsigsegv.m4: reverted to serial 3 because serial 4 does not set LIBSIGSEGV properly 2009-06-17 Sam Steingold fix bug#2806563: parse-namestring does not like certain chars * m4/filecharset.m4 (CL_FILECHARSET): use the auto-detection on all platforms, including windows 2009-06-17 Sam Steingold * configure.in: use gl_FUNC_GETPAGESIZE instead of CL_GETPAGESIZE * unix.d (getpagesize): remove prototype * win32.d: include for getpagesize * spvw_mmap.d (getpagesize) [HAVE_WIN32_VM]: remove, rely on gnulib * m4/getpagesize.m4: remove, rely on glm4/getpagesize.m4 * m4/mprotect.m4 (CL_MPROTECT): require gl_FUNC_GETPAGESIZE instead of CL_GETPAGESIZE 2009-06-17 Vladimir Tzankov * zthread.d (xcondition_wait_helper) [POSIX_THREADS]: fix infinite waiting on condition variable (was a typo with bad consequences) 2009-06-16 Sam Steingold * stream.d (handle_direction_compatible): when fcntl() fails, return false - the handle is likely closed; errno = EBADF (make_standard_output_file_stream): accept handle, call handle_direction_compatible() (make_standard_error_file_stream): remove (get_standard_output_file_stream): pass stdout_handle to make_standard_output_file_stream() (get_standard_error_file_stream): use make_standard_output_file_stream(stderr_handle) (make_terminal_io): use handle_direction_compatible() in addition to pipe_file_handle_p() to decide whether to create a terminal or a standard file stream; this fixes bug#2805778: when a standard handle is invalid, an empty stream is used * makemake.in (check-script): add a test for bug#2805778 2009-06-15 Sam Steingold * version.sh: 2.47++ (2009-06-15) 2009-06-15 Sam Steingold * gllib/getpagesize.c, gllib/mbsrtowcs-state.c, gllib/mbsrtowcs.c: * gllib/memchr.c, gllib/string.in.h, gllib/strnlen1.c, gllib/strnlen1.h: * glm4/00gnulib.m4, glm4/getpagesize.m4, glm4/mbsrtowcs.m4: * glm4/memchr.m4, glm4/mmap-anon.m4, glm4/string_h.m4: add from gnulib * build-aux/config.guess, build-aux/config.sub, build-aux/depcomp: * build-aux/install-sh, build-aux/missing, gllib/config.charset: * gllib/gettext.h, gllib/gettimeofday.c, gllib/localcharset.c: * gllib/Makefile.am, gllib/mbrtowc.c, gllib/regex_internal.h: * gllib/stdint.in.h, gllib/stdlib.in.h: * gllib/uniname/gen-uninames.lisp, gllib/uniname/uniname.c: * gllib/uniname/uninames.h, gllib/unistd.in.h, gllib/uniwidth/width.c: * gllib/wchar.in.h, glm4/btowc.m4, glm4/extensions.m4, glm4/fnmatch.m4: * glm4/gnulib-common.m4, glm4/gnulib-comp.m4, glm4/include_next.m4: * glm4/lib-link.m4, glm4/lib-prefix.m4, glm4/libsigsegv.m4: * glm4/link-follow.m4, glm4/locale-fr.m4, glm4/locale-ja.m4: * glm4/locale-zh.m4, glm4/mbrtowc.m4, glm4/multiarch.m4, glm4/regex.m4: * glm4/size_max.m4, glm4/stdint.m4, glm4/stdlib_h.m4, glm4/unistd_h.m4: * glm4/wchar.m4, glm4/wcrtomb.m4: update from gnulib 2009-06-15 Sam Steingold * Makefile.devel (update-gnulib): use git when it is available 2009-06-15 Sam Steingold * modules/dbus/dbus.lisp: sync with dbus-1.2.14 2009-06-14 Sam Steingold * floatprint.lisp (decode-float-decimal): only widen UP [a1;a2] when binmant is even 2009-06-13 Vladimir Tzankov * spvw_memfile.d (loadmem_from_handle): update only the objects loaded from the image. fixes gcsafety build (and some undefined behavior in others) 2009-06-12 Sam Steingold * floatprint.lisp (decode-float-decimal): only widen [a1;a2] when binmant is even - because of normal IEEE rounding mode when even numbers represent the inclusive intervals 2009-06-11 Sam Steingold * clisp-link.in (add-module-set): remove command (add-module-sets): rename to add (create-module-set): rename to create * makemake.in (base, full): use add instead of add-module-sets 2009-06-09 Vladimir Tzankov [MULTITHREAD]: add WITH-DEFERRED-INTERRUPTS (i.e. WITHOUT-INTERRUPTS) * constsym.d (*DEFER-INTERRUPTS*, *DEFERRED-INTERRUPTS*): declare * threads.lisp (*DEFER-INTERRUPTS*, *DEFERRED-INTERRUPTS*): ditto. also initialize them with *DEFAULT-SPECIAL-BINDINGS* (WITH-DEFERRED-INTERRUPTS): add and export it * zthread.d (thread_stub): initialize per thread values of *DEFER-INTERRUPTS* and *DEFERRED-INTERRUPTS* in case user use some "bad" initial bindings (THREAD-INTERRUPT): reorder the arguments on the foreign stack * spvw.d (mt_main_actions): initialize per thread values of *DEFER-INTERRUPTS* and *DEFERRED-INTERRUPTS* (handle_pending_interrupts): in case we should defer interrupt - add it *DEFERRED-INTERRUPTS*. handle new stack order (signal_handler_thread): reorder the arguments on the foreign stack 2009-06-07 Vladimir Tzankov [MULTITHREAD]: add partial support for thread interruption on WIN32 * lispbibl.d (GC_SAFE_REGION_END_i): handle pending interrupts depending on thread's flavor (install_async_signal_handlers, thr_signal_handler) (SIG_THREAD_INTERRUPT, SIG_TIMEOUT_CALL): make them local in spvw.d (signal_timeout_call): function to announce new timeout call. used by CALL-WITH-TIMEOUT * zthread.d (CALL-WITH-TIMEOUT): enable WIN32_THREADS. use signal_timeout_call() for queuing timeout call (THREAD-INTERRUPT): enable WIN32_THREADS * xthread.d (xthread_sigmask, xthread_signal) [WIN32_THREADS]: remove * spvw.d: unify POSIX and WIN32 signal handling (signal_wait): waits for asynchronous signal (signal_timeout_call): announce (WIN32 and POSIX) new timeout call (schedule_alarm): schedule next timeout call. NB: to be called only from signal handler thread (console_handler): CTRL-C handler for WIN32_THREADS (interrupt_thread) [WIN32_THREADS]: delay handling in case we are in blocking system call. the interrupt will be executed after the call returns (signal_handler_thread): use signal_wait() and schedule_alarm(). 2009-06-05 Vladimir Tzankov [MULTITHREAD]: add timed wait on mutexes and exemptions * constsym.d: add :TIMEOUT symbol if SOCKET_STREAMS is not defined * spvw.d (interrupt_thread) [POSIX_THREADS]: use xmutex_raw_xxxx() functions instead of pthreads ones. WIN32 will use soon the same function (handle_pending_interrupts) [WIN32_THREADS]: add dummy one. not implemented * subr.d, subrkw.d: (MUTEX-LOCK, EXEMPTION-WAIT): add :TIMEOUT keyword parameter * xthread.d (xlock_t): use it in both - WIN32_THREADS and POSIX_THREADS (xmutex_raw_trylock): add * zthread.d (MUTEX-LOCK, EXEMPTION-WAIT): add :TIMEOUT parameter. Return T on mutex lock/signaled exemption and NIL on timeout (MUTEX-UNLOCK): do not return any value (win32_xcondition_wait) [WIN32_THREADS]: implements timed wait on exemption (xlock_init, xlock_destroy, xlock_lock_helper, xlock_unlock_helper) (xcondition_wait_helper): implement the for both WIN32_THREADS and POSIX_THREADS 2009-06-05 Vladimir Tzankov [MULTITHREAD]: do not use MIN()/MAX() macroses * spvw_garcol.d: remove MIN()/MAX() macro definitions (gc_sweep2_varobject_page): do not use MAX() macro * spvw_genera1.d (build_old_generation_cache): ditto 2009-06-01 Vladimir Tzankov [MULTITHREAD]: fix SIGSEGV on nested interrupts with non-local exit * spvw.d (interrupt_thread_signal_handler) [MULTITHREAD]: just call handle_pending_interrupts() if it is safe (handle_pending_interrupts) [MULTITHREAD]: do not use clisp_thread_t _pending_interrupts as a counter but zero it (interrupt_thread): always increase thread's _pending_interrupts * zthread.d (thread_cleanup): do not zero _thread_interrupt (xlock_lock_helper): in case of pending interrupt handle it after the control gets into lisp land 2009-05-25 Vladimir Tzankov * constsym.d (MAKE-LOCK, THREAD-LOCK, THREAD-UNLOCK) (*THREAD-WHOSTATE*) [MULTITHREAD]: remove obsolete symbols 2009-05-24 Vladimir Tzankov [MULTITHREAD]: thread-interrupt and thread-kill cleanup * lispbibl.d (struct clisp_thread_t): remove _thread_exit_tag. use global exit tag (defined in constobj.d). add _thread_is_dying - when true - the thread is in final cleanup state and should not be interrupted (no need for locking when we lookup on it since when we do so - the thread is "suspended"). * constobj.d (thread_exit_tag): add global tag used by THREAD-KILL to terminate thread * spvw_global.d (suspend_thread): accept lisp thread record as parameter. return true if the thread is still alive. obtain and hold the threads lock (allthreads_lock) if asked (resume_thread): accept lisp thread record as parameter and release the threads lock (allthreads_lock) if asked * spvw.d (signal_handler_thread): use new suspend/resume_threads (interrupt_thread): do not interrupt the thread if it is dying * zthread.d (thread_cleanup): mark the thread as dying. clear pending interrupts (if any). do not establish driver frame since we cannot be interrupted here anymore (thread_stub): use the global thread_exit_tag (MAKE-THREAD): ditto (do not create new exit tag) (THREAD-KILL): just call THREAD-INTERRUPT (do not check anything) (THREAD-INTERRUPT): re-implement it. use changed suspend/resume_thread 2009-05-23 Vladimir Tzankov * lispbibl.d (clisp_thread_t) [MULTITHREAD]: export _raw_wait_mutex and _pending_interrupts to clisp.h (handle_pending_interrupts): ditto 2009-05-22 Vladimir Tzankov * spvw_garcol.d (fill_varobject_heap_holes) [MULTITHREAD]: fix heap hole filling for very large holes (>arraysize_limit_1 bytes) 2009-05-21 Vladimir Tzankov [MULITHREAD]: keep mutex records consistent in case of interrupts * lispbibl.d (GC_SAFE_REGION_END_i): was GC_SAFE_REGION_END(). add statement to be executed when the control gets to lisp land (GC_SAFE_REGION_END): use the above and handle pending interrupts at the end (GC_SAFE_REGION_END_WITHOUT_INTERRUPTS): ends GC safe regions and does not handle pending interrupts * zthread.d (MUTEX-LOCK): update mutex record before executing (if any) pending interrupts since there may be non-local exit (EXEMPTION-WAIT): ditto 2009-05-21 Vladimir Tzankov [MULTITHREAD]: POSIX compliant signal handling (again) * xthread.d: remove SOLARIS_THREADS (on Solaris POSIX_THREADS should be fine) (struct xlock_t): new xmutex_t representation for POSIX_THREADS. it is recursive lock that allows "interruptable" timed waits (xlock_init, xlock_destroy, xlock_lock_helper, xlock_unlock_helper): functions for dealing with xlock_t (implemented in zthread.d) (xcondition_wait_helper): "interruptable" waiting on exemption (xmutex_t): define it as xlock_t (xthread_init) [POSIX_THREADS]: do nothing (xmutex_xxx macros): use xlock_xxx (xmutex_raw_t): native pthread_mutex_t. used for thread suspend/resume (xmutex_raw_xxx macros): macros for working with xmutex_raw_t * lispbibl.d (clisp_thread_t): add _wait_condition, _wait_mutex, _raw_wait_mutex. if the thread is blocked on some of these non-reentrant objects - interrupt will be marked as pending. add _pending_interrupts count of pending interrupts. _gc_suspend_lock is xmutex_raw_t now (handle_pending_interrupts): new global function to be called to execute deferred interrupts (if any) at appropriate places (HANLDE_PENDING_INTERRUPTS): helper macro for calling the above. used in GC_SAFE_xxx macros (GC_SAFE_ACK_SUSPEND_REQUEST_,GC_SAFE_REGION_END): use xmutex_raw_xxx and HANLDE_PENDING_INTERRUPTS. set/unset thread's _raw_wait_mutex (interrupt_thread): new global function for interrupting thread based on its current state (GC_SAFE_MUTEX_LOCK): set/unset thread's _wait_mutex * zthread.d (THREAD-INTERRUPT): use interrupt_thread (EXEMPTION-WAIT): use HANDLE_PENDING_INTERRUPTS. set/unset thread's _wait_condition (xlock_init, xlock_destroy, xlock_lock_helper, xlock_unlock_helper): implementation of xlock_t operations * spvw.d (interrupt_thread): implement it. if the thread is blocked in non-reentrant function (pthreads) mark the interrupt as pending and take appropriate actions (handle_pending_interrupts): implement it (interrupt_thread_signal_handler): execute the interrupt function immediately or mark it as pending in case the thread will be resumed shortly (and is not safe to execute immediately) (signal_handler_thread): use interrupt_thread * spvw_global.d (gc_suspend_all_threads, gc_resume_all_threads) (suspend_thread, resume_thread): use xmutex_raw_xxx macros 2009-05-18 Sam Steingold * makemake.in (anymodule): augment patch 2006-05-10 to respect CPPFLAGS, CXXFLAGS, and LDFLAGS in addition to CC and CFLAGS Reported by Stelian Ionescu 2009-05-17 Sam Steingold * reploop.lisp (show-local-symbols): new function (commands0, commands1): access it via LocalSymbols and :ls 2009-05-17 Sam Steingold * defs2.lisp (trim-if): new user function 2009-05-17 Sam Steingold * modules/i18n/i18n.lisp (copy-locale-conv): export from I18N instead of keeping it in CL-USER 2009-05-17 Sam Steingold * io.d (WHITESPACEP): use VALUES1 2009-05-14 Sam Steingold * lisparit.d (FLOAT-SCALE-EXPONENT): fix last patch: RA_F_float_F returns nullobj when overflow is ignored; check its return value 2009-05-14 Sam Steingold finish last patch * modules/libsvm/Makefile (clean): also remove svm$(SHREXT) * modules/libsvm/link.sh (file_list): use $(SHREXT) * makemake.in (echo_dist_modules): pass $(SHREXT) to make 2009-05-14 Vladimir Tzankov * stream.d (init_streamvars) [MULTITHREAD]: clear per thread bindings loaded from image (if any) 2009-05-14 Vladimir Tzankov [MULTITHREAD]: persist thread (single one) symvalues * spvw_memfile.d (savemem) [MULTITHREAD]: save thread special variables symvalues (loadmem_from_handle) [MULTITHREAD]: load thread symvalues 2009-05-13 Sam Steingold * format.lisp (format-float-to-string, format-general-float): revert the 2009-01-26 patch (no longer necessary given the latest fixes) 2009-05-13 Sam Steingold support win32 in modules which compile to DLLs * modules/libsvm/Makefile (SHREXT): use it instead of literal .so * modules/libsvm/libsvm.lisp (default-foreign-library): type depends on the platform * modules/libsvm/link.sh: pass SHREXT=${SHREXT} to make * makemake.in (anymodule): ditto * clisp-link.in: set SHREXT=@SHREXT@ before calling link.sh 2009-05-12 Sam Steingold * lisparit.d (FLOAT-SCALE-EXPONENT): when 10^q=x, return (1/10,q+1) to handle 1d23 properly 2009-04-12 Sam Steingold * floatprint.lisp (decode-float-decimal): widen [a1;a2] to print 1d23 without ...99999... 2009-05-09 Vladimir Tzankov * spvw_garcol.d (SPLIT_REF_LISTS): use alive(). fixes collection of thread/mutex/exemption records with SPVW_PURE 2009-05-09 Vladimir Tzankov * spvw_weak.d (activate_weak) [MULTITHREAD]: fix gcsafety. do not allow GC while waiting on all_weakpointers_lock 2009-05-08 Sam Steingold fix bug#2787617 Segfault on encode-universal-time on Windows * time.d (seconds_west): check localtime() & gmtime() return values 2009-05-08 Vladimir Tzankov * lispbibl.d (current_thread_impl) [WIN32_THREADS]: use TlsGetValue() when exported to clisp.h 2009-05-07 Sam Steingold fix bug#2788209: *args* contains a mix of old args and new args * spvw.d (main_actions): reset *ARGS* when argv_execute_args is empty * makemake.in (check-exec-image): add two tests for this bug 2009-05-07 Vladimir Tzankov * zthread.d (thread_cleanup): fix SIGSEGV if GC happens while O(all_mutexes) is traversed 2009-05-07 Vladimir Tzankov [WIN32_THREADS]: export current_thread() in clisp.h * lispbibl.d (current_thread_impl) [WIN32_THREADS]: was current_thread(). Also export it to clisp.h 2009-05-07 Sam Steingold * constobj.d (load_extra_file_types): remove the leading dot Reported by Yaroslav Kavenchuk 2009-05-04 Sam Steingold * makemake.in (anymodule): use "clisp${TEXE}" instead of "clisp", which fixes the 2009-01-06 patch for mingw Reported by Yaroslav Kavenchuk 2009-04-30 Vladimir Tzankov [MULTITHREAD]: mutex locking cleanup * pathname.d (openp) [MULTITHREAD]: use GC_SAFE_MUTE_(UN)LOCK * stream.d (get_open_files_lock) [MULTITHREAD]: ditto * record.d (FINALIZE) [MULTITHREAD]: ditto * spvw_weak.d (activate_weak) [MULTITHREAD]: ditto 2009-04-30 Vladimir Tzankov [MULTITHREAD]: revert parts of last commit. Signal handling is not POSIX compliant now (too much inconsistencies and race conditions were introduced) * lispbibl.d [MULTITHREAD]: remove HADLE_PENDING_INTERRUPTS_XXX and its wrappers * spvw.d [MULTITHREAD]: revert was changes. use restartable system calls * unixaux.d [MULTITHREAD]: do not use handle_pending_interrupts on EINTR * xthread.d: remove xlock_t * zthread.d: ditto * time.d: revert 2009-04-26 Vladimir Tzankov [MULTITHREAD]: POSIX compliant signal handling (and new mutex lock) * lispbibl.d: export to clisp.h xlock_t (for POSIX_THREADS) (Mutex): make xmu_system pointer (malloc()-ed). the system object should be valid across GC (while waiting on mutex GC may run and relocate the Mutex record). (Exemption): ditto (for xco_system) (clisp_thread_t): add _pending_interrupt_count and export it. on async interrupt (POSIX signal) it is incremented (and on the LISP stack we have what has to be executed). (HANDLE_PENDING_INTERRUPTS_NOGC): executes pending interrupts. to be called when GC cannot execute in parallel (in not GC safe regions) (HANDLE_PENDING_INTERRUPTS_GC): executes pending interrupts. to be called while running in GC safe regions (GC may run in parallel). (handle_pending_interrupts_gc, handle_pending_interrupts_nogc): inline helper functions for the above two (GC_SAFE_MUTEX_LOCK): pass to system functions/macros real pointer to the OS mutex object. * spvw_typealloc.d (allocate_mutex): allocate (via malloc()) the OS xmutex_t (address should be the same across GC) (allocate_exemption): ditto * spvw_memfile.d (loadmem_from_handle): allocate OS object for mutexes and exemption from image * spvw.d (interrupt_thread_signal_handler): just increase thread's _pending_interrupt_count. the interrupt will be handled later (install_async_signal_handlers): let signals cause "slow" system calls return EINTR instead of automatically retrying (TODO: socket.d) (recursive_mutexattr): remove * xthread.d: remove SOLARIS_THREADS (on Solaris POSIX_THREADS should be fine) (struct xlock_t): new xmutex_t representation for POSIX_THREADS. it is recursive lock that allow "interruptible" (via polling) timed waits on pthread_mutex_t (XLOCK_WAIT_MSEC): default poll interval on mutex and exemptions in order to be interruptible. see comments (xlock_init, xlock_destroy, xlock_lock_helper, xlock_unlock_helper): functions for dealing with xlock_t (implemented in zthread.d) (xcondition_wait_helper): "interruptible" waiting on exemption (xmutex_t): define it is as xlock_t (xthread_init) [POSIX_THREADS]: do nothing (xmutex_xxx macros): use xlock_xxx (MAX_SEMAPHORE_COUNT) [WIN32_THREADS]: use maximum allowed value (Win32 threads currently do not support interruptions) * zthread.d (release_mutexes): free malloc()-ed memory for the OS object (release_exemptions): ditto (xlock_init, xlock_destroy, xlock_lock_helper, xlock_unlock_helper): implementation of xlock_t operations (xcondition_wait_helper): implementation * unixaux.d: handle EINTR return from system calls by executing pending interrupts (if any) * time.d (SYSTEM::%SLEEP): use handle_pending_interrupts_nogc() 2009-04-26 Vladimir Tzankov prevent possible deadlock on async interrupts * stream.d (add_to_open_streams) [MULTITHREAD]: allocate new cons before obtaining the lock. it is possible while allocating new cons to get an async interrupt that will exit non-locally - thus not releasing open_files_lock 2009-04-26 Vladimir Tzankov [MULTITHREAD]: fix removal of multiple times pinned objects * spvw_garcol.d (fill_relocation_memory_regions) [MULTITHREAD]: fix removal of multiple times pinned objects 2009-04-17 Sam Steingold * m4/ffcall.m4: fix libffcall download url 2009-04-02 Sam Steingold * modules/libsvm/libsvm.lisp: Upgrade libsvm to 2.89 (svm_print_string): renamed from print_string 2009-04-02 Vladimir Tzankov [MULTITHREAD]: remove functions not suitable for preemptive MT * zthread.d (THREAD-WAIT, THREAD-STATE) [MULTITHREAD]: remove * constsym.d (THREAD-WAIT, THREAD-STATE) [MULTITHREAD]: ditto * subr.d (THREAD-WAIT, THREAD-STATE) [MULTITHREAD]: ditto * threads.lisp (*THREAD-WHOSTATE*, THREAD-WHOSTATE MAKE-LOCK) (THREAD-LOCK, THREAD-UNLOCK) [MULTITHREAD]: remove 2009-03-23 Vladimir Tzankov [MULTITHREAD]: Fix uninitialized package mutexes * spvw.d (initmem) [MULTITHREAD]: initialize O(all_mutexes) * constobj.d (all_mutexes) [MULTITHREAD]: do not initialize 2009-03-20 Vladimir Tzankov [MULTITHREAD]: FreeBSD build fixes * lispbibl.d (per_thread) [MULTITHREAD]: gcc on FreeBSD supports __thread qualifier * xthread.d (PTHREAD_MUTEX_RECURSIVE_NP) [MULTITHREAD]: define it on FreeBSD 2009-03-17 Vladimir Tzankov faster re-entrant circularity detection * spvw_circ.d (pointer_set, pointer_set_init, pointer_set_free) (pointer_set_insert_aux, pointer_set_insert): add. implements simple open addressing hash set based on the object address in the lisp heap. use it by default 2009-02-27 Vladimir Tzankov * eval.d (interpret_bytecode_ JMP) [MULTITHREAD]: remove GC safe points at JMP instructions. currently this damages heap 2009-02-27 Vladimir Tzankov * spvw_genera1.d (build_old_generation_cache) [MULTITHREAD]: merge PROT_READ_WRITE areas. fixes corner cases with pinned objects that share physical memory pages 2009-02-27 Vladimir Tzankov [MULTITHREAD]: release all thread resources upon termination * lispbibl.d (WITH_STOPPED_THREAD): remove (was used only by THREAD-INTERRUPT and is not suitable anymore) (GC_SAFE_POINT_IF): add GCTRIGGER() in case of suspension (delete_thread): remove "full" parameter. all resources are released always * spvw.d (create_thread): initialize _index field of the new thread with invalid value (delete_thread): remove "full" parameter. release all allocated memory. (signal_handler_thread): do not check whether thread to be interrupted is alive (since it is). * spvw_global.d (suspend_thread, resume_thread): ditto * spvw_garcol.d (gar_col_normal): change the condition for checking whether thread is running or terminated (gar_col_done): update new references only of alive threads * zthread.d (release_threads): do nothing (everything is freed by delete_thread). left since in future may be useful (thread_stub): prevent killing while running in thread_cleanup() (remove_timeout_call): do not allow to be interrupted (by not using "GC safe" way for spinlock acquiring (THREAD-KILL): change thread alive check (THREAD-ACTIVE-P): ditto (THREAD-INTERRUPT): reimplement (SYMBOL-VALUE-THREAD, SET-SYMBOL-VALUE-THREAD): lock the threads. prevents thread termination while working with its symvalues 2009-02-26 Vladimir Tzankov * eval.d (interpret_bytecode_ JMP) [MULTITHREAD]: preserve mv_space in case of suspend request 2009-02-25 Sam Steingold * modules/readline/readline.lisp: use (:return-type nil) instead of (:return-type) which works too but is not officially documented 2009-02-25 Sam Steingold * modules/readline/readline.lisp: upgrade from readline 5.2 to 6.0 (alphabetic, free, echo-signal-char, gnu-readline-p, display-prompt) (editing-mode-emacs, editing-mode-vi, insert-mode-overwrite) (insert-mode-insert, explicit-arg, numeric-arg, executing-macro) (filename-quoting-desired, attempted-completion-over) (completion-type, completion-invoking-key) (completion-query-items, completion-append-character) (completion-suppress-append, completion-quote-character) (completion-found-quote, completion-suppress-quote) (sort-completion-matches, completion-mark-symlink-dirs) (ignore-completion-duplicates, inhibit-completion): add * modules/readline/configure.in: check for the new features 2009-02-24 Vladimir Tzankov add GC safe points before JMP instructions and in GO special form * lispbibl.d (GC_SAFE_ACK_SUSPEND_REQUEST_) [MULTITHREAD]: helper macro that acknowledges suspend request and waits for thread resume (GC_SAFE_POINT_IF): was GC_SAFE_POINT_ELSE. Check for suspend request and executes one of its parameters (GC_SAFE_SPINLOCK_ACQUIRE): use it * control.d (GO) [MULTITHREAD]: add safe point in order to be possible to interrupt infinite non-consing loop (in interpreter) * eval.d (interpret_bytecode_ JMP) [MULTITHREAD]: ditto (in bytecode) 2009-02-22 Vladimir Tzankov * zthread.d (EXEMPTION-WAIT): allow recursive mutex - but enforce to be locked just once by the calling thread (otherwise error is signaled) 2009-02-22 Vladimir Tzankov * zthread.d (EXEMPTION-WAIT): do not allow recursive mutexes. this may cause really weird hard to debug errors. see APPLICATION USAGE at: http://opengroup.org/onlinepubs/007908775/xsh/pthread_mutexattr_settype.html 2009-02-13 Sam Steingold * .gdbinit (error_notreached): replaces fehler_notreached 2009-02-12 Sam Steingold avoid preprocessor instructions inside macro invocations * spvw_garcol.d (fill_relocation_memory_regions): define SET_HEAPNR and MARK_GEN1 for use in for_all_threads() 2009-01-26 Sam Steingold * format.lisp (format-float-to-string): return the 6th value: roundup, meaning that rounding up 9 -> 10 lengthens the number (format-general-float): use it to fix (FORMAT NIL "~G" 1.0d24) 2009-02-11 Vladimir Tzankov avoid preprocessor instructions inside macro invocations * spvw.d (ENABLE_DUMMY_ALLOCCOUNT) [MULTITHREAD & DEBUG_GCSAFETY]: toggle the dummy alloccount when executing in signal handling thread - no lisp thread is associated with it and no real alloccount (signal_handler_thread): use it 2009-02-10 Sam Steingold avoid preprocessor instructions inside macro invocations * error.d (uint_type_object, sint_type_object): add (check_uint_replacement, check_sint_replacement): use them (ulong_type_object, slong_type_object): add (check_ulong_replacement, check_slong_replacement): use them * spvw_genera1.d (build_old_generation_cache): take #ifdef out of dotimespL 2009-02-06 Vladimir Tzankov * lispbibl.d (pin_varobject): oops. revert: objects of type gcv_object_t are verboten outside of GC 2009-02-06 Vladimir Tzankov * lispbibl.d (ASSERT_SAFE_TO_PIN) [MULTITHREAD]: aborts if pin_varobject() is used when GC can run at the same time (only with DEBUG_SPVW) (pin_varobject) [MULTITHREAD]: use it (ASSERT_VALID_UNPIN) [MULTITHREAD]: checks that the object to be unpinned is at the start of pinned objects chain. this should always be the case (there are unwind-protect frames for every pinned object) (unpin_varobject_i): use it. simplify it 2009-02-06 Vladimir Tzankov * spvw_global.d (gc_suspend_all_threads): hold the threads lock while all threads are suspended. prevents race condition between delete_thread() and GC (allthreads[] is changed by delete_thread() while GC may use it) (gc_resume_all_threads): release the threads lock acquired by gc_suspend_all_threads() * spvw.d (delete_thread): do not destroy twice _gc_suspend_lock 2009-02-05 Vladimir Tzankov * spvw_genera1.d (build_old_generation_cache) [MULTITHREAD]: fix page protection when multiple "writeable" (PROT_READ_WRITE) pinned objects share the same physical memory page 2009-02-05 Vladimir Tzankov * spvw_global.d: comments (suspend_thread): release heap lock only if it was acquired by us (resume_thread): acquire heap lock only if not already owned * lispbibl.d: comments 2009-02-04 Vladimir Tzankov * spvw_garcol.d (fill_relocation_memory_regions) [MULTITHREAD]: fix corner case: multiple times pinned object at the start of the heap 2009-02-04 Vladimir Tzankov * spvw_genera1.d (build_old_generation_cache) [MULTITHREAD]: fix page protection when multiple heap areas should be left with PROT_READ_WRITE 2009-02-04 Vladimir Tzankov * lispbibl.d [MULTITHREAD]: export to clisp.h only the types (PERFORM_GC) [MULTITHREAD]: set the valid stack range of current thread in debug builds * xthread.d (testandset) [MIPS]: fix the macro argument 2009-02-04 Vladimir Tzankov export low-level threads internals to clisp.h * xthread.d: convert all functions to macros in order to export them to clisp.h. POSIX mutexes code cleanup * spvw.d (recursive_mutexattr): always defined in POSIX_THREADS * lispbibl.d: export to clisp.h required low-level threads macros. do not include xthread.c from clisp.h * makemake.in (LINKKIT): revert last commit 2009-02-01 Vladimir Tzankov * makemake.in (LINKKIT): add xthread.c in threads builds 2009-02-01 Vladimir Tzankov * unix.d (SETSID): use setsid() if available (do not emulate it via setpgid()). fixes MT builds on some linux distributions. 2009-01-30 Vladimir Tzankov * spvw.d (signal_handler_thread): handle ualarm() failures when run in virtual machines (timer resolution is too low) 2009-01-29 Vladimir Tzankov * spvw_memfile.d (find_memdump): ignore _per_thread_symvalues in the saved header when checking image compatibility. they do not survive image save/load 2009-01-28 Sam Steingold * lispbibl.d (SYMBOL_TLS_INDEX_NONE): cast to aint, not uintL 2009-01-28 Vladimir Tzankov * lispbibl.d (struct symbol_): make its size always be multiple of varobject_alignment. fixes 64 bit threads (MT) build 2009-01-21 Sam Steingold * lisparit.d (FLOAT-SCALE-EXPONENT): restore the mantissa precision before comparing it to 1 2009-01-19 Sam Steingold * lispbibl.d (error_c_integer): export to clisp.h to support error_sint et al * foreign1.lisp (convert-from-foreign): fix C-POINTER handling this fixes the 2008-12-19 patch 2009-01-18 Sam Steingold * format.lisp (format-float-for-e): before increasing mantwidth, make sure it is not NIL 2009-01-18 Vladimir Tzankov * spvw.d (quit_instantly): make it nonreturning_function 2009-01-18 Sam Steingold fix bug#1007358: LOG of large integers is broken * realtran.d (extend2_digits, I_ln_F, RA_ln_F, F_extend_lnx1_F) (RA_ln1_F): add (R_ln1_R): use RA_ln1_F and F_extend_lnx1_F (R_ln_R): use RA_ln_F 2009-01-17 Vladimir Tzankov * win32aux.d [WIN32_THREADS]: #ifdef the globals not used in MT builds (aux_event): define it to NULL in MT builds (can be done in single thread as well - no file is openned with FILE_FLAG_OVERLAPPED) 2009-01-17 Vladimir Tzankov * spvw.d (current_stack_base) [WIN32_THREADS] : fix g++ compilation * stream.d (low_close_socket) [WIN32_NATIVE]: fix GC-safety bug (low_fill_buffered_socket) [WIN32_NATIVE]: fix GC-safety bug * pathname.d (rename_file): fix GC-safety bug 2009-01-16 Sam Steingold * subr.d (LISPFUN_D): fix a typo in the secfc argument 2009-01-16 Vladimir Tzankov * pathname.d (file_exists, access0) [WIN32_NATIVE]: fix GC-safety bug (open_file): fix GC-safety bug 2009-01-16 Vladimir Tzankov WIN32_THREADS with mingw * lispbibl.d (current_thread) [WIN32_NATIVE]: preserve GetLastError() value when USE_CUSTOM_TLS=1 (since TlsGetValue() changes it) * xthread.d [WIN32_NATIVE]: critical section functions do not change last error nor do they return a value (xthread_signal, xthread_sigmask) [WIN32_NATIVE]: remove (xcondition_init) [WIN32_NATIVE]: make it expression (condition_signal) [WIN32_NATIVE]: fix a typo * spvw_garcol.d (MIN, MAX): define them if not available (mingw) * time.d (%SLEEP) [WIN32_NATIVE]: allow GC while sleeping (Win32) * win32aux.d (DoInterruptible) [WIN32_NATIVE]: just calls the function in MT builds (sleep, msleep) [WIN32_NATIVE]: do not use DoInterruptible() in MT builds (done_win32) [WIN32_NATIVE]: #ifdef code for CTRL-C/BREAK cleanup 2009-01-16 Vladimir Tzankov * spvw.d (quit_instantly): now function. longjmp() across threads is not good (main): move cleanup code to quit_instantly() (signal_handler_thread) [WIN32_NATIVE]: empty (TODO) stub for "signal" handling with WIN32_THREADS 2009-01-16 Sam Steingold * m4/general.m4 (CL_MODULE_COMMON_CHECKS): use AC_REQUIRE for AC_CONFIG_AUX_DIR instead of calling it explicitly because other REQUIREd macros need AC_CONFIG_AUX_DIR's result and REQUIREd macros are called before everyting in the macro is executed. See . 2009-01-15 Sam Steingold * m4/general.m4 (CL_MODULE_COMMON_CHECKS): move AC_CONFIG_AUX_DIR up (CL_CONFIG_SUBDIRS): remove unused obsolete macro 2009-01-14 Sam Steingold * Makefile.devel (gnulib-imported): remove src/gllib/.cvsignore 2009-01-14 Sam Steingold * gllib/btowc.c, gllib/mbrtowc.c, gllib/mbsinit.c, gllib/verify.h: * gllib/wcrtomb.c, glm4/btowc.m4, glm4/locale-fr.m4, glm4/locale-ja.m4: * glm4/locale-zh.m4, glm4/mbrtowc.m4, glm4/mbsinit.m4: * glm4/multiarch.m4, glm4/wcrtomb.m4: add from gnulib * build-aux/config.guess, build-aux/config.sub, build-aux/missing: * gllib/Makefile.am, gllib/regcomp.c, gllib/regex_internal.c: * gllib/regex_internal.h, gllib/regexec.c, gllib/stdint.in.h: * gllib/stdlib.in.h, gllib/unistd.in.h, gllib/wchar.in.h: * gllib/wctype.in.h, glm4/alloca.m4, glm4/codeset.m4: * glm4/extensions.m4, glm4/fnmatch.m4, glm4/gettext.m4: * glm4/gettimeofday.m4, glm4/glibc2.m4, glm4/glibc21.m4: * glm4/gnulib-cache.m4, glm4/gnulib-common.m4, glm4/gnulib-comp.m4: * glm4/iconv.m4, glm4/intdiv0.m4, glm4/intldir.m4, glm4/intlmacosx.m4: * glm4/intmax.m4, glm4/inttypes-pri.m4, glm4/inttypes_h.m4: * glm4/lcmessage.m4, glm4/lib-ld.m4, glm4/lib-link.m4: * glm4/libsigsegv.m4, glm4/link-follow.m4, glm4/localcharset.m4: * glm4/lock.m4, glm4/longlong.m4, glm4/malloc.m4, glm4/mbstate_t.m4: * glm4/nls.m4, glm4/nocrash.m4, glm4/po.m4, glm4/printf-posix.m4: * glm4/progtest.m4, glm4/regex.m4, glm4/size_max.m4, glm4/stdbool.m4: * glm4/stdint.m4, glm4/stdint_h.m4, glm4/threadlib.m4: * glm4/uintmax_t.m4, glm4/visibility.m4, glm4/wchar.m4: * glm4/wchar_t.m4, glm4/wint_t.m4, glm4/xsize.m4: update from gnulib 2009-01-15 Vladimir Tzankov fix mingw build * pathname.d (open_input_file): fix a typo (LAUNCH): fix missing semicolon * stream.d (MAKE-WINDOW): fix bad object declaration (low_close_socket): fix missing semicolon * spvw_garcol.d: define MAX() macro if needed 2009-01-14 Sam Steingold POSIX:COPY-FILE now accepts :METHOD :HARDLINK-OR-COPY * modules/syscalls/calls.c (hardlink_file): accept error_p to indicate whether an error is to be signaled and return status (copy_one_file): when method == COPY_METHOD_HARDLINK_OR_COPY and hardlink_file() fails, fallback to copy_file_low() (check_copy_method): accept :HARDLINK-OR-COPY * utils/hln.lisp: pass :METHOD :HARDLINK-OR-COPY to POSIX:COPY-FILE 2009-01-14 Sam Steingold * m4/clisp.m4 (AC_CLISP): new file: check for a clisp of a correct version, for packages which use clisp * makemake.in, configure: accept --aclocaldir=DIR * makemake.in: install clisp.m4 into aclocaldir 2009-01-14 Sam Steingold * makemake.in: remove the long unsupported cross.mem stuff, created for running the clisp compiler inside some non-clisp implementation, such as AKCL 2009-01-09 Sam Steingold * lisparit.d (FLOAT-SCALE-EXPONENT): restore the mantissa precision 2009-01-08 Sam Steingold * modules/rawsock/rawsock.c (RAWSOCK:IFADDRS): fix keyword arg case 2009-01-09 Vladimir Tzankov fix image loading in multithread builds * spvw_memfile.d (loadmem_from_handle): do not update thread objects. they were/will be initialized properly (in single thread it is just aktenv) * spvw.d (init_memory): do not re-initialize the thread objects - they are not modified by loadmem_from_handle(); do not initialize O(all_mutexes) and O(all_exemptions) to NIL - they are loaded properly from image file 2009-01-09 Vladimir Tzankov * io.d (READ-CHAR-NO-HANG): fix EOF case when return_Values expands to nothing (g++) 2009-01-09 Vladimir Tzankov * lispbibl.d (SET_SP_BEFORE_SUSPEND): do not use SP() since it is not always exported to modules. use the address of dummy local variable 2009-01-08 Vladimir Tzankov fix is_valid_stack_address() in multithread debug builds * lispbibl.d (clisp_thread_t): add _SP_before_suspend to thread struct in builds that allocate lisp objects on C stack. also export it to modules (SET_SP_BEFORE_SUSPEND): macro for setting _SP_before_suspend just before thread may be considered suspended from GC point of view. used only in debug builds (GC_SAFE_POINT_ELSE, GC_SAFE_REGION_BEGIN): use it * spvw.d (clear_per_thread_symvalues): moved to spvw_global.d (avoid compilation warnings in debug builds) * spvw_global.d (clear_per_thread_symvalues): moved from spvw.d (is_in_stack_range): helper macro to check whether an address is in thhe stack range of a thread (is_valid_stack_address): define it only when it is needed. use threads _SP_before_suspend to check address validity 2009-01-07 Sam Steingold fix bug#2492106: CLISP 2.47/amd64 can't build "pari" module * modules/pari/pari.lisp (new_galois_format, factor_add_primes): fix type declarations 2009-01-07 Vladimir Tzankov fix bug#1413016: amd64 debug build broken (gc aborts) * spvw_garcol.d (update): use pointable_unchecked() instead of as_oint() for address validation in TYPECODES & SPVW_MIXED builds 2009-01-06 Sam Steingold fix bug#569025: CLISP uses arisparc.d instead of arisparc64.d * makemake.in (cpu) [sparc64]: by default gcc runs in 32-bit mode, so set cpu based on multi-os-directory 2009-01-06 Sam Steingold * makemake.in (anymodule): eat our own dogfood: use the "clisp" driver instead of an explicit "lisp.run -M lispinit.mem" for $(CLISP) in the module Makefile, do not pass INCLUDES (rely on "clisp -b") 2009-01-06 Sam Steingold * _clisp.c (main): accept "-b" to print the installation directory * modules/berkeley-db/Makefile.in, modules/dbus/Makefile.in: * modules/dirkey/Makefile.in, modules/fastcgi/Makefile.in: * modules/gdbm/Makefile.in, modules/gtk2/Makefile.in: * modules/i18n/Makefile.in, modules/libsvm/Makefile: * modules/matlab/Makefile, modules/netica/Makefile: * modules/oracle/Makefile.in, modules/pari/Makefile.in: * modules/pcre/Makefile.in, modules/postgresql/Makefile.in: * modules/queens/Makefile, modules/rawsock/Makefile.in: * modules/readline/Makefile.in, modules/regexp/Makefile.in: * modules/syscalls/Makefile.in, modules/wildcard/Makefile.in: * modules/zlib/Makefile.in, modules/clx/new-clx/clx: use "clisp -b" instead of "(namestring *lib-directory*)" and avoid GNU make-specific syntax 2009-01-06 Sam Steingold * lisparit.d (FLOAT-SCALE-EXPONENT): use F_extend2_F instead of F_extend_F to convert short to double, because single has the same mantissa size as short 2009-01-05 Sam Steingold * makemake.in (clean0): do not remove linkkit here (clean1): remove it here, together with boot/base/full (clean-modules): new target, extracted from clean7 (clean7): depend on clean-modules 2009-01-05 Sam Steingold * modules/berkeley-db/Makefile.in, modules/dbus/Makefile.in: * modules/dirkey/Makefile.in, modules/fastcgi/Makefile.in: * modules/gdbm/Makefile.in, modules/gtk2/Makefile.in: * modules/i18n/Makefile.in, modules/libsvm/Makefile: * modules/matlab/Makefile, modules/netica/Makefile: * modules/oracle/Makefile.in, modules/pari/Makefile.in: * modules/pcre/Makefile.in, modules/postgresql/Makefile.in: * modules/queens/Makefile, modules/rawsock/Makefile.in: * modules/readline/Makefile.in, modules/regexp/Makefile.in: * modules/syscalls/Makefile.in, modules/wildcard/Makefile.in: * modules/zlib/Makefile.in: restore buildability by a system-wide clisp, removing all external dependencies, specifically, $(INCLUDES)/clisp.h and modprep (INCLUDES): init to $(shell $(CLISP) -x '(namestring *lib-directory*)')/linkkit (MODPREP): remove; use $(INCLUDES)/modprep instead * makemake.in (anymodule): depend on linkkit instead of explicit files 2009-01-05 Sam Steingold * modules/dbus/dbus.lisp, modules/postgresql/postgresql.lisp: * modules/readline/readline.lisp: include the local "config.h", not the global 2009-01-05 Sam Steingold * compiler.lisp (compile-file): when writing a C file, remove it on failure too, just like we already remove LIB and FAS files 2009-01-05 Sam Steingold * room.lisp (room): report GC time in seconds, not internal time units 2009-01-05 Sam Steingold * control.d (compile_eval_form): aktenv_to_stack may trigger GC Reported by Vladimir Tzankov. 2008-12-30 Sam Steingold Declaration (COMPILE) accepts name argument; this fixes bug#2477736: poor error messages from GF funcalls * eval.d (parse_dd): return compile name, not just a boolean (get_closure): use parse_dd return value over :LAMBDA * control.d (parse_doc_decl): ditto (compile_eval_form): accept closure_name and pass it to COMPILE-FORM (LET, LET*, LOCALLY, SYMBOL-MACROLET, MULTIPLE-VALUE-BIND): pass closure_name to compile_eval_form (PARSE-BODY): return 4th value - closure_name * lispbibl.d (parse_dd): update prototype * clos-class3.lisp (install-class-direct-accessors): pass funname to the COMPILE declaration * clos-genfun2b.lisp (effective-method-function-name): add (compute-effective-method-as-function): use it in COMPILE declaration (compile-no-jitc): new function, replaces *COMPILE-NO-JITC* (compute-discriminating-function-) (finalize-fast-gf): use COMPILE-NO-JITC * clos-method2.lisp (analyze-method-description): use 4th return value of PARSE-BODY for COMPILE declaration * compiler.lisp (process-declarations): allow (COMPILE name) (symbol-suffix): unlock the package around INTERN (compile-form, compile-form-in-toplevel-environment): accept optional NAME argument * foreign1.lisp (c-struct-constructor): pass name to the COMPILE declaration 2008-12-31 Sam Steingold * macros2.lisp (with-output-to-string): use SYS::BUILT-IN-STREAM-CLOSE instead of CLOSE for bootstrapping because CLOSE is only defined in gray.lisp - fairly late in the game 2008-12-30 Sam Steingold * modules/rawsock/sock.lisp (failure, rawsock-error): new conditions (eai): inherit from FAILURE * modules/rawsock/rawsock.c (rawsock_error): signal RAWSOCK-ERROR (SYSCALL): use it 2008-12-30 Sam Steingold * unixaux.d (fd_read): when errno is ECONNRESET, close fd to avoid SIGPIPE on further accesses (see tests/econnreset.lisp) Reported by Don Cohen 2008-12-30 Sam Steingold * error.d (OS_filestream_error): when stream is a stream, but not a file stream, signal stream-error instead of os-error * errunix.d, errwin32.d (OS_error_arg): replaces OS_file_error * lispbibl.d (OS_file_error): define using OS_error_arg 2008-12-30 Sam Steingold * pathname.d (task_t): use a dedicated type for directory_search instead of signean 2008-12-29 Sam Steingold * pathname.d (namestring_kind_t): use a dedicated type for classify_namestring instead of signean 2008-12-29 Sam Steingold * stream.d (buffered_t): use a dedicated type for test_buffered_arg instead of signean 2008-12-29 Sam Steingold * lispbibl.d (listen_t): use a dedicated type instead of signean (listen_char, listen_byte): update declarations (ls_avail, ls_eof, ls_wait, ls_avail_p, ls_eof_p, ls_wait_p): remove * debug.d (read_form): update listen_char() calls * io.d (PEEK-CHAR, LISTEN, READ-CHAR-NO-HANG): ditto * sequence.d (READ-BYTE-SEQUENCE): update listen_byte() call * stream.d: update all listen functions and their invocations throughout the file 2008-12-29 Sam Steingold * modules/clx/mit-clx/Makefile (clx.mem): pass file name to saveinitmem instead of using mv 2008-12-28 Sam Steingold * compiler.lisp (c-form-table): handle CONCATENATE with c-CONCATENATE (c-CONCATENATE): (concatenate 'string ...) ==> (string-concat ...) if all the arguments are certain to be strings 2008-12-25 Vladimir Tzankov * threads.lisp (*DEFAULT-SPECIAL-BINDINGS*): add more default special symbols per thread bindings 2008-12-25 Vladimir Tzankov * zthread.d (MUTEX-UNLOCK): reset the mutex owner before releasing the OS mutex 2008-12-24 Sam Steingold * makemake.in (XCFLAGS) [DEBUGGING]: add -O0 2008-12-23 Sam Steingold * makemake.in (check-script): support FreeBSD make 2008-12-23 Sam Steingold * spvw_garcol.d (page_contains_pinned_object): do not define unless MULTITHREAD is defined to fix the --disable-mmap build 2008-12-23 Sam Steingold * socket.d (connect_via_ip): fix 2008-06-30 patch: is getsockopt fails, return INVALID_SOCKET instead of calling OS_error() here 2008-12-23 Sam Steingold * stream.d (check_value_range): extracted from ... (read_byte_array, write_byte_array, read_char_array): use it 2008-12-23 Vladimir Tzankov * package.d (itern, do_shadow, unuse_1package, apply_symbols) (RENAME-PACKAGE, UNINTERN, DELETE-PACKAGE): use package mutex lock 2008-12-23 Vladimir Tzankov * lispbibl.d (WITH_LISP_MUTEX_LOCK): accepts boolean parameter whether to preserve the mv_space. preserve it when unwinding 2008-12-22 Sam Steingold * stream.d (error_eos, HANDLE_EOF): add (READ-N-BYTES, READ-BYTE, READ-BYTE-NO-HANG, READ-INTEGER) (READ-FLOAT): use them 2008-12-22 Sam Steingold * modules/libsvm/libsvm.lisp: cast callback libsvm_print_string when setting print_string because... my 2008-12-19 patch is accepted by the upstream with changes: * modules/libsvm/svm.cpp, modules/libsvm/svm.h (print_string_stdout): not exported (print_string): argument is a "const" 2008-12-22 Sam Steingold * foreign1.lisp (prepare-module, finalize-coutput-file): module__~A__object_tab is of type gcv_object_t, not object 2008-12-21 Sam Steingold * stream.d (MAKE-WINDOW) [WIN32_NATIVE]: fix a GC-safety bug 2008-12-21 Sam Steingold * lispbibl.d (mk_pipe_from_handle): replaces mkips_from_handles and mkops_from_handles * stream.d (CHECK_UNBUFFERED_ELTYPE): new macro (make_pipe_stream): new function: common part of ... (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM): use it (mk_pipe_from_handle): replaces mkips_from_handles and mkops_from_handles * pathname.d (make_launch_pipe): accept direction instead of parent_inputp (LAUNCH): pass direction_t to make_launch_pipe instead of a bool 2008-12-21 Sam Steingold * foreign.d (FOREIGN-FREE, update_library): * stream.d (mkops_from_handles, mkips_from_handles): * pathname.d (PROBE-PATHNAME): * modules/gdbm/gdbm.c (gdbm_open_read_write): * modules/clx/new-clx/clx.f (make_visual_info, make_color): fix GC-safety bugs: "TheFoo(STACK_0)->bar = allocate_zot()" is NOT safe because lvalue can be computed BEFORE allocation and the GC triggered by the allocation will invalidate the lvalue! 2008-12-21 Sam Steingold * intparam.c (string_length): avoid g++ warning "deprecated conversion from string constant to 'char*'" 2008-12-19 Sam Steingold redirect libsvm output to a lisp stream from C stdout * modules/libsvm/libsvm.lisp (*libsvm-output*): new variable (write-string-to-libsvm-output): new C call-in (callback) set "print_string=&libsvm_print_string" in init_2 * modules/libsvm/Makefile, modules/libsvm/link.sh: callbacks require libsvm.c and ... * modules/libsvm/preload.lisp: new file for (make-package "LIBSVM" ...) submitted to upstream but not yet accepted: * modules/libsvm/svm.cpp (print_string_stdout): new function (print_string): new variable, initialized to print_string_stdout (info): use vsprintf and (*print_string) * modules/libsvm/svm.h (print_string, print_string_stdout): declare 2008-12-19 Sam Steingold * lispbibl.d (make_faddress): declare * foreign.d (make_faddress): make global for ... * foreign1.lisp (convert-from-foreign, convert-to-foreign): new functions to partially inline convert_from_foreign & convert_to_foreign (note-c-call-in): use them 2008-12-19 Sam Steingold * modules/berkeley-db/dbi.lisp (db-log-stat): fix type of mode slot 2008-12-19 Vladimir Tzankov * zthread.d (thread_cleanup): performs cleanup just before thread termination. currently releases (and warns) held mutexes (thread_stub): use it * spvw.d (mt_main_actions): call thread_cleanup() for the first thread * pathname.d (SAVEMEM): do not allow locked mutexes in memory image 2008-12-19 Vladimir Tzankov * pathname.d (SAVEMEM): signal an error if there are multiple running threads * spvw.d (single_running_threadp): returns true if the caller is the only running thread (used only by SAVEMEM) * spvw_memfile.d (loadmem_from_handle): recreate OS mutex and condition objects after memory image is loaded 2008-12-19 Vladimir Tzankov add lisp mutex to every package in threads builds * lispbibl.d (struct Package): add pack_mutex in threads builds * package.d (make_package): initialize pack_mutex 2008-12-18 Vladimir Tzankov fix possible memory corruption * lispbibl.d, spvw.d (clear_per_thread_symvalues): maygc. should acquire threads lock when clears the per thread bindings * symbol.d (%PROCLAIM-CONSTANT): preserve GC safety 2008-12-18 Vladimir Tzankov WITH-LOCK in C (WITH_OS_MUTEX_LOCK, WITH_LISP_MUTEX_LOCK) * lispbibl.d (WITH_OS_MUTEX_LOCK, WITH_LISP_MUTEX_LOCK): macros for executing statements with mutex lock held and with established UNWIND_PROTECT frame ensuring that mutex is unlocked at the end * package.d (RENAME-PACKAGE, LIST-ALL-PACKAGES, MAKE-PACKAGE) (%IN-PACKAGE, DELETE-PACKAGE, FIND-ALL-SYMBOLS, MAP-ALL-SYMBOLS): use WITH_OS_MUTEX_LOCK() with all_packages_lock (do_find_all_symbols): do not lock anything - callers hold the lock 2008-12-17 Vladimir Tzankov add mutex for O(all_packages) in threads builds * lispbibl.d (find_pacakge): may trigger GC (all_packages_lock): declaration * spvw.d (init_multithread): initialize all_packages_lock * io.d (read_internal): fix GC safety since find_package() is maygc * package.d (make_package, find_package, do_find_all_symbols) (LIST-ALL-PACKAGES, DELETE-PACKAGE, MAP-ALL-SYMBOLS): guard access to O(all_packages) via the all_packages_lock (RENAME-PACKAGE, %IN-PACKAGE, DELETE-PACKAGE) (test_package_arg, correct_packname): fix GC safety since find_package() is maygc 2008-12-16 Sam Steingold * modules/libsvm/svm.cpp (info): call fflush(stdout) (info_flush): remove patch accepted by upstream 2008-12-16 Sam Steingold * modules/libsvm/libsvm.lisp (*libsvm-version*): add DEF-C-VAR * modules/libsvm/svm.cpp, modules/libsvm/svm.h (libsvm_version): add patch accepted by upstream 2008-12-16 Sam Steingold * makemake.in (check-doc): use IMPNOTES instead of *impnotes-root-default* for ${MYIMPROOT} * clhs.lisp (ensure-impnotes-map): avoid barfing on known "invalid symbol"s 2008-12-16 Sam Steingold * stream.d (STREAM-EXTERNAL-FORMAT): use (CAR CONCATENATED-STREAM-STREAMS) instead of always returning :DEFAULT 2008-12-15 Sam Steingold * modules/dirkey/dirkey.c (LDAP::DKEY-INFO): use safe_to_string * modules/syscalls/calls.c (RESOLVE-HOST-IPADDR, USER-SHELLS): add missing begin_system_call/end_system_call pairs 2008-12-15 Vladimir Tzankov * spvw_global.d (gc_resume_all_threads): fix possible double warning of failed CALL-WITH-TIMEOUT calls 2008-12-15 Vladimir Tzankov * spvw_circ.d: remove obsolete code (threads builds are not compatible with GC marking circularity detection) 2008-12-15 Sam Steingold * modules/syscalls/calls.c (sysconf_arg): update for SUS7 http://www.opengroup.org/onlinepubs/9699919799/functions/sysconf.html (confstr_arg): ditto http://www.opengroup.org/onlinepubs/9699919799/functions/confstr.html 2008-12-15 Sam Steingold * modules/libsvm: upgrade to upstream 2.88 2008-12-15 Sam Steingold * m4/ln.m4 (CL_PROG_HLN): use $cl_cv_prog_LN_S_works 2008-12-14 Sam Steingold * stream.d (BUILT-IN-STREAM-SET-ELEMENT-TYPE): support CONCATENATED and BROADCAST streams, just like in SET-STREAM-EXTERNAL-FORMAT 2008-12-14 Sam Steingold * stream.d: replace SAME_HANDLE_P_OUT with a general DEBUG_OUT 2008-12-14 Sam Steingold * spvw_debug.d (bt_out): fflush out at the end 2008-12-14 Sam Steingold * stream.d (handle_direction_compatible): extracted from ... (handle_to_stream): use it (make_standard_input_file_stream): if stdin_handle is not an open input handle, return an empty concatenated stream 2008-12-12 Vladimir Tzankov * spvw_global.d (add_per_thread_special_var): sync initialization of threads symvalues via threads lock 2008-12-12 Sam Steingold * modules/i18n/gettext.c (SET-LOCALE, res_to_obj): use safe_to_string 2008-12-10 Sam Steingold * modules/clx/new-clx/clx.f (SYS_CALL): add (make_fill_bit_vector, get_key_vector, x_open_display, encode_event) (%RESTORE-GCONTEXT-COMPONENTS, QUEUE-EVENT, ACCESS-HOSTS) (SET-WM-HINTS): use it instead of X_CALL for memcpy et al 2008-12-09 Vladimir Tzankov * spvw_garcol.d (gc_sweep1_varobject_page): allow zero sized holes in the heap holes array. fixes corner case in gen0 GC (fill_varobject_heap_holes): handle zero sized holes 2008-12-08 Vladimir Tzankov * spvw.d (signal_handler_thread): fix SIG_TIMEOUT_CALL in g++ threads builds 2008-12-08 Sam Steingold * spvw.d (init_multithread_special_symbols): fix g++ compilation 2008-12-08 Sam Steingold * modules/clx/new-clx/clx.lisp (closed-display) (connection-failure, device-busy): remove redefinitions 2008-12-07 Sam Steingold * pathname.d (directory_search_1subdir): accept subdirtail instead of subdir to fix GC-safety bug (&Car(STACK) is not gc-visible) (directory_search): fix directory_search_1subdir invocation Reported by Vladimir Tzankov 2008-12-07 Sam Steingold * makemake.in (XCLFLAGS): remove "-x none" which is no longer necessary 2008-12-07 Vladimir Tzankov GENERATIONAL_GC (with threads) VM page protection done right * spvw_garcol.d (fill_varobject_heap_holes): remove holes_count parameter. with GENERATIONAL_GC in generation 0 the holes array is filled with memory regions that have to be left with PROT_READ_WRITE protection (gar_col_normal): initialize the end of heap holes array with invalid item. * spvw_genera1.d (build_old_generation_cache): add additional parameter - array of VM paged aligned memory regions that have to be left with PROT_READ_WRITE protection * spvw_memfile.d (loadmem_from_handle): pass NULL to build_old_generation_cache() * spvw_heap.d (struct read_write_region): remove it 2008-12-06 Vladimir Tzankov fix SPVW_PURE build * spvw_garcol.d (struct varobj_mem_region): add heapnr for SPVW_PURE with threads builds (fill_relocation_memory_regions): initialize heapnr of regions (gc_sweep1_varobject_page): fill heapnr of the holes (fill_varobject_heap_holes): fill only holes in the requested heap (gar_col_normal): fix missing semicolon. fill varobject heap holes for each heap in SPVW_PURE * spvw_memfile.d (loadmem_from_handle): initialize the physical page cache locks (GENERATIONAL_GC && SPVW_PURE_BLOCKS) 2008-12-06 Vladimir Tzankov * spvw_garcol.d (fill_relocation_memory_regions): fix marking of VM pages from old generation 2008-12-05 Vladimir Tzankov threads and GENERATIONAL_GC * lispbibl.d: remove the warning about threads and GENERATIONAL_GC problems * spvw_heap.d (physpage_pin_marked, physpage_pin_mark): macros for checking/marking VM memory page which should preserve their protection after GC. used only during GC (generation == 1) (struct read_write_region): contains VM regions that have to be left with PROT_READ_WRITE after GC (generation == 0). not used currently * spvw_garcol.d (fill_relocation_memory_regions): mark the VM pages that have to preserve their protection while traversing the pinned objects in threads. (fill_varobject_heap_holes): abort wrong heap hole size. dump the hole for bug reporting (gar_col_normal): use DYNAMIC_ARRAY() instead of alloca() * spvw_genera3.d (update_old_generation): treat PROT_READ VM pages with pinned objects as PROT_READ_WRITE and update objects in them * spvw_genera1.d (build_old_generation_cache): use PROT_READ_WRITE for the whole heap instead of PROT_READ (TBD: see the comment) (rebuild_old_generation_cache): do not create/update the cache for PROT_READ_WRITE pages containing pinned objects. 2008-12-05 Vladimir Tzankov * spvw_global.d (gc_suspend_all_threads): increase thread's suspend count after received acknowledge. use DYNAMIC_ARRAY() instead of alloca() 2008-12-05 Vladimir Tzankov * error.d (end_error): abort on error in case the current thread is supposed to be suspended 2008-12-05 Sam Steingold * check-lispfun.lisp (get-lisp-defs): also check for funcall(S()) for subrs (which should be called using funcall(L()) instead) "make check-sources" is your friend! 2008-12-05 Sam Steingold * lispbibl.d (pin_varobject): objects of type gcv_object_t are verboten outside of GC 2008-12-05 Sam Steingold * check-lispfun.lisp (*const-decls*): add "constobj_tl" 2008-12-05 Sam Steingold remove USER_HOMEDIR - assume that all supported platforms have it * pathname.d (USER-HOMEDIR-PATHNAME): define unconditionally * constobj.d (user_homedir): ditto * constsym.d, subr.d (user_homedir_pathname): ditto * lispbibl.d (USER_HOMEDIR): remove define * spvw.d (main_actions): use L(user_homedir_pathname) in funcall 2008-12-05 Sam Steingold * zthread.d (MAKE-THREAD, CALL-WITH-TIMEOUT): simplify (GENSYM) funcall (THREAD-KILL): use L(thread_interrupt) instead of S() in funcall * spvw_circ.d (ht_add): use L(puthash) instead of S() in funcall * spvw.d (main_actions): simplify (GENSYM) funcall 2008-12-04 Vladimir Tzankov * zthread.d (remove_timeout_call): remove only the requested timeout call 2008-12-04 Vladimir Tzankov no PENDING_INTERRUPTS when MULTITHREAD (fixes also CALL-WITH-TIMEOUT) * lispbibl.d (PENDING_INTERRUPTS): do not define it when MULTITHREAD. it is not needed and also fixes problem with CALL-WITH-TIMEOUT when error is signalled (ualarm()/SIGALRM is called in error.d) (clisp_thread_t): remove _interrupt_pending * zthread.d (CALL-WITH-TIMEOUT): simplify code 2008-12-04 Vladimir Tzankov * stream.d (remove_from_open_streams): add function. removes stream from O(open_files). use open_files_lock when MULTITHREAD (close_buffered): use it (builtin_stream_close): use it 2008-12-03 Sam Steingold * pathname.d (dirent_buf_size) [MULTITHREAD & HAVE_READDIR_R]: define only when needed (directory_search_scandir): use readdir_r only when present and necessary, i.e., when MULTITHREAD & HAVE_READDIR_R * configure.in: check for readdir_r 2008-12-04 Vladimir Tzankov threads fixes * error.d (end_error): abort on error signalled from region considered "safe for GC". these cases should be fixed - otherwise the thread will be treated as safe for GC while it is not * spvw.d (init_memory): O(all_mutexes) and O(all_exemptions) do not survive memory image loading - initialize them. TLO() objects also. * spvw_fault.d (handle_fault_range): guard with page spinlock all page accesses/modifications * lispbibl.d: warning for problems with threads & GENERATIONAL_GC builds (all_weakpointers_lock): O(all_weakpointers) lock. synchronize modifications of O(all_weakpointers) (unprotect_heap_range): macro calling handle_fault_range() for pinned varobjects with (PROT_READ or PROT_READ_WRITE access) (pin_varobject): accepts additional argument - what access is desired for varobject's memory. use unprotect_heap_range() - thus prevents race condition between GC and handle_fault_range() * unixaux.d: in threads builds do not call handle_fault_range() * win32aux.d: in threads builds do not call handle_fault_range() * stream.d: call pin_varobject() with desired access * spvw_weak.d (activate_weak): use all_weakpointers_lock 2008-12-03 Vladimir Tzankov * spvw_garcol.d (fill_varobject_heap_holes): handle large heap holes in SPVW_MIXED (greater than *ARRAY-TOTAL-SIZE-LIMIT*) * spvw_sigwinch.d (gc_signalblock_on/off): not used in multithread builds 2008-12-03 Vladimir Tzankov * pathname.d (directory_search_scandir): use readdir_r() instead of readdir() in multithread builds (dirent_buf_size): calculate the size required for struct dirent that is passed to readdir_r() 2008-12-02 Sam Steingold * modules/clx/new-clx/clx.f (XLIB:CREATE-PIXMAP): do not require WIDTH, HEIGHT and DEPTH, get them from XGetGeometry if missing * modules/clx/new-clx/demos/greynetic.lisp (greynetic): omit the :DEPTH argument * modules/clx/new-clx/demos/bball.lisp (bball): ditto 2008-12-02 Philippe Brochard * modules/clx/new-clx/demos/greynetic.lisp (greynetic): use (xlib:screen-root-depth screen) for the :depth argument * modules/clx/new-clx/demos/bball.lisp (bball): ditto * modules/clx/new-clx/demos/clx-demos.lisp (*demos*): enable greynetic and bball 2008-12-02 Sam Steingold * modules/clx/new-clx/clx.f (XLIB:DRAW-ARC): use modprep signature emulation instead of emulating it by hand 2008-12-01 Sam Steingold Better keysym->char conversion for the sake of McCLIM * modules/clx/new-clx/clx.f (keysym2char): new function; use int_char for 8-bit ascii and special-case 6 control keysyms; return NIL otherwise (see a long comment in the code) (KEYSYM->CHARACTER, KEYCODE->CHARACTER): use it instead if int_char Reported by Philippe Brochard 2008-12-01 Sam Steingold * constobj.d [UNIX_CHARNAMES]: add the standard ASCII names "Lf" for "Linefeed" (10) and "Ff" for "Page" (12) * charstrg.d (charname_table_length, charname_table_codes) [UNIX_CHARNAMES]: update for the above 2008-11-29 Vladimir Tzankov * eval.d (interpret_bytecode_): fix a GC-safety bug (cod_bind) 2008-11-29 Vladimir Tzankov fix possible multithreading deadlocks * spvw.d (thread_symvalues_lock): new mutex guarding the per thread symvalues arrays in threads (init_multithread): initialize it * spvw_global.d (add_per_thread_special_var): use it. threads lock used before may lead to deadlock in certain cases * zthread.d (thread_stub): call init_reader_low() in the context of the new thread (MAKE-THREAD): remove init_reader_low() call (may cause deadlock if it triggers GC - new thread is registered but not started - so it cannot respond to the suspend request). 2008-11-29 Vladimir Tzankov * stream.d (WRITE-INTEGER): fix a GC-safety bug 2008-11-28 Vladimir Tzankov define O(dynamic_8bit_vector), O(dynamic_c_string) as thread-local constant objects * constobj_tl.d (dynamic_8bit_vector, dynamic_c_string): define as per thread objects * constobj.d (dynamic_8bit_vector, dynamic_c_string): remove from here * lispbibi.d (DYNAMICIC_8BIT_VECTOR, FREE_DYNAMIC_8BIT_VECTOR): use TLO() instead of O() (DYNAMIC_STRING, FREE_DYNAMIC_STRING): use TLO() instead of O() (LISPOBJ_TL): takes initstring parameter * stream.d (WRITE-INTEGER): fix a GC-safety bug 2008-11-27 Sam Steingold fix bug#2354265: hang computing log of complex zero * comptran.d (N_log_abs_R): check complex argument for 0; bug was introduced when fixing bug#1934968 2008-11-27 Sam Steingold * makemake.in (GLLIB): remove variable, use GLLIB_O instead 2008-11-27 Sam Steingold * utils/varbrace.c: use {} for empty `for' body to avoid a g++ warning (outbuffer_off_insert): make `insert' a `const' to avoid a g++ warning * utils/comment5.c: use {} for empty `while' body to avoid a g++ warning 2008-11-27 Sam Steingold * makemake.in (REPLACE_GETTIMEOFDAY): get from configure (GLLIB_O, GLLIB): add gllib/gettimeofday when REPLACE_GETTIMEOFDAY=1 2008-11-27 Vladimir Tzankov do not pass heap pointers to potentially blocking system calls * stream.d (SOCKET-CONNECT, SYS::MAKE-SOCKET-STREAM): use with_string_0 instead of TheAsciz(). 2008-11-26 Vladimir Tzankov allow I/O customization variables to be per thread bound * spvw.d: allocate per thread symvalues in pages of 1024 object. (main): initialize per thread symbol indexes after streams special variables are defined (init_streamvars()). (initmem): do not initialize per thread symbol indexes - it is too early. stream variables are not declared special yet. 2008-11-26 Vladimir Tzankov * spvw_garcol.d (fill_relocation_memory_regions): handle the case of multiple times pinned object (from many threads). * streams.d (rd_ch_terminal3): fix a typo - end_blocking_system_call() instead of begin_blocking_system_call(). 2008-11-25 Sam Steingold * predtype.d (CLASS-OF): simplify switch (Record_type(arg)) 2008-11-25 Sam Steingold * predtype.d (TYPE-OF, CLASS-OF, heap_statistics_mapper) [MULTITHREAD]: support THREAD, MUTEX, EXEMPTION * constsym.d (hs_thread, hs_mutex, hs_exemption) [MULTITHREAD]: add * describe.lisp (describe-object@t) [MT]: handle THREAD, MUTEX, EXEMPTION 2008-11-25 Vladimir Tzankov * spvw.d (create_thread): fill thread's _object_tab with NILs. (for_all_threadobjs): fix _object_tab iteration. * zthread (MAKE-THREAD): initialize the reader after the threads lock is released (prevents deadlock if other thread tries to trigger GC before reader variables allocation). 2008-11-24 Sam Steingold allow thread-local constant objects * constobj_tl.d (token_buff_1, token_buff_2, displaced_string): define there thread-local constant objects in this new file * constobj.d: include constobj_tl instead of defining these objects * lispbibl.d (TLO): define (clisp_thread_t): add _object_tab field * io.d (init_reader_low): extract from init_reader (init_reader): call it (read_token_1, test_potential_number_syntax, test_number_syntax) (signal_reader_error, test_dots, upcase_token, case_convert_token) (case_convert_token, case_convert_token_1, read_internal) (CHAR-READER, radix_2, UNINTERNED-READER, BIT-VECTOR-READER): use TLO() instead of O() for token_buff_[12] and displaced_string * package.d (get_current_package): ditto * makemake.in (EVERY_INCLUDES): add constobj_tl * spvw.d (for_all_threadobjs): iterate over thread->_object_tab too (main): call init_reader_low() * zthread.d (MAKE-THREAD): ditto 2008-11-24 Sam Steingold * stream.d (position_file_i_buffered): fix a GC-safety bug 2008-11-24 Sam Steingold * _clisp.c (main): avoid g++ warning: "deprecated conversion from string constant to 'char*'" 2008-11-23 Sam Steingold * spvw.d (delegating_cookie): declare "const" to avoid g++ warning "deprecated conversion from string constant to 'char*'" * spvw_memfile.d (find_marker): second argument is "const" (find_memdump): cast second argument to "const char*"; use WRITE macro to avoid gcc warning "ignoring return value of 'write', declared with attribute warn_unused_result" * spvw_circ.d (subst_circ_unmark): avoid gcc warning "extra tokens at end of #undef directive" 2008-11-23 Sam Steingold * eval.d (check_funtab): use %ld in printf to avoid a gcc warning * pathname.d (LAUNCH): ditto 2008-11-21 Vladimir Tzankov * spvw_circ.d: use hash table for circularirty detection in MT builds. 2008-11-21 Vladimir Tzankov add recursive mutexes * constsym.d, subr.d, subrkw.d: MAKE-MUTEX accepts keyword arguments :NAME and :RECURSIVE-P. MAKE-EXEMPTIION accepts :NAME. * zthread.d (MAKE-MUTEX): create appropriate type of mutex. non-recursive by default (MUTEX-LOCK): handle recursive mutexes. signal error on re-locking non-recursive one (MUTEX-UNLOCK): handle recursive mutexes. signal an error if the calling thread does not own the mutex (MUTEX-OWNER): returns the thread owning the mutex (MUTEX-RECURSIVE-P): returns whether the mutex is recursive (MAKE-EXEMPTION): use keyword :NAME argument (EXEMPTION-WAIT): signal an error if the calling thread does not own the mutex * lispbibl.d (Mutex): add flags and recurse count * threads.lisp: export MUTEX-OWNER and MUTEX-RECURSIVE-P (WITH-LOCK): use mutex 2008-11-20 Sam Steingold * .gdbinit (run_all_tests_parallel): add 2008-11-20 Sam Steingold * io.d (release_buffers): new macro, should be paired with get_buffers (read_token_1, STRING-READER, READ-LINE, pr_symbol_part): use it 2008-11-20 Sam Steingold * stream.d (rd_ch_terminal3): wrap readline() call in begin_blocking_system_call()/end_blocking_system_call() 2008-11-20 Sam Steingold * makemake.in (check-tests-parallel) [with_threads]: new target 2008-11-20 Vladimir Tzankov fix memory corruption on thread symvalues initialization * spvw_memfile.d (loadmem_from_handle): storage per thread symvalues is reallocated correctly. 2008-11-20 Vladimir Tzankov Do not use GC finalization for mutexes and exemptions * constobj.d: add O(all_mutexes), O(mutexes_to_release), O(all_exemptions) and O(exemptions_to_release) * constsym.d, subr.d: remove %MUTEX-DESTROY and %EXEMPTION-DESTROY * lispbibl.d: add locks for O(all_exemptions) and O(all_mutexes) (GC_SAFE_MUTEX_LOCK / UNLOCK): helper macros for locking xmutex_t * spvw.d (init_multithread): initialize locks for O(all_mutexes) and O(all_exemptions) * spvw_garcol.d (gar_col_normal): handle O(all_mutexes) and O(all_exemptions) - like O(open_files) (gar_col_done): release non-referenced mutexes and exemptions. (SPLIT_REF_LISTS): helper macro for splitting O(open_files), O(all_mutexes), etc into referenced and non-referenced lists. * zthread.d: remove mutex_os_detroy and exemption_os_destroy (release_mutexes): destroys the OS mutex objects for non-referenced Mutex records (release_exemptions): destroys the POSIX condition variables for non-referenced Exemption records (MAKE-MUTEX): add the created mutex to O(all_mutexes) (MAKE-EXEMPTION): add the created exemption to O(all_exemption) 2008-11-19 Sam Steingold * configure, makemake.in, spvw.d: remove POSIXOLD_THREADS and C_THREADS 2008-11-19 Sam Steingold drop privileges when running suid root and receive a --clisp- superarg * unix.d (drop_privileges): declare * unixaux.d (drop_privileges): implement, based on http://www.usenix.org/events/sec02/full_papers/chen/chen.pdf * spvw.d (parse_options): call it when receive a --clisp- superarg (main): run *init-hooks* _before_ initializing O(argv) so that applications cannot detect and thus disable "--clisp-" superarg * configure.in: check for getresuid setresuid getresgid setresgid setreuid setregid 2008-11-19 Sam Steingold * zthread.d (MAKE-THREAD): use check_list instead of error_list and check_string instead of check_string_replacement (MAKE-MUTEX, MAKE-EXEMPTION): use check_string instead of check_string_replacement 2008-11-19 Vladimir Tzankov Add mutexes and POSIX condition variables (exemptions) * lispbibl.d (mutexp): macro "predicate" for mutex records (exemptionp): macro predicate for POSIX conditions records (all_finalizers_lock): mutex protecting the all_finalizers list * spvw.d (init_multithread): initialize all_finalizers_lock * spvw_typealloc.d (allocate_mutex): return NIL in case the OS mutex creation fails (allocate_exemption): return NIL in case OS condition variable creation fails (mt_main_actions): bind the *thread-whostate* for the first thread * constsym.d, subr.d: add mutex and exemption functions * record.d (finalize): use all_finalizers_lock * xthread.d (xcondition_wait): implementation for pthreads with no recursive mutex support * zthread.d (MUTEXP, MAKE-MUTEX, MUTEX-LOCK, MUTEX-UNLOCK): mutex functions available in lisp (%MUTEX-DESTROY): GC finalizer for mutex records (EXEMPTIONP, MAKE-EXEMPTION, EXEMPTION-WAIT/SIGNAL/BRAODACAST): POSIX condition variables in lisp (%EXEMPTION-DESTROY): GC finalizer for exemption records (THREAD-WHOSTATE): move to threads.lisp (check_mutex): ensure object is mutex record (check_exemption): ensure object is exemption record * threads.lisp: export mutex and exemption functions (THREAD-WHOSTATE): moved here from zthread.d 2008-11-19 Vladimir Tzankov Remove obsolete threads flavors * xthread.d: remove POSIXOLD_THREADS and C_THREADS 2008-11-18 Sam Steingold STACK: depth=in frames, size=in objects (Bruno) * constsym.d, lispbibl.d, spvw.d, subr.d, subrkw.d, threads.lisp * zthread.lisp (:VSTACK-SIZE): rename from :VSTACK-DEPTH (*DEFAULT-VALUE-STACK-SIZE*): rename from *DEFAULT-VALUE-STACK-DEPTH* 2008-11-18 Sam Steingold * zthread.d (check_thread): do not eval() the user supplied value 2008-11-17 Vladimir Tzankov * zthread.d (THREAD-INTERRUPT): avoid a deadlock when a terminated thread is interrupted multiple times 2008-11-17 Sam Steingold Remove TIME_RELATIVE, TIME_UNIX_TIMES, TIME_METHOD=1; assume either gettimeofday or ftime is present on a Unix system * Makefile.devel (gnulib-imported): also get gettimeofday * m4/gettimeofday.m4, m4/times.m4: remove * configure.in: call AC_PROG_MKDIR_P, gl_FUNC_GETTIMEOFDAY, gl_HEADER_SYS_TIME_H; do not call CL_GETTIMEOFDAY and CL_TIMES_CLOCK * constobj.d (start_UT) [TIME_RELATIVE]: remove * lisparit.d (make_random_state) [TIME_UNIX_TIMES]: drop get_real_time * lispbibl.d (TIME_ABSOLUTE, TIME_RELATIVE, TIME_UNIX_TIMES) (TIME_METHOD): remove * spvw_gcstat.d (gc_time): remove TIME_METHOD conditionals * spvw_sigsegv.d (print_mem_stats): ditto * time.d (TIME_RELATIVE, TIME_UNIX_TIMES, TIME_METHOD==1): remove all code for these conditionals * unixaux.d (gettimeofday): remove emulation (rely on gnulib) * unix.d: assume HAVE_GETTIMEOFDAY * gllib/gettimeofday.c, sys_time.in.h, gettimeofday.m4, sys_time_h.m4: add 2008-11-17 Sam Steingold * stream.d (stream_lend_handle): fix a GC-safety bug 2008-11-17 Sam Steingold assume POSIX signal() * m4/signal.m4 (CL_TYPE_SIGNAL): remove (CL_SIGACTION_REINSTALL, CL_SIGACTION_UNBLOCK): do not require it * configure.in: do not call it * unix.d (signal_handler_t): use a POSIX-compatible declaration 2008-11-17 Sam Steingold fix module compilation after [threads1] merge * lispbibl.d (clisp_thread_t): move _writing_to_subprocess up before _mv_space and export it to clisp.h (mv_space) [MULTITHREAD]: export to clisp.h (HAVE_SIGNALS): no need to export to clisp.h anymore (START_WRITING_TO_SUBPROCESS, STOP_WRITING_TO_SUBPROCESS): define and export to clisp.h * modules/clx/new-clx/clx.f, modules/rawsock/rawsock.c: * error.d, stream.d: use them instead of setting writing_to_subprocess 2008-11-17 Sam Steingold * stream.d (clear_input_terminal2): simplify code (clear_input_terminal3): fix a GC-safety bug 2008-11-12 Sam Steingold * utils/modprep.lisp (check-signature): use program_error instead of source_program_error for argument count checks because the latter requires a DETAIL slot which we do not provide 2008-11-12 Sam Steingold new module DEFUN keyword: &allow-other-keys * utils/modprep.lisp (signature): replace REST-P & KEY-P with REST (*valid-signatures*): update (parse-signature): accept &allow-other-keys (check-signature): output error_key_odd test for &allow-other-keys (signature-match, fundef-lispfun, print-tables-2): update * modules/clx/new-clx/clx.f (OPEN-DISPLAY, QUEUE-EVENT, SEND-EVENT): use &allow-other-keys and update argcount usage: it now counts the total number of arguments, not the number of &rest arguments 2008-11-12 Sam Steingold * modules/gdbm/gdbm.c (GDBM:GDBM-FILE-SIZE): update the handle_length call for the 2008-09-13 change 2008-11-12 Philippe Brochard Sam Steingold * modules/clx/new-clx/clx.f (XLIB:QUEUE-EVENT): implement * modules/clx/new-clx/clx.lisp (QUEUE-EVENT): not UNDEFINED 2008-11-11 Philippe Brochard * modules/clx/new-clx/clx.f (SEND-EVENT): fix encode_event() call 2008-11-11 Sam Steingold * pathname.d (PATH_VALUE, LOG_PATH_VALUE, PATH_SLOT): add macros (PATHNAME-HOST, PATHNAME-DEVICE, PATHNAME-DIRECTORY) (PATHNAME-NAME, PATHNAME-TYPE): use them 2008-11-11 Sam Steingold * makemake.in (DEVPREFIX) [cygwin]: restore the definition lost on 2005-08-29 2008-11-11 Sam Steingold * cfgsunux.lisp: remove file (suntools users can set *EDITOR*) * makemake.in (CONFIG): set to cfg${TOS} 2008-11-09 Sam Steingold * eval.d (reset): avoid a warning in fprintf 2008-11-09 Sam Steingold * spvw.d (main): run *INIT-HOOKS* after initializing O(argv) so that the application can detect --clisp- options and remove setuid http://clisp.podval.org/impnotes/image.html#image-exec 2008-11-09 Sam Steingold * savemem.lisp (saveinitmem): when given an explicit :INIT-FUNCTION NIL, reset *DRIVER* to #'SYS::MAIN-LOOP * init.lisp: load savemem.lisp after reploop.lisp * spvw.d (usage): update REPL recover instructions: :INIT-FUNCTION NIL instead of :INIT-FUNCTION (FUNCTION SYS::MAIN-LOOP) 2008-11-08 Sam Steingold * modules/clx/new-clx/clx.f (EVENTS-QUEUED): add (call XEventsQueued) * modules/clx/new-clx/clx.lisp (EVENTS-QUEUED): export 2008-11-08 Sam Steingold * modules/rawsock/rawsock.c (SOCKADDR-FAMILY): return family as a keyword 2008-11-08 Sam Steingold * predtype.d (with_gc_statistics): avoid a format argument type mismatch warning 2008-11-08 Sam Steingold * errunix.d (errno_out_low): avoid "warning: format not a string literal and no format arguments" 2008-11-07 Sam Steingold * modules/clx/new-clx/clx.f (XLIB:OPEN-DISPLAY): fix the signature and a segfault in (XLIB:OPEN-DISPLAY NIL); use grasp() (DISPLAY-AUTHORIZATION): move STACK_to_mv past X_CALL (CREATE-WINDOW): use macro SLOT (get_event_mask): define as check_event_mask_of_list (make_event_mask): define as make_uint32 (CREATE-PIXMAP, PROCESS-EVENT): use error_required_keywords() instead of NOTIMPLEMENTED (SEND-EVENT): fix the signature and use grasp() (dpy_wait): add (travel_queque, EVENT-LISTEN): use it (get_window_0, get_cursor_0): add (GRAB-POINTER, CHANGE-ACTIVE-POINTER-GRAB, GRAB-BUTTON): use them, thus treat NIL and UNBOUND the same: as None 2008-11-06 Sam Steingold * modules/clx/new-clx/clx.f (COPY-GCONTEXT-COMPONENTS): fix handling of the &rest arguments 2008-11-06 Sam Steingold save "delegating" executable images which only parse --clisp* args * pathname.d (SAVEMEM): second argument EXECUTABLE can be 0 to mean delegate all command line options to the INIT-FUNCTION, only parse --clisp - prefixed options * spvw.d (usage): accept delegating argument (delegating_cookie, delegating_cookie_length, delegating_p): add (parse_options): when delegating_p returns true, only handle options prefixed with --clisp * spvw_memfile.d (savemem): second argument is a uintL, not a bool (find_marker): always present (savemem_with_runtime): when the second argument delegating is true, reset the delegating cookie * lispbibl.d (savemem): update the prototype 2008-11-06 Sam Steingold * compiler.lisp (c-LAMBDABODY): tweak the 2008-11-02 patch: when NAME is an integer, use SYMBOL-SUFFIX for FNODE-NAME and do NOT save the new *FUNC* in *FNODE-LIST* (i.e., treat it as IGNORABLE) (c-FUNCTION, c-%GENERIC-FUNCTION-LAMBDA, c-%OPTIMIZE-FUNCTION-LAMBDA): pass (incf *anonymous-count*) as name to c-LAMBDABODY 2008-11-05 Sam Steingold * clhs.lisp (open-http): write http error to *HTTP-LOG-STREAM*, not *TERMINAL-STREAM* 2008-11-02 Sam Steingold * makemake.in (LPARTS): add timezone only when needed (not unix & not win32), i.e., never; add deflanguage files only when building with_unicode & with_gettext 2008-11-02 Sam Steingold implement the ANSI (IGNORE #'FUNCTION) declaration. * compiler.lisp (*fnode-list*): new dynamic variable (symbol-or-function-p): extracted from ... (process-declarations): use it for IGNORE & IGNORABLE too (fnode): add slots: IGNORE, IGNORABLE, USED (fname-ignored-p): add (c-LAMBDABODY): push *FUNC* onto *FNODE-LIST* (c-declarations): acept NAMELIST & FNODELIST to set IGNORE & IGNORABLE (c-FLET, c-LABELS): pass NAMELIST & FNODELIST to c-declarations (c-FUNCTION-MACRO-LET): make fnode IGNORABLE (value-form-index): make fnode USED and check if it was declared IGNORE (compile-lambdabody): bind *FNODE-LIST* and check for unused fnodes * timezone.lisp: declare all locals IGNORABLE 2008-11-02 Sam Steingold * encoding.d, errwin32.d, spvw.d, spvw_alloca.d, spvw_allocate.d, * spvw_memfile.d, spvw_mmap.d, spvw_sigsegv.d, win32aux.d: avoid "warning: format not a string literal and no format arguments" by using puts instead of printf when possible; also use fputc instead of fputs for newline 2008-11-02 Sam Steingold * makemake.in (XCFLAGS): add -Wno-format-nonliteral for gcc because -Wformat=2 is the default on ubuntu 8.10 2008-11-02 Sam Steingold * spvw_sigsegv.d (print_mem_stats): add casts in PRINT_INTERNAL_TIME to avoid compilation warnings on x86_64 2008-11-02 Sam Steingold * modules/berkeley-db/bdb.c: fix 4.7 support 2008-10-29 Sam Steingold * configure: replace "grep -e" with "grep" because Solaris 10 /usr/bin/grep does not support this option even though it is standardized by http://www.opengroup.org/susv3/utilities/grep.html Reported by Raymond Toy 2008-11-16 Vladimir Tzankov [threads1] circularity detection with GC marks in MT builds. * spvw_circ.d (initialize_circ_detection): initializes the global lock for running inside circularity detection. (circ_detection_lock): global circularity detection mutex. (get_circularities): use it. (subst_circ): use it. * spvw.d (init_multithread): use initialize_circ_detection. 2008-11-15 Vladimir Tzankov [threads1] circularity detection using LISP hashtables * spvw_circ.d: circularity detection using LISP hashtables. 2008-11-11 Vladimir Tzankov [threads1] * spvw_garcol.d (fill_varobject_heap_holes): fix build for SPVW_PURE. * threads.lisp (*DEFAULT-SPECIAL-BINDINGS*): EXT::*COMMAND-INDEX* is not exported at the time threads.lisp is loaded. 2008-10-31 Vladimir Tzankov [threads1] * spvw_garcol.d (page_contains_pinned_object): fix SPVW_PAGES build. 2008-10-31 Vladimir Tzankov [threads1] * xthread.d: AMD64 spinlocks are the same as I80386 2008-10-30 Vladimir Tzankov [threads1] * xthread.d: add AMD64 spinlock implementation. (xthread_create): do not use gcc extensions for POSIX_THREADS. 2008-10-30 Vladimir Tzankov [threads1] * lispbibl.d (Symbol_value): do not use gcc extensions. (Symbol_thread_value): do not use gcc extensions. (Symbolflagged_value): do not use gcc extensions. (symbol_value_i / symbol_value_h): helper static inline functions for preventing multiple time argument execution. (roughly_SP): define "generic" version that does not use gcc extensions. 2008-10-30 Vladimir Tzankov [threads1] * lispbibl.d (GC_SAFE_SYSTEM_CALL): do not use gcc extensions. (GC_SAFE_CALL): do not use gcc extensions. (current_thread): do not use gcc extensions. * pathname.d: use new GC_SAFE_SYSTEM_CALL()/GC_SAFE_CALL(). (check_file_reopen): fix GCSAFETY bug. * stream.d: use new GC_SAFE_SYSTEM_CALL()/GC_SAFE_CALL(). 2008-10-30 Vladimir Tzankov [threads1] * spvw_garcol.d (gc_sweep1_varobject_page): pinned objects are always marked. * xthread.d: do not check for errors when spinlock_t=mutex_t. 2008-10-29 Vladimir Tzankov [threads1] * spvw.d (init_multithreading): initialize timeout_call_chain_lock spinlock. * zthread.d (timeout_call_chain_lock): just declare it - do not initialize. * xthread.d (SPINLOCK_INIT): remove it. spinlocks should be initialized with spinlock_init(). (xmutex_lock): do not use "var" for local variables. (xmutex_trylock): fix typo error. (spinlock_acquire): do not check for errors when spinlock_t=xmutex_t (spinlock_release): do not check for errors when spinlock_t=xmutex_t * spvw_garcol.d (gc_sweep1_varobject_page): holes_count should be pointer to uintC. Do not mark explicitly pinned objects. 2008-10-29 Sam Steingold * spvw.d (main): avoid a compilation warning; use ascii_to_string() instead of asciz_to_string() for simplicity 2008-10-29 Sam Steingold fix --with-threads compilation on platforms where spinlock_t=xmutex_t * xthread.d (SPINLOCK_INIT): define * zthread.d (timeout_call_chain_lock): use it 2008-10-29 Sam Steingold * stream.d (get_open_files_lock, release_open_files_lock): define (add_to_open_streams, find_open_file): use them (rd_ch_keyboard): avoid a "warning: empty body in an if-statement" 2008-10-29 Sam Steingold Merge the [threads] branch into the trunk * constobj.d, constsym.d, control.d, debug.d, error.d, eval.d, * lispbibl.d, makemake.in, package.d, pathname.d, savemem.lisp, * spvw.d, spvw_allocate.d, spvw_circ.d, spvw_fault.d, spvw_garcol.d, * spvw_gcmark.d, spvw_genera1.d, spvw_global.d, spvw_heap.d, * spvw_memfile.d, spvw_sigint.d, spvw_sigpipe.d, spvw_sigterm.d, * spvw_typealloc.d, spvw_update.d, stream.d, subr.d, subrkw.d, * symbol.d, threads.lisp, time.d, xthread.d, zthread.d: merge * spvw_garcol_old.d: the pre-MT garbage collector, enabled by NO_MULTITHREAD_GC in lispbibl.d * makemake.in (SPVW_INCLUDES): add spvw_garcol_old * po/Makefile.devel (DSOURCES): ditto 2008-10-28 Sam Steingold fix bug#2198109: LOAD-LOGICAL-PATHNAME-TRANSLATIONS confuses "many" and "one" when *LOAD-PATHS* is wild * init.lisp (search-file): treat wild elements of *LOAD-PATHS* just like non-wild ones, i.e., return directories, not their listings 2008-10-28 Sam Steingold * pathname.d (PROBE-PATHNAME): do NOT modify the argument! 2008-10-27 Philippe Brochard * modules/clx/new-clx/clx.f (GRAB-BUTTON, UNGRAB-BUTTON): fix button argument handling 2008-10-27 Sam Steingold fix bug#2159172: text drawing functions ignore :start & :end * modules/clx/new-clx/clx.f (get_substring_arg) (unpack_stringarg_alloca): add (general_draw_text, TEXT-EXTENTS, TEXT-WIDTH): use unpack_stringarg_alloca 2008-10-26 Sam Steingold * makemake.in: when re-creating gllib subdir, use "config.status $@/Makefile depfiles" instead of "config.status --file=$@/Makefile depfiles" as suggested in to work around an autoconf bug 2008-10-26 Sam Steingold * configure (conf_dir): remove and inline (called just once); fix redirections to avoid the "/bin/sh: Illegal option --" error; check whether requested modules require FFI by looking at configure.in, Makefile, *.lisp instead of listing modules explicitly 2008-10-25 Sam Steingold * modules/syscalls/calls.c (FILE-STAT): init file variable 2008-10-25 Sam Steingold separate potentially blocking system calls from heap access * pathname.d (check_file_reopen): use namestring_file_id instead of with_file_id * stream.d (find_open_file): second argument is uintB flags (this is not used as a callback anymore) * unix.d, unixaux.d, win32.d, win32aux.d (namestring_file_id): replaces with_file_id 2008-10-24 Sam Steingold Support Berkeley-DB 2.7 * modules/berkeley-db/configure.in: check for DB_ENV.log_set_config and DB_ENV.get_intermediate_dir_mode * modules/berkeley-db/bdb.c (DBE-SET-OPTIONS, DBE-GET-OPTIONS) [HAVE_DB_ENV_GET_INTERMEDIATE_DIR_MODE]: accept :INTERMEDIATE-DIR-MODE; [HAVE_DB_ENV_LOG_SET_CONFIG]: accept LOG-DIRECT LOG-DSYNC LOG-AUTO-REMOVE LOG-IN-MEMORY LOG-ZERO instead of DSYNC-LOG LOG-AUTOREMOVE LOG-INMEMORY DIRECT-LOG (1 extra) (dbe_get_intermediate_dir_mode): add DEFINE_DBE_GETTER1 2008-10-24 Sam Steingold ensure that all module configures have aux build dir set up * m4/general.m4 (CL_MODULE_COMMON_CHECKS): call AC_CONFIG_AUX_DIR here * modules/berkeley-db/configure.in, modules/gdbm/configure.in, * modules/pari/configure.in, modules/pcre/configure.in, * modules/postgresql/configure.in, modules/regexp/configure.in, * modules/zlib/configure.in: do not call AC_CONFIG_AUX_DIR, pass argument to CL_MODULE_COMMON_CHECKS instead * modules/clx/new-clx/configure.in, modules/dirkey/configure.in, * modules/fastcgi/configure.in, modules/gtk2/configure.in, * modules/i18n/configure.in, modules/oracle/configure.in, * modules/dbus/configure.in, modules/rawsock/configure.in, * modules/readline/configure.in, modules/syscalls/configure.in, * modules/wildcard/configure.in: pass argument to CL_MODULE_COMMON_CHECKS 2008-10-24 Sam Steingold * build-aux/config.rpath, gllib/Makefile.am, gllib/stdint.in.h, * gllib/stdlib.in.h, gllib/unistd.in.h, gllib/wchar.in.h, * gllib/wctype.in.h, gllib/uniwidth/width.c, glm4/gnulib-cache.m4, * glm4/gnulib-common.m4, glm4/gnulib-comp.m4, glm4/include_next.m4, * glm4/lib-link.m4, glm4/lib-prefix.m4, glm4/lock.m4, * glm4/stdlib_h.m4, glm4/unistd_h.m4, glm4/wchar.m4: sync with gnulib * glm4/threadlib.m4: add (pulled in by gettext 0.17) 2008-10-24 Sam Steingold replace m4/make.m4 with glm4/gnu-make.m4 * Makefile.devel (gnulib-imported): add gnu-make * m4/make.m4: remove * glm4/gnu-make.m4: add * configure.in: use gl_GNU_MAKE instead of CL_PROG_MAKE 2008-10-24 Sam Steingold * version.sh: 2.47+ (2008-10-24) 2008-10-23 Sam Steingold * configure.in (ALL_LINGUAS): remove obsolete variable, use ... * po/LINGUAS: new file, keep the list of languages here * makemake.in: use it 2008-10-23 Sam Steingold * version.sh: 2.47 (2008-10-23) 2008-10-23 Sam Steingold * configure (maybe_mkdir): remove * makemake.in: restore --datadir for compatibility with configure 2008-10-23 Stelian Ionescu * configure, makemake.in: accept --infodir for compatibility with generated configure scripts 2008-10-23 Sam Steingold fix bug#2188102: new-clx timeout precision is limited * modules/clx/new-clx/clx.f (PROCESS-EVENT, EVENT-LISTEN): pass unbound instead of NIL as the usec argument to sec_usec() 2008-10-22 Sam Steingold * po/Makefile.in.in (install-data-yes, installdirs): use "mkdir -p", just like on 2007-12-05 * Makefile.devel (VER, REL): use "./version.sh" instead of "version.sh" 2008-10-20 Sam Steingold * modules/rawsock/rawsock.c (check_iff): default=(unsigned)~0 (IFADDRS): accept :FLAGS-AND and :FLAGS-OR to filter out some interfaces (pushSTACK_sockaddr): replaces sockaddr_to_lisp1 2008-10-20 Sam Steingold * utils/modprep.lisp (print-tables-1): check that the DEFCHECKER default is a valid CPP constant ([_A-Za-z0-9]*) before protecting it with "#ifdef" to accommodate "(unsigned)~0" et al 2008-10-18 Shawn Betts Sam Steingold * modules/clx/new-clx/clx.lisp (get-wm-class): expect the unexpected: there may be many Nulls in WM_CLASS 2008-10-18 Adam Warner fix bug#2175937: Patch --without-unicode build failure * pathname.d (direntry_to_string) [!UNICODE]: restore non-UNICODE build by using n_char_to_string() 2008-10-17 Sam Steingold * makemake.in (docdir): defaults in configure to ${datarootdir}/doc/${PACKAGE_TARNAME}, not ${datarootdir}/doc/${PACKAGE} Reported by "Jose A. Ortega Ruiz" in 2008-10-17 Sam Steingold * makemake.in: partially reverted the 2008-10-10 (revision 1.775) patch which broke Solaris 8 which requires "gllib/stdint.h". CPPFLAGS is for host (and this goes into UTILCOMPILE) while XCPPFLAGS is for target (and thus is used to compile *.d) Reported by Raymond Toy 2008-10-16 Sam Steingold * modules/syscalls/calls.c (USER-INFO): for :DEFAULT, use getpwuid(getuid()) if getlogin() fails 2008-10-16 Sam Steingold * modules/clx/new-clx/clx.f (CHECK_TYPE): add (ensure_living_display, get_ptr_object_and_display) (make_xid_obj_low, get_xid_object_and_display, get_display_obj_tc) (general_plist_reader, general_plist_writer, SET-WM-HINTS): use it 2008-10-16 Drutsa Pavel fix bug#2164603: Error: should have been a WINDOW, but was PIXMAP * modules/clx/new-clx/clx.f (make_drawable): use "make_xid_obj (`XLIB::DRAWABLE`...)" instead of "make_window()" 2008-10-13 Michael Kappert Sam Steingold * makemake.in (check-script): strip CR (\r) from all output for woe32 2008-10-13 Sam Steingold * makemake.in, configure: remove --enable-maintainer-mode and never create the autoconf target because configure really depends on m4/*, glm4/* &c and to implement this properly we would need to check in makemake for autoconf 2.61+ in path, and then generate much of Makefile.devel in makemake.in (IOW, I can no longer recall when was the last time this target was useful as opposed to a nuisance) 2008-10-10 Sam Steingold * makemake.in (UTILCOMPILE): use XCPPFLAGS XCFLAGS XCLFLAGS and omit EXTRAOBJ to avoid mingw __errno linking problems 2008-10-10 Sam Steingold * makemake.in: finish the 2007-10-29 (1.690) patch: remove all mentions of XCC_UNUSABLE_CPP and gcc-cccp 2008-10-10 Sam Steingold * modules/syscalls/calls.c (get_file_size) [WIN32_NATIVE]: add (FILE-SIZE) [WIN32_NATIVE]: use it instead of GetFileSizeEx which takes a handle and not a pathname 2008-10-08 Sam Steingold * modules/bindings/glibc/linux.lisp (strsignal, _NSIG): add; use DEF-C-CONST instead of DEFCONSTANT for signals (ECANCELED, ENOKEY, EKEYEXPIRED, EKEYREVOKED, EKEYREJECTED) (EOWNERDEAD, ENOTRECOVERABLE): add errnos 2008-10-06 Sam Steingold fix bug#2146126: name conflict with libmysqlclient * spvw.d, lispbibl.d (clisp_malloc): rename from my_malloc (clisp_realloc): rename from my_realloc * modules/berkeley-db/bdb.c, modules/clx/new-clx/clx.f: * modules/i18n/gettext.c, modules/regexp/regexi.c: * modules/syscalls/calls.c, foreign.d, spvw_weak.d: update callers 2008-10-03 Sam Steingold * foreign.d: use BEGIN_DECLS & END_DECLS 2008-09-29 Sam Steingold * modules/matlab/wrap.lisp (matfile-content): use MEMORY-AS instead of WITH-C-VAR+CAST for efficiency Suggested by "Hoehle, Joerg-Cyril" 2008-09-26 Sam Steingold * m4/general.m4 (CL_CANONICAL_HOST_CPU): better mips detection, from the debian ffcall patch 2008-09-26 Sam Steingold * version.sh: 2.46++ (2008-09-23) 2008-09-26 Sam Steingold * modules/syscalls/calls.c (path_truncate, stream_truncate) [WIN32_NATIVE]: clarify (simplify?) logic 2008-09-24 Sam Steingold * clhs.lisp (open-http): also include port number in the Host header Reported by Raymond Toy 2008-09-24 Sam Steingold * modules/syscalls/calls.c (path_truncate) [WIN32_NATIVE]: fix logic 2008-09-23 Sam Steingold * modules/regexp/regexi.c (REGEXP-EXEC): when :BOOLEAN is T but match failed, return 1 value NIL instead of 0 values; accept :RETURN-TYPE to return a LIST or a VECTOR instead of multiple values; also return a list when the number of match groups is more than MULTIPLE-VALUES-LIMIT 2008-09-23 Sam Steingold * clhs.lisp (open-http): fix the Host: header Reported by Raymond Toy 2008-09-19 Sam Steingold * modules/i18n/gettext.c (SET-TEXTDOMAINDIR): remove unused variable * modules/syscalls/calls.c (STREAM-OPTIONS): ditto * modules/rawsock/rawsock.c (MAKE-SOCKADDR): ditto * genclisph.d (Lsuffix): remove unused global static (ULLsuffix): declare only when used (emit_typedef_test): use "%ld" for sizeof * spvw_debug.d (nobject_out1, bt_out): cast pointers to (uintP) before printing, print long ints as "%ld" * stream.d (xrealloc): remove unused function (TERMINAL-RAW, read_line, READ-INTEGER, READ-FLOAT) (WRITE-INTEGER): remove unused variable 2008-09-18 Sam Steingold * modules/rawsock/rawsock.c (my_check_argument): remove (not used since DEFCHECKERs were introduced in 1.10 on 2004-05-14) 2008-09-18 Sam Steingold * modules/berkeley-db/dbi.lisp (close@db): pass :ABORT as :NOSYNC 2008-09-18 Sam Steingold * modules/syscalls/calls.c (on_pnamestring): generalize ... (stat_obj): remove (path_truncate): do not do begin/end_system_call and error reporting, return status instead (%SET-FILE-SIZE, FILE-SIZE, FILE-STAT, find_first_file) (SET-FILE-STAT, STAT-VFS, FILE-OWNER, copy_attributes_and_close): use on_pnamestring 2008-09-18 Sam Steingold * clhs.lisp (open-http): "user-agent" includes version; link to http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 2008-09-17 Sam Steingold * modules/syscalls/calls.c (POSIX:FILE-SIZE) [WIN32_NATIVE]: surround the GetFileSizeEx call with begin/end_system_call; use sint64_to_I instead of off_to_I for the return value 2008-09-17 Sam Steingold * makemake.in (EVERY_INCLUDES_H): fix the logic for adding config.h 2008-09-16 Sam Steingold * modules/syscalls/calls.c: include (MAXHOSTNAMELEN): fall back to 256 (not 64) (MAXPATHLEN): fall back to 4096 (not 1024) * modules/syscalls/configure.in: check for (for woe32) * unix.d: include just once (MAXHOSTNAMELEN): fall back to 256 (not 64) 2008-09-15 Sam Steingold * modules/syscalls/calls.c (POSIX:DOMAINNAME) (POSIX::%SETDOMAINNAME): add * modules/syscalls/posix.lisp (domainname): add defsetf and export 2008-09-15 Sam Steingold * modules/syscalls/calls.c (POSIX:USER-SHELLS): implement * modules/syscalls/posix.lisp (USER-SHELLS): export 2008-09-15 Sam Steingold * modules/syscalls/calls.c (grp_to_lisp): use gid_to_I instead of UL_to_I (GROUP-INFO): use integerp instead of uint32_p 2008-09-15 Sam Steingold * configure: fix bug#2110337: libsigsegv configure hints suggest "rm -f ${DIRNAME}/config.cache" 2008-09-15 Sam Steingold * clhs.lisp (*http-log-stream*): defvar (open-http): accept :LOG argument (http-proxy, open-http, get-clhs-map, get-string-map) (ensure-impnotes-map): use *HTTP-LOG-STREAM* for logging * init.lisp (*http-log-stream*): export from CUSTOM 2008-09-15 Sam Steingold * makemake.in (check-script) [win32]: disable $? tests because %ERRORLEVEL% on woe32 can be reset to 0 all of a sudden http://article.gmane.org/gmane.lisp.clisp.devel/18967 Reported by Yaroslav Kavenchuk 2008-09-13 Sam Steingold * disassem.lisp (disassemble-machine-code): update for the 2008-09-10 change: SHELL on success returns NIL 2008-09-12 Sam Steingold * makemake.in (HSDEFAULT): "http://www.lisp.org/HyperSpec" is dead, use "http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec" * configure: adjust the help message 2008-09-10 Sam Steingold * pathname.d (SHELL) [WIN32_NATIVE]: return NIL on success and exitcode on failure, just like on Unix and as documented Reported by Yaroslav Kavenchuk (EXECUTE) [UNIX]: use WEXITSTATUS et al to parse status 2008-09-02 Sam Steingold * error.d (%DEFCLCS): use symbol_tab instead of symbol_tab_data to support TYPECODES on 32 bit platforms Reported by Vladimir Tzankov 2008-09-02 Sam Steingold * makemake.in (check-script): use $(RUN) instead of lisp.run Reported by Yaroslav Kavenchuk 2008-08-25 Bruno Haible * configure (SIGSEGV): Set to libsigsegv-2.6. 2008-08-24 Bruno Haible * spvw_sigsegv.d (stackoverflow_handler_continuation): New function, extracted from stackoverflow_handler. (stackoverflow_handler): Invoke it. Adapt to sigsegv_leave_handler API change in libsigsegv-2.6. 2008-08-21 Sam Steingold * modules/dbus/dbus.lisp (DBusMessageIter): c-struct, not c-pointer 2008-08-21 Sam Steingold * foreign.d (foreign_with_pointers_p): support inttypes (return false) 2008-08-20 Sam Steingold * lispbibl.d (I_to_ulong, I_to_slong): define regardless of HAVE_FFI for the sake of the syscalls module * modules/syscalls/calls.c (%SETHOSTID): sethostid does not return a value on *BSD, use errno to check for errors Reported by José H. Espinosa 2008-08-20 Sam Steingold * modules/dbus/configure.in (dbus_int64_t, dbus_int32_t, dbus_uint32_t) (dbus_int16_t, dbus_unichar_t, dbus_bool_t): check types * modules/dbus/dbus.lisp (def-c-const): import from EXPORTING; pass DBusError by reference using (c-pointer DBusError) instead of returning a fresh object using (error (c-ptr DBusError) :in-out) et al; (DBusMessageIter): add def-c-type 2008-08-20 Sam Steingold * makemake.in (check-script): use ${TRCRLF} to delete '\r' from output in addition to replacing '\n' with '_' to fix woe32 2008-08-18 Sam Steingold * modules/syscalls/calls.c: make sure that end_system_call() is called before all errors and that errno is only accessed inside begin_system_call/end_system_call 2008-08-17 Sam Steingold * modules/syscalls/calls.c (path_truncate, stream_truncate): call end_system_call(); before signaling errors (I_to_file_offset, FILE-SIZE) [WIN32_NATIVE]: use LARGE_INTEGER.QuadPart (stream_truncate) [WIN32_NATIVE]: fix LARGE_INTEGER literal 2008-08-15 Sam Steingold * modules/syscalls/calls.c (path_truncate, stream_truncate, FILE-SIZE): handle WIN32_NATIVE before HAVE_TRUNCATE & HAVE_FTRUNCATE because WIN32_NATIVE has a broken ftruncate (similar to fstat: accept some unknown int instead of a handle) (I_to_offset, STREAM-LOCK, %SETHOSTID): check arg type before conversion (file_offset_t): new type, necessary because file offset in win32 is represented by a non-integer type LARGE_INTEGER (I_to_file_offset): convert from an integer (path_truncate, stream_truncate): accept length of type file_offset_t (%SET-FILE-SIZE): use I_to_file_offset (FILE-SIZE): use L2_to_I for WIN32_NATIVE 2008-08-15 Sam Steingold * pathname.d (find_first_file): fix FindFirstFile call 2008-08-14 Sam Steingold * modules/syscalls/calls.c (HOSTID): rename from GETHOSTID (%SETHOSTID) [HAVE_SETHOSTID]: add * modules/syscalls/posix.lisp (hostid): add a defsetf * modules/syscalls/configure.in (sethostid): add a check 2008-08-13 Frederik Sam Steingold * modules/postgresql/configure.in: fix a typo in header detection 2008-08-12 Sam Steingold * pathname.d (PROBE-PATHNAME): call use_default_dir before classify_namestring because the win32 real_path requires an absolute pathname 2008-08-12 Sam Steingold * socket.d: all known unix (and woe32) systems have gethostname 2008-08-12 Sam Steingold all known unix systems have uname * unix.d (uname): remove prototype * m4/utsname.m4: remove * configure.in, syscalls/configure.in: do not use CL_UTSNAME * misc.d (MACHINE-TYPE, MACHINE-VERSION) [UNIX]: assume uname() 2008-08-11 Sam Steingold * pathname.d: regularize #ifdef UNIX/WIN32 to #if/#elif/#else #error 2008-08-11 Sam Steingold * pathname.d (FIND_DATA_FWD, FIND_DATA_FSIZE, find_first_file) [WIN32_NATIVE]: add (classify_namestring): also accept ans return fwd & fsize; use find_first_file for WIN32_NATIVE (PROBE-PATHNAME): return 4 values for existing paths (+ fwd + fsize) (READDIR_entry_timedate): use FIND_DATA_FWD (READDIR_entry_size): use FIND_DATA_FSIZE (copy_pathname_and_add_subdir): pass NULLs as fwd/fsize to classify_namestring() (FILE-WRITE-DATE): use find_first_file & FIND_DATA_FWD * init.lisp (ppn-fwd): no need to call FILE-WRITE-DATE or DIRECTORY 2008-08-11 Sam Steingold * gllib/regex_internal.h, glm4/libsigsegv.m4: update from gnulib 2008-08-10 Sam Steingold * hashtabl.d (hashcode4_atom): avoid MIN which is not defined on woe32 Reported by Yaroslav Kavenchuk 2008-08-10 Sam Steingold * makemake.in (check-script): use PRINC instead of PRINT for cygwin Reported by Reini Urban 2008-08-09 Sam Steingold fix patches 2008-07-11 & 2008-07-12 for Woe32 * pathname.d (file_status_is_dir) [WIN32_NATIVE]: return bool (assure_dir_exists) [WIN32_NATIVE]: fix var field access (classify_namestring) [WIN32_NATIVE]: fix var name (stat_obj): guard with "#ifdef UNIX" Reported by Yaroslav Kavenchuk 2008-08-06 Sam Steingold * fill-out.lisp (fill-stream-flush-buffer): remove the "one-line sexp on its own line" special case, see 2008-08-07 Sam Steingold * modules/dirkey/dirkey.c (init_iteration_node): do not pass pointers into the Lisp heap to system calls 2008-08-05 Vladimir Tzankov * lispbibl.d (Rectype_Thread, Rectype_Mutex, Rectype_Exemption): move above rectype_longlimit because these are XRECORDs, not LRECORDs 2008-08-05 Sam Steingold * pathname.d (check_file_reopen): *REOPEN-OPEN-FILE* can also be CLOSE * constsym.d (close): declare 2008-08-05 Sam Steingold * modules/readline/readline.lisp: upgrade from readline 5.0 to 5.2 (variable-value, reset-screen-size, prefer-env-winsize, readerr) (state-callback, state-vimotion, state-multikey, state-vicmdonce) (default-inputrc, sys-inputrc, tilde-expand): add * modules/readline/configure.in: check for the new features 2008-08-05 Vladimir Tzankov * lispbibl.d (pointable_address_unchecked) [HEAPCODES]: export to clisp.h 2008-08-04 Sam Steingold * modules/syscalls/calls.c (PATHCONF): fix g++ compilation 2008-08-04 Sam Steingold * pathname.d (check_file_reopen): fix a GC-safety bug; check the value of *REOPEN-OPEN-FILE* and change it to ERROR if it is invalid 2008-08-04 Sam Steingold * analyse-funtab.lisp (map-calls): turn into a generic function to support generic functions (map over fast functions in methods) 2008-08-04 Sam Steingold * control.d (make_vframe_activate): use GCTRIGGER2(value1,value2) instead of a global maygc similar to make_variable_frame() which is the only GC-unsafe call in make_vframe_activate() Reported by Vladimir Tzankov 2008-08-04 Sam Steingold * clos-class6.lisp (class-prototype@built-in-class): finish last patch: (SYS::%UNBOUND) should be the first argument to EQ 2008-08-04 Sam Steingold * lispbibl.d (thread_length): define to 3 because Thread contains 3 gcv_object_t fields 2008-08-01 Sam Steingold * modules/dbus/dbus.lisp: support dbus 1.2.1 (*foreign-guard*): set to T * modules/dbus/configure.in: check all functions 2008-07-31 Sam Steingold * clhs.lisp (documentation@package): fail gracefully when id-href is missing the package and impnotes must be regenerated 2008-07-31 Sam Steingold * foreign1.lisp (def-c-enum): accept non-numeric-literal values 2008-07-31 Sam Steingold * modules/gtk2/configure.in: fail if FFI is not present 2008-07-31 Sam Steingold * modules/dbus: new module * Makefile.devel (MODULES): add dbus 2008-07-29 Sam Steingold * init.lisp (search-file): fix a bug in "wild" code which caused SEARCH-FILE to return NIL even when it found something 2008-07-28 Reini Urban <37_runprog> * runprog.lisp: Translate comments to English. 2008-07-28 Sam Steingold * lispbibl.d (builtin_stream_p): do not export * modules/syscalls/calls.c (PATHCONF, FILE-STAT, STAT-VFS): use open_file_stream_handle instead of builtin_stream_p + SYS::BUILT-IN-STREAM-OPEN-P 2008-07-28 Sam Steingold new SETFable function POSIX:FILE-SIZE * modules/syscalls/configure.in: check for truncate & ftruncate * modules/syscalls/calls.c (FILE-SIZE, %SET-FILE-SIZE): implement * modules/syscalls/posix.lisp (FILE-SIZE): defsetf & export * stream.d (check_open_file_stream): replace strict_p with permissive_p to allow retuning nullobj instead of signaling an error (open_file_stream_handle): accept permissive_p * lispbibl.d (open_file_stream_handle): update the prototype 2008-10-27 Vladimir Tzankov [threads] Code cleanup * lispbibl.d (unpin_varobject_i): remove just a single pinned object from the chain (anyway it was not possible to remove more). * zthread.d (remove_timeout_call): iterate with single variable over the timeout_call_chain. 2008-10-27 Vladimir Tzankov [threads] Fix single thread build * pathname.d (openp): use open_files_lock only in MT. * stream.d (add_to_open_streams): use open_files_lock only in MT. (find_open_file): use open_files_lock only in MT. 2008-10-26 Vladimir Tzankov [threads] GC safe regions on system calls in pathname.d * lispbibl.d (clisp_thread_t): reorder the fields. Most used are first. add _running_handle_directory_encoding_error - global variable in pathname.d (open_files_lock): global mutex guarding access/modifications of O(open_files). * spvw.d (init_multithreading): initialize open_files_lock. * stream.d (open_files_lock): declaration. (add_to_open_streams): serialize calls via open_files_lock. (find_open_file): maygc. serialize calls via open_files_lock. * pathname.d: add GC safe regions around possibly blocking system calls. (openp): maygc. serialize calls via open_files_lock. 2008-10-20 Vladimir Tzankov [threads] Code cleanup. * spvw.d (signal_handler_thread): better comment. * spvw_global.d (gc_resume_all_threads): code cleanup (removed garbage code). 2008-10-20 Vladimir Tzankov [threads] CALL-WITH-TIMEOUT bugfix and user warning on failure. * lispbibl.d (struct timeout_call): add new member - failed - set to true if thread has failed to be interrupted. * spvw.d (signal_handler_thread): on SIGINT abort if no thread can be interrupted. on SIGALRM (CALL-WITH-TIMEOUT) just mark the timeout_call as failed if xthread_signal() fails. on termination signals - call quit() if some thread cannot be signaled. * spvw_global.d (gc_resume_all_threads): before resuming threads - report failed timeout_calls if any. * zthread.d (remove_timeout_call): is maygc now. acquires the timeout_call_chain lock before executing. If the timeout_call has failed - reports it as warning. (CALL-WITH-TIMEOUT): bugfix when the timeout is fraction number and there is overflow in microseconds. * pathname.d: sync with CVS head. 2008-10-17 Vladimir Tzankov [threads] CALL-WITH-TIMEOUT fix on linux. Code cleanup * lispbibl.d (main_threadp): removed. no more special LISP threads. (thr_signal_handler): declaration of the id of the signal handling thread (needed for process signal raising). * spvw.d (main): initialize thr_signal_handler. (signal_handling_thread): SIGALRM and SIG_TIMEOUT_CALL handled the same way. May be abandon SIG_TIMEOUT_CALL in future. * spvw_garcol.d (gar_col_normal): fix the single threaded build. * zthread.d: add comments. (CALL-WITH-TIMEOUT): use pthread_kill()/xthread_signal() instead of raise(sig). On 32 bit Debian(2.6 kernel) the raise()-ed signals are not delivered to the sigwait(). 2008-10-16 Vladimir Tzankov [threads] Fix declaration of timeout_call_chain and timeout_call_chain_lock. * lispbibl.d: timeout_call_chain and timeout_call_chain_lock declared as extern. 2008-10-16 Vladimir Tzankov [threads] CALL-WITH-TIMEOUT implemented. CATCH frame for THREAD-KILL. * lispbibl.d (clisp_thread_t): _dummy_stack_end is replaced by _thread_exit_tag. for immediate thread exit (with stack unwind) the tag pointed by it should be thrown in the thread context. (struct timeout_call): structure for describing CALL-WITH-TIMEOUT call in progress. (timeout_call_chain): global chain of timeout_call(s) sorted by their expiration time. (timeout_call_chain_lock): spinlock for guarding the access to timeout_call_chain. (timeval_less): compares two timeval structures. * spvw.d (main_actions): establish CATCH frame for thread exit before calling driver(). (acquire_heap_and_threads_locks): renamed to lock_heap_from_signal. Now it acquires only the heap lock and ensures that there is no GC in progress (and will not be possible until signal handler releases it). (timeval_subtract): subtracts two timeval structures. used for computing SIGALRM time. (signal_handler_thread): handle SIGALRM and SIG_TIMEOUT_CALL signals i.e. CALL-WITH-TIMEOUT without spawning new OS thread. * spvw_global.d (gc_suspend/resume_all_threads): no need to keep the threads lock while all threads are suspended. Makes signals handler thread easier. (gc_suspend_count): now it is guarded by the heap lock ("guarded" from the signal handler thread). * time.d (SYSTEM::%SLEEP): do not use sleep()/usleep() in multithread builds since. * eval.d (reset): restored it. no more "dummy stack end" for thread exit. * threads.lisp (%THROW_TAG): throws its argument. Needed in order to interrupt thread by from signal handler. (THROW is special form and cannot be funcall-ed). * constsym.d (thread_throw_tag): symbol for accessing the %THROW_TAG function from THREADS package. * zthread.d (ensure_uint32): removed - not need for it. (thread_stub): establish CATCH frame for thread exit before the driver frame. (MAKE-THREAD): initialize the _thread_exit_tag for the newly created thread. (insert_timeout_call): inserts new timeout call into the sorted chain of pending ones (timeout_call_chain). Should be called with lock held. (remove_timeout_call): removes an item from timeout_call_chain. Should be called with the lock held. (CALL-WITH-TIMEOUT): implemented without spawning OS threads. (THREAD-KILL): use THREAD-INTERRUPT and %THROW_TAG. 2008-10-15 Vladimir Tzankov [threads] Fix possible race condition during SIGINT handling. * spvw.d (acquire_heap_and_threads_locks): acquires global locks from signal handler without causing deadlock. (signal_handler_thread): fix possible race condition in SIGINT handling. use acquire_heap_and_threads_locks. 2008-10-15 Vladimir Tzankov [threads] DEBUG_GCSAFETY fixes in signal handler thread. * spvw.d (signal_handler_thread): use_dummy_alloccount can be used only when the LISP threads are suspended. 2008-10-14 Vladimir Tzankov [threads] Signal handling code cleanup. * lispbibl.d: export updated (with _suspend_count) clisp_thread_t to modules. Suspend and resume always lock the threads and do not care anymore whether the lock has been already acquired (since all mutexes are recursive now). (gc_suspend/resume_all_threads): does not take lock_threads anymore. (GC_STOP/RESUME_WORLD): does not take lock_threads anymore. (WITH_STOPPED_WORLD): does not take lock_threads anymore. parameters reordered. * spvw.d (for_all_threads): traverse the threads array in ascending order (most of the time gives more natural SIGINT handling). (interrupt_thread_signal_handler): release the "ok to reenter" spinlock before "entering LISP land". (signal_handler_thread): more sane signal handling. No signal will be missed due to GC in progress. * spvw_global.d (gc_suspend/resume_all_threads): does not take lock_thread parameter anymore. always acquires threads lock (it is safe due to the fact that all mutexes are recursive now). (add_per_thread_special_var): code cleanup. * spvw_allocate.d: changes due to GC_STOP/RESUME_WORLD parameter change. * spvw_garcol.d (gc_sweep1_varobject_page): assert and abort on impossible case (that will lead to segfault shortly if happens). (fill_varobject_heap_holes): assert if the created object for hole filling does not have the same length as the heap hole. * zthread.d (MAKE-THREAD): clisp_thread_t allocation is guarded by the threads lock (because of add_per_thread_special_var() possible race condition). (THREAD-INTERRUPT): returns two values - the thread itself and T/NIL depending whether it has really tryed to interrupt the thread (in case the thread has terminated or there is some OS error - the second return value is NIL). (THREAD-KILL): same as THREAD-INTERRUPT. * xthread.d (xmutex_init): make it recursive on Solaris. (xmutext_trylock): define it on Solaris. 2008-10-14 Vladimir Tzankov [threads] Pinned varobjects and signal handling fixes. * lispbibl.d (WITH_STOPPED_WORLD): parameters reordered. * spvw.d (signal_handler_thread): fixed race condition between GC and signal handler. (lock_heap_from_signal_thread): removed * spvw_garcol.d (gc_sweep1_varobject_page): fixed the pinned objects handling. (fill_varobject_heap_holes): checks for heap corruption. TODO: fill holes in string heap in SPVW_PURE. (gar_col_normal): compute the number of possible heap holes before allocation of varobj_mem_region arrays. * spvw_global.d (add_per_thread_special_var): reorder parameters to WITH_STOPPED_WORLD. * zthread.d (ensure_uint32): fixed missing return type. 2008-10-10 Vladimir Tzankov [threads] Per thread suspend/resume as GC safe points. * lispbibl.d (struct clisp_thread_t): new member - _suspend_count. Specifies how many times the thread has been suspended. (WITH_STOPPED_THREAD): macro for executing statement ensuring that a thread is either terminated or suspended at safe point (used by THREAD-INTERRUPT and THREAD-KILL). (suspend_thread/resume_thread): global functions declaration. * spvw.d: add comments (lock_heap_from_signal_thread): function for locking the LISP heap when executing in the signal handling thread (should wait for GC to finish if in progress). (signal_handler_thread): use lock_heap_from_signal_thread(). * spvw_global.d (suspend_thread/resume_thread): suspend/resume LISP thread execution at/from GC safe point. (gc_suspend_all_threads/gc_resume_all_threads): changed in order to take into account the threads _suspend_count(s). * zthread.d (THREAD-INTERRUPT): use WITH_STOPPED_THREAD instead of WITH_STOPPED_WORLD. (THREAD-KILL): use WITH_STOPPED_THREAD instead of WITH_STOPPED_WORLD. 2008-10-09 Vladimir Tzankov [threads] Signals loss fix. Docs update. :VSTACK-SIZE --> :VSTACK_DEPTH * zthread.d/subr.d/subrkw.d/constsym.d/threads.lisp/spvw.d: *DEFAULT-VALUE-STACK-SIZE* and :VSTACK-SIZE renamed to *DEFAULT-VALUE-STACK-DEPTH* and :VSTACK-DEPTH. * lispbibl.d (clisp_thread_t): new spinlock: _signal_reenter_ok preventing loss of SIG_THREAD_INTERRUPT signal (a signal is sent only when this lock is held). (GC_SAFE_SPINLOCK_ACQUIRE): macro for GC friendly spinlock acquire. * spvw.d (allocate_list_thread_stack): the parameter is stack depth now. (create_thread): the parameter is stack depth now. (main): after creating main_actions() thread - set the current TLS clisp_thread_t to NULL - not in LISP world anymore. (interrupt_thread_signal_handler): release the "ok to reenter" spinlock after signal re-establishment. * spvw_global.d (ACQUIRE_HEAP_LOCK): use GC_SAFE_SPINLOCK_ACQUIRE. * zthread.d (MAKE-THREAD): :VSTACK-DEPTH change. (THREAD-KILL): fixed. there was race condition problem (many calls for the same thread). (THREAD-INTERRUPT): be sure that the signal will be received before sending it (i.e. "ok to reenter" spinlock). * threads.lisp (*DEFAULT-CONTROL-STACK-SIZE*): initialized to 1 MB. 2008-10-08 Vladimir Tzankov [threads] All threads equal citizens (main not special). Stack sizes settable. * lispbibl.d: do not use break_sems in MT builds. * spvw.d: main thread is not different than ones created by MAKE-THREAD anymore (almost - LISP stack is "leaked" on exit). fixed signal handler with DEBUG_GCSAFETY. (init_memory): initialize THREADS::*DEFAULT-VALUE-STACK-SIZE*. (mt_main_actions): wrapper for main_actions() executed in its own thread. (main): the thread (C thread) executing main() does the signal handling - after creating mt_main_actions() thread. (signal_handler_thread): fix DEBUG_GCSAFETY. ignore SIGHUP and SIGCONT on UNIX_MACOSX until I know how to handle them (vfork() causes SIGHUP and may be SIGCONT). (install_async_signal_handlers): do not start thread for signal handling - now it is done from main(). * spvw_global.d (RESERVE_FOR_MALLOC): in MT build increased to 4 MB (LISP stacks and symvalues are allocated - currently - via malloc(). Probably completely different way for stack allocation is needed). * constsym.d: add THREADS::*DEFAULT-CONTROL-STACK-SIZE* (C stack) and THREADS::*DEFAULT-VALUE-STACK-SIZE* (LISP stack). * subr.d, subrkw.d (make_thread): add :CSTACK-SIZE and :VSTACK-SIZE keywords parameters * threads.lisp: add THREADS::*DEFAULT-CONTROL-STACK-SIZE* (C stack) and THREADS::*DEFAULT-VALUE-STACK-SIZE* (LISP stack) * zthread.d (ensure_uint32): ensures that its integer argument (object) can fit in uint32 (MAKE-THREAD): add :CSTACK-SIZE and :VSTACK-SIZE keywords parameters. (THREAD-KILL): do not wait on the killed thread to exit. * xthread.d (xthread_create): POSIX - create detached threads and sets the stack size. (xthread_wait): remove - no thread join. * pathname.d: add to CVS "threads" branch (EXECUTE): wait2 surrounded by GC safe region (many other places have the same requirement). 2008-10-07 Vladimir Tzankov [threads] debug.d added to threads branch. * debug.d: added (there is a call to GC that has to stop the world). 2008-10-07 Vladimir Tzankov [threads] Implementation of THREAD-INTERRUPT, THREAD-KILL and SIGTERM signals. * lispbibl.d (clisp_thread_t): two new members. _own_stack - whether the thread should release the memory for the LISP stack on exit. _dummy_stack_end - pointer in the stack of the thread used for hiding the top level driver frame (revealed on thread termination). * spvw.d (create_thread): sets the _own_stack depending whether the memory for the stack was allocated in it. (delete_thread): calls quit() on exiting from the last thread. (signal_handler_thread): implement termination signals. (main): never exits - even on main thread termination (see comment). (main_actions): create the top level driver and hide it via the "dummy stack end" - will be revealed only on forced termination. * eval.d (reset): reveal the stack beyond the "dummy stack end" if needed - the top level driver frame. * zthread.d (thread_stub): mark the "dummy stack end" after the driver frame. (THREAD-INTERRUPT): implemented. (THREAD-KILL): implemented (via THREAD-INTERRUPT and dummy stack end). 2008-10-07 Vladimir Tzankov [threads] Signal handling implementation of SIGINT and SIG_THREAD_INTERRUP * lispbibl.d: synced with CVS head (interruptp): not used in MT. * error.d: added to threads branch. (tast_break): do nothing in MT. * constsym.d (THREAD-RESTART): removed. * constobj.d (thread_break_description): string "CTRL-C: User break", since from the signal handler thread we cannot allocate any lisp object. * subr.d (THREAD-RESTART): removed. * spvw.d: synced with CVS head (signal_handler_thread): implemented CTRL-C signal handler. (interrupt_thread_signal_handler): implemented. * spvw_sigint.d: use it only in single thread builds * spvw_sigterm.d: use it only in single thread builds * spvw_typealloc.d (allocate_thread): do not initialize the xth_system. * spvw_weak.d: sync with CVS head * time.d (%SLEEP): end_blocking_call() in case of error in select(). * xthread.d (xthread_init): use pthread_mutexattr_settype instead of "np" version. (xthread_signal): wrapper for pthread_kill(). * zthread.d (THREAD-RESTART): removed. (thread_symbol_place): use eq() for checking empty symvalue. (CALL-WITH-TIMEOUT): removed broken implementation. * threads.lisp (THREAD-RESTART): removed from export list. (THREADS::*THREAD-WHOSTATE*): special variable for thread's whostate. 2008-10-06 Vladimir Tzankov [threads] SYMBOL-VALUE-THREAD implementation. * spvw.d (main): give name to first thread - "main thread". * subr.d: removed SYMBOL-GLOBAL-VALUE and SYMBOL-THREAD-VALUE. added SYMBOL-VALUE-THREAD. * constsym.d: removed SYMBOL-GLOBAL-VALUE and SYMBOL-THREAD-VALUE. added SYMBOL-VALUE-THREAD and SET-SYMBOL-VALUE-THREAD. * zthread.d (SYMBOL-VALUE-THREAD): returns two values - global/per thread symbol binding and BOUND-P boolean (as of - http://article.gmane.org/gmane.lisp.clisp.devel/19153) (SET-SYMBOL-VALUE-THREAD): used for SETF of the SYMBOL-THREAD-VALUE. (thread_symbol_place): helper function returning pointer to symbol binding (in thread or global). (MAKE-THREAD): make :NAME parameter is required - every thread should have name. (check-thread): thread argument replacement (when not a thread is passed). * threads.lisp: export SYMBOL-VALUE-THREAD and define SETF for it. 2008-10-05 Vladimir Tzankov [threads] MT signal handling partial implementation. * lispbibl.d (NC_STACK_): moved here from zthread.d. (NC_pushSTACK): moved here from zthread.d. (SIG_THREAD_INTERRUPT): signal used for interrupting thread execution (SIGUSR1). * spvw.d: MT signal processing machinery moved here from zthread.d (needs macros like for_all_threads() and we do not want to expose the threads internals - i.e. allthreads[] array). (async_signal_mask): returns the signal mask including all async signals that have to be handled/blocked. (install_async_signal_handlers): implemented. (signal_handler_thread): the signal handling thread. partially implemented. (interrupt_thread_signal_handler): SIG_THREAD_INTERRUPT handler. just a stub - to be implemented. * zthread.d: MT signal processing stuff moved to spvw.d. "Foreign" stack access macros moved to lispbibl.d. 2008-10-05 Vladimir Tzankov [threads] Small fixes * constsym.d (LISPSYM_B): initialize the filler member for LINUX_NOEXEC_HEAPCODES and MULTITHREAD. * xthread.d: better handling of pthreads with recursive mutex support. 2008-10-05 Vladimir Tzankov [threads] Small fixes and initial signal handling routines. * lispbibl.d (install_async_signal_handlers): install global async signal handlers in MT (starts non-lisp thread waiting with sigwait() for masked signals) * spvw.d (main): do not install normal handlers for async signals in MT. (recursive_mutexattr): cached global mutex attribute for recursive mutex creation (if supported by pthreads). * spvw_allocate.d: just formatting * spvw_global.d (add_per_thread_special_var): symbol_index was declared twice. * constsym.d (symbol-thread-value): added. * subr.d (symbol-thread-value): added. * zthread.d (thread_stub): initialize thread backtrace (important on errors). fix the lisp stack handling in case of errors. (symbol-thread-value): added and implemented. (install_async_signal_handlers): added - still not implemented. * xthread.d: xmutex_t should be recursive mutex - because of WIN32 CRITICAL_SECTION that is always recursive (we want to have same behavior on all platforms). Implemented for POSIX_THREADS in case the pthreads implementation does not already support it. * threads.lisp (symbol-thread-value): exported from MT package. 2008-10-03 Vladimir Tzankov [threads] Driver frame for new threads and initial special vars bindings * lispbibl.d (threadp): macro for testing if an object is lisp thread object. * spvw.d (delete_thread): do not free per thread symvalues - leave them to release_threads (during GC). * zthread.d: some comments (release_threads): release the per thread symvalues. (error_thread): signal type_error for its argument (as error_list). (thread_stub): create a driver frame before calling thread function. compute initial special variables bindings before calling thread function. (MAKE-THREAD): additional &key parameter - initial bindings. defaults to mt:*default-special-bindings*. (THREADP): implemented. (THREAD-NAME): implemented. (THREAD-ACTIVE-P): implemented. (SYMBOL-GLOBAL-VALUE): new function - returns the global symbol value. * constsym.d (symbol_global_value): added. (default_special_bindings): added. (initial_bindings): keyword added. * subr.d (MT:MAKE-THREAD): add :initial-bindings keyword parameter. (MT:SYMBOL-GLOBAL-VALUE): added. * subrkw.d: change MAKE-THREAD definition to accept :initial-bindings. * threads.lisp (SYMBOL-GLOBAL-VALUE): exported. (*DEFAULT-SPECIAL-BINDINGS*): exported and initialized. 2008-09-26 Vladimir Tzankov [threads] Status update and (delete-package) per thread symbols release * spvw.d (clear_per_thread_symvalues): is not maygc. * symbol.d (proclaim_constant): because of clear_per_thread_symvalues(). * package.d (delete_package_aux): remove possible per thread bindings of package symbols. 2008-09-26 Vladimir Tzankov [threads] Thread safety fixes (for special variables) * lispbibl.d (clear_per_thread_symvalues): maygc while waiting for threads lock. (GC_STOP/RESUME_WORLD): additional parameter indicating whether we already own the threads lock. (WITH_STOPPED_WORLD): previously was _PERFORM_GC. added parameter. (PERFORM_GC): use WITH_STOPPED_WORLD * spvw.d (lock/unlock_threads): mutex locking surrounded with begin/end_system_call(). (add_per_thread_special_var): moved to spvw_global.d (since it may "stop the world"). (clear_per_thread_symvalues): maygc while waiting for threads lock. * spvw_global.d (add_per_thread_special_var): moved here from spvw.d. will "stop the world" when reallocating threads symvalues. (gc_suspend/resume_all_threads): additional parameter indicating whether to acquire the thread lock (it is not recursive and the caller may already own it). * spvw_allocate.d: pass additional parameter to GC_STOP/RESUME_WORLD(). * eval.d (interpret_bytecode_): fix GCSAFETY in cod_bind. * symbol.d (proclaim_constant): fix GCSAFETY. * zthread.d: replace begin/end blocking system calls with begin/end blocking calls while locking threads. * savemem.lisp (saveinitmem): do not bind global symbols before saving since this will create per thread bindings that will not survive loadmem(). 2008-09-25 Vladimir Tzankov [threads] Per thread "local special variables" and compiled closures support. * lispbibl.d (Symbol_thread_value): new macro used by dynamic_bind. Empty per thread symvalues can be bound. (dynamic_bind): use Symbol_thread_value instead of Symbol_value. * spvw.d (add_per_thread_special_var): maygc. fix possible race condition. (initmem): allocate per thread variables before init_object_tab() - so *features* is not defined as per thread. * eval.d (interpret_bytecode_): handle special variables (cod_bind) * control.d (make_variable_frame): handle local special variables * spvw_garcol.d (gc_sweep2_varobject_page): add special case: !defined(NO_symbolflags) and !(SPVW_PURE) - not clear whether such combination is possible. * spvw_debug.d: sync with CVS head * stream.d: sync with CVS head 2008-09-24 Vladimir Tzankov [threads] Add per thread symvalue only once. * control.d (PROCLAIM): Fix: add per thread symvalue only once. 2008-09-24 Vladimir Tzankov [threads] Per thread special variables * lispbibl.d (struct symbol_): add tls_index for per thread symbol value. (SYMBOL_TLS_INDEX_NONE): empty value for the tls_index. (SYMVALUE_EMPTY): non existing symvalue in per thread TLS. (Symbol_value): redefined in MT (Symbolflagged_value): new macro for accessing the symbol value of flagged symbols. It creates the per thread entries. (clisp_thread_t): removed _symvalues from the end. The clisp_thread_t structure once allocated do not move. Added _ptr_symvalues - accessible for modules - where the per thread symvalues are stored. (thread_size): removed (clisp_thread_t has const size now) (thread_objects_offset): removed (thread_objects_count): removed (add_per_thread_special_var): adds symvalues (empty) in all threads for the specified symbol (called from PROCLAIM). (clear_per_thread_symvalues): makes all per thread symvalues empty for the specified symbol (used when special var is redefined as constant) (realloc_thread_symvalues): reallocates the storage for symvalues - _ptr_symvalues in a thread. * constsym.d: initialize the tls_index of symbol in MT builds * spvw.d (init_multithread_special_symbols): creates per thread symvalues for all standard special variables (used when not loading image file). (add_per_thread_special_var): implementation. adds symvalues (empty) in all threads for the specified symbol (called from PROCLAIM). (clear_per_thread_symvalues): implementation. makes all per thread symvalues empty for the specified symbol (used when special var is redefined as constant). (realloc_thread_symvalues): implementation. reallocates the storage for symvalues - _ptr_symvalues in a thread. (for_all_threadobj): redefined to iterate over _ptr_symvalues. * spvw_typealloc.d (make_symbol): allocate enough space for the symbol and initialize the tls_index. * spvw_update.d (do_update_symbol): use symbol_length when iterating over symbol_ objects (in MT symbols are more like an xrecord). * spvw_gcmark.d (gc_mark): use symbol_length when iterating over symbol_ objects. * spvw_memfile.d (memflags): added bit(21) for MULTITHREAD image (symbols are larger). (memdump_header_t): added _per_thread_symvalues - stores how many cells for symvalues should be allocated (global num_symvalues value). (loadmem_from_handle): initializes all per thread symvalues (of the only running thread) to empty. * zthread.d: small changes caused by thread_size() removal. * eval.d (unwind): use Symbolflagged_value(obj). (bind_next_var): use Symbolflagged_value(obj). * control.d (proclaim): adds per thread symvalue for special declarations. (activate_bindings): use Symbolflagged_value(obj). (letstar): use Symbolflagged_value(obj). (bind_next_var): use Symbolflagged_value(obj). * symbol.d (proclaim_constant): clear the per thread symvalues if any. 2008-09-24 Vladimir Tzankov [threads] GCSAFETY bug in SOCKET-SERVER-CLOSE * stream.d (socket_server_close): fixed GCSAFETY bug. 2008-09-18 Vladimir Tzankov [threads] Move globals to clisp_thread_t structure. * lispbibl.d (interrupt_pending): make it per thread. (writing_to_subprocess): make it per thread. * spvw.d (create_thread): initialize the new thread environment. * spvw_sigint.d (interrupt_pending): make it per thread. * spvw_sigpipe.d (writing_to_subprocess): make it per thread. * spvw_circ.d (USE_MULTI_LEVEL_BITMAP): was #ifdef MULTITHREAD. * zthread.d (make_thread): do not share aktenv with creating thread. 2008-09-16 Vladimir Tzankov [threads] Per thread break semaphores. * lispbibl.d: make break_sems to be per thread. (clisp_thread_t): added _break_sems to thread's data (break_sems): macro for accessing current thread semaphores. * spvw.d: remove global break_sems when building with threads. * zthread.d (disable_thread_async_signals): make it void (also fixes compilation problem on linux). 2008-09-14 Vladimir Tzankov [threads] Unwind-protect for pinned objects. Pinned object chains per thread. * lispbibl.d: removed HAVE_PINNED_BIT (pinned_chain_t): all pinned objects within a thread are chained. (pin_varobject): make unwind-protect frame and add to the thread chain. (unpin_varobject_i): removes all elements from pinned chain until it reaches its argument (unpin_varobject): unpin already pinned object. * spvw.d (main): leave the pinned chain empty. * spvw_sigint.d (react_on_sigint): do not unpin any object. unwind-protect will do this. * spvw_garcol.d: removed HAVE_PINNED_BIT cases. (fill_relocation_memory_regions): add all pinned objects from the threads chains. (page_contains_pinned_object): scan chains of pinned object of all threads. * stream.d: adjust pin/unpin_varobject to match the unwind-protect nature of pin_varobject(). * zthread.d (make_thread): initialize pinned object chain. 2008-09-14 Vladimir Tzankov [threads] Signal handling fixes. * lispbibl.d (interruptp): in multithreading - act only if called within the main thread (all async signals are handled in main thread). * spvw.d (STACK_PAGE_THRESHOLD): make it 4K. Sometimes debug builds happened to sigsegv depending on default stack address (USE_CUSTOM_TLS=3). * spvw_sigint.d: comments added * xthread.d (xthread_sigmask): sets/gets current thread signal mask * zthread.d: use xthread_sigmask(). 2008-09-13 Vladimir Tzankov [threads] SIGINT fix. Finish GC safe region (if interrupted in one). * spvw_sigint.d (react_on_sigint): Finish GC safe region before calling error() (if we are interrupted in GC safe region). 2008-09-13 Vladimir Tzankov [threads] MT signal handling. Streams system calls safe for GC. * lispbibl.d: disabled multithreading when NO_ASYNC_INTERRUPTS. (handle_length): maygc, accepts pointer to gcv_object_t. (main_threadp): macro - true if we are in the main thread. (SEMA_/SEGV_SEMA_): macro for conditional expansion of signal "semaphores" depending on the platform/build (for OSX is wrong). * zthread.d: disable the asynchronous signals for newly created threads. (disable_thread_async_signals): disables the async signals for the current thread. (thread_stub/exec_timeout_call): disable async signals at beginning. * spvw_sigint.d (react_on_sigint): unpin possibly pinned object for the main thread. * stream.d: make all system calls "safe for gc". GC may run while waiting for input. * spvw_memfile.d (savemem): handle_length() expects pointer to stream now. 2008-09-08 Vladimir Tzankov [threads] DEBUG_GCSAFETY fixes. * lispbibl.d: include xthread.d in clisp.h for proper module build. (TARGET_CPU_DEFINED): if defined - the inclusion of xthread.d will not try to deduce the CPU type. * spvw.d (current_thread_alloccount): moved from spvw_global.d. Special case when called before main() (from C++ statics initializations). * spvw_global.d (current_thread_alloccount): moved to spvw.d * xthread.d: define the CPU from compiler supplied definitions if not already done in lispbibl.d. Needed for spinlock_t functions when included from modules. 2008-09-03 Vladimir Tzankov [threads] Fast thread local storage w/o compiler support (32 bit platforms only). * lispbibl.d: new CFLAGS - USE_CUSTOM_TLS={1,2,3} (set_current_thread): redefined for different types of TLS. (current_thread): redefined for different types of TLS. (roughly_SP): returns the current stack pointer (used when USE_CUSTOM_TLS=2,3). (thread_specific_entry/thread_specific_data): cache/hash for SP to clisp_thread_t pointer mapping. (tsd_getspecific): fast lookup for TLS when USE_CUSTOM_TLS=2 * spvw.d (threads_tls): global variable holding pointers to threads local storage. (tsd_initialize): initialize TLS when USE_CUSTOM_TLS=2 (tsd_setspecific): adds per thread variable to global storage when USE_CUSTOM_TLS=2 (tsd_remove_specific): removes thread specific data for the calling thread (USE_CUSTOM_TLS=2). (tsd_slow_getspecific): gets the per thread variable value when there is cache miss in the fast version (USE_CUSTOM_TLS=2). (current_stack_base): returns the stack bottom of the current thread. Used when USE_CUSTOM_TLS=3. (current_stack_size): returns the max. stack size of the current thread. Used when USE_CUSTOM_TLS=3. (get_stack_region): helper function when POSIX_THREADS are defined. Gets the stack regions of threads created via pthreads. (set_current_thread): implemented as function when USE_CUSTOM_TLS=3 (threads_maps): global table mapping stack pointer to appropriate clisp_thread_t (indexed with SP shifted by page size - 12 bits). (init_multithread): initialize the custom thread local storage (if any). (get_reserved_memory_regions): removed. (is_safe_region): removed. (main): special declaration when USE_CUSTOM_TLS=2 * zthread.d (thread_stub/exec_timeout_call): special declaration when USE_CUSTOM_TLS=2 * constobj.d: initial commit (added all_threads and threads_to_release). 2008-08-31 Vladimir Tzankov [threads] GC fixes for CLOS/SMALL_SSTRING forward pointers and SPVW_PURE. * spvw_garcol.d (instance_p): returns true if the argument points to CLOS instance. (sstring_p): return true if the argument points to sstring (and HAVE_SMALL_SSTRINGS is defined). (gc_sweep1_varobject_page): do not reserve memory for forwarded/reallocated objects (CLOS instances/small strings). Use sstring_p/instance_p instead of many ifdefs. (gc_sweep2_varobject_page): do not relocate marked objects that have been forwarded (CLOS instances and small strings). Special case for symbols heap in SPVW_PURE memory model. (gar_col_normal): fixed multiple iteration bug over varobject heaps when GENERATIONAL_GC is defined and generation is 1. * lispbibl.d: added TODO for pin_varobject 2008-08-31 Vladimir Tzankov [threads] GC fixes. SPVW_PAGES pinned varobjects support. * spvw_garcol.d (gc_sweep1_varobject_page): code cleanup. fixed the case of multiple holes at the end of memory regions. (gc_sweep2_varobject_page): code cleanup and fix. moves the objects to calculated addresses in sweep1 phase (not by fill pointer anymore). (fill_relocation_memory_regions): fixed sorting of memory regions (page_contains_pinned_object): returns true if there is a pinned object in the page. (gc_compact_from_varobject_page): do no compact pages that contain pinned varobjects. 2008-08-30 Vladimir Tzankov [threads] GC fixes. * lispbibl.d: enabled multithreading when NO_ASYNC_INTERRUPTS. * spvw_garcol.d: comments cleanup (gc_sweep1_varobject_page): mark the last pinned object in case we have not iterated through it. (fill_varobject_heap_holes): implementation for simple bit vectors (1/2/4/8/16/32) with SPVW_PURE memory model. 2008-08-26 Vladimir Tzankov [threads] Fixed TYPECODES build * spvw_garcol.d (fill_relocation_memory_regions): fixed TYPECODES compliation problem (varobjectp is not defined with TYPECODES). (varobj_mem_region): fixed typo in definition (SVPW_PURE --> SPVW_PURE). 2008-08-25 Vladimir Tzankov [threads] Support for "pinned" varobjects. * lispbibl.d: sync with CVS head (Thread): removed xth_next and xth_prev from Thread xrecord (clisp_thread_t): added _pinned object - in case there is no HAVE_PINNED_BIT defined. (clisp_thread_t): removed the _lthread object. (thread_objects_offset/count): thread GC visible objects start from _aktenv. (delete_thread): additional parameter - full. If true - frees all resources (memory) previously allocated. (release_threads): releases the threads that have terminated and there are no references to them. Called from GC. (pin/unpin_varobject): macros that pin/unpin varobject. Currently implemented only if HAVE_PINNED_BIT is undefined. * spvw.d (push_threads_on_stack): removed (delete_thread): additional parameter - full. Implementation. (init_memory/main): fixed/add (main) threads initialization. * spvw_garcol.d (varobj_mem_region): struct defining memory region in varobject heap that can be used for compaction. Also the same struct is used for describing the holes in heap that should be filled after the compaction. (ACCEPTABLE_VAROBJECT_HEAP_HOLE): defines the "acceptable" size of the hole in the heap. If there is less place than this constant in front of pinned object - new hole is added. (gc_sweep1_varobject_page): entirely rewritten in order to take care of pinned objects. (gc_sweep2_varobject_page): changed in order not to move pinned objects - addresses are already calculated in gc_sweep1_varobject_page. (fill_relocation_memory_regions): fills a list (array actually) of memory regions in varobject heap that can/should be filled during compaction. Takes care to keep pinned objects out of these regions. (fill_varobject_heap_holes): fills the holes in all varobject heaps, caused by the existence (if any) of pinned objects. (gar_col_normal): implements the thread xrecords life cycle. All terminated threads without references to them are released (the same as open files). (gar_col_normal): re-factored to use the new pinned object support during the sweep phase. (gar_col_done): calls release_threads() if needed. * spvw_sigsegv.d: sync with CVS head * spvw_typealloc.d: comments cleanup * zthread.d (release_threads): implementation (make-thread): "re-factored" for thread safety and new threads life cycle (O(all-threads)) (list-threads): implemented correctly. 2008-08-18 Vladimir Tzankov [threads] Added GC safe points * lispbibl.d (GC_SAFE_CALL/GC_SAFE_SYSTEM_CALL): macros for easing encapsulation of blocking system calls which are safe for GC (clisp_thread_t): changed typedef. C++ does not like forward declarations of "anonymous" typedef-ed structures. * stream.d (low_clear_input_unbuffered_handle): added maygc (listen_char_unbuffered): added maygc (clear_input_unbuffered): added maygc (socket-status): blocking select() is safe for GC * spvw_fault.d (handle_fault_range): implement locking around cache and page protection change (the bulk i/o is still not safe for GC) 2008-08-18 Vladimir Tzankov [threads] Make the GC re-entrant * spvw_global.d (gc_suspend_count): re-entry counter (gc_suspend_all_threads/gc_resume_all_threads): implement the GC re-entrancy 2008-08-17 Vladimir Tzankov [threads] GENERATIONAL_GC support. Thread xrecord changes. * lispbibl.d (Thread): the record contains now a pointer (xth_globals) to the clisp_thread_t structure (instead of separate pointers to LISP stack, backtrace and TLS). (push_threads_on_stack): global function to push all active threads (in allthreads[] array) to the current thread LISP stack. * spvw.d (push_threads_on_stack): implementation. (delete_thread): big TODO here. See the comment at the end. * spvw_heap.d (physpage_state_t): added a cache_lock spinlock. During fault handling single thread may manipulate the protection and cache. * spvw_genera1.d (build_old_generation_cache): initialize the cache_lock of physpage_state_t structures. * spvw_fault.d (handle_fault): implement locking around cache and page protection changes. PROT_READ_WRITE pages always return success now (it means other fault has handled it before us). * zthreads.d (list_threads): implemented (thread_yield): added safe for GC point. (make_thread): initialize the xth_global of the Thread record. 2008-08-14 Vladimir Tzankov [threads] DEBUG_GCSSAFETY implementation + REPL GC safe point. Builds with GENERATIONAL_GC will experience segfaults. * lispbibl.d: added GCSAFETY for MT as discussed in http://article.gmane.org/gmane.lisp.clisp.devel/18750 (GC_STOP_WORLD): macro for stopping all threads for GC (GC_RESUME_WORLD): macro for resuming all suspended during GC threads. (alloccount): redefined as macro when build with MT and GCSAFETY. (clisp_thread_t): added _alloccount for each thread (PERFORM_GC/_PERFORM_GC): refactored in order to take into account DEBUG_GCSAFETY (current_thread_alloccount): returns a pointer to the current thread _alloccount (GC_SAFE_REGION_END): fixed possible race condition (begin/end_blocking_call): pair macro for defining safe for GC regions when the execution is already in system call * spvw.d (create_thread): do not initialize the main (first) clisp_thread_t fields. * spvw_global.d (current_thread_alloccount): implementation (gc_suspend_all_threads): keep the heap/threads lock on exit (gc_resume_all_threads): do not acquire threads lock and handle properly heap lock. * spvw_allocate.d: added DEBUG_GCSAFETY support (LOCK_ALLOCATE): stops the "world" on each allocation in GCSAFETY (RETURN_OBJ): resumes the "world" after successful allocation in GCSAFETY (inc_alloccount): increases the _allocount in all threads (not efficient - see comments). * zthread.d (thread_stub): now it is /*maygc*/ (in GCSAFETY we still do not have current_thread() set). * stream.d: added GC safe region for REPL. the patch is located at: http://code.brumbar.com/stream.d-patch (low_read_unbuffered_handle): maygc now. (rd_ch_unbuffered): maygc now. the encoding re-acquired from stream for each character (since low_read_unbuffered_handle is maygc now). (rd_ch_terminal1): maygc now * time.d: the patch is located at: http://code.brumbar.com/time.d-patch (sleep): added safe for GC region arround the system call 2008-08-08 Vladimir Tzankov [threads] GC_SAFE_REGION_END fix + blocking system calls macros. * lispbibl.d (GC_SAFE_REGION_END): fixed possible race condition (begin/end_blocking_system_call): macros for marking possibly blocking system calls. * zthread.d (make-thread): use STACK_item_count() macro for computing stack size. use begin/end_blocking_system_call. 2008-08-06 Vladimir Tzankov [threads] Heap/GC changes * lispbibl.d (pointable_address_unchecked): exported to clisp.h (present in CVS head as well) (Rectype_Thread,Rectype_Mutex,Rectype_Exemption): moved to xrecord area in the declarations (present in CVS head as well) (GC_SAFE_REGION_BEGIN/END): now they make GCTRIGGER() for debugging purposes. (clisp_thread_t): _lthread type changed to gcv_object_t. (clisp_thread_t): renamed the spinlocks and mutex for GC suspend/resume (now begin with _gc_xxx). (thread_objects_offset): does not need parameter. Also include again the _lthread. (PERFORM_GC): now takes second parameter - whether to lock the heap operation before performing GC (since it can be called explicitly, not only from allocations). (inc_allocstamp): the specialization for mv_space moved after the definition of clisp_thread_t. * spvw.d: fixed some comments (create_thread): takes single parameter - the list stack size. (delete_thread): takes a single parameter - the clisp_thread_t to be deleted. (gc_suspend_all_threads): moved to spvw_global.d (gc_resume_all_threads): moved to spvw_global.d (main): allocates Thread record for the main thread (done after the heap is initialized). * spvw_global.d (gc_suspend_all_threads): moved here from spvw.d. added second parameter whether to acquire the heap/GC lock (in case we are called not from allocate_xxxx but explicitly). (gc_resume_all_threads): moved here from spvw.d (ACQUIRE_HEAP_LOCK): macro for locking the heap (and GC as well) (RELEASE_HEAP_LOCK): macro for releasing the heap lock. * spiv_allocate.d (all): use ACQUIRE/RELEASE_HEAP_LOCK for locking/releasing the heap (all): add second parameter "false" to all PERFORM_GC calls (since we already hold the alloc/GC lock). * spvw_memfile.d (savemem): calls PERFORM_GC with second parameter "true" (alloc/GC lock should be acquired) * debug.d (gc): calls PERFORM_GC with second parameter "true" (alloc/GC lock should be acquired) * spvw_circ.d (mlb_expand): added a typecast (g++ complains). * zthread.d (thread_stub): re-factored. (make_thread): re-factored. removed possible deadlock. 2008-08-04 Sam Steingold * lispbibl.d (thread_length): define to 3 because Thread contains 3 gcv_object_t fields (sync from HEAD) 2008-08-02 Vladimir Tzankov [threads] Heap/GC changes for multithreading * lispbibl.d (struct clisp_thread_t): added fields for thread suspend/resume support (used for GC). (GC_SAFE_POINT, GC_SAFE_POINT_ELSE): macros that define a safe point for GC in thread execution. (GC_SAFE_REGION_BEGIN,GC_SAFE_REGION_END): macros defining safe for GC regions (in begin/end_system_call) (PERFORM_GC): macro used for "safe" performing of GC. suspends/resumes threads before/after the GC. * xthread.d (spinlock_t): enabled spinlocks. added asm implementation for POWERPC and fixed the one for x86. (xcodition_t): finished native win32 implementation (not tested). (xthread_cancel): removed. (xthread_wait): added. waits for thread termination (xmutex_trylock): added (spinlock_tryacquire): added * zthread.d (make_thread,thread_stub): re-factored the thread creation. (call-with-timeout): removed usage of xthread_cancel (not GC safe). the spawned thread is not terminated in any way now. * spvw.d removed the MT dependency on the mmap. (main): initialization of MT in the very beginning (create_thread): just creates and initializes a clisp_thread. does not registers the new thread any more (since it still does not run) (delete_thread): fixed bug with thread indexing (lock_threads): obtains global thread operations mutex (unlock_threads): releases the global thread operation mutex (register_thread): register a clisp_thread_t in the global thread array (the clisp_thread_t should be running at that time - because of GC). (gc_suspend_all_threads): suspends all running threads at points "safe" for GC. (gc_resume_all_threads): resumes the suspended (for GC) threads. * spvw_global.d (struct mem): added alloc_lock (spinlock_t) guarding both allocation and GC. (init_heap_locks): initializes heap locks(s). currently just alloc_lock. * spvw_allocate.d (LOCK_ALLOCATE, RETURN_OBJ): All heap allocation begin with LOCK_ALLOCATE and return via RETURN_OBJ. These macros manage the heap/GC lock(s). * spvw_memfile.d: calls to GC enclosed in PERFORM_GC. * debug.d: calls to GC enclosed in PERFORM_GC. 2008-07-28 vlado tzankov [threads] Initial commit of multithreading. Lisp globals are implemented via TLS (with or without compiler support) * lispbibl.d (struct clisp_thread_t): reordered the fields. the structure starts with the ones that have to be accesses from modules (STACK, mv_spaces, etc). Added _SP_anchor (was global in spvw.d) (current_thread, _current_thread, current_thread_tls_key): macro current_thread() provides access to the current clisp_thread_t via per_thread variable _current_thread (in presence of compiler support) or through xthread_key_get (slow). (THREAD_SYMVALUES_ALLOCATION_SIZE): initial allocation size of clisp_thread_t structure - at the end symvalues will be appended (before the change the size depended on the mmap_pagesize) (per_thread): removed all qualifiers from global variables in single thread builds. in MT builds - there is single global per thread variable for CLISP internals. (thread_objects_offset, thread_objects_count): excluded _lthread from the returned offset/count. seems to cause problems with GC sometimes. (set_current_thread): the first thing a new thread should call - assigns the clisp_thread_t to the TLS. (create_thread,delete_thread,maxnum_symvalues): made global * spvw.d (create_thread): changed to accept size of LISP stack. (delete_thread): frees the allocated LISP stack. (allocate_lisp_thread_stack): allocates LISP stack. currently with malloc() (get_reserved_memory_region, is_safe_region): ensure that address range for LISP stack is safe (was used in the version with SP tweaking - probably will be needed later). (init_memory, main): "globals" initialization moved after current_thread() is valid. * spvw_typealloc.d (allocate_thread): xth_system will be initialized on thread creation. what to do with the other fields? * xthread.d (xthread_cancel): after cancellation wait the thread to exit * zthread.d (NC_STACK_,NC_pushSTACK): macros for filling non-current(NC) LISP stacks of not yet started threads. (thread_stub): the main entry point of threads created by MAKE-THREAD. (MAKE-THREAD): implemented. creates a new OS thread and LISP record for it. (exec_timeout_call): the entry point of threads created by CALL-WITH-TIMEOUT (CALL-WITH-TIMEOUT): reimplemented. creates OS thread bu NO LISP record for it. * thread.lisp (TIMEOUT-MESSAGE): convert to string the default answer (y-or-n provides list(s) with characters). 2008-07-27 Sam Steingold fix bug#2029069: stack overflow with gethash * hashtabl.d (hashcode3_atom, hashcode3stable_atom, sxhash_atom): accept level argument (ignore it because EQUAL hash code does not recurse on atoms) (HASHCODE_MAX_LEVEL): rename from HASHCODE_TREE_MAX_LEVEL (HASHCODE_NEED_LEAVES): rename from HASHCODE_TREE_NEED_LEAVES (hashcode_tree_rec): pass level+1 to hashcode_leaf (hashcode_tree): accept level argument (hashcode3, hashcode3stable, hashcode4, sxhash): pass level=0 to hashcode_tree() (hashcode4_): new macro: like hashcode4(), but pass level+1 to hashcode_tree() (hashcode4_atom, hashcode4_vector, hashcode4_vector_T): accept level argument (hashcode4_vector): limit count to HASHCODE_NEED_LEAVES 2008-07-27 Sam Steingold * hashtabl.d (hashcode_pathname): extract (hashcode3_atom, hashcode3stable_atom): use it 2008-07-26 Sam Steingold * control.d (skip_declarations): remove (finish_flet): rename the last argument and revert its meaning (FLET, MACROLET, FUNCTION-MACRO-LET): update finish_flet calls NB: FUNCTION-MACRO-LET now barfs on declarations in both compiled and interpreted code 2008-07-24 Sam Steingold * format.lisp (format-logical-block-parse): uniform error messages 2008-07-24 Sam Steingold * utils/clispload.lsp (*expected-failures*): add eval-when.15 and eval-when.17 (/= EVAL :EXECUTE) & (/= LOAD :LOAD-TOPLEVEL) 2008-07-23 Sam Steingold * compiler.lisp (c-LABELS, c-FLET, c-MACROLET): rework the "ANSI SPECIAL declarations" patch to fix a LABELS flaw 2008-07-23 Sam Steingold * compiler.lisp (check-fdef-name): add local macro (c-FLET, c-LABELS, c-FUNCTION-MACRO-LET, c-GENERIC-FLET) (c-GENERIC-LABELS): use it 2008-07-23 Sam Steingold * init.lisp (%expand-form): FLET, LABELS, MACROLET respect the SPECIAL declarations, as per ANSI NOTE: FUNCTION-MACRO-LET still does NOT - it is our internal operator * control.d (make_vframe_activate): extract from LOCALLY (LOCALLY, LABELS): use it (finish_flet): accept an extra argument ignore_declarations (FLET, MACROLET): pass ignore_declarations=false to finish_flet (FUNCTION-MACRO-LET): pass ignore_declarations=true to finish_flet * compiler.lisp (skip-declarations): remove (with-bindings, with-bindings-lite): add local macros (c-FLET, c-LABELS): use with-bindings (c-MACROLET): use with-bindings-lite 2008-07-23 Sam Steingold * init.lisp (cons-*fenv*, illegal-syntax): add (%expand-form, %expand-fundefs-1, %expand-funmacdefs-1): use them * macros3.lisp (expand-LETF*, expand-LETF): use ILLEGAL-SYNTAX * compiler.lisp (add-fenv, c-FLET, c-FUNCTION-MACRO-LET) (c-GENERIC-FLET, c-MACROLET): use CONS-*FENV* (c-illegal-syntax): add (analyze-letlist, c-COMPILER-LET): use it (mk-var): add local macro (c-FLET, c-LABELS, c-FUNCTION-MACRO-LET, c-GENERIC-FLET) (c-GENERIC-LABELS): use it 2008-07-22 Sam Steingold * lispbibl.d (OBJECT_OUT, NOBJECT_OUT): fflush stdout 2008-07-22 Sam Steingold * modules/pcre/cpcre.c (PCRE-COMPILE): fix a typo: UNGREADY->UNGREEDY Reported by Todd Kirby 2008-07-22 Sam Steingold * makemake.in (check-script): many more tests 2008-07-22 Sam Steingold * stream.d (error_value_stream): print the caller 2008-07-22 Sam Steingold * spvw_sigsegv.d (print_mem_stats): also print a timescore_t 2008-07-22 Sam Steingold * debug.d (%ROOM): additionally return gc_count, gc_space, gc_time * lispbibl.d (internal_time_to_I): declare extern * time.d (internal_time_to_I): make global * room.lisp (room): return the same values as gc, print gc stats 2008-07-22 Sam Steingold * eval.d (SUBR-INFO): use STACK_to_mv instead of L(values) * stream.d (MAKE-PIPE-IO-STREAM): ditto * time.d (%%TIME): ditto 2008-07-22 Sam Steingold * lispbibl.d: fix bug#2011096: unicode in comments causes compile errors when LANG=ja_JP.eucJP 2008-07-22 Sam Steingold * utils/clispload.lsp (*expected-failures*): drop tests that we pass 2008-07-21 Sam Steingold * modules/clx/new-clx/clx.f (get_font_info_and_display): prefix *CANONICALIZE-ENCODING* with XLIB:: for bootstrap when is has not been exported yet 2008-07-21 Sam Steingold the sets of declaration and type names are disjoint, as per ANSI (see http://www.lisp.org/HyperSpec/Body/dec_type.html) * condition.lisp (check-not-type, check-not-declaration): define (define-condition): use CHECK-NOT-DECLARATION * clos-class3.lisp (defclass): use CHECK-NOT-DECLARATION * compiler.lisp (c-PROCLAIM): use CHECK-NOT-TYPE * constsym.d (check_not_type): declare * control.d (PROCLAIM): use CHECK-NOT-TYPE for DECLARATION * defstruct.lisp (defstruct): use CHECK-NOT-DECLARATION * init.lisp (check-not-declaration): predefine * macros2.lisp (deftype): use CHECK-NOT-DECLARATION * utils/clispload.lsp (*expected-failures*): remove DECLARATION.([4-9]|1[01]) (i.e. tests 4..11 now pass) 2008-07-21 Bruno Haible * makemake.in (LIBS): Remove special code for Solaris 2.1. 2008-07-21 Sam Steingold fix "-x ... -repl", broken since 2008-01-06 * reploop.lisp (main-loop): accept an optional exit argument * spvw.d (main_actions): pass !p->argv_repl to MAIN-LOOP * makemake.in (check-script): test "-x ... -repl" 2008-07-21 Sam Steingold * makemake.in (ANSI_CLISP): add "-p CL-TEST" (check-ansi-tests, check-ansi-tests-debug, check-ansi-tests-compiled) (check-ansi-tests-compiled-debug): remove IN-PACKAGE from -x 2008-07-21 Sam Steingold fix bug#2022362: Problem :external-format :dos and (setf stream-element-type): after a ((setf stream-element-type) '(unsigned-byte 8)) after read-line on a :dos stream an NL byte (10) is read from the stream * stream.d (rd_by_iau8_unbuffered, rd_by_array_iau8_unbuffered) (rd_by_iau8_buffered, rd_by_array_iau8_buffered): respect ChannelStream_ignore_next_LF 2008-07-21 Sam Steingold * pathname.d (check_file_reopen): when *REOPEN-OPEN-FILE* is WARN, issue a warning instead of signaling an error * constsym.d (check_file_reopen): declare * spvw.d (init_symbol_values): init *REOPEN-OPEN-FILE* to ERROR * utils/clispload.lsp (*reopen-open-file*): set to WARN to pacify 6 tests 2008-07-21 Sam Steingold * utils/clispload.lsp (*pprint-first-newline*): set to NIL to conform to Paul's expectations 2008-07-21 Sam Steingold * encoding.d: do not #include , it is already done by lispbibl 2008-07-20 Sam Steingold * pprint.lisp (copy-pprint-dispatch): as per ANSI, when no table is specified, return a COPY of *PRINT-PPRINT-DISPATCH*, not its value 2008-07-20 Sam Steingold * io.d (justify_empty_2): concatenate all strings in a single-liner into one string instead of pushing all the components into the block 2008-07-18 Sam Steingold * io.d (paren_open): a minor simplification (print): remove an unused static function (justify_empty_2): never drop any strm_pphelp_strings (this fixes the "risky" test in iofkts.tst) 2008-07-17 Sam Steingold * modules/clx/new-clx/clx.lisp (*canonicalize-encoding*): defvar and export from XLIB * modules/clx/new-clx/clx.f (get_font_info_and_display): use it together with EXT:CANONICALIZE instead of the C ad-hoc-ery 2008-07-17 Sam Steingold * dfloat.d (RA_to_DF): clean up the STACK before error_overflow() * ffloat.d (RA_to_FF): ditto * sfloat.d (RA_to_SF): ditto These bugs are probably ~20 years old. 2008-07-17 Sam Steingold * macros3.lisp (canonicalize): new function 2008-07-17 Sam Steingold * pathname.d (assure_dir_exists) [PATHNAME_UNIX]: fix a GC-safety bug introduced on 2008-07-11 (get_path_info is GC-unsafe) (classify_namestring): GC-safe 2008-07-17 Sam Steingold * pathname.d: more robust HAVE_SHELL conditional handling 2008-07-17 Sam Steingold * error.d (check_c_integer_replacement): use the appropriate [su]int(8|16|32|64)_p test instead of always using uint8_p 2008-07-17 Sam Steingold * error.d (caller_name): new function (check_symbol_replacement, check_variable_value_replacement): use it when the caller maybe either Subr or Fsubr Reported by Vladimir Tzankov 2008-07-17 Sam Steingold * pathname.d (directory_search_scandir) [WIN32_NATIVE]: use direntry_to_string in one more place 2008-07-17 Sam Steingold * condition.lisp (check-value): disable USE-VALUE when place is *PATHNAME-ENCODING* because O(pathname_encoding) is used multiple times for the same directory entry 2008-07-16 Sam Steingold * eval.d (invoke_handlers): reactivate and deactivate handlers only around lisp-compiled handlers, not C handlers, who must deactivate themselves (this is necessary because the C handlers which call longjmp do not abide by the HANDLER_FRAME) * pathname.d (handle_directory_encoding_error): deactivate when already running; reset STACK (direntry_to_string): check STACK 2008-07-16 Sam Steingold * macros2.lisp (report-one-new-value-string) (report-one-new-value-string-instead, report-new-values-string): remove the leading "You may " from the message: the message describes the action of the user, such as "Abort main loop" or "inspect this frame", cf. reploop.lisp * reploop.lisp (commands1): more uniform message capitalization 2008-07-16 Sam Steingold * control.d (SYMBOL-VALUE): tighten identification of STORE-VALUE selection in CHECK-VALUE: value2 is T, not just non-NIL * eval.d (eval1): ditto * error.d, lispbibl.d (check_variable_value_replacement): ditto (comment) 2008-07-16 Sam Steingold * error.d (check_variable_value_replacement): do not pushSTACK PLACE unless check_value is to be called 2008-07-16 Sam Steingold DIRECTORY signals correctable errors on bad pathnames [1st draft] * pathname.d (handle_directory_encoding_error): new function: ignore the error, pass condition in value1 back to the caller (direntry_to_string): new function: call n_char_to_string, catch charset-type-error, re-signal it with restarts (directory_search_scandir): use direntry_to_string * condition.lisp (check-value): accommodate direntry_to_string: when place is SYSTEM::PATHNAME-ENCODING, add a CONTINUE restart * constobj.d (handler_for_charset_type_error): always enable * constsym.d (datum): add 2008-07-15 Bruno Haible Avoid buffer overrun. * encoding.d (handle_incomplete): Add destend argument. (uni16be_mbstowcs, uni16le_mbstowcs, uni32be_mbstowcs, uni32le_mbstowcs): Update callers. 2008-07-15 Bruno Haible Fix bug introduced on 2003-03-11. * encoding.d (uni16_mblen): Make consistent with uni16be_mbstowcs and uni16le_mbstowcs. (uni32be_mblen): Make consistent with uni32be_mbstowcs. (uni32le_mblen): Make consistent with uni32le_mbstowcs. (CONVERT-STRING-FROM-BYTES): Revert last commit. 2008-07-15 Sam Steingold * Makefile.devel (fixperms): undo the 2008-05-15 patch: cannot look above the top-level directory 2008-07-15 Bruno Haible * makemake.in (interpreted.mem, halfcompiled.mem): Depend on config.lisp. (clean5): Don't remove config.lisp. (clean6): Remove config.lisp. 2008-07-15 Bruno Haible * encoding.d: Verify already at compile time that HAVE_GOOD_ICONV is set rather than crashing at initialization time. 2008-07-15 Bruno Haible * makemake.in (clean4): Don't remove all the $SUBDIRS but only the built files inside them. 2008-07-15 Sam Steingold * spvw_debug.d (nobject_out1): update hash-table output for the removal of the ht_freelist (2004-05-09 1.49 2004/06/04) 2008-07-15 Sam Steingold * encoding.d (CONVERT-STRING-FROM-BYTES): check (cptr == cendptr) after (bptr == bendptr) 2008-07-15 Sam Steingold * lispbibl.d (number_of_conditions_defined_in_c): rename from condition_for_broken_compilers_that_dont_like_trailing_commas * error.d (SYSTEM::%DEFCLCS): use it to check whether the argument is consistent with constsym.d 2008-07-14 Sam Steingold src/m4/sigsegv.m4 --> src/glm4/libsigsegv.m4 * Makefile.devel (gnulib-imported): also import libsigsegv * configure: use gl_cv_lib_sigsegv instead of cl_cv_lib_sigsegv * configure.in: use gl_LIBSIGSEGV instead of CL_SIGSEGV * lispbibl.d: use HAVE_LIBSIGSEGV instead of NO_SIGSEGV * makemake.in (XCFLAGS): do not add NO_SIGSEGV * src/m4/sigsegv.m4: remove * src/glm4/libsigsegv.m4: add * gllib/Makefile.am, glm4/gnulib-cache.m4, glm4/gnulib-comp.m4: regenerate 2008-07-13 Sam Steingold * error.d (error_illegal_arg): new function * lispbibl.d (error_illegal_arg): declare * constobj.d (type_buffered_arg): add for stream.d:test_buffered_arg * stream.d (test_buffered_arg, test_eltype_arg, check_float_eltype): use error_illegal_arg * encoding.d (MAKE-ENCODING): ditto * pathname.d (check_direction, check_if_does_not_exist) (check_if_exists, DIRECTORY): ditto * hashtabl.d: fix an error message case 2008-07-13 Sam Steingold * encoding.d (base64_wcstombs): set CHARSET-TYPE-ERROR slots DATUM and EXPECTED-TYPE (error_incomplete, error_uni32_invalid, error_utf8_invalid1) (error_utf8_invalid2, error_utf8_invalid3, error_utf8_invalid4) (error_nls_invalid): signal CHARSET-TYPE-ERROR instead of ERROR (base64_wcstombs, error_unencodable, error_incomplete) (error_uni32_invalid, error_utf8_invalid1, error_utf8_invalid2) (error_utf8_invalid3, error_utf8_invalid4): print the caller 2008-07-13 Sam Steingold * init.lisp (search-file): list matching files from the FIRST directory containing any matching file, because otherwise every load will mean a full traversal of ~/lisp/**/ 2008-07-13 Sam Steingold * defs1.lisp (*load-logical-pathname-translations-database*): since SEARCH-FILE now handles both files and directories similarly, only one element is needed (load-logical-pathname-translations): update for the search-file changes: when the search finds a directory, it is returned as is instead of its contents * init.lisp (search-file): EXTENSIONS is optional, also accept KEEP-DIRS (load): pass KEEP-DIRS=NIL to search-file 2008-07-13 Sam Steingold * pathname.d (error_file_stream_unnamed, error_dir_not_exists) (error_noname, error_notdir): print caller (FILE-NAMESTRING, DIRECTORY-NAMESTRING, ABSOLUTE-PATHNAME) (physical_namestring): simplify code 2008-07-12 Sam Steingold * pathname.d (classify_namestring): extract from check_sub_directory (check_sub_directory): remove (directory_search_1subdir): use classify_namestring instead (PROBE-PATHNAME): also return the physical pathname as the 2nd value * init.lisp (ppn-fwd): use the second value of PROBE-PATHNAME * win32.d (MAXPATHLEN): define (needed for classify_namestring) 2008-07-12 Sam Steingold * spvw_debug.d (ThePackage_, ThePathname_) [DEBUG_SPVW]: add 2008-07-11 Sam Steingold new function PROBE-PATHNAME * pathname.d (probe_path_from_stream): extract from PROBE-FILE (PROBE-FILE): use it (PROBE-PATHNAME): implement * constsym.d, subr.d (probe_pathname): declare * init.lisp (probe-pathname): export (search-file): use it instead of probe-file 2008-07-11 Sam Steingold * pathname.d (error_directory): extract from the unix version of assure_dir_exists (assure_dir_exists) [WIN32_NATIVE]: use it instead of OS_file_error for consistency with unix (struct file_status) [WIN32_NATIVE]: new slot fs_fileattr (file_status_is_dir): new function (get_path_info) [PATHNAME_UNIX]: extract from assure_dir_exists (assure_dir_exists) [PATHNAME_UNIX]: use it (if_HAVE_LSTAT): remove (access0) [WIN32_NATIVE]: set fs_fileattr 2008-07-10 Sam Steingold * init.lisp (search-file ): do not use DIRECTORY when the pathname is non-wild to avoid the denial-of-service attack 2008-07-10 Sam Steingold * encoding.d (error_nls_invalid): print function name * pathname.d (check_no_wildcards): ditto 2008-07-10 Sam Steingold * debug.d (read_form): fix a GC-safety bug (save function before subsstring) * foreign.d (check_faddress_valid): fix a GC-safety bug (check_fpointer can trigger GC!) (validate_fpointer): return the argument (convert_to_foreign): fix a GC-safety bug (validate_fpointer can trigger GC) * modules/clx/new-clx/clx.f (XLIB:SCREEN-SAVER): fix a GC-safety bug (defcheckers are GC-unsafe) 2008-07-10 Sam Steingold fix bug#2015118: (ash 1 huge) blows SP instead of signaling an arithmetic-error * intlog.d (I_I_ash_I): tighten the shift check (use 16-bit intW instead of 32-bit intWC) so that the "shift is too large" error is signaled instead of a SP overflow which results from __builtin_alloca not checking its argument and overwriting stack 2008-07-09 Sam Steingold fix bug#1385641: g++ debug_gcsafety amd64 build is broken * lispbibl.d (pgci_pointable, ngci_pointable) [DEBUG_GCSAFETY]: pass obj.one_o through pointable_address_unchecked before nonimmprobe (cgci_types_pointable, pgci_types_pointable, ngci_types_pointable) [TYPECODES & DEBUG_GCSAFETY]: wrap ?gci_pointable in pointable_address_unchecked 2008-07-09 Sam Steingold * lispbibl.d (UL_to_I) [DEBUG_GCSAFETY & intLsize<=oint_data_len]: fix export the definition to clisp.h 2008-07-09 Sam Steingold * modules/syscalls/calls.c (STAT-VFS): use the right SIZEOF_* conditionals (FILE_FUNCTION2): add a cast to fix g++ compilation 2008-07-09 Sam Steingold fix bug#2014262: float/rational comparison underflows * realelem.d (R_R_comp): inhibit floating-point-underflow when converting to a rational 2008-07-08 Sam Steingold * spvw_sigcld.d (end_want_sigcld): avoid the gcc warning: suggest a space before ';' or explicit braces 2008-07-08 Sam Steingold * makemake.in (srcdir) [CROSS]: do not overwrite (module_configure_flags) [CROSS]: add --build=${TSYS} Reported by Luca Capello 2008-07-08 Sam Steingold * version.sh: 2.46+ (2008-07-08) 2008-07-07 Sam Steingold * m4/shm.m4 (CL_SHM_H): run before CL_SHM (CL_SHM): require CL_SHM_H, do not set have_shm * m4/shm-rmid.m4 (CL_SHM_RMID): use cl_cv_sys_shm_works instead of have_shm 2008-07-07 Sam Steingold * _clisp.c (main): "-t"[raditional] does not take an argument 2008-07-06 Bruno Haible Remove MULTIMAP_MEMORY_VIA_SHM and MULTIMAP_MEMORY. It cannot compete with SINGLEMAP_MEMORY because it 1. consumes a lot more memory for page tables, and 2. hampers swapping in kernels without reverse mapping pointers. * lispbibl.d (MULTIMAP_MEMORY_VIA_SHM, MULTIMAP_MEMORY): Don't define. * spvw.d (canonaddr, canon): Remove macros. (MULTIMAP_MEMORY_SYMBOL_TAB): Remove macro. (init_memory, main): Update. * spvw_fault.d (xmmprotect): Remove macro/function. (handle_read_fault, handle_readwrite_fault, handle_fault) (handle_fault_range): Update. * spvw_genera1.d (xmprotect_old_generation_cache): Rename from xmmprotect_old_generation_cache. (in_old_generation_0, in_old_generation_1, in_old_generation) (build_old_generation_cache, rebuild_old_generation_cache) (gc_check_at): Update. * spvw_genera3.d (update_old_generation): Update. * spvw_global.d (init_mem_heapnr_from_type): Update. * spvw_memfile.d (old_symbol_tab_o, loadmem_update) (loadmem_from_handle): Update. * spvw_weak.d (MARK, add_watchable): Update. * unix.d (SHMMAX): Remove macro fallback. * built.d (built_flags): Remove MULTIMAP_MEMORY_VIA_SHM and MULTIMAP_MEMORY. * makemake.in (XCFLAGS): Remove option -DNO_MULTIMAP_SHM. (SPVW_INCLUDES): Remove spvw_multimap. * po/Makefile.devel (DSOURCES): Remove spvw_multimap. * Makefile.devel (build-linux-x86-standard-spvw_mixed_pages) (build-linux-x86-noexec-spvw_mixed_pages) (build-darwin-powerpc-standard-spvw_mixed_pages) (build-darwin-powerpc-noexec-spvw_mixed_pages): Remove option -DNO_MULTIMAP_SHM. 2008-07-05 Bruno Haible Remove MULTIMAP_MEMORY_VIA_FILE. It cannot compete with SINGLEMAP_MEMORY because it 1. periodically flushes the working memory to disk, 2. consumes a lot more memory for page tables, and 3. hampers swapping in kernels without reverse mapping pointers. * lispbibl.d (MULTIMAP_MEMORY_VIA_FILE): Don't define. * spvw.d (usage): Don't mention option -t. (argv_initparams): Remove argv_tmpdir field. (parse_options): Don't recognize option -t. (init_memory): Update. * spvw_multimap.d [MULTIMAP_MEMORY_VIA_FILE]: Remove code. * unix.d: Don't undefine HAVE_MSYNC. Don't include headers for statvfs or statfs. * built.d (built_flags): Remove MULTIMAP_MEMORY_VIA_FILE. * m4/stat.m4 (CL_STAT): Move tests for statvfs, statfs... * modules/syscalls/configure.in: ... to here. * makemake.in (XCFLAGS): Remove option -DNO_MULTIMAP_FILE. * Makefile.devel (build-linux-x86-standard-spvw_mixed_pages) (build-linux-x86-noexec-spvw_mixed_pages) (build-darwin-powerpc-standard-spvw_mixed_pages) (build-darwin-powerpc-noexec-spvw_mixed_pages): Likewise. 2008-07-02 Sam Steingold * Makefile.devel (gnulib-imported): also get nocrash update from the gnulib repository 2008-07-02 Sam Steingold * m4/ffcall-codeexec.m4, m4/ffcall-ireg.m4, m4/ffcall-pccstruct.m4: * m4/ffcall-smallstruct.m4: remove libffcall-specific files * m4/general.m4 (CL_FFCALL_COMMON_LIBTOOL, CL_FFCALL_COMMON_TRAMPOLINE) (CL_CANONICAL_HOST_CPU_FOR_FFCALL): remove 2008-07-02 Sam Steingold * stream.d (make_terminal_io): pipe, not just file, i/o handles imply non-terminal standard i/o; this should somewhat simplify scripting by not requiring the users to resort to make-stream (handle_type_t): new type (handle_type, regular_handle_type_p, pipe_handle_type_p) (pipe_file_handle_p): new functions (regular_handle_p): a macro combination of regular_handle_type_p and handle_type 2008-07-02 Sam Steingold * version.sh: 2.46 (2008-07-02) 2008-07-01 Sam Steingold * modules/clx/new-clx/clx.f (make_xid_obj_2): signal a LOOKUP-ERROR instead of an ERROR; use MAKE-CONDITION & SYS::CORRECTABLE-ERROR instead of correctable_error() (x_type_error): new function (my_type_error, with_stringable_0_tc, get_aint32): use it (make_xid_obj_2): no prealloc for cached objects! * lispbibl.d (correctable_error): do NOT export to clisp.h 2008-06-30 Sam Steingold * modules/clx/new-clx/clx.f (make_xid_obj_low): check that prealloc is of the correct type * modules/clx/new-clx/image.lisp (*image-bit-lsb-first-p*) (*image-byte-lsb-first-p*): default to (NOT SYS::*BIG-ENDIAN*) 2008-06-30 Sam Steingold fix bug#2002364: XID reuse causes clx cache to get out of sync * modules/clx/new-clx/clx.f (make_xid_obj_2): when the cached object is of the wrong type, signal a continuable error and offer to invalidate either the cache entry or the whole cache * lispbibl.d (correctable_error): export to clisp.h 2008-06-30 Sam Steingold fix bug#2007052: socket-connect with :timeout to a dead port * socket.d (connect_via_ip): use getsockopt() to check the status of the socket before returning it, as described in the linux man page 2008-06-29 Sam Steingold * version.sh: 2.45++: pretest [+ gnulib-imported build-aux-update] 2008-06-29 Sam Steingold * modules/libsvm: upgraded to upstream 2.86 2008-06-28 Sam Steingold * version.sh: new version number convention: VERSION_NUMBER is = MAJOR.MINOR for release, = MAJOR.MINOR+ for development, and = MAJOR.MINOR++ for pretest RELEASE_DATE is the date when VERSION_NUMBER was modified. Set to 2.45+/2008-06-28 2008-06-28 Sam Steingold * configure: fail if FFI modules are specified but FFCALL is not available 2008-06-28 Sam Steingold * modules/netica/link.sh (NEW_LIBS): add -lpthread 2008-06-28 Sam Steingold * utils/modprep.lisp (init-to-tag): bind *PRINT-LINES* when printing huge tags 2008-06-27 Sam Steingold * spvw_debug.d (nobject_out1): use symbol_without_flags when printing a symbol 2008-06-27 Sam Steingold fix special bindings in evaluated code on 64bit platforms * control.d (specdecled_) [!NO_symbolflags]: use symbol_without_flags when comparing symbols 2008-06-27 Sam Steingold * constsym.d, control.d, eval.d, fsubr.d, io.d, lisparit.d: * package.d, predtype.d, spvw.d, spvw_allocate.d, spvw_language.d (let*, *package*, *readtable*, *evalhook*, *applyhook*) (*gc-statistics*, *random-state*): use "star" instead of "stern" for C names * intdiv.d (UDS_divide_): rename local variable q_stern -> q_star * intsqrt.d (UDS_sqrt_): rename local variable b_stern -> b_star 2008-06-26 Sam Steingold * utils/modprep.lisp (print-tables-1): use "..._of_list" instead of "..._from_list" * modules/berkeley-db/bdb.c, modules/clx/new-clx/clx.f: * modules/rawsock/rawsock.c, modules/syscalls/calls.c: update 2008-06-26 Sam Steingold * modules/clx/new-clx/clx.lisp (WITH-GCONTEXT, set-wm-class): STRING-CONCAT requires package prefix 2008-06-26 Sam Steingold * modules/clx/new-clx/demos/sokoban.lisp (init-sokoban): do not set *display* (sokoban): use xlib:with-open-display; handle numeric keypad 2008-06-25 Sam Steingold * modules/clx/new-clx/clx.f (change_property): remove (SET-WM-HINTS, CHANGE-PROPERTY): use XChangeProperty() directly and ignore its return value which is always 1 (RECOLOR-CURSOR): fix background handling 2008-06-25 Sam Steingold * modules/clx/new-clx/clx.lisp (with-open-display): define & export * modules/clx/new-clx/demos/bball.lisp: * modules/clx/new-clx/demos/bwindow.lisp: * modules/clx/new-clx/demos/clclock.lisp: * modules/clx/new-clx/demos/greynetic.lisp: * modules/clx/new-clx/demos/hanoi.lisp: * modules/clx/new-clx/demos/koch.lisp: * modules/clx/new-clx/demos/petal.lisp: * modules/clx/new-clx/demos/plaid.lisp: * modules/clx/new-clx/demos/qix.lisp: * modules/clx/new-clx/demos/recurrence.lisp: use it 2008-06-25 Sam Steingold move WM-HINTS to C to better handle word size differences * modules/clx/new-clx/clx.f (lookup_display, change_property): add (CHANGE-PROPERTY): use change_property() (xlib_error_handler, xlib_io_error_handler): use lookup_display() (check_wmh_initial_state, check_wmh_flag): add DEFCHECKERs (WM-HINTS, SET-WM-HINTS): implement * modules/clx/new-clx/clx.lisp (wm-hints, set-wm-hints) (decode-wm-hints, encode-wm-hints): remove 2008-06-25 Sam Steingold * modules/clx/mit-clx/display.lisp (with-open-display): define * modules/clx/mit-clx/package.lisp (with-open-display): export 2008-06-25 Sam Steingold * modules/clx/new-clx/clx.f (CHANGE-PROPERTY): check the return value of XChangeProperty() (DISPLAY-VENDOR-NAME): return just one value 2008-06-24 Sam Steingold * modules/clx/new-clx/clx.f (GET-PROPERTY): use uint16 and uint32 instead of unsigned short and unsigned long for reliability on 64-bit platforms 2008-06-24 Sam Steingold * error.d (check_variable_value_replacement): move here from eval.d * lispbibl.d (check_variable_value_replacement): prototype * eval.d (eval1): call setq here * control.d (check_global_symbol_value): remove (SYMBOL-VALUE): use check_variable_value_replacement 2008-06-23 Sam Steingold * eval.d (check_variable_value_replacement): extract from eval1() (eval1): use it (interpret_bytecode_): use it for cod_getvalue & cod_getvalue_push 2008-06-23 Sam Steingold * unix/MAGIC.add: remove non-CLISP-specific entries; CLISP FASL files start with |SYSTEM|::|VERSION| since 2004-03-27 2008-06-21 Sam Steingold * modules/netica/Makefile: do not use ${...-...} * modules/netica/demo.lisp: test netica:read-net * modules/netica/link.sh: netica 3.25 requires g++ 2008-06-21 Sam Steingold * io.d (pr_record_descr): use pr_symbol instead of literal ':' + pr_like_symbol(Symbol_name) to print slot names so that the keywords are printed as :|HOST| and not :|host| when writing a FASL file in a modern package 2008-06-19 Sam Steingold * modules/netica/: update to the Netica C API version 3.25 from 2.15 2008-06-17 Sam Steingold * modules/syscalls/posix.lisp (make-xterm-io-stream): avoid a race condition [between (delete-file tmps) and (mknod tmps :FIFO :RWXU)] by using mkdtemp and creating the pipe in the temporary directory; accept :XTERM argument and support rxvt in addition to xterm 2008-06-17 Sam Steingold * modules/syscalls/calls.c (MKDTEMP): strip trailing slash from namez because mkdtemp(".../") --> ENOENT 2008-06-16 Sam Steingold * modules/rawsock/rawsock.c (RAWSOCK:NETWORK): use getnetbyaddr instead of non-existent getnetbynumber 2008-06-13 Sam Steingold * defmacro.lisp (make-macro-expansion): bind %proper-list-p to nil, not t, to allow dotted macro forms (broken since 2006-04-15) 2008-06-13 Sam Steingold * modules/syscalls/calls.c (check_errno) [WIN32_NATIVE]: #include , drop prefix=ERROR, and use cygwin cvs tree to define many more codes 2008-06-11 Sam Steingold * modules/syscalls/calls.c (GETHOSTID): use `unsigned long' instead of non-standard `ulong' 2008-06-05 Sam Steingold * modules/syscalls/calls.c, modules/syscalls/posix.lisp: remove the GET prefix from SETFable functions PGID, UID, GID, EUID, EGID, GROUPS 2008-06-05 Sam Steingold * modules/syscalls/calls.c (GETHOSTID): implement * modules/syscalls/posix.lisp (gethostid): export 2008-06-05 Sam Steingold * modules/syscalls/calls.c (ERRNO): when the argument is T, return all known error codes as an alist 2008-06-04 Sam Steingold * calls.c (ERRNO, STRERROR) [WIN32_NATIVE]: use GetLastError(), SetLastError() and FormatMessage() instead of errno and strerror (check_errno) [WIN32_NATIVE]: define separately 2008-06-04 Sam Steingold * inspect.lisp (get-insp): accept :w and :n (print-inspection, inspect-frontend): say when more slots are available (inspect): bind *INSPECT-LENGTH* so that :w & :n do not act across inspect invocations 2008-06-04 Sam Steingold * modules/clx/new-clx/clx.f (DISPLAY-GET-DEFAULT): add * modules/clx/new-clx/clx.lisp (display-get-default) (display-resource-manager-string, screen-resource-string): export 2008-06-04 Sam Steingold * modules/clx/new-clx/clx.f (NO-OPERATION): return no values on success and signal an error on failure 2008-06-03 Sam Steingold * configure, makemake.in: pass --disable-option-checking to sub-configures 2008-06-03 Sam Steingold * utils/modprep.lisp (strip-comments): new function (split-command): use it to support comments inside DEFCHECKERs 2008-06-03 Sam Steingold * modules/syscalls/posix.lisp (physical-memory, *services-file*): signal an error on non UNIX & Win32 platforms 2008-06-03 Sam Steingold * modules/syscalls/calls.c (FILE-OWNER): use *PATHNAME-ENCODING* for the filename instead of *MISC-ENCODING* (get_owner) [!HAVE_GETPWUID && !WIN32_NATIVE]: use an exhaustive cpp conditioning to ensure that it is always defined 2008-06-03 Sam Steingold * makemake.in (module_configure_flags): do not add --with-dynamic-ffi & --with-dynamic-modules 2008-06-02 Sam Steingold * makemake.in (encflags): add -Emisc 1:1 so that syscalls tests pass (user names may be 8bit) 2008-06-02 Sam Steingold * modules/syscalls/calls.c (OS:ERRNO, OS:STRERROR): implement * modules/syscalls/posix.lisp (OS:ERRNO, OS:STRERROR): export 2008-06-02 Sam Steingold * makemake.in (IMPNOTES): rename to IMPNOTES_FILES to avoid conflict with $IMPNOTES which is used by IMPNOTES-ROOT 2008-06-02 Sam Steingold * condition.lisp (mecase): ECASE for DEFMACRO: print the form in the error message * foreign1.lisp (parse-c-function, DEF-C-VAR): use SYS::MECASE instead of ECASE for a better error message 2008-06-01 Sam Steingold * lispbibl.d (setjmp) [__MINGW32__]: define as _setjmp (but do not define longjmp as _longjmp because the latter does not exist) This is only necessary for lightning. Thanks to Yaroslav Kavenchuk for investigation. 2008-06-01 Sam Steingold * spvw.d (init_object_tab) [WIDE_HARD]: add :WORD-SIZE=64 to *FEATURES* * built.d (built_flags): show all WIDE_* variants 2008-05-31 Bruno Haible * m4/builtin_strlen.m4 (CL_BUILTIN_STRLEN): Assume ANSI C or C++. * m4/mprotect.m4 (CL_MPROTECT): Likewise. * m4/select.m4 (CL_SELECT): Likewise. * m4/signal.m4 (CL_SIGNAL_REINSTALL, CL_SIGNAL_UNBLOCK, CL_SIGNAL_BLOCK_OTHERS, CL_SIGACTION_REINSTALL, CL_SIGACTION_UNBLOCK): Likewise. 2008-05-31 Bruno Haible * configure.in: Remove AC_HEADER_STAT invocation. * unix.d: Ignore STAT_MACROS_BROKEN. 2008-05-31 Bruno Haible * configure.in: Remove AC_HEADER_TIME invocation. Instead simply test for and . * m4/general.m4 (CL_MODULE_COMMON_CHECKS): Likewise. * unix.d: Don't test TIME_WITH_SYS_TIME. Assume and are compatible. * modules/berkeley-db/bdb.c: Likewise. * modules/clx/new-clx/clx.f: Likewise. * modules/rawsock/rawsock.c: Likewise. * modules/syscalls/calls.c: Likewise. 2008-05-31 Bruno Haible * configure.in: Remove AC_STRUCT_TM invocation. 2008-05-31 Bruno Haible * configure.in: Remove CL_PERROR invocation. * _clisp.c (perror): Remove declaration fallback. * win32.d (HAVE_PERROR_DECL): Remove macro. * m4/perror.m4: Remove file. 2008-05-31 Bruno Haible * m4/proto.m4 (CL_PROTO_RET, CL_PROTO_TRY, CL_PROTO_CONST): Remove TRAD-DECL argument. * m4/connect.m4 (CL_CONNECT): Update. * m4/getpagesize.m4 (CL_GETPAGESIZE): Update. * m4/ioctl.m4 (CL_IOCTL): Update. * m4/putenv.m4 (CL_PUTENV): Update. * m4/readline.m4 (CL_READLINE): Update. * m4/rlimit.m4 (CL_RLIMIT): Update. * m4/rusage.m4 (CL_RUSAGE): Update. * m4/select.m4 (CL_SELECT): Update. * m4/tcpconn.m4 (CL_TCPCONN): Update. * m4/waitpid.m4 (CL_WAITPID): Update. 2008-05-31 Bruno Haible * m4/termios.m4 (RL_TERM): Remove macro. 2008-05-31 Bruno Haible * configure.in: Remove CL_IRIX_SUN invocation. * m4/sys-irix.m4: Remove file. 2008-05-31 Bruno Haible * configure.in: Remove CL_DYNIX_SEQ invocation. * m4/sys-dynix.m4: Remove file. 2008-05-31 Bruno Haible * m4/signal.m4 (RL_RETSIGTYPE): Remove macro. 2008-05-31 Bruno Haible * m4/siginterrupt.m4 (CL_SIGINTERRUPT): Don't test for sigvec. * unixaux.d (siginterrupt): Remove sigvec based emulation. 2008-05-31 Bruno Haible * m4/shm-rmid.m4 (CL_SHM_RMID): Choose more distant addresses, so that the test succeeds on Linux. 2008-05-31 Bruno Haible * m4/select.m4 (RL_SELECT): Remove macro. 2008-05-31 Bruno Haible * modules/regexp/configure.in: Require autoconf >= 2.58. Invoke AC_C_RESTRICT instead of gl_C_RESTRICT. * m4/restrict.m4: Remove file. 2008-05-31 Bruno Haible * configure.in: Remove CL_RAISE invocation. * unix.d (raise): Assume 'raise' exists. * spvw_sigpipe.d (sigpipe_handler): Likewise. * m4/raise.m4: Remove file. 2008-05-31 Bruno Haible * configure.in: Remove CL_OPENFLAGS invocation. * unix.d: Assume O_RDWR etc. is defined in . * m4/filecharset.m4 (CL_FILECHARSET): Likewise. * m4/general.m4 (CL_FFCALL_COMMON_TRAMPOLINE): Likewise. * m4/ioctl.m4 (CL_IOCTL): Likewise. * m4/mmap.m4 (CL_MMAP): Likewise. * m4/poll.m4 (CL_POLL): Likewise. * m4/select.m4 (CL_SELECT): Likewise. * m4/openflags.m4: Remove file. 2008-05-31 Bruno Haible * configure.in: Remove CL_OFFSETOF invocation. * m4/intparam.m4 (CL_INTPARAM_ALIGNOF): Don't require CL_OFFSETOF. Include always. * lispbibl.d: Include always. (offsetof): Don't redefine, use if it is defined. * m4/offsetof.m4: Remove file. 2008-05-31 Bruno Haible Remove SunOS 4 support. * lispbibl.d (SUN386, SUN3, UNIX_SUNOS4): Remove macros. (MULTIMAP_MEMORY_VIA_FILE, hardware_addressbus_mask, SPVW_MIXED): Update. * unix.d: Drop UNIX_SUNOS4 conditional. * spvw.d (init_memory): Likewise. * misc.d (MACHINE-TYPE, MACHINE-VERSION): Likewise. * _distmakefile (CC): Likewise. * stream.d (MAKE-WINDOW, CLOSE-WINDOW): Drop SUN3 conditional. 2008-05-31 Bruno Haible Remove NeXTstep support. * SUMMARY: Remove mention of NeXTstep. * lispbibl.d (UNIX_NEXTSTEP, NEXTSTEP_CHS): Remove macros. * charstrg.d: Remove NEXTSTEP_CHS special casing. * io.d: Likewise. * eval.d (interpret_bytecode): Drop UNIX_NEXTSTEP conditional. * lightning.c (LD, LR): Likewise. * misc.d (MACHINE-TYPE): Likewise. * spvw.d (init_memory): Likewise. * unix.d: Likewise. * nls_nextstep.c: Remove file. * pseudofun.d (nls_nextstep_table): Remove. * encoding.d: Don't include nls_nextstep.c. (nls_tables): Remove nls_nextstep_table. * constsym.d: Update. * makemake.in (NLS_INCLUDES): Remove nls_nextstep. * utils/unicode/Makefile (ALL): Remove nls_nextstep.c. (nls_nextstep.c): Remove rule. 2008-05-31 Bruno Haible * m4/gettimeofday.m4 (CL_GETTIMEOFDAY): Remove test for the prototype. * unix.d (gettimeofday): Assume the declaration in . 2008-05-31 Bruno Haible * m4/gethostbyname.m4 (CL_GETHOSTBYNAME): Remove test for sun/netdb.h. * unix.d: When gethostbyname exists, assume and exist. 2008-05-31 Bruno Haible * configure.in: Remove CL_FPU_CONTROL invocation. * m4/fpu_control.m4: Remove file. 2008-05-31 Bruno Haible * configure.in: Remove CL_PROG_CP invocation. * m4/cp.m4: Remove file. * m4/ln.m4 (CL_PROG_LN): Assume "cp -p" works on Unix. * makemake.in (CP): Likewise. 2008-05-31 Bruno Haible * m4/closedir.m4 (CL_CLOSEDIR): Remove check for the prototype. Don't define RETCLOSEDIRTYPE any more. 2008-05-31 Bruno Haible * configure.in: Remove CL_VOID invocation. * m4/general.m4 (CL_FFCALL_COMMON_TRAMPOLINE): Likewise. * m4/cc-void.m4: Remove file. 2008-05-31 Bruno Haible * configure.in: Remove CL_CC_NEED_CCPAUX invocation. * m4/cc-cppaux.m4: Remove file. * makemake.in (CC_NEED_CCPAUX, XCC_NEED_CCPAUX): Remove variables. (*asm*.c): Fix dependency to use XASMCCPAUX. 2008-05-31 Bruno Haible * m4/c++-constructors.m4: Remove file. 2008-05-31 Bruno Haible * configure.in: Remove CL_ACCESSFLAGS invocation. * m4/access.m4: Remove file. * unix.d: Assume declares R_OK, W_OK, X_OK. 2008-05-31 Bruno Haible * configure.in: Remove CL_ABORT invocation. * m4/abort.m4: Remove file. * unix.d (abort): Assume declares it. 2008-05-31 Bruno Haible * configure.in: Remove AC_HEADER_STDC invocation. * m4/general.m4 (CL_MODULE_COMMON_CHECKS): Remove AC_HEADER_STDC invocation. * lispbibl.d: Assume STDC_HEADERS. * stream.d: Likewise. * unix.d: Likewise. * win32.d: Don't set STDC_HEADERS. * malloc/gmalloc.c: Assume ANSI C or C++, STDC_HEADERS, memmove. * unix/sigsegv.c: Assume STDC_HEADERS. * modules/pcre/cpcre.c: Assume STDC_HEADERS. * modules/rawsock/configure.in: Test for unistd.h. * modules/rawsock/rawsock.c: Assume STDC_HEADERS. 2008-05-30 Sam Steingold * m4/siginterrupt.m4: )fix a typo: $ac_cv_func_strerror -> $ac_cv_func_siginterrupt 2008-05-29 Bruno Haible * configure.in: Remove CL_DIR_HEADER invocation. * m4/dir.m4: Remove file. * m4/closedir.m4 (CL_CLOSEDIR): Assume . * m4/filecharset.m4 (CL_FILECHARSET): Likewise. * unix.d: Likewise. (SDIRENT): Remove macro. * pathname.d (directory_search_scandir): Assume and struct dirent. 2008-05-29 Sam Steingold * m4/fenv_default.m4 (CL_FENV_CHECK): define and use everywhere 2008-05-29 Sam Steingold * m4/general.m4 (CL_CHECK): extract from ... (CL_COMPILE_CHECK, CL_LINK_CHECK): use it 2008-05-29 Sam Steingold * modules/clx/new-clx/configure.in: add proper quoting; use AC_LINK_IFELSE instead of AC_TRY_LINK; use m4_define to avoid writing the same program twice * m4/rusage.m4 (CL_RUSAGE): use AC_RUN_IFELSE instead of AC_TRY_RUN 2008-05-29 Sam Steingold * m4/ln.m4 (CL_PROG_LN): use AC_CACHE_CHECK instead of AC_MSG_CHECKING + AC_CACHE_VAL + AC_MSG_RESULT 2008-05-29 Sam Steingold * m4/longdouble.m4: remove obsolete file * m4/fenv_default.m4, m4/floatparam.m4, m4/intparam.m4: assume 'long double' is supported, use AC_COMPILE_IFELSE instead of AC_TRY_COMPILE 2008-05-28 Sam Steingold * m4/sigsegv.m4: use AC_LINK_IFELSE instead of AC_TRY_LINK 2008-05-28 Sam Steingold * modules/clx/new-clx/clx.f (last-event-processed) (last-timestamp-processed) [USE_LIBXT]: add 2008-05-28 Sam Steingold * m4/isc-posix.m4: remove. The comment says: This file is not needed with autoconf-2.53 and newer. Remove it in 2005. 2008-05-28 Sam Steingold fix bug#1975798: parameter confusion in new Gray Streams functions * gray.lisp (stream-read-sequence): fix argument order in stream-read-byte-sequence and stream-read-char-sequence and specify the default values for start and end (stream-write-sequence): fix argument order in stream-write-byte-sequence and stream-write-char-sequence and specify the default values for start and end 2008-05-27 Sam Steingold avoid obsolete macros * m4/c++.m4, m4/general.m4: use AC_LANG_PUSH/AC_LANG_POP instead of AC_LANG_SAVE/AC_LANG_RESTORE * m4/cc-ema.m4: use AC_PREPROC_IFELSE instead of AC_TRY_CPP * m4/c++.m4: use AC_RUN_IFELSE instead of AC_TRY_RUN and AC_LINK_IFELSE instead of AC_TRY_LINK, use AC_MSG_FAILURE * m4/general.m4 (CL_CPP_CHECK): remove unused macro (CL_CC_WORKS): use AC_MSG_FAILURE, use AC_RUN_IFELSE instead of AC_TRY_RUN use AC_LINK_IFELSE instead of AC_TRY_LINK 2008-05-27 Sam Steingold * eval.d (unused): undef before #include "lightning.c" 2008-05-26 Sam Steingold * floatparam.c, intparam.c: write to conftest.h or first arg, not stdout * m4/address.m4, m4/eloop.m4, m4/filecharset.m4, m4/param.m4: use AC_RUN_IFELSE instead of undocumented AC_TRY_EVAL(ac_link) * makemake.in (floatparam.h, intparam.h): update 2008-05-25 Sam Steingold * lispbibl.d (setjmp, longjmp) [HAVE__JMP]: on all autoconf platforms (UNIX & __MINGW32__), use _setjmp and _longjmp whenever they are present 2008-05-25 Sam Steingold * spvw_sigint.d (signal_handler_prepare_for_lisp): extract from react_on_sigint() (react_on_sigint): call it * spvw_sigterm.d (quit_on_signal): ditto 2008-05-25 Bruno Haible * m4/signal.m4 (CL_SIGNALBLOCK): Remove macro. (CL_SIGNAL_UNBLOCK, CL_SIGNAL_BLOCK_OTHERS, CL_SIGACTION_UNBLOCK): Assume POSIX signal-blocking. * unix.d (SIGNALBLOCK_POSIX): Define always. * spvw.d (main): Assume SIGNALBLOCK_POSIX on Unix. * spvw_sigint.d (react_on_sigint): Likewise. * spvw_sigsegv.d (stackoverflow_handler): Likewise. * configure.in (CL_SIGNALBLOCK): Remove invocation. 2008-05-25 Bruno Haible * floatparam.c: Remove support for K&R C compilers. * intparam.c: Likewise. 2008-05-23 Sam Steingold fix bug#1970141: link.sh should respect $(MAKE) * makemake.in (base, full): set MAKE when calling clisp-link * modules/berkeley-db/link.sh.in, modules/bindings/glibc/link.sh: * modules/bindings/win32/link.sh, modules/clx/mit-clx/link.sh: * modules/clx/new-clx/link.sh.in, modules/dirkey/link.sh: * modules/fastcgi/link.sh, modules/gdbm/link.sh.in: * modules/gtk2/link.sh.in, modules/i18n/link.sh.in: * modules/libsvm/link.sh, modules/matlab/link.sh: * modules/netica/link.sh, modules/oracle/link.sh: * modules/pari/link.sh.in, modules/pcre/link.sh.in: * modules/postgresql/link.sh.in, modules/queens/link.sh: * modules/rawsock/link.sh.in, modules/readline/link.sh.in: * modules/regexp/link.sh.in, modules/syscalls/link.sh.in: * modules/wildcard/link.sh.in, modules/zlib/link.sh.in: use ${MAKE-make} instead of make 2008-05-22 Sam Steingold fix bug#1956715: segfault on SIGHUP * spvw_sigterm.d (quit_on_signal) [HAVE_SAVED_STACK]: restore STACK 2008-05-22 Sam Steingold * modules/regexp/configure.in: remove AM_GNU_GETTEXT([external]) (why was it there in the first place?!) 2008-05-22 Sam Steingold * configure (--help-modules): more compact output, do not print anything for modules whose configure does not accept any --with.*prefix arguments 2008-05-21 Sam Steingold * modules/syscalls/calls.c (POSIX::RESOLVE-HOST-IPADDR): call sethostent() before the gethostent() iteration 2008-05-20 Sam Steingold * modules/syscalls/calls.c (FREOPEN): fix stack access include before DEFMODULE so that DEFCHECKERs work (pid_to_I, I_to_pid, uid_to_I, I_to_uid, gid_to_I, I_to_gid): POSIX specifies that pid_t is signed, assume that the others are signed too http://www.opengroup.org/onlinepubs/009695399/basedefs/sys/types.h.html 2008-05-20 Sam Steingold fix bug#1966714: invalid syntax in top-level configure * configure (passnext): support non-POSIX /bin/sh on Solaris 2008-05-19 Sam Steingold * modules/syscalls/calls.c: move DEFMODULE et al outside of the file locking conditional 2008-05-19 Sam Steingold * modules/syscalls/calls.c (%FGETC, %FPUTC, %UNGETC): add for testing 2008-05-19 Sam Steingold * lispbibl.d (mark_fp_valid): export to clisp.h * modules/syscalls/calls.c (%STDIO, my_stdin, my_stdout) (my_stderr, init_stdio) [HAVE_FFI]: add (module__syscalls__init_function_2) [HAVE_FFI]: call init_stdio() * modules/syscalls/posix.lisp (stdin, stdout, stderr) [FFI]: defconstant 2008-05-19 Sam Steingold * modules/syscalls/calls.c (FREOPEN): implement * modules/syscalls/posix.lisp (freopen): export 2008-05-18 Sam Steingold fix bug#1966375: no tgamma on solaris * modules/syscalls/posix.lisp (tgamma): if tgamma is not defined, define it using lgamma * modules/syscalls/calls.c (tgamma) check HAVE_TGAMMA 2008-05-16 Sam Steingold * Makefile.devel (upload-sunsite): remove target * clisp.lsm: remove file 2008-05-16 Sam Steingold * Makefile.devel (upload-sf): use rsync instead of ftp because of the change in the SF FRS (File Release System) 2008-05-15 Sam Steingold * configure: do not pass --with-module to subdir configures (starting with autoconf 2.62 this results in warnings) 2008-05-15 Sam Steingold * version.sh: 2.46 (2008-07-07) [+ gnulib-imported build-aux-update] 2008-05-15 Sam Steingold * Makefile.devel (fixperms): also fix web pages permissions * utils/fix-perms.sh: accept command line argument ROOT 2008-05-15 Reini Urban * modules/clx/new-clx/clx.f [__CYGWIN__]: include first thing to avoid conflicts with INT32,BOOL defined in included from clisp.h 2008-05-15 Sam Steingold * Makefile.devel (doc-distrib): exclude *~ and .#* 2008-05-15 Sam Steingold * 2.45 tagged and released 2008-05-14 Sam Steingold * modules/syscalls/calls.c (GETPPID): implement * modules/syscalls/posix.lisp (getppid): export * modules/syscalls/configure.in (getppid): test 2008-05-13 Bruno Haible * m4/pkg.m4: New file, from pkg-config-0.23. 2008-05-13 Bruno Haible * m4/bold.m4 (BOLD_MSG): Fix underquoting. 2008-05-13 Sam Steingold * modules/syscalls/calls.c (SETREUID, SETREGID, TGAMMA): implement * modules/syscalls/configure.in (setreuid, setregid, tgamma): check (signgam): fix test * modules/syscalls/posix.lisp (setreuid, setregid, tgamma): export 2008-05-13 Sam Steingold * modules/syscalls/calls.c (USER-INFO): use I_to_uid instead of I_to_uint32; when getlogin() fails, signal an error instead of defaulting to getuid() 2008-05-12 Bruno Haible Clear spurious error messages on MacOS X 10.5. * m4/address.m4 (CL_ADDRESS_RANGE): Remove conftest.dSYM directory before conftest* files. * m4/eloop.m4 (CL_ELOOP): Likewise. * m4/filecharset.m4 (CL_FILECHARSET): Likewise. * m4/param.m4 (CL_MACHINE): Likewise. 2008-05-12 Sam Steingold * Makefile.devel (tp-mail): put clisp version into the subject line 2008-05-12 Sam Steingold * foreign.d (convert_to_foreign): accept Fpointer as a C-POINTER so that POSIX:FOPEN value can actually be used by FFI 2008-05-11 Sam Steingold * comptran.d (N_log_abs_R): fix a GC-safety bug (R_R_comp - comparison! - turned out to maygc) 2008-05-10 Sam Steingold fix bug#1961475: Hang on read-char-no-hang * stream.d (listen_char_buffered): when the next byte is '\n' and ChannelStream_ignore_next_LF is true, discard it and retry 2008-05-10 Sam Steingold * clos-genfun4.lisp (no-next-method): signal SYS::SIMPLE-PROGRAM-ERROR instead of PROGRAM-ERROR because only the former accepts :FORMAT-CONTROL & :FORMAT-ARGUMENTS 2008-05-10 Sam Steingold * modules/clx/new-clx/configure.in: when testing for XauGetAuthByAddr, must #include for g++ 2008-05-09 Sam Steingold * describe.lisp (clisp-data-file): put the error message through i18n 2008-05-09 Sam Steingold * condition.lisp (coerce-to-condition): use ERROR instead of SIGNAL to report TYPE-ERROR so that COERCE-TO-CONDITION never returns NIL (http://article.gmane.org/gmane.lisp.clisp.general/12208) 2008-05-09 Sam Steingold * trace.lisp (trace, untrace): turn comments into doc strings 2008-05-08 Sam Steingold * modules/syscalls/configure.in: check size of pid_t * modules/syscalls/calls.c (GETTER, SETTER): move up in file (pid_to_I, I_to_pid): define based on SIZEOF_PID_T (GETSID, SETPGRP, SETPGID, KILL): use the above (GETTER1): add (GETSID): use it (SETPGID): replace with POSIX::%SETPGID (GETPGID): add * modules/syscalls/posix.lisp (GETPGID): add DEFSETF 2008-05-07 Sam Steingold * version.sh: 2.45 (2008-05-15) 2008-05-07 Sam Steingold * m4/ffcall.m4 (CL_FFCALL): suggest passing --host=... to the FFCALL configure if $ac_cv_build != $ac_cv_host 2008-05-07 Sam Steingold * configure: accept --cbc to mean Configure/Build/Check and --build to mean the build host (the usual autoconf meaning) * makemake.in: rely on configure for cross-compilation too (EXTRAOBJ) [CROSS]: add gllib/malloc 2008-05-07 Sam Steingold * makemake.in (MYIMPROOT): use beta pages for the latest id-href.map (check-doc): use base, not boot, for better symbol coverage 2008-05-07 Sam Steingold * describe.lisp (describe-object@symbol) [FFI]: print foreign type information 2008-05-07 Sam Steingold * makemake.in (encflags): ' -E UTF-8 -Epathname 1:1': UTF-8 for files, terminal, wildcard test 1:1 for pathname 2008-05-07 Reini Urban * modules/syscalls/calls.c (FMTID_SummaryInformation) (FMTID_UserDefinedProperties): enable also on UNIX_CYGWIN32 2008-05-07 Sam Steingold fix bug#1959436: Allow ending http_proxy with a slash * clhs.lisp (http-proxy): handle the trailing slash 2008-05-07 Reini Urban * modules/syscalls/calls.c (FILE_FUNCTION, CLEARERR): fix g++ and cygwin compilation by casting the pointers to (FILE*) 2008-05-06 Bruno Haible * clos-specializer2.lisp (reinitialize-instance@specializer): Change error message. 2008-05-06 Sam Steingold * modules/syscalls/calls.c (FFLUSH): add * modules/syscalls/posix.lisp (fflush): export (FILENO, FEOF, FERROR, FCLOSE): check return values 2008-05-06 Sam Steingold * clos-class3.lisp, clos-genfun3.lisp, clos-methcomb2.lisp, * describe.lisp, foreign1.lisp, reploop.lisp: various small i18n message fixes 2008-05-05 Sam Steingold * clos-genfun3.lisp (analyze-defgeneric): do not pass through gettext messages which contain no text, just format directives * clos-method2.lisp (program-error-reporter) (analyze-method-description): ditto 2008-05-05 Sam Steingold * format.lisp (format-not-both-error): replaces format-conditional-error (format-parse-cs, format-conditional, formatter-main-1): use it 2008-05-05 Sam Steingold * clos-slotdef1.lisp, compiler.lisp, lambdalist.lisp, trace.lisp: * clos-method1.lisp, clos-methcomb2.lisp: more uniform i18n messages 2008-05-03 Sam Steingold * foreign.d (check_fvar_alignment): add (FOREIGN-VARIABLE, %OFFSET, FOREIGN-ALLOCATE): use it 2008-05-03 Sam Steingold * charstrg.d, compiler.lisp, debug.d, defmacro.lisp, error.d: * funarg.d, record.d, sequence.d: tweak i18n messages 2008-05-02 Sam Steingold * defs2.lisp (dispatch-reader): fix message * io.d (read_macro): ditto * pathname.d (SYS::LIB-DIRECTORY): ditto 2008-05-01 Sam Steingold * utils/fix-perms.sh: *.xsl & *.css are not executable 2008-05-01 Sam Steingold * macros1.lisp (*suppress-similar-constant-redefinition-warning*): new user variable (defconstant): pass ,initial-var to constant-warning (constant-warning): accept 3rd variable and respect *suppress-similar-constant-redefinition-warning* * constobj.d (version): bump, because constant-warning is ABI 2008-04-30 Sam Steingold fix bug#1928759: (format nil "~8e" .999999d0) => " 10.0d-1" * format.lisp (format-float-for-e): when format-float-to-string rounds up above 1, adjust everything 2008-04-23 Sam Steingold * fill-out.lisp (stream-start-s-expression@t): return *PRINT-RIGHT-MARGIN*, just like in format.lisp 2008-04-23 Sam Steingold * spvw_language.d (clisp_gettext): the common part of ... (clgettext, clgettextl): use it 2008-04-23 Sam Steingold * clhs.lisp (documentation@symbol@impnotes): look into impnotes for CUSTOM symbols too, so that (documentation 'impnotes-root 'sys::impnotes) works 2008-04-23 Sam Steingold followup to the 2008-04-08 patch which broke log for very small numbers * comptran.d (N_log_abs_R): avoid the log(1 + (x^2 + y^2 - 1)) trick for small numbers * realtran.d (ln2_F_float_F): use F_lnx1_F instead of F_lnx_F (F_lnx_F): move most of the calculation from R_ln1_R here (R_ln1_R): use either F_lnx1_F (small arg) or F_lnx_F (others) (R_ln_R): do not call R_ln1_R, call F_lnx_F directly 2008-04-22 Sam Steingold * makemake.in (installdirs, install-bin, uninstall): pass DESTDIR to make in po * po/Makefile.in.in (install-data-yes, installdirs): respect DESTDIR * configure: do not try to link po twice 2008-04-22 Sam Steingold * arilev1.d, hashtabl.d, lisparit.d, lispbibl.d, misc.d: * pathname.d, spvw.d, spvw_garcol.d, spvw_memfile.d, time.d, unix.d: * xthread.d, modules/berkeley-db/bdb.c: "#error" does not need quotes around the message 2008-04-17 Sam Steingold simplify support for FFI modules which want to use stdio.h * lispbibl.d (HAVE_FFI): export to clisp.h * foreign.d (init_ffi): register size_t and ssize_t * foreign1.lisp (size_t, ssize_t, FILE): add types * modules/bindings/glibc/linux.lisp (size_t, ssize_t): do not redefine * modules/pari/pari.lisp (allocatemoremem): use size_t * modules/postgresql/postgresql.lisp (size_t): do not redefine (PQtrace, PQprint, PQdisplayTuples, PQprintTuples): use FILE instead of c-pointer * modules/syscalls/calls.c (fopen, fdopen, fclose) (clearerr, feof, ferror, fileno) [HAVE_FFI]: implement * modules/syscalls/posix.lisp (fopen, fdopen, fclose) (clearerr, feof, ferror, fileno) [FFI]: export 2008-04-17 Sam Steingold * modules/bindings/glibc/linux.lisp (FILE): define to c-pointer, use for all FILE functions instead of c-pointer 2008-04-17 Sam Steingold * modules/postgresql/postgresql.lisp: sync with libpq-fe.h 1.141 (8.3) (PQconnectionNeedsPassword, PQconnectionUsedPassword, PQisthreadsafe) (PQnparams, PQparamtype, PQdescribePrepared, PQdescribePortal) (PQsendDescribePrepared, PQsendDescribePortal, PQescapeStringConn) (PQescapeByteaConn, lo_create, lo_truncate, PQencryptPassword) (pg_char_to_encoding, pg_encoding_to_char) [commented out for 8.1.4] (pg_valid_server_encoding_id): add sync with postgres_ext.h 1.17 (8.3) (PG_DIAG_SEVERITY, PG_DIAG_SQLSTATE, PG_DIAG_MESSAGE_PRIMARY) (PG_DIAG_MESSAGE_DETAIL, PG_DIAG_MESSAGE_HINT) (PG_DIAG_STATEMENT_POSITION, PG_DIAG_INTERNAL_POSITION) (PG_DIAG_INTERNAL_QUERY, PG_DIAG_CONTEXT, PG_DIAG_SOURCE_FILE) (PG_DIAG_SOURCE_LINE, PG_DIAG_SOURCE_FUNCTION): add * modules/postgresql/configure.in: check for the new functions 2008-04-16 Sam Steingold * debug.d (read_form): pass the remainder of the input line to the command function * reploop.lisp (debug-reset-io, debug-help, debug-unwind, debug-quit) (debug-mode, debug-where, debug-up, debug-top, debug-down, bottom) (debug-frame-limit, debug-backtrace, debug-trap-on, debug-trap-off) (debug-redo, return, debug-continue, debug-print-error) (debug-inspect-error): accept the argline argument (debug-mode-[12345], get-frame-limit, debug-backtrace-[12345]): remove (wrap-user-commands): pass argline to user function (commands1, commands4): update (break-loop): pass argline to the restart caller 2008-04-16 Sam Steingold * reploop.lisp (break-loop): bind *saved-debug-package* & *saved-debug-readtable* so that only that binding is modified by debug-reset-io, not the global sane values 2008-04-14 Sam Steingold * modules/dirkey/dirkey1.lisp: do not re-export LDAP functions from EXT 2008-04-14 Sam Steingold fix bug#1942246: (coerce 1 '(double-float 0d0)) fails * predtype.d (COERCE): when result_type is a list, pass its CAR to coerce_float() instead of the whole list 2008-04-14 Sam Steingold * stream.d (sec_usec_number): usec should be _divided_ by 1000000, not multiplied by it * modules/syscalls/calls.c (rusage_to_lisp): add, use sec_usec_number() instead of C arithmetics (USAGE): use it instead of GETRU 2008-04-09 Sam Steingold * lispbibl.d: g++ 4.2.* and 4.3.0 are not supported due to g++ bug 35708 2008-04-08 Sam Steingold fix bug#1934968: log(complex) sometimes inaccurate * comptran.d (R_R_norm2_1_R): new function (N_log_abs_R): use it together with R_ln1_R * realtran.d (F_lnx1_F): converted from F_lnx_F to accept y=x-1 (F_lnx_F): use F_lnx1_F (R_ln1_R): converted from R_ln_R to accept y=x-1 (R_ln_R): use R_ln1_R 2008-04-07 Sam Steingold partially fix bug#1934968: log(complex) sometimes inaccurate * comptran.d (N_log_abs_R): new function: compute (log (abs z)) without using hypot, thus avoiding a square root (N_log_N, N_N_log_N): use it 2008-04-06 Sam Steingold fix bug#1936255: COMPILE discards MACRO doc strings * compiler.lisp (generatedp): handle lambda lists from macroexpanders 2008-04-06 Sam Steingold * describe.lisp (describe-object): update slot access of FOREIGN-VARIABLE and FOREIGN-FUNCTION for the fv_version/ff_version * documentation.lisp (set-function-documentation): ff_properties is 6 * foreign1.lisp (foreign-function-in-arg-count): ff_argtypes is 4 2008-04-03 Sam Steingold * lisparit.d, intprint.d (UDS_to_DIGITS): rename to UDS_to_digits (DIGITS): rename to digits_t (power_table_entry): rename to power_table_entry_t 2008-04-03 Sam Steingold fix bug#1790496: float format directive ~ve prints spurious digits * lisparit.d (FLOAT-SCALE-EXPONENT): implement * constsym.d, subr.d (float_scale_exponent): declare * format.lisp (format-scale-exponent-aux, format-scale-exponent): remove (format-float-for-e, format-general-float): use FLOAT-SCALE-EXPONENT instead of FORMAT-SCALE-EXPONENT 2008-04-02 Sam Steingold fix bug#1928735: BIGNUM failure * intread.d (DIGITS_to_I): drop leading 0s; be extra permissive in the initial length check, but perform an overflow check on each erg_len increment 2008-04-02 Sam Steingold * makemake.in (interpreted.mem, halfcompiled.mem): work around an msys "feature": ":" after "/" is converted to a ";" 2008-04-02 Vladimir Volovich Sam Steingold * makemake.in: quote arguments of "test -n" (fix bug#1932548) 2008-04-01 Sam Steingold fix bug#1931097: cross-compile mode tries to execute intparam * makemake.in (PARAMS) [CROSS]: use touch, not executables, for intparam and floatparam because the constants are defined in config.h (UTILCC) [CROSS]: define to cc instead of $(CC) because the utilities (gctrigger et al) must run locally 2008-04-01 Sam Steingold fix bug#1931101: new-clx QUERY-COLORS wants colors not pixels * modules/clx/new-clx/clx.f (XLIB:QUERY-COLORS): expect pixel sequence (coerce_into_color): just fill pixels 2008-03-31 Sam Steingold fix bug#1929516: m4:CL_INTPARAM_ALIGNOF loops infinitely when cross-compiling * m4/intparam.m4 (CL_INTPARAM_ALIGNOF): require CL_OFFSETOF and include so that offsetof is defined (CL_INTPARAM_CROSS): disable [void (*)(void)] because compilation fails, while the results are never used 2008-03-30 Sam Steingold fix bug#1929496: cosmetic informational message fix * m4/param.m4: set cl_machine_file_h before the cross_compiling test so that it is defined in both branches 2008-03-30 Sam Steingold * modules/syscalls/calls.c (GETGROUPS, %SETGROUPS): implement * modules/syscalls/posix.lisp (GETGROUPS): export, add DEFSETF * modules/syscalls/configure.in: check for getgroups and setgroups * lispbibl.d (llength1): export to clisp.h 2008-03-29 Sam Steingold fix bug#1928920: missing quotes in shell code for test invocation * m4/intparam.m4: use ac_cv_type_long_long_int instead of the obsolete ac_cv_type_long_long 2008-03-28 Yann Dauphin Sam Steingold * spvw_gcmark.d (down_sxrecord) [USE_JITC]: when gc_drop_jitc, replace cclosure_jitc with NIL 2008-03-27 Sam Steingold fix bug#1683394: TANH floating point overflow for large floats * realtran.d (posF_tanh_posF): new function: 1-exp(-2x)/1+exp(-2x) (R_tanh_R): use it instead of R_cosh_sinh_R_R when |x|>=1 2008-03-25 Sam Steingold * array.d, control.d, debug.d, eval.d, execname.c, hashtabl.d: * io.d, lisparit.d, lispbibl.d, list.d, package.d, pathname.d: * predtype.d, record.d, sequence.d, spvw.d, spvw_circ.d: * spvw_debug.d, spvw_garcol.d, spvw_language.d, spvw_memfile.d: * stream.d, weak.d: add extra braces to work around the g++ 4.2 error "jump to label ... crosses initialization of ..." 2008-03-25 Sam Steingold * m4/cc-sunpro.m4: new file, define CL_CC_SUNPRO * configure.in: call CL_CC_SUNPRO * makemake.in: use CC_SUNPRO, set by CL_CC_SUNPRO, to detect SUN SUNWspro C compiler (instead of "$CC -flags") Reported by Vladimir Volovich 2008-03-25 Sam Steingold fix bug#1924501: cannot find gllib include * makemake.in (CPPFLAGS): pass -Igllib here, not CFLAGS 2008-03-24 Vladimir Volovich Sam Steingold fix bug#1924508: undefined symbol getSP when linking lisp.run on Sparc Solaris 2.8 using Sun Studio 11 * spsparc.d, spsparc64.d: add global getSP 2008-03-24 Sam Steingold fix bug#1924506: void function cannot return value * foreign.d (convert_to_foreign): "return void" does not work on Solaris 2.8 2008-03-24 Sam Steingold * lispbibl.d (NULL): #undef before defining to avoid "warning: macro redefined: NULL" 2008-03-24 Sam Steingold * gray.lisp (stream-read-sequence): define methods for fundamental-binary-input-stream & fundamental-character-input-stream (stream-write-sequence): define methods for fundamental-binary-output-stream & fundamental-character-output-stream 2008-03-23 Sam Steingold implement GRAY:STREAM-READ-SEQUENCE and GRAY:STREAM-WRITE-SEQUENCE * defs2.lisp (%read-sequence): rename from READ-SEQUENCE (read-sequence): call it or GRAY::STREAM-READ-SEQUENCE (%write-sequence): rename from WRITE-SEQUENCE (write-sequence): call it or GRAY::STREAM-WRITE-SEQUENCE * gray.lisp (stream-read-sequence, stream-write-sequence): implement Suggested by Anton Vodonosov . 2008-03-21 Sam Steingold * lispbibl.d, debug.d (gdb_show_stack): rename from ext_show_stack * lispbibl.d (gdb_disassemble_closure): add protorype * debug.d (gdb_disassemble_closure): implement * constsym.d (disassemble_closures): add 2008-03-21 Sam Steingold * eval.d (cclosure_run) [USE_JITC]: new local inline (interpret_bytecode) [USE_JITC]: use it instead of explicit code * lightning.c: use it instead of interpret_bytecode_() 2008-03-19 Sam Steingold * makemake.in (XCFLAGS) [XCC_GCC]: add -falign-functions=4 on all CPUs - it cannot hurt and is required at least on AMD64 2008-03-18 Sam Steingold * lightning.c: use jit_movi_p instead of jit_movi_l for pointers to avoid "warning: cast from pointer to integer of different size" 2008-03-18 Sam Steingold * stream.d (push_ch): extract from read_line (read_line): use it * spvw_debug (nobject_out1): handle arrays 2008-03-18 Sam Steingold * makemake.in, lispbibl.d: USE_JITC requires HEAPCODES 2008-03-18 Drutsa Pavel fix bug#1918017: new-clx:gcontext-clip-mask does not set rectangles * modules/clx/new-clx/clx.f (XLIB:SET-GCONTEXT-CLIP-MASK): do not divide n by 4 when passing to XSetClipRectangles - it has already been done by get_seq_len() 2008-03-17 Sam Steingold * lightning.c (jit_compile_): restore the semantics of byteptr_min as in interpret_bytecode_() (fixes --with-debug compilation) 2008-03-17 Sam Steingold drop JITC objects before saving memory * debug.d (GC): accept optional argument to invalidate JITC objects; return 3 values (same as %ROOM) * subr.d (gc): update declaration * lightning.c (gc_drop_jitc): add variable * spvw_garcol.d (gar_col): accept level argument to invalidate JITC objects (when 1, set gc_drop_jitc to true) * lispbibl.d (gar_col): update prototype (gc_drop_jitc) [USE_JITC]: declare extern * pathname.d (SAVEMEM): pass 1 to gar_col() * spvw_memfile.d (savemem): pass 1 to gar_col() * spvw_allocate.d (make_space_gc, make_space_gc_true) (make_space_gc_false): pass 0 to gar_col() * spvw_gcmark.d (down_cclosure) [USE_JITC]: do not mark JITC when gc_drop_jitc is true 2008-03-17 Sam Steingold * foreign1.lisp (DEF-C-CONST): pass NIL as version to FIND-FOREIGN-FUNCTION (finish patch#1913831) * foreign.d (foreign_library_check): when version is non-NIL, coerce it to simple-string * documentation.lisp (function-documentation): foreign-function properties are now in slot 6 2008-03-17 Sam Steingold * spvw_gcmark.d (down_cclosure) [USE_JITC]: check that the cclosure has been already JIT-compiled before gc_mark_jitc_object() Reported by Yann Dauphin * lightning.c (next_byte) [FAST_DISPATCH]: undefine to avoid error: 'cod_labels' undeclared 2008-03-16 Sam Steingold * lightning.c (DEBUG_CHECK_BYTEPTR): do not redefine (jitc_jmp_cons_): replace with struct jitc_insn_list in a more C style * makemake.in [with_jitc=lightning]: compile eval.c with -Wno-unused * .gdbinit (build-id-verbose): do not set (not needed since gdb-6.6-45.fc8) 2008-03-13 Yann Dauphin * eval.d, lightning.c: cleanup: avoid using Lisp objects with malloc, use jitc_ prefix for macros defined in CLISP to separate from the system code 2008-03-15 Sam Steingold patch#1913831: dlvsym support in FFI * lispbibl.d (Fvariable): add field fv_version (Ffunction): add field ff_version * io.d (pr_orecord): print foreign variable and function version * foreign.d (error_version_nonlibrary, find_name_version): add (foreign_library_variable, FIND-FOREIGN-VARIABLE) (foreign_library_function, FIND-FOREIGN-FUNCTION) (object_handle, object_address, foreign_library_check): accept VERSION (update_library): handle versioned objects * foreign1.lisp (def-call-out, def-c-var): accept :VERSION * subr.d (find_foreign_variable): accept 5 arguments (find_foreign_function): accept 6 arguments * m4/dynload.m4 (CL_DYNLOAD): check for dlvsym Suggested by Kaz Kylheku . 2008-03-14 Sam Steingold * m4/ffcall.m4 (CL_FFCALL): do not nest AC_CACHE_CHECK 2008-03-13 Sam Steingold * m4/ffcall.m4 (CL_FFCALL): reinstate AC_CACHE_CHECK, restore LIBS after a failed test 2008-03-12 Sam Steingold * glm4/lib-link.m4: update from gnulib, discarding my changes * m4/ffcall.m4 (CL_FFCALL): update for the new AC_LIB_LINKFLAGS 2008-03-12 Sam Steingold * foreign.d (FOREIGN-POINTER-INFO): add interface to dladdr() * constsym.d, subr.d (foreign_pointer_info): declare * m4/dynload.m4 (CL_DYNLOAD): check for dladdr() * foreign1.lisp (FOREIGN-POINTER-INFO): export 2008-03-12 Sam Steingold * makemake.in (clean4): also remove ${SUBDIRS} (gllib) 2008-03-12 Sam Steingold * modules/clx/new-clx/configure.in: fix last patch: cannot nest AC_TRY_LINK; fail if XauGetAuthByAddr was not found also define HAVE_XGETATOMNAMES when XGetAtomNames is present (4y late!) 2008-03-12 Reini Urban * modules/clx/new-clx/configure.in: explicit check for -lXau, needed at least for cygwin 2008-03-11 Sam Steingold * Makefile.devel (TAGS, tags): new targets 2008-03-11 Sam Steingold * version.sh: 2.45 (2008-04-04) 2008-03-11 Sam Steingold keep in our cvs some externally maintained files - because requiring ./autogen.sh after cvs co is outrageous * autogen.sh: remove * Makefile.devel (build-aux-update): update ltmain.sh, libtool.m4 (from libtool 2.2) and gtk-2.0.m4 (from gtk2 svn) here (gnulib-imported): decouple from build-aux-update 2008-03-10 Sam Steingold * compiler.lisp (c-form-table): SORT & STABLE-SORT -> c-SORT (c-SORT): new function (check arg order, map STABLE-SORT to SORT) * eval.d (FUNTAB): remove stable_sort, add symbol_macro_expand * constobj.d (version): bump 2008-03-10 Sam Steingold thread safety: remove static variables * pathname.d (struct file_status): new struct type (file_status_init): new function (assure_dir_exists): accept a pointer to struct file_status instead of using STACK_0; return the value in struct file_status (assume_dir_exists): remove (file_exists): use struct file_status instead of a global static (true_namestring): accept struct file_status, do not modify STACK (TRUENAME, PROBE-FILE, DELETE-FILE, rename_file, open_file, CD) (FILE-WRITE-DATE, EXECUTE): update true_namestring invocations (open_input_file, with_stat_info_computed): accept struct file_status (get_time_size): accept pathname directly without STACK (with_stat_info): remove (with_stat_info_arg): rename to with_stat_info (directory_search_scandir, directory_search, shorter_directory): update the assure_dir_exists invocations 2008-03-09 Sam Steingold * pathname.d (assure_dir_exists) [WIN32_NATIVE]: move some code outside of with_sstring_0() (assume_dir_exists): local, not global * lispbibl.d (assume_dir_exists): remove prototype * stream.d (finish_output_buffered): remove "#if 0" code which used assume_dir_exists() 2008-03-06 Sam Steingold * compiler.lisp (c-GLOBAL-FUNCTION-CALL): treat SYS::%UNBOUND using ... (function-code-list): SYS::%UNBOUND --> ((PUSH-UNBOUND 1) (POP)) * clos-class6.lisp, clos-genfun1.lisp, clos-method1.lisp: pass (SYS::%UNBOUND) as the first argument to EQ so save one bytecode instruction (since this involves an internal CLISP function, it does not warrant a general optimization in c-EQ) 2008-03-05 Sam Steingold * compiler.lisp (l-constantp, c-constantp): hash tables are constants (c-constant-value): handle hash tables; check for unhandled types 2008-03-05 Sam Steingold * compiler.lisp (c-VAR): when the variable is a constant, make anode foldable (c-GLOBAL-FUNCTION-CALL): fold some calls (NULL/CONSP/XOR...) 2008-03-03 Sam Steingold c-NORMAL-FUNCTION-CALL can now fold calls * compiler.lisp (try-constant-fold): extract from c-DIRECT-FUNCTION-CALL (return-if-foldable): new macro, uses try-constant-fold (c-NORMAL-FUNCTION-CALL, c-DIRECT-FUNCTION-CALL): use it (function-code-list): extract from c-GLOBAL-FUNCTION-CALL (c-GLOBAL-FUNCTION-CALL): use it (collect-arg, collect-args): add (c-NORMAL-FUNCTION-CALL, c-DIRECT-FUNCTION-CALL) (c-GLOBAL-FUNCTION-CALL): use them * record.d, subr.d (%UNBOUND): seclass_read, not seclass_foldable, because (const-value (new-const #)) is NIL 2008-03-03 Sam Steingold * hashtabl.d, subr.d (GETHASH): seclass_read, not seclass_default 2008-03-02 Sam Steingold * defs2.lisp (define-hash-table-test): use check-symbol 2008-03-02 Sam Steingold * makemake.in (check-recompile): do not specify file name in "-o", just the directory 2008-03-02 Sam Steingold * .gdbinit (build-id-verbose): set to 0 to avoid fedora yum messages (main_actions): silent break to call check_funtab() 2008-03-01 Sam Steingold * clos-genfun4.lisp (check-gf-lambda-list): new function (generic-function-argument-precedence-order, generic-function-argorder) (generic-function-lambda-list, generic-function-signature): use it 2008-02-29 Sam Steingold * analyse-funtab.lisp: new file: study which functions should be added to eval.d:FUNTAB * eval.d (FUNTAB): add check_function_name, typep_class, defined_class_p, proper_list_p, pcompiled_function_p, make_macro, macrop, macro_expander, symbol_macro_p, standard_instance_access, set_standard_instance_access, encodingp (FUNTABR): add mapcap * constobj.d (version): bump 2008-03-01 Sam Steingold * record.d (CONSTANT_INITFUNCTION_P): new define (CONSTANT-INITFUNCTION-P, %SHARED-INITIALIZE, do_initialize_instance): (%MAKE-INSTANCE): use it 2008-02-29 Sam Steingold * record.d (CLOSURE-CONSTS): fix for the jitc addition 2008-02-29 Sam Steingold * io.d (pr_cclosure_lang): fix printing of lalist & docstring yet again 2008-02-27 Sam Steingold use keyword symbols from the core when possible * utils/modprep.lisp (mk-objdef, objdef-object, objdef-local): add (parse-signature, new-checker): use mk-objdef instead of init-to-objdef (check-signature, lexical-analysis, print-tables-1): use objdef-object & objdef-local instead of objdef-tag NB: this feature is actually disabled because &S(...) is invalid (S() is not an lvalue) in non-debug builds * modules/berkeley-db/bdb.c, modules/gdbm/gdbm.c, modules/pcre/cpcre.c: * modules/syscalls/calls.c, modules/regexp/regexi.c: * modules/rawsock/rawsock.c, modules/clx/new-clx/clx.f: use #\: in DEFUN to denote core keywords * constsym.d (Kcopy): always define (Kpreserve, Kinvert): add * spvw_debug.d (get_symbol_count, get_constsym) [DEBUG_SPVW]: add * modules/syscalls/calls.c (CONSTSYM) [DEBUG_SPVW]: use them 2008-02-27 Sam Steingold * modules/syscalls/calls.c use S(K...) instead of `...` for common keywords (copy_method_t): move before DEFMODULE for DEFCHECKER to work (check_copy_method): replace with a DEFCHECKER (copy_method_object): remove 2008-02-26 Sam Steingold * modules/wildcard/Makefile.in (all): depend on wildcard.fas * modules/oracle/Makefile.in (all): depend on oracle.fas * modules/fastcgi/Makefile.in (all): depend on fastcgi.fas * modules/bindings/glibc/Makefile (all): depend on linux.fas * modules/postgresql/Makefile.in (all): depend on postgresql.fas 2008-02-26 Sam Steingold a less invasive work-around for bug#1413016: it is not amd64 which is at fault, but TYPECODES * makemake.in (XCFLAGS): revert the 2007-10-15 patch * spvw_garcol.d (update) [TYPECODES]: comment out DEBUG_SPVW_ASSERT (gc_unmarkcheck) [TYPECODES]: disable 2008-02-26 Sam Steingold * spvw_debug.d (DEBUG_SPVW_ASSERT): print the failed assertion before abort() both as is and with expanded macros 2008-02-25 Sam Steingold * Makefile.devel (src/m4/gtk-2.0.m4): use wget instead of svn * autogen.sh: svn is no longer required, let us keep it this way! 2008-02-24 Sam Steingold * configure (info_help): use ./src/configure to get the list of options which specify location of dependencies 2008-02-24 Sam Steingold * Makefile.devel (GNULIB_CHECKOUT): do not specialize on a specific user, one can always use a symlink 2008-02-24 Bruno Haible * configure (info_help): Mention the --with[out]-lib*-prefix options. Sort the other options like autoconf does. 2008-02-24 Bruno Haible * autogen.sh: New file. * Makefile.devel (build-prerequisites): New target. (all): Depend on it. (EXCLUDE): Exclude autogen.sh. * utils/fix-perms.sh: Ensure autogen.sh is executable. 2008-02-24 Bruno Haible * Makefile.devel (GTK2_SVN_ROOT): New variable. (m4/gtk-2.0.m4): New rule. (aclocal.m4): Depend on it. 2008-02-24 Bruno Haible * makemake.in (COPYRIGHT.rtf): Fix escaping. 2008-02-24 Bruno Haible Make it easier to update the gnulib imported files. * Makefile.devel (GNULIB_CVS_ROOT, GNULIB_CVS_REPOSITORY): New variables. (GNULIB_CHECKOUT): Rename from GNULIB_HOME. Make it normally a subdirectory of the current directory. (update-gnulib): New rule. (build-aux-update): Depend on it. (gnulib-imported): Rename from gnulib-update. 2008-02-24 Bruno Haible * Makefile.devel (build-aux-update): Pass option -d to 'cvs update'. Remove unportable 'cd -' command. 2008-02-24 Bruno Haible Add rule for fetching a working libtool.m4. * build-aux/ltmain.sh: Remove file. * Makefile.devel (src/aclocal.m4): Depend on src/m4/libtool.m4. (build-aux-update): Depend on src/build-aux/ltmain.sh. (LIBTOOL_VERSION, LIBTOOL_SOURCE_FILE, LIBTOOL_SOURCE_URL): New variables. (build-aux/ltmain.sh m4/libtool.m4): New rule. (EXCLUDE): Also exclude the LIBTOOL_SOURCE_FILE and its predecessors. 2008-02-24 Bruno Haible fix bug#1836142 part 2. * lispbibl.d (STACK_register, mv_count_register, value1_register) (back_trace_register): Don't define for gcc-4.2 and newer when USE_GCC_REGISTER_VARIABLES is not defined. 2008-02-24 Bruno Haible * lispbibl.d (STACK_register, mv_count_register, value1_register) (back_trace_register): Define for gcc-3.3.[4-6]. 2008-02-23 Bruno Haible fix bug#1836142 part 1. * floatparam.c (check): Change argument types to 'volatile type*'. This defeats optimizations of gcc 4.3.0 snapshots. 2008-02-16 Sam Steingold * compiler.lisp (create-fun-obj): jitc-p is true when either SPACE is 0 or SPEED is at least 1 * clos-genfun2b.lisp (*compile-no-jitc*): new constant (compute-discriminating-function-) (prototype-factory-table, finalize-fast-gf): use it in generated lambda declarations instead of (COMPILE) 2008-02-15 Sam Steingold * lightning.c (jit_run): use !fpointerp instead of nullp to test cclosure_jitc (jit_compile_) [DEBUG_BYTECODE]: declare byteptr_bad_jump 2008-02-22 Sam Steingold * io.d (pr_cclosure_lang): fix printing of lalist & docstring 2008-02-22 Sam Steingold make sure that CREATE-FUN-OBJ uses the correct OPTIMIZE settings * compiler.lisp (fnode): add DENV slot (c-LAMBDABODY): (SETF (FNODE-DENV *FUNC*) *DENV*) (create-fun-obj): pass (FNODE-DENV FNODE) to DECLARED-OPTIMIZE (make-trampoline): revert last patch: do not bind *DENV*; instead, pass :DENV '((OPTIMIZE (SPACE 3) (SPEED 0))) to MAKE-FNODE 2008-02-19 Sam Steingold * utils/fix-perms.sh: all *.d are non-executable 2008-02-19 Sam Steingold * compiler.lisp (make-trampoline): use backquote for readability; bind *DENV* for DECLARED-OPTIMIZE in CREATE-FUN-OBJ (create-fun-obj): compute (DECLARED-OPTIMIZE 'SPACE) just once, not 3 times (c-REQUIRE): do not suppress load libfile message completely 2008-02-19 Sam Steingold * macros3.lisp (compile-time-value): new exported user macro * init.lisp (compile-time-value): export from EXT * compiler.lisp (c-COMPILE-TIME-VALUE): compile it (c-form-table): use c-COMPILE-TIME-VALUE for COMPILE-TIME-VALUE * foreign1.lisp (compile-time-value): remove broken definition 2008-02-15 Sam Steingold * spvw.d, _clisp.c: remove the last vestiges of the -s command line option, removed on 2004-08-31 2008-02-14 Sam Steingold * record.d (make_code_vector): converted from MAKE-CODE-VECTOR (make_closure): accept 7 keywords instead of 6 positional arguments; call make_code_vector on :CODE (make_constant_initfunction): update * subr.d, constsym.d (make_code_vector): remove * constsym.d (make_closure): rename from %MAKE-CLOSURE to MAKE-CLOSURE (Kcode, Kconstants, Kseclass, Klambda_list, Kdocumentation, Kjitc_p): add * subrkw.d (make_closure): add * eval.d (FUNTAB): remove make_code_vector * io.d (CLOSURE-READER): update the C_make_closure() call * compiler.lisp (make-closure): remove defun (create-fun-obj): update make-closure call 2008-02-14 Sam Steingold * constobj.d (version): bump * constsym.d, subr.d, foreign.d (lookup_foreign_variable) (lookup_foreign_function, foreign_library_variable): remove legacy ABI * constsym.d, subr.d, foreign.d (open_foreign_library): rename from foreign_library * foreign.d (open_library, update_library, check_library): remove legacy version argument * eval.d (FUNTAB): add cs_string_eq, cs_string_noteq, cs_string_less, cs_string_greater, cs_string_ltequal, cs_string_gtequal, cs_string, fdefinition, whitespacep, elastic_newline, cs_intern, cs_find_symbol, cs_shadow, cs_make_package, cs_find_all_symbols, cs_symbol_name, map_into, xgcd * foreign1.lisp (open-foreign-library): export * macros2.lisp (check-not-special-variable-p): remove legacy ABI * record.d, subr.d (MAKE-MACRO): both arguments are required 2008-02-13 Sam Steingold first stab at keeping JITC code in the closure * compiler.lisp (make-closure): accept :jitc-p and pass it on to %make-closure in a cons cell together with seclass * eval.d (interpret_bytecode) [USE_JITC]: check cclosure_jitc_p and use jit_run instead of jit_compile_ * io.d (CLOSURE-READER): pass jitc_p to make_closure (pr_cclosure_lang): write jitc_p * lightning.c (jitc_object): new struct (all_jitc_objects): new static (gc_mark_jitc_object): mark jitc_object (gc_scan_jitc_objects): scan all_jitc_objects (jit_compile_): save jitc_object in cclosure_jitc(closure) (jit_run): add * lispbibl.d (Codevec.ccv_flags): use bit(5) for jitc_p (ccv_flags_jitc_p, cclosure_jitc, cclosure_jitc_p): define (gc_mark_jitc_object, gc_scan_jitc_objects) [USE_JITC]: declare * record.d (%MAKE-CLOSURE): accept jitc_p in a cons cell with seclass (MAKE-CONSTANT-INITFUNCTION): pass (seclass . jitc_p) (CLOSURE-DOCUMENTATION, (SETF CLOSURE-DOCUMENTATION)) (CLOSURE-LAMBDA-LIST): update for jitc_p * spvw_garcol.d (gar_col_normal) [USE_JITC]: call gc_scan_jitc_objects * spvw_gcmark.d (down_cclosure): define 2008-02-11 Sam Steingold * io.d (pr_symbol_part): use pr_fasl_special only on fasl_streams 2008-02-11 Sam Steingold * makemake.in (check-sources): grep ${SRCDIR}*.d, not *.d * subrkw.d (make_thread): fix a typo 2008-02-11 Sam Steingold fix bug#1890854: read-preserving-whitespace eats whitespace after quoted object * io.d (list2_reader): bind *READ-RECURSIVE-P* around read_recursive_no_dot() to avoid *READ-PRESERVE-WHITESPACE* being re-bound to NIL in read_recursive() 2008-02-10 Sam Steingold * clos-genfun2b.lisp (finalize-fast-gf): avoid calling prototype-factory twice on the same argument * record.d (%COPY-GENERIC-FUNCTION): use clos_venv instead of clos_consts[0] 2008-02-07 Sam Steingold finally fix def-c-const * foreign1.lisp (compile-time-value): new macro (def-c-const): use it; do not use def-call-out for the constant function to avoid clutter (finalize-coutput-file): keep cftype in *constant-table* 2008-02-07 Sam Steingold prepare for keeping jitc code in cclosure by not assuming that cclosure constants start at position 2 inside the record * constsym.d, subr.d (closure_const, set_closure_const): declare * record.d (CLOSURE-CONST, SET-CLOSURE-CONST): implement * pleces.lisp ((SETF CLOSURE-CONST)): define * compiler.lisp (pass3): use CLOSURE-CONST instead of SYS::%RECORD-REF (make-trampoline): use CLOSURE-CODEVEC instead of SYS::%RECORD-REF * defs2.lisp (dispatch-reader): use CLOSURE-CONST instead of %RECORD-REF and return constant number instead of record position in VECTOR-INDEX * io.d (SET-MACRO-CHARACTER, GET-MACRO-CHARACTER): O(dispatch_reader_index) contains position in TheCclosure(newclos)->clos_consts, not in ((Srecord)TheCclosure(newclos))->recdata * trace.lisp (subclosure-pos, %local-get, %local-set): use CLOSURE-CONST instead of %RECORD-REF & %RECORD-STORE 2008-02-06 Sam Steingold * .gdbinit (run_test, run_all_tests, ansi_tests, ansi_tests_compiled): pass -E utf-8 because all our files are in unicode 2008-02-06 Sam Steingold accept "-lp" to add to *LOAD-PATHS* (and fix mingw separate directory build, see http://article.gmane.org/gmane.lisp.clisp.devel/17375 http://article.gmane.org/gmane.lisp.clisp.devel/17388) * init.lisp (*load-paths*): do not reset * constsym.d (*load-paths*): add * spvw.d (init_symbol_values): init *LOAD-PATHS* (struct argv_actions): add argv_load_paths_count & argv_load_paths (parse_options): init p2->argv_load_paths_count & p2->argv_load_paths; argv_for now has an additional value: for_load_path; accept "-lp" and set argv_for to for_load_path for adding the argument o p2->argv_load_paths (main_actions): push -lp arguments to *LOAD-PATHS* * makemake.in: use -lp instead of setting *LOAD-PATHS* in -x 2008-02-06 Sam Steingold the final fix for bug#1578179: Compile-file: non-similarity of strings with cr/lf (also treated on 2006-11-17 & 2008-02-04) * io.d (read_token_1): when reading from a FASL stream, read \r & \n as #\Return and #\Newline respectively (pr_symbol_part): when printing to a FASL stream, print #\Newline & #\Return as \r and \n respectively 2008-02-06 Sam Steingold fix bug#1887934: make clean removes Lisp source files * makemake.in (clean5): do not remove LISPFILES, they are not linked over since 2007-12-10 2008-02-04 Sam Steingold * pathname.d (assure_dir_exists) [WIN32_NATIVE]: for consistency with UNIX, do NOT call MERGE-PATHNAMES on directories 2008-02-04 Sam Steingold extend the meaning of the REVAL stream flag to mean a FASL stream: in addition to ignoring *READ-EVAL*, use \n for #\Newline and #\r for #\Return inside strings (replaces the 2006-11-17 patch #0Y"") * compiler.lisp (set-output-stream-fasl): extract from compile-file (compile-file): use it to mark *fasoutput-stream* & *liboutput-stream* as FASL streams with UTF-8 encoding * constsym.d, subr.d, stream.d (ALLOW-READ-EVAL): -> STREAM-FASL-P * constsym.d, gray.lisp, stream.d ($REVAL): rename to $FASL * init.lisp (load): do not mark input-stream as a FASL stream: a FAS file is marked as such with #0Y_; a lisp file is just a text file * lispbibl.d (strmflags_fasl_bit_B): rename from strmflags_reval_bit_B * lispbibl.d, stream.d (stream_get_read_eval): rename to stream_get_fasl (stream_set_read_eval): rename to stream_set_fasl * io.d (STRING-READER): when reading from a FASL stream, recognize \n\r (CLOSURE-READER): accept #0Y_ to set FASL flag, #0Y^ to clear it, do not accept #0Y"" (pr_fasl_special): new function (pr_sstring_ab): use it; do not print #0Y to FASL streams (pr_instance, pr_orecord): use FASL stream flag instead of *COMPILING* 2008-02-04 Sam Steingold * makemake.in: fix distrib on win32 when building in src 2008-02-04 Sam Steingold * foreign1.lisp (DEF-C-CONST): use get-assoc & note-c-const (note-c-const): new ABI function; make the requirement that def-c-const must be compiled to C explicit for better error reporting 2008-02-03 Yann Dauphin * lightning.c: new file, implements JITC via GNU lightning 2008-02-03 Sam Steingold add JITC harness * configure: accept --with-jitc=FLAVOR * eval.d (interpret_bytecode) [USE_JITC]: use jit_run [USE_JITC]: load the appropriate jit implementation * configure.in: call CL_LIGHTNING * m4/lightning.m4: implement CL_LIGHTNING * lispbibl.d [USE_JITC]: disable registers when using JITC * makemake.in: accept --with-jitc=FLAVOR (XCFLAGS) [--with-jitc=FLAVOR]: add -DUSE_JITC -D${with_jitc} link over ${with_jitc}.c into the build directory (eval.o): depend on ${with_jitc}.c (clean5): remove ${with_jitc}.c 2008-01-30 Sam Steingold * pprint.lisp (copy-pprint-dispatch): distinguish the 3 cases: no argument, NIL argument, table argument Reported by "Hoehle, Joerg-Cyril" 2008-01-30 Sam Steingold * makemake.in: libsvm requires FFI * modules/fastcgi/configure.in, modules/oracle/configure.in: * modules/pari/configure.in, modules/postgresql/configure.in: * modules/wildcard/configure.in, modules/zlib/configure.in: fail if ffcall is not present 2008-01-29 Sam Steingold * po/Makefile.devel (LISPSOURCES): remove affi1 (DSOURCES): remove affi, add funarg 2008-01-29 Sam Steingold * version.sh: 2.44 (2008-02-02) 2008-01-27 Sam Steingold * comptran.d (C_rationalp): new macro (N_N_log_N, N_N_expt_N): use it 2008-01-27 Reini Urban <35_trans4> * places.lisp, comptran.d, realrand.d, realtran.d: Translate comments to English. Convert # to /* */. 2008-01-27 Sam Steingold * pathname.d (get_time_size) [WIN32_NATIVE]: strip trailing backslash from resolved_asciz and close search_handle. This actually fixes 2007-12-31 & 2008-01-25 patches. Thanks to Michael Kappert for testing. 2008-01-25 Sam Steingold * pathname.d (get_time_size) [WIN32_NATIVE]: accept directories; this should fix the 2007-12-31 patch for woe32 Thanks to Michael Kappert for testing. 2008-01-24 Sam Steingold * lndir: do not link over CVS directories 2008-01-23 Sam Steingold fix bug#1781476: signal handling examples in glibc fail * modules/bindings/glibc/linux.lisp (sigaction): sa_restorer is now a generic pointer, not a pointer to a function, because... The sa_restorer element is obsolete and should not be used. POSIX does not specify a sa_restorer element. On Linux 2.6.22.7-57.fc6, sigaction(SIGINT) returns invalid pointers as sa_restorer 2008-01-23 Sam Steingold * foreign1.lisp (finalize-coutput-file): constants *CONSTANT-TABLE* are now (const . guard) (DEF-C-CONST): accept :GUARD 2008-01-22 Sam Steingold * modules/bindings/glibc/linux.lisp (SIGSET_NWORDS): compute using ffi:ulong, as specified in (sigset_t): array of ulong, as specified in 2008-01-22 Sam Steingold fix bug#1407486: FFI revalidates too many library functions in new session * foreign.d (check_faddress_valid): check that validate_fpointer() actually did make the pointer valid (update_library): make sure that the non-validatable object remains marked as invalid 2008-01-22 Sam Steingold * spvw_debug.d (nobject_out1): print INVALID for invalid foreign functions and foreign addresses 2008-01-22 Sam Steingold * control.d (APPLY, specdecled_): avoid GCC "warning: value computed is not used" 2008-01-22 Sam Steingold * savemem.lisp (*saveinitmem-verbose*): add defvar (saveinitmem): :verbose defaults to *saveinitmem-verbose* * spvw.d (init_symbol_values): define *SAVEINITMEM-VERBOSE* (main_actions): set it to NIL when argv_verbose < 1 * init.lisp (*saveinitmem-verbose*): export from CUSTOM (loading-message): permit more than 1 format argument * constsym.d (*saveinitmem-verbose*): add symbol 2008-01-22 Sam Steingold * spvw_memfile.d (savemem): return file length * lispbibl.d (savemem): update prototype * pathname.d (SAVEMEM): return file length 2008-01-21 Sam Steingold * spvw.d (run_hooks): establish a DRIVER frame around the loop to enable reset() on errors in user code (main_actions): ditto around loading RC file, init files, compiling files, executing scripts (but not expression, they go through SYS::DRIVER) 2008-01-22 Sam Steingold * reploop.lisp (with-abort-restart): new macro: establish the DEBUG catcher and the ABORT restart with a useful report function (main-loop, break-loop, step-hook-fn): use it 2008-01-22 Sam Steingold fix bug#1877497: the set of restarts grows with each image save and bug#1714737: bad restarts when .clisprc signals errors. * savemem.lisp (saveinitmem): bind *ACTIVE-RESTARTS* & *CONDITION-RESTARTS* to NIL around SAVEMEM instead of setting them to NIL in the *DRIVER* to avoid multiple ABORT restarts in saved images 2008-01-21 Sam Steingold * eval.d (reset): set unwind_protect_to_save.upto_frame; print a useful(?) error message on abort (CHECK_STACK, CHECK_STACK_S, CHECK_STACK_C): new macros (eval_fsubr, eval_subr, apply_subr, funcall_subr): use CHECK_STACK_S (eval_closure, apply_closure, funcall_closure): use CHECK_STACK_C (find_keyword_value, match_subr_key, match_cclosure_key): avoid GCC "warning: value computed is not used" 2008-01-19 Sam Steingold * control.d (THE): raise TYPE-ERROR on failure 2008-01-18 Sam Steingold * debug.d (print_back_trace, print_stackitem): also print FRAME offset from STACK_start (show_stack): use STACK_start instead of nullobj to check for stack end; print bt & FRAME _before_ testing for loop termination 2008-01-17 Sam Steingold fix bug#1506316: segfault in framep() debug.d:644 * debug.d (stack_upend_p): use "STACK_start cmpSTACKop FRAME" instead of "eq(FRAME_(0),nullobj)" to check for STACK start (stack_downend_p): use "FRAME cmpSTACKop STACK" to check for STACK end 2008-01-17 Sam Steingold * pathname.d (open_file): fix a gc-safety bug in (open ... :direction :output :if-exists :rename-and-delete) by keeping namestring on the STACK all along 2008-01-16 Sam Steingold * pathname.d (open_file): fix g++ compilation * charstrg.d (uc_width): remove the global inline declaration of the gnulib function to avoid a g++ warning 2008-01-16 Sam Steingold * ariarm.d, lispbibl.d: convert comments from "# " to "/**/" 2008-01-16 Sam Steingold * foreign.d (convert_function_to_foreign, convert_from_foreign) (convert_from_foreign_array_fill, convert_to_foreign, %ELEMENT): use while instead of dotimes and do/while instead of dotimesp (%ELEMENT): avoid GCC "warning: value computed is not used" 2008-01-16 Sam Steingold * list.d (make_list, NTHCDR, listof, LIST*, APPEND, NCONC, NBUTLAST): use while instead of dotimes and do/while instead of dotimesp 2008-01-16 Sam Steingold * sequence.d (REDUCE): use missingp (CONCATENATE, seq_boolop, MAP, MAP-INTO, delete_help, substitute_help): use while instead of dotimes and do/while instead of dotimesp (verify_return_value, VERIFY_RETURN_VALUE): add function & macro (MAKE-SEQUENCE, coerce_sequence, COERCED-SUBSEQ, CONCATENATE, MAP) (MERGE): use them (CONCATENATE, seq_boolop, MAP): avoid GCC "warning: value computed is not used" 2008-01-16 Reini Urban <34_trans3> * sequence.d, list.d: translate all comments and convert them to /**/ 2008-01-15 Sam Steingold * debug.d (climb_stack_once, climb_stack_repeat): merge into climb_stack (FRAME-UP-1, FRAME-DOWN-1): remove (FRAME-UP, FRAME-DOWN): accept an additional REPEAT argument * reploop.lisp (frame-limit-down, frame-limit-up, debug-up) (debug-top, debug-down, debug-bottom, frame-up-down): use (frame-up 1 ...) instead of (frame-up-1 ...) and (frame-down 1 ...) instead of (frame-down-1 ...) and (frame-up t ...) instead of (frame-up ...) and (frame-down t ...) instead of (frame-down ...) (print-backtrace): use ~:P in message * constsym.d, subr.d (frame_up_1, frame_down_1): remove 2008-01-15 Bruno Haible * lispbibl.d (quit): Note the meaning of a negative final_exitcode. * spvw.d (quit_instantly): Likewise. (main): If exitcode is negative, quit the program through a signal rather than through exit(). * spvw_sigterm.d (quit_on_signal): Set final_exitcode. 2008-01-14 Bruno Haible * spvw_sigterm.d (set_sigterm_handler): New function. (uninstall_sigterm_handler, install_sigterm_handler): Use it. (quit_on_signal): After raising the signal, return from the function. 2008-01-14 Bruno Haible * Makefile.devel: Use CONFIGURES instead of CLISP_CONFIGURES. Fixes problem introduced on 2008-01-05. 2008-01-14 Sam Steingold fix bug#1871205: how to quit upon SIGTERM, SIGKILL, or SIGQUIT * spvw_sigterm.d (quit_on_signal_in_progress): new static boolean (uninstall_sigterm_handler): undo the effects of install_sigterm_handler (quit_on_signal): call uninstall_sigterm_handler first thing so that the repeated signals bypass the handler and kill CLISP instantly 2008-01-13 Bruno Haible Make it work on OpenBSD 4.0 x86 with address space randomization. * lispbibl.d (ADDRESS_RANGE_RANDOMIZED): New macro. (LINUX_NOEXEC_HEAPCODES/STANDARD_HEAPCODES, TRIVIALMAP_MEMORY): Depend on it. 2008-01-13 Bruno Haible * spvw_memfile.d (loadmem_from_handle) [SPVW_MIXED_BLOCKS_OPPOSITE]: Fix the test whether there's enough room. 2008-01-13 Bruno Haible * makemake.in: Don't use $(MAKE) -C. 2008-01-13 Sam Steingold * lispbibl.d (STACK_start): declare new per_thread * spvw.d (STACK_start): create and ... (init_memory): init to the initial value of STACK * spvw_debug.d (nobject_out1): use STACK_start to print framepointers and framepointerp to check for them * io.d (pr_framepointer_1): new function: print frame offset from STACK_start instead of its address (pr_framepointer): use it instead of pr_hex6 2008-01-13 Sam Steingold * lispbibl.d (per_thread): per-thread storage class * spvw.d, lispbibl.d (STACK, callback_saved_registers) (saved_mv_count, saved_value1, saved_back_trace, saved_STACK) (SP_bound, STACK_bound, mv_count, mv_space, temp_mv_count) (temp_value1, back_trace, aktenv, unwind_protect_to_save) (handler_args, inactive_handlers): use per-thread instead of current_thread() fields 2008-01-12 Sam Steingold * makemake.in: use add traling #\/ to gllib in "find" so that gllib can be a symlink 2008-01-12 Sam Steingold * xthread.d: disable spin locks (gcc barfs) * constsym.d, subr.d, subrkw.d, threads.lisp, zthread.d: rename thread functions from PROCESS to THREAD * lispbibl.d (Rectype_Thread, Rectype_Mutex, Rectype_Exemption) [MULTITHREAD]: add Rectypes (Thread, Mutex, Exemption) [MULTITHREAD]: add types (TheThread, TheMutex, TheExemption) [MULTITHREAD]: add macros (allocate_thread, allocate_mutex, allocate_exemption) [MULTITHREAD]: add declarations * spvw_typealloc.d (allocate_thread, allocate_mutex) (allocate_exemption) [MULTITHREAD]: add * io.d (pr_orecord) [MULTITHREAD]: handle Rectype_Thread, Rectype_Mutex, and Rectype_Exemption * constobj.d (printstring_thread, printstring_mutex) (printstring_exemption) [MULTITHREAD]: add strings 2008-01-10 Sam Steingold * reploop.lisp (frame-up-down): add (print-backtrace, break-loop, step-hook-fn): use it (*frame-limit1*): rename to *frame-limit-down* (frame-limit1): rename to frame-limit-down (*frame-limit2*): rename to *frame-limit-up* (frame-limit2): rename to frame-limit-up * debug.d (test_framepointer_arg): report a TYPE-ERROR (climb_stack_once, climb_stack_repeat): add (FRAME-UP-1, FRAME-DOWN-1): use climb_stack_once (FRAME-UP, FRAME-DOWN): use climb_stack_repeat (stack_upend_p): use frame_limit_up instead of frame_limit2 (stack_downend_p): use frame_limit_down instead of frame_limit1 * constsym.d (frame_limit1): rename to frame_limit_down (frame_limit2): rename to frame_limit_up 2008-01-09 Sam Steingold * eval.d (reset): replace NOTREACHED with abort 2008-01-09 Sam Steingold * debug.d (print_back_trace): index is uintL, not int (print_bt_to_frame): add (DESCRIBE-FRAME, show_stack): use it 2008-01-07 Sam Steingold * eval.d (interpret_bytecode_): translated labels: svref_kein_svector --> svref_not_a_svector svref_kein_index --> svref_not_an_index * init.lisp (load): translated label: weiter --> proceed * condition.lisp (check-type-failed, assert-failed) (simple-assert-failed, eval-loaded-form, ctypecase-failed): format RESTART-CASE clauses in a more traditional way (lalist first) * spvw_garcol.d (gc_unmarkcheck): better error reporting * spvw.d (init_memory) [DEBUG_SPVW]: print STACK bounds too 2008-01-07 Sam Steingold fix bug#1448744: :q debugger command does not reset program stack * eval.d (reset): save last driver frame and use it instead of starting a new driver when the STACK is exhausted 2008-01-06 Sam Steingold * reploop.lisp (break-loop): remove #\. from the end of a message (safe-wr-st): new function, use instead of WRITE-STRING whenever it is used with TEXT in this file to fix bug#1865636: infinite recursive error reporting 2008-01-06 Sam Steingold fix bug#1865567: hangs at the end of input script * reploop.lisp (main-loop): revert the 2003-12-18 patch: exit on EOF on all streams to avoid CLISP hanging at the end of script on "clisp < script" and "cat script | clisp" 2008-01-05 Sam Steingold * Makefile.devel: remove all ffcall-related targets (libffcall is now hosted on savannah) * ffcall/: remove the tree 2008-01-03 Sam Steingold * spvw.d (size_arg): turn into a function from macro SIZE_ARG; accept Tera and Peta on 64-bit platforms (parse_options): fix limit_low argument to size_arg() 2008-01-03 Sam Steingold * makemake.in: pass "-o ./" to "clisp -c" uniformly (MEMOPT): new variable: -m 2MW for compilation 2007-12-31 Sam Steingold * pathname.d, win32aux.d: use true/false instead of TRUE/FALSE * pathname.d (error_delete_open, error_rename_open): print subr name (check_rename_open): add (rename_file, create_backup_file): use it 2007-12-31 Sam Steingold Rename EXT:DELETE-DIR, EXT:MAKE-DIR, and EXT:RENAME-DIR to EXT:DELETE-DIRECTORY, EXT:MAKE-DIRECTORY, and EXT:RENAME-DIRECTORY, respectively, for consistency with EXT:PROBE-DIRECTORY, EXT:DEFAULT-DIRECTORY and CL:PATHNAME-DIRECTORY. * constsym.d, eval.d, init.lisp, pathname.d, subr.d: do the renaming * deprecated.lisp (delete-dir, make-dir, rename-dir): deprecate * modules/syscalls/calls.c (COPY-FILE): use L(make_directory) 2007-12-31 Sam Steingold fix bug#1860677: DIRECTORY of dirs ignores :FULL * pathname.d (pack_full_info, with_stat_info_computed): add (get_time_size) [WIN32_NATIVE]: add (with_stat_info_arg) [UNIX]: add (directory_search_scandir) [WIN32_NATIVE]: use get_time_size() and pack_full_info() (directory_search): use with_stat_info_computed() for directories 2007-12-31 Sam Steingold * pathname.d (push, PUSH_ON_STACK): add inline & macro wrapper (copy_pathname_and_add_subdir, directory_search_scandir) (directory_search): use it (pathname_add_subdir): do not pass arguments on the STACK 2007-12-30 Sam Steingold avoid goto and return from inside with_string_0 * pathname.d (delete_file_if_exists_obj, realpath_obj, stat_obj) (open_output_file_obj, create_backup_file_obj): add (assure_dir_exists): use realpath_obj() (directory_exists, directory_search_hash): use stat_obj() (DELETE-FILE): use delete_file_if_exists_obj() (open_file): use open_output_file_obj() & create_backup_file_obj() 2007-12-30 Sam Steingold fix bug#1860489: deletion of symlinks into non-existent dirs fails * pathname.d (DELETE-FILE): when the directory does not exist, still remove the link, just skip check_delete_open() 2007-12-30 Sam Steingold additional 5% speedup in simple sequence tests: switch instead of if * lispbibl.d (fastcmp_t): new type (subr_t): split uintW seclass into uintB seclass and uintB fastcmp * funarg.d (check_test_args): use fastcmp subr field in switch instead of a sequence of if statements * subr.d (SECFC_BITS, SECFC_MASK, SECFC, SECFC_SEC, SECFC_FC): macros to allow passing both seclass and fastcmp in one LISPFUN macro argument (LISPFUN_D, LISPFUN_F, LISPFUN_G): set fastcmp (eq, eql, equal, equalp): set fastcmp * predtype.d (eq, eql, equal, equalp): ditto * genclisph.d (LISPFUN_F): set fastcmp to 0 2007-12-27 Sam Steingold * funarg.d: new file, extracted from list.d, sequence.d, weak.d * list.d, sequence.d, weak.d: use funarg.d replace up_function_t and up2_function_t with funarg_t extend the 2001-06-16 patch (do not go through FUNCALL for simple tests) by selecting the test function once, not testing on each comparison * makemake.in (CPARTS): add funarg * lispbibl.d (check_key_arg, funcall_key, check_test_args): add (error_both_tests): remove 2007-12-26 Sam Steingold * lispbibl.d, spvw_gcstat.d, time.d (TIME_1, TIME_2): replace with TIME_METHOD which takes values 1 or 2 which ensures that one and only one code path is always taken 2007-12-26 Sam Steingold * symbol.d (GENSYM): use check_pos_integer & error_string_integer 2007-12-26 Reini Urban <33_trans2> * misc.d, sort.d, symbol.d, time.d, weak.d, win32.d: translate comments and convert them from "# " to "/**/" 2007-12-20 Sam Steingold * type.lisp (SIGNED-BYTE, UNSIGNED-BYTE): unify error messages 2007-12-20 Sam Steingold fix bug#1779490: linux:dirent definition error * modules/bindings/glibc/linux.lisp (clisp_dirent_ino_t) (clisp_dirent_off_t): define depending on __USE_FILE_OFFSET64 2007-12-20 Sam Steingold fix bug#1854698: BYTE is a type, but is unacceptable input to TYPEP * type.lisp (BYTE): add atomic type * predtype.d (bytep): implement * subr.d, constsym.d (bytep): add 2007-12-19 Sam Steingold * io.d (pr_stream) [0]: print contents of a STRING-INPUT-STREAM for bootstrap debugging only 2007-12-18 Sam Steingold DESCRIBE shows contents of STRING-STREAMs * stream.d (error_string_stream): add (STRING-INPUT-STREAM-INDEX, GET-OUTPUT-STREAM-STRING): use it (STRING-STREAM-STRING): add * constsym.d, subr.d (string_stream_string): add * describe.lisp (*squeeze-string-max*, *squeeze-string-section*) (squeeze-string): add (describe-object): use squeeze-string and string-stream-string to describe string streams 2007-12-18 Sam Steingold * record.d (error_closure): add (SYS::CLOSURE-NAME, (SETF SYS::CLOSURE-NAME)): use it (slot_in_arglist, SYS::%MAKE-INSTANCE): add a cast to avoid the "value computed is not used" warning 2007-12-17 Sam Steingold * lispbibl.d, pathname.d, spvw_memfile.d, time.d (decoded_time_t): translate field name from German to English 2007-12-16 Sam Steingold * spvw.d, spvw_memfile.d (quit_instantly): rename from quit_sofort * io.d (spaces): rename argument anzahl to scount (paren_open): rename from klammer_auf (paren_close): rename from klammer_zu * intelem.d (set_max32_Dptr): use if instead of (?:) to avoid three "value computed is not used" warnings * makemake.in (LIBS): do not add FFCALL_LIBS, it is done by configure 2007-12-08 Reini Urban * makemake.in: rename --list-modules to --help-modules, add gtk2 to the list of suggested modules in the comments <32_trans1> * aridecl.d, compelem.d, flo_konv.d, realelem.d: translate comments 2007-12-15 Sam Steingold * foreign.d: #include & as "<>" and not '""' and wrap then in extern "C" to restore C++ compilation 2007-12-15 Sam Steingold * error.d (MAKE_CHECK_REPLACEMENT): new macro (check_list_replacement, check_array_replacement) (check_vector_replacement, check_posfixnum_replacement) (check_integer_replacement, check_char_replacement) (check_string_replacement, check_stream_replacement) (check_uint_replacement, check_sint_replacement) (check_ulong_replacement, check_slong_replacement) (check_ffloat_replacement, check_dfloat_replacement): use it (error_uint8, error_sint8, error_uint16, error_sint16, error_uint32) (error_sint32, error_uint64, error_sint64): remove (error_c_integer): add (check_uint8_replacement, check_sint8_replacement) (check_uint16_replacement, check_sint16_replacement) (check_uint32_replacement, check_sint32_replacement) (check_uint64_replacement, check_sint64_replacement): remove (check_c_integer_replacement): add * lispbibl.d (error_uint8, error_sint8, error_uint16, error_sint16) (error_uint32, error_sint32, error_uint64, error_sint64): define as macros, expanding to error_c_integer() (check_uint8_replacement, check_sint8_replacement) (check_uint16_replacement, check_sint16_replacement) (check_uint32_replacement, check_sint32_replacement) (check_uint64_replacement, check_sint64_replacement): define as macros, expanding to check_c_integer_replacement() 2007-12-14 Sam Steingold * avl.d, control.d, debug.d, eval.d, hashtabl.d, intprint.d, io.d: * lispbibl.d, pathname.d, predtype.d: rename label fertig to done; convert comments from "# " to "/**/" 2007-12-13 Sam Steingold * lispbibl.d (elif, loop, until): drop; update all D files * compelem.d, realelem.d (I_I_equal, R_R_equal): rename from *_gleich * compelem.d (N_N_equal): rewrite as a single return * spvw_circ.d (abort_context, abort_STACK): rename from abbruch_* 2007-12-12 Sam Steingold * spvw_typealloc.d (NIL_FILL): add (allocate_vector, allocate_lrecord, allocate_lrecord_) (allocate_srecord_): use it * spvw*.d: convert comments from "# " to "/**/" 2007-12-12 Sam Steingold expect FFCALL to be installed externally * configure: accept --with-ffcall and --with-libffcall-prefix * Makefile.devel (SOURCES): remove ffcall (not distributed with CLISP) * m4/ffcall.m4: add * configure.in: call CL_FFCALL * makemake.in (FFCALL_LIBS): init from '@LIBAVCALL@ @LIBCALLBACK@' (LIBS): add FFCALL_LIBS when --with-dynamic-ffi was supplied (avcall, callback): remove targets * glm4/lib-link.m4 (AC_LIB_LINKFLAGS_BODY): split into AC_LIB_LINKFLAGS_ADD and AC_LIB_LINKFLAGS_SEARCH (used by CL_FFCALL) 2007-12-11 Sam Steingold * stream.d: convert comments from "# " to "/**/" (ELTYPE_FLAFS): new macro (make_unbuffered_stream, make_buffered_stream): use it (NON_WHOLE_BYTE_P): new macro (check_unbuffered_eltype, make_buffered_stream): use it 2007-12-06 Sam Steingold * configure (--localedir, --docdir, --htmldir, --dvidir, --psdir) (--pdfdir, --elispdir, --vimdir): enable (autoconf-2.60 is here) 2007-12-10 Sam Steingold do not link over LISP files into the build directory * makemake.in (LPARTS): remove config (LISPFILES): prefix with ${SRCDIR} (alllisp): remove target (*.fas): pass "-o" to clisp (images): set *load-paths* before load init (TESTLISPFILES): remove make variable (check-recompile): do not link lisp sources over to stage * init.lisp (*load-paths*): reset only is not yet set (search-file): respect it even in the first definition 2007-12-10 Sam Steingold do not link over D files into the build directory * makemake.in (DFILES): remove modules; remove Makefile variable; (init): do not depend on DFILES (LINKKIT): remove modules.d (clean5): do not delete DFILES * modules.d: rename to modules.c * clisp-link.in: do not require modules.d for linkkitdir 2007-12-10 Sam Steingold * makemake.in (UTILS): treat gctrigger & varbrace just like the other C utilities * gctrigger.d, varbrace.d: convert to ANSI C and rename to *.c 2007-12-05 Sam Steingold * m4/general.m4 (CL_CC_WORKS): use "return 0" instead of "exit(0)" because C++ fails on an undefined function 2007-12-05 Sam Steingold Assume that "mkdir -p" is POSIX-compliant * makemake.in (echotab_mkdir_maybe): remove, use plain "mkdir -p" instead * ffcall/callback/Makefile.in, ffcall/callback/trampoline_r/Makefile.in: * ffcall/callback/vacall_r/Makefile.in, ffcall/trampoline/Makefile.in: * ffcall/vacall/Makefile.in, ffcall/avcall/Makefile.in: use "mkdir -p" instead of "if [ ! -d % ]; then mkdir %; fi" because the latter breaks down with non-trivial DESTDIR 2007-12-05 Sam Steingold remove AFFI * affi.d, affi1.lisp: remove * charstrg.d (unpack_string_rw): unused now, surround with #if 0 * lispbibl.d (unpack_string_rw): remove prototype * encoding.d, constobj.d: remove AFFI CPP conditions * clhs.lisp: do not set AFFI package documentation * defs1.lisp (*system-package-list*): remove "AFFI" * foreign1.lisp, exporting.lisp (def-lib-call-out): remove * constsym.d, subr.d: remove AFFI functions * type.lisp (foreign-pointer): remove affi read conditional 2007-12-04 Reini Urban <31_ergebnis> * arilev0.d, arisparc.d, arisparc64.d, charstrg.d, encoding.d: * eval.d, ffloat.d, int2adic.d, intdiv.d, intgcd.d, intprint.d: * intread.d, intsqrt.d, io.d, list.d, package.d, pathname.d: * rational.d, realrand.d, record.d, sequence.d, sfloat.d: * spvw_allocate.d, spvw_memfile.d, stream.d, time.d, unixaux.d: * weak.d: ergebnis -> result <30_wert> * intelem.d: rename local var and arg wert,_wert,wert_* to value,_value,value_* * arilev0.d: rename macro arg wert,__wert to tvalue,__value * array.d (storagevector_store): rename local var wert to value * intlog.d (I_to_DS_n): rename local var wert to value * intserial.d (LESbvector_to_UI): rename local var wert to value * io.d (get_base): rename local var wert to intvalue, (test_number_syntax): rename local var wert to value, (feature): rename arg sollwert to demandvalue * lispbibl.d: rename local var wert to val (analog to the other intconv argnames) <29_zuweisung> * aridecl.d, arilev0.d, arilev1.d, dfloat.d, eval.d, ffloat.d: * intbyte.d, intelem.d, intlog.d, intmal.d, intsqrt.d, lfloat.d: * rational.d, sfloat.d: rename macro args *_zuweisung to *_assignment <28_more_anz> * io.d (print_vars_anz): rename to print_vars_count * lispbibl.d, spvw.d (thread_objects_anz): -> thread_objects_count * spvw.d (package_anz): rename to package_count * spvw_memfile.d (offset_subrs_anz): rename to offset_subrs_count <27_error_anzahl> * eval.d (funcall_subr, funcall_closure): rename label error_anzahl to error_count <26_spvw_anz> * spvw.d, spvw_space.d, spvw_memfile.d: (symbol_anz): rename to symbol_count (pseudocode_anz): rename to pseudocode_count (pseudodata_anz): rename to pseudodata_count (pseudofun_anz): rename to pseudofun_count (object_anz): rename to object_count * spvw_memfile.d (loadmem_from_handle): rename local var old_object_anz to old_object_count * spvw_memfile.d (struct memdump_header_t): rename members _pseudofun_anz to _pseudofun_count; _symbol_anz to _symbol_count 2007-12-05 Sam Steingold * foreign.d (dlerror_string): use safe_to_string 2007-12-03 Reini Urban <24_more_anz> * control.d, lispbibl.d (specdecled_, make_variable_frame): rename arg and local spec_anz to spec_count * control.d (make_variable_frame): rename local var_anz to var_count * eval.d, lispbibl.d (frame_anz): rename to frame_count <23_clos_reqoptkey_anz> * eval.d, lispbibl.d: rename global members (clos_spec_anz): -> clos_spec_count (clos_req_anz): -> clos_req_count (clos_opt_anz): -> clos_opt_count (clos_key_anz): -> clos_key_count (clos_aux_anz): -> clos_aux_count <22_reqoptkey_anz> * debug.d, eval.d, fsubr.d, genclisph.d, lispbibl.d, spvw.d: * spvw_memfile.d, subr.d: rename global members and macro args (req_anz): -> req_count (opt_anz): -> opt_count (key_anz): -> key_count * clos-genfun2b.lisp (COMPUTE-DISPATCH): remove REQ-ANZ * compiler.lisp (struct fnode): rename (REQ-ANZ): -> REQ-NUM (OPT-ANZ): -> OPT-NUM * subr.d: rename macro args req_anz_, opt_anz_, key_anz_ to *_count_ <21-xcharin-fehler> * xcharin.lisp (FEHLER-CHAR-ARG): rename to ERROR-CHAR-ARG <20_subr_anz> * affi.d, spvw.d, spvw_memfile.d, spvw_space.d: translate local variables *subr_anz => *subr_count: (subr_anz): subr_count (fsubr_anz): fsubr_count (total_subr_anz): total_subr_count (old_subr_a): old_subr_count <19_gcmark_vars> * spvw_gcmark.d: translate local variables: (dies): curr (dies_): curr_ (nachf): succ (vorg): pred (vorvorg): prepred <18_test_index_macro> * charstrg.d (test_index): translate the macro arguments: (woher): from (wohin_zuweisung): to_setter (grenze): upper_limit (vergleich): uplimit_cmp <17_liststern> * bytecode.d, constsym.d, eval.d, foreign.d, list.d, stream.d, subr.d: (liststern): rename to liststar * bytecode.d, eval.d (cod_unliststern): rename to cod_unliststar (cod_liststern_push): rename bytecode to cod_liststar_push (LIST*&PUSH) * eval.d: rename label unliststern_unbound to unliststar_unbound 2007-12-03 Sam Steingold * configure, makemake.in: support spaces in the build directory name 2007-12-02 Reini Urban <16_strcmp3> * charstrg.d, constsym.d, eval.d, subr.d, subrkw.d: (string_grgleich): rename to string_gtequal (cs_string_grgleich): rename to cs_string_gtequal * charstrg.d, constsym.d, eval.d, sequence.d, subr.d, subrkw.d: (search_string_gleich): rename to search_string_eq <15_strcmp2> * charstrg.d, constsym.d, eval.d, subr.d, subrkw.d: (string_groesser): rename to string_greater (cs_string_groesser): rename to cs_string_greater (string_klgleich): rename to string_ltequal (cs_string_klgleich): rename to cs_string_ltequal <14_strcmp1> * charstrg.d, constsym.d, eval.d, subr.d, subrkw.d: (string_ungleich): rename to string_noteq (cs_string_ungleich): rename to cs_string_noteq (string_kleiner): rename to string_less (cs_string_kleiner): rename to cs_string_less 2007-12-01 Reini Urban <13_charcmp2> * constsym.d, eval.d, charstrg.d, subr.d: (char_groesser): rename to char_greater (char_klgleich): rename to char_ltequal (char_grgleich): rename to char_gtequal <12_charcmp1> * constsym.d, eval.d, charstrg.d, subr.d, sequence.d: (char_gleich): rename to char_eq * constsym.d, eval.d, charstrg.d, subr.d: (char_ungleich): rename to char_noteq (char_kleiner): rename to char_less <11_aritcmp2> * compelem.d, lisparit.d (N_N_gleich): rename to N_N_equal * constsym.d, eval.d, subr.d (klgleich): rename to ltequal (grgleich): rename to gtequal <10_aritcmp> * constsym.d, eval.d, lisparit.d, subr.d (ungleich): -> numunequal * constsym.d, eval.d, lisparit.d, subr.d, modules/clx/new-clx/clx.f: (kleiner): rename to smaller * constsym.d, eval.d, lisparit.d, subr.d, hashtabl.d: (groesser): rename to greater <09_einsplus_minus> * array.d, constsym.d, eval.d, hashtabl.d, lisparit.d, subr.d: (einsplus, einsminus): rename to plus_one, minus_one <08_morearit> * constsym.d, debug.d, spvw.d (driverstern): rename to driverstar * constsym.d, eval.d, lisparit.d, subr.d (fakultaet): -> factorial 2007-11-30 Reini Urban <07_mal_durch> * eval.d, lisparit.d, subr.d, hashtabl.d, time.d, affi.d: * constsym.d, debug.d, predtype.d, sequence.d, spvw.d: * modules/clx/new-clx/clx.f (mal): rename to star (durch): rename to slash * constsym.d, debug.d, spvw.d (mal2): rename to star2 (mal3): rename to star3 (durch2): rename to slash2 (durch3): rename to slash3 * int2adic.d, intsqrt.d (D_D_mal2adic_D) rename to D_D_mult2adic_D (D_D_durch2adic_D, UDS_UDS_durch2adic_UDS): rename to *_div2adic_* 2007-11-29 Reini Urban <06_gleich2> * charstrg.d, lispbibl.d, package.d (string_gleich_inverted): rename to string_eq_inverted * lisparit.d, lispbibl.d, predtype.d (number_gleich): rename to number_equal 2007-11-29 Sam Steingold * modules/clx/new-clx/clx.f, modules/clx/new-clx/clx.lisp: rename DISPLAY-NOOP to the standard NO-OPERATION 2007-11-28 Reini Urban <05_gleich> * constsym.d, eval.d, lisparit.d, subr.d, modules/clx/new-clx/clx.f: (gleich): rename to numequal * charstrg.d, constsym.d, eval.d, lispbibl.d, package.d, io.d: * subr.d, subrkw.d (string_gleich): rename to string_eq * charstrg.d, constsym.d, subr.d, subrkw.d (cs_string_gleich): rename to cs_string_eq 2007-11-28 Sam Steingold * modules/clx/new-clx/clx.f (get_display): add (find_display, get_font, SET-GCONTEXT-DISPLAY, CLOSE-DISPLAY) (SET-DISPLAY-AFTER-FUNCTION, DISPLAY-DEFAULT-SCREEN) (SET-DISPLAY-DEFAULT-SCREEN, VISUAL-INFO, OPEN-FONT, FONT-PATH) (SET-FONT-PATH, LIST-FONT-NAMES, LIST-FONTS, FIND-ATOM) (INTERN-ATOM, SELECTION-OWNER, SET-SELECTION-OWNER) (disassemble_event_on_stack, PROCESS-EVENT, GLOBAL-POINTER-POSITION) (INPUT-FOCUS, CHANGE-ACTIVE-POINTER-GRAB, SET-DISPLAY-XDEFAULTS) (POINTER-MAPPING, SET-POINTER-MAPPING, QUERY-KEYMAP) (CHANGE-KEYBOARD-MAPPING, KEYBOARD-MAPPING, KEYCODE->CHARACTER) (SET-ACCESS-CONTROL, ACCESS-HOSTS, LIST-EXTENSIONS, QUERY-EXTENSION) (SHAPE-VERSION): use it (CHANGE-PROPERTY): use get_client_message_format() (check_mapping_request): add DEFCHECKER (MAPPING-NOTIFY): use it, return no values (XLIB:ACCESS-HOSTS): check for FamilyServerInterpreted (bug 1840594) 007-11-27 Reini Urban <04_divmult> * compelem.d, comptran.d, dfloat.d, ffloat.d, flo_rest.d, intdiv.d: * intmal.d, intgcd.d, intsqrt.d, lfloat.d, lisparit.d, rational.d: * realelem.d, realrand.d, realtran.d, sfloat.d: rename *_durch_* to *_div_*, rename *_mal_* to *_mult_*, rename GEN_*_op*(durch) to GEN_*_op*(div) * lisparit.d, lispbibl.d, io.d (mal_10_plus_x): rename to mult_10_plus_x 2007-11-26 Reini Urban <03_fehler_label> * io.d: rename labels fehler_nur01 to error_nur01, fehler_dopp to error_colon, remove english function translations in comments * eval.d: rename labels fehler_zuwenig to error_toofew, fehler_zuviele_werte to error_toomany_values, fehler_zuviel to error_toomany * affi.d, array.d, control.d, eval.d, intmal.d, io.d, lispbibl.d: * list.d, pathname.d, predtype.d, record.d, stream.d: rename labels fehler* to error* 2007-11-27 Sam Steingold * modules/syscalls/posix.lisp (make-xterm-io-stream): use *ENABLE-CLOS-WARNINGS* instead of *WARN-IF-GF-ALREADY-CALLED* 2007-11-26 Sam Steingold * modules/clx/new-clx/clx.f, modules/clx/new-clx/clx.lisp: implement most of Chapter 13 Resources in C, but commented it out because there is no way to remove a resource 2007-11-25 Reini Urban <02_fehler__fun> * eval.d: rename fehler_(eval|closure|apply|subr)_zuviel to error_*_toomany * control.d, eval.d, foreign.d, lisparit.d, lispbibl.d: rename fehler_mv_zuviel to error_mv_toomany * array.d: rename fehler_subscript_anz to error_subscript_count * io.d: rename fehler_dispatch_zahl to error_dispatch_number, fehler_eof_aussen to error_eof_outside, fehler_eof_innen to error_eof_inside * spvw_allocate.d: fehler_speicher_voll to error_memory_full * modules/clx/new-clx/clx.f, modules/rawsock/rawsock.c: * modules/syscalls/calls.c, utils/modprep.lisp: * affi.d, aridecl.d, array.d, charstrg.d, control.d, debug.d: * dfloat.d, encoding.d, error.d, eval.d, ffloat.d, flo_konv.d: * flo_rest.d, foreign.d, intbyte.d, intdiv.d, io.d, lfloat.d: * lisparit.d, lispbibl.d, list.d, pathname.d, predtype.d: * realtran.d, record.d, sequence.d, sfloat.d, socket.d, spvw.d: * spvw_allocate.d, stream.d, symbol.d, time.d, weak.d: rename fehler_ to error_ * .gdbinit: rename fehler to error * CodingStyle: add Reini Urban for the upcoming translations 2007-11-24 Reini Urban <01_fehler_fun> * modules/berkeley-db/bdb.c, modules/clx/new-clx/clx.f: * modules/dirkey/dirkey.c, modules/pari/cpari.c, modules/pcre/cpcre.c: * modules/rawsock/rawsock.c, modules/syscalls/calls.c: * affi.d, aridecl.d, array.d, charstrg.d, control.d, debug.d: * encoding.d, error.d, eval.d, flo_konv.d, foreign.d, hashtabl.d: * i18n.d, intbyte.d, intdiv.d, intelem.d, intlog.d, intmal.d, io.d: * lfloat.d, lisparit.d, lispbibl.d, list.d, misc.d, package.d: * pathname.d, predtype.d, record.d, sequence.d, socket.d, spvw.d: * spvw_allocate.d, spvw_memfile.d, spvw_sigint.d, stream.d, symbol.d: * time.d, weak.d, utils/modprep.lisp: rename fehler() to error() * modules/berkeley-db/bdb.c, modules/dirkey/dirkey.c: * modules/pari/cpari.c, modules/pcre/cpcre.c, modules/rawsock/rawsock.c: * modules/regexp/regexi.c, modules/syscalls/calls.c: * affi.d, array.d, charstrg.d, control.d, debug.d, encoding.d, error.d: * eval.d, foreign.d, i18n.d, io.d, lispbibl.d, list.d, misc.d: * package.d, pathname.d, predtype.d, record.d, sequence.d, spvw.d: * stream.d, symbol.d: rename error (enum condition_t) to error_condition 2007-11-23 Sam Steingold Implement RFE#1834184: handle CLOS warnings in a CLOSy way * init.lisp (clos-warning, gf-already-called-warning) (gf-replacing-method-warning): export from CLOS * clos-package.lisp: ditto * condition.lisp (clos-warning, simple-clos-warning) (gf-replacing-method-warning, simple-gf-replacing-method-warning) (gf-already-called-warning, simple-gf-already-called-warning): define (warn-of-type): extract from WARN, accept warning class (warn): use WARN-OF-TYPE (set-global-handler): bind CLOS::*ENABLE-CLOS-WARNINGS* instead of individial variables * clos.lisp (*enable-clos-warnings*): set to T when everything is loaded * clos-print.lisp (print-object-method-warning): use the new framework (still commented out) * clos-genfun2b.lisp (*gf-warn-on-replacing-method*): remove (std-add-method, std-remove-method): use CLOS-WARN (*warn-if-gf-already-called*): remove (gf-already-called-warning): add (warn-if-gf-already-called): use it * clos-class6.lisp (class-not-yet-defined): add (class-direct-superclasses, class-direct-slots) (class-direct-default-initargs): use it * clos-class3.lisp (defclass, ensure-class-using-class-) (reinitialize-instance-, std-compute-cpl) (compute-slots--around) (make-instances-obsolete-): use CLOS-WARNING * clos-class0.lisp (*enable-clos-warnings*): declare (clos-warn, clos-warning): add 2007-11-21 Sam Steingold fix bug#1835520: PPRINT-LOGICAL-BLOCK ignores *PRINT-PPRINT-DISPATCH-TABLE* * io.d (prin_object_dispatch_pretty): do not check *PRIN-PPRINTER* 2007-11-21 Jack Unrue Sam Steingold * makemake.in (install.nsi): copy from win32msvc/nsis and substitute @NAME@, @VERSION@, @BASE_MODULES@, and @MODULES@ (add_to_path.nsh, is_user_admin.nsh): copy from win32msvc/nsis (COPYRIGHT.rtf): create from COPYRIGHT using text_to_rtf.lisp (distrib) [win32]: invoke makensis to build woe32 installer (clean1): remove COPYRIGHT.rtf and install.nsi 2007-11-20 Sam Steingold * modules/libsvm: upgraded to upstream 2.85 2007-11-19 Sam Steingold * makemake.in (trampoline/trampoline.h): remove an unused target 2007-11-18 Bruno Haible Fix bug#1834193: fresh-line at the end of a line containing only tabs. * stream.d (wr_ss_lpos): Add special handling of TAB characters. (write_char): Likewise. 2007-11-19 Sam Steingold * gllib/config.charset, glm4/gettext.m4, glm4/gnulib-comp.m4: * glm4/iconv.m4, glm4/intdiv0.m4, glm4/intl.m4, glm4/intlmacosx.m4: * glm4/lib-link.m4, glm4/link-follow.m4, glm4/lock.m4: * glm4/longlong.m4, glm4/po.m4, glm4/printf-posix.m4: * glm4/wint_t.m4, glm4/ulonglong.m4: sync with gnulib 2007-11-18 Sam Steingold * version.h: tag and push out 2.43 2007-11-18 Sam Steingold * Makefile.devel (all): remove src/uninames.h (uninames.h): remove (it comes from gnulib now) 2007-11-16 Sam Steingold * lispbibl.d [UNIX || __MINGW32__]: do not undef malloc, instead ... * makemake.in: when HAVE_MALLOC_POSIX=0, link lisp.run, clisp.exe and utils with gllib/malloc (as EXTRAOBJ) * modules/regexp/configure.in, modules/regexp/link.sh.in: malloc.o, when needed, is already in lisp.a 2007-11-14 Sam Steingold * win32msvc/nsis/text_to_rtf.lisp: rewrote: use \uNNNN to output Unicode characters; use "Courier New" (fixed width) font to preserve formatting use bold for the headers do not use regexp 2007-11-14 Elliott Slaughter * win32msvc/nsis/text_to_rtf.lisp: ASCII text to RTF converter 2007-11-13 Sam Steingold fix bug#1831367: with-standard-io-syntax/*print-pprint-dispatch* * pprint.lisp (make-pprint-dispatch): add (*print-pprint-dispatch*, copy-pprint-dispatch): use it * defs2.lisp (with-standard-io-syntax): bind *PRINT-PPRINT-DISPATCH* to (COPY-PPRINT-DISPATCH NIL) 2007-11-13 Sam Steingold * makemake.in (CFLAGS): add -Igllib (MODULE_CFLAGS): do not add -Igllib this is necessary for the systems that require stdint from gllib, e.g., solaris 2007-11-10 Sam Steingold * modules/clx/new-clx/clx.f (XLIB:DISPLAY-NOOP): new function * modules/clx/new-clx/clx.lisp (DISPLAY-NOOP): export it 2007-11-07 Elliott Slaughter Sam Steingold * win32msvc/nsis/add_to_path.nsh, win32msvc/nsis/install.nsi: * win32msvc/nsis/is_user_admin.nsh: NullSoft Install System scripts 2007-11-07 Sam Steingold * makemake.in (--help): use @PACKAGE_STRING@ (@PACKAGE_BUGREPORT@) 2007-11-07 Ralf-P. Weinmann Sam Steingold fix bug#1827572: macosx: clisp|tee error * stream.d (finish_tty_output, force_tty_output, clear_tty_output) [UNIX_DARWIN]: treat ENOTSUP like EOPNOTSUPP 2007-11-06 Sam Steingold * Makefile.devel (SOURCES5): remove $T/nextapp * nextapp: remove obsolete directory * unix.d (nxterminal_*): remove * stream.d, spvw.d, pseudofun.d, lispbibl.d, constsym.d, constobj.d: remove all NEXTAPP code 2007-11-06 Sam Steingold * modules/wildcard/configure.in: fnmatch.h is in the build directory, not the source directory 2007-11-06 Sam Steingold * makemake.in (XCC_CREATESHARED): treat mingw just like all the other free OS (gnu/linux/bsd/cygwin) 2007-11-06 Sam Steingold * modules/wildcard/configure.in: use ac_cv_func_fnmatch_gnu instead of FNMATCH_H 2007-11-05 Sam Steingold * clisp-link.in (run): fix for --with-dynamic-modules 2007-11-05 Sam Steingold for better dynamic module support: * modules/berkeley-db/dbi.lisp: (provide "berkeley-db") * modules/dirkey/dirkey1.lisp: (provide "dirkey") * modules/fastcgi/fastcgi.lisp: (provide "fastcgi") * modules/gdbm/gdbm.lisp: (provide "gdbm") * modules/i18n/i18n.lisp: (provide "i18n") * modules/oracle/oracle.lisp: (provide "oracle") * modules/pari/pari.lisp: (provide "pari") * modules/pcre/pcre.lisp: (provide "pcre") * modules/rawsock/sock.lisp: (provide "rawsock") * modules/regexp/regexp.lisp: (provide "regexp") * modules/syscalls/posix.lisp: (provide "syscalls") * modules/wildcard/wildcard.lisp: (provide "wildcard") 2007-11-05 Sam Steingold fix --with-dynamic-modules build * makemake.in: pass XCC_PICFLAG to "make -C gllib" * clisp-link.in: run prepare_dynamic_module in $destinationdir 2007-11-04 Sam Steingold * modules/pcre/cpcre.c (check_pattern): pat argument is modified, so it has to be a pointer (PATTERN-INFO, PCRE-NAME-TO-INDEX, PCRE-EXEC): update callers * modules/rawsock/rawsock.c (check_struct_data): arg is modified, so it has to be a pointer (SOCKADDR-FAMILY, optional_sockaddr_argument, BIND, CONNECT) (GETNAMEINFO, fill_msghdr, SENDTO): update callers * modules/syscalls/calls.c (check_utmpx): add (GETUTXENT, GETUTXLINE, PUTUTXLINE): use it 2007-11-04 Sam Steingold * modules/pari/configure.in: check for init_opts * modules/pari/cpari.c (init_for_clisp) [HAVE_INIT_OPTS]: set init_opts to 0 2007-11-02 Sam Steingold * Makefile.devel (ffcall-aux): split out from all (ffcall/avcall/avcall.h.mingw32, ffcall/vacall/vacall.h.mingw32) (ffcall/callback/vacall_r/vacall_r.h.mingw32): add targets (check-configures): depend on configures (tp-mail): CC to clisp-devel 2007-11-02 Sam Steingold * ffcall: switch from gl_AC_TYPE_LONG_LONG to AC_TYPE_LONG_LONG_INT * m4/intparam.m4 (CL_INTPARAM_CROSS): ditto 2007-11-02 Sam Steingold * version.sh: 2.43 (2007-11-18) 2007-11-01 Sam Steingold * makemake.in (boot): ensure that FILES in makevars are all local * clisp-link.in (normalize): new function (link, link_some): use it (add-module-set, run): avoid "crazy doubly nested lists" * modules/wildcard/link.sh.in, modules/regexp/link.sh.in: NEW_FILES are paths to gllib while NEW_LIBS are library names without directory 2007-11-01 Sam Steingold * modules/pari/configure.in: check for freeall pari_init killallfiles pari_init_opts * modules/pari/cpari.c: #include "config.h" (init_for_clisp): drop unused variables (init_for_clisp, fini_for_clisp): check functions before calling them 2007-10-31 Sam Steingold * modules/regexp/configure.in: ac_use_included_regex is NOT cached, so we have to duplicate the logic of src/glm4/regex.m4 2007-10-30 Sam Steingold * charstrg.d: do not include "width.c" & "uniname.c" * makemake.in (FILES, OBJECTS): add uniname & width (UNICODE_EXTRA): remove uniname & width (boot): cannot assume that an element of $FILES does not contain slashes * clisp-link.in (link): use dirname and basename instead of sed (link_some): do not assume that file does not contain slashes 2007-10-31 Sam Steingold * modules/regexp/configure.in (MALLOC_O) [gl_cv_func_malloc_posix=yes]: set to "malloc.o" * modules/regexp/link.sh.in (file_list): add @MALLOC_O@ 2007-10-30 Sam Steingold * makemake.in, modules/regexp/link.sh.in, modules/wildcard/link.sh.in: work around the 'unexpected token `;' in for h in ; do' bug http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_09_04_03 2007-10-30 Sam Steingold * lispbibl.d (HAVE_LONG_LONG_INT) [long_bitsize==64]: define only if not already defined (avoid a redefinition warning) (_GNU_SOURCE): do not define here, it comes from AC_GNU_SOURCE * configure.in: do not call AC_AIX, AC_GNU_SOURCE, CL_PROG_RANLIB AC_USE_SYSTEM_EXTENSIONS, they are covered in gl_EARLY use AC_HEADER_STDC instead of CL_STDC_HEADERS: it is already used in all modules and the reasons for not checking some standard headers are no longer applicable * m4/ranlib.m4, m4/stdc-headers.m4: remove obsoleted files * ffcall/Makefile.devel: drop ranlib.m4 & stdc-headers.m4 * ffcall/avcall/configure.in, ffcall/callback/configure.in: * ffcall/callback/trampoline_r/configure.in: * ffcall/callback/vacall_r/configure.in: * ffcall/trampoline/configure.in, ffcall/vacall/configure.in: use AC_PROG_RANLIB instead of CL_PROG_RANLIB * m4/general.m4 (CL_FFCALL_COMMON_TRAMPOLINE): use AC_HEADER_STDC instead of CL_STDC_HEADERS 2007-10-29 Sam Steingold * m4/ldap.m4, m4/netdb.m4, m4/getcwd.m4: remove trivial files * m4/signed.m4: remove unused file * configure.in: do not call CL_GETWD, CL_LDAP & CL_NETDB * modules/dirkey/configure.in: check for headers explicitly * m4/gethostbyname.m4 (CL_GETHOSTBYNAME): check for here * unix.d (MAXPATHLEN): use PATH_MAX (when defined) or else 4096 (instead of 1024 previously) (getwd, getcwd): drop prototypes 2007-10-29 Sam Steingold * configure.in (AC_COPYRIGHT): update year (AC_PREREQ): require 2.61 (datarootdir et al, see below 2007-10-27) 2007-10-29 Sam Steingold * configure.in: use AC_TYPE_LONG_LONG_INT instead of the obsolescent gl_AC_TYPE_LONG_LONG * lispbibl.d, foreign.d, affi.d, aridecl.d, arilev0.d, arilev1.d: * foreign.d, genclisph.d, intelem.d, intparam.c, time.d: use HAVE_LONG_LONG_INT instead of HAVE_LONGLONG 2007-10-29 Sam Steingold Work around the wildcard build error reported in and . The problem is that all gnulib autoconf macros are called from src/glm4/gnulib-comp.m4:gl_INIT, so they should not be called from module configures; we can rely on sourcing config.cache. * configure.in: do not call gl_STDBOOL_H & gl_STDINT_H since they are already called from gl_INIT * modules/regexp/configure.in: do not call gl_FUNC_ALLOCA & gl_REGEX: they are already called from the top-level configure.in * modules/wildcard/configure.in: do not call gl_FUNC_FNMATCH_POSIX, rely on gl_INIT in top-level configure.in 2007-10-29 Vadim Konovalov Sam Steingold * makemake.in [win32msvc]: drop support for msvc4 & msvc5, thus drop gcc-cccp and use deema instead * Makefile.devel: do not generate makefiles for msvc[45] and debug * utils/gcc-cccp: remove 2007-10-29 Sam Steingold * utils/deema.c: extend to fully support the makemake equivalent sed -e 's/, *)/,_EMA_)/g' -e 's/, *,/,_EMA_,/g' Reported by Vadim Konovalov 2007-10-28 Sam Steingold * Makefile.devel (update-docbook-utils): remove from all because it downloads 23MB data * doc/Makefile (docbook-dtd, docbook-xsl): replaces update-docbook-utils 2007-10-27 Sam Steingold * utils/fix-perms.sh: all Makefile* are non-executable 2007-10-27 Sam Steingold * makemake.in, configure, po/Makefile.in.in: use datarootdir instead of datadir, as per autoconf 2.60 2007-10-27 Sam Steingold * modules/oracle/configure.in, modules/fastcgi/configure.in: use CL_MODULE_COMMON_CHECKS to avoid errors when generating aclocal.m4 2007-10-27 Sam Steingold Berkeley-DB 4.5.20 now works * modules/berkeley-db/configure.in (DB_READ_UNCOMMITTED) (DB_READ_COMMITTED): do not check, they are #defined * modules/berkeley-db/bdb.c: ditto (dbe_get_tas_spins) [HAVE_DB_ENV_MUTEX_GET_TAS_SPINS]: define (dbe_set_tas_spins) [HAVE_DB_ENV_MUTEX_SET_TAS_SPINS]: define 2007-10-26 Sam Steingold * modules/regexp/regexi.c: do not include : it is defined, if necessary, in ; include "regex.h", not <> * modules/regexp/configure.in [ac_use_included_regex=yes]: link src/gllib/regex.h into the build directory * modules/wildcard/wildcard.lisp: include the local "config.h", not the global <> one * modules/wildcard/configure.in [FNMATCH_H]: link src/gllib/fnmatch.h into the build directory Reported by Yaroslav Kavenchuk 2007-10-26 Sam Steingold * Makefile.devel (win32msvc/makefile.msvc*): generate from src to enable search in gllib * clisp.spec (modules): add libsvm 2007-10-26 Sam Steingold * makemake.in (hln): use utils/hln.lisp instead of utils/hln/ * utils/hln/: remove * utils/hln.lisp: add * Makefile.devel (CONFIGURES): drop hln 2007-10-26 Sam Steingold * Makefile.devel (gnulib-update): also get link-follow * glm4/link-follow.m4: add * modules/syscalls/configure.in: call gl_AC_FUNC_LINK_FOLLOWS_SYMLINK * modules/syscalls/calls.c (my_link) [!LINK_FOLLOWS_SYMLINKS && HAVE_REALPATH]: work around link(2) bug (hardlink_file) [UNIX]: use my_link() 2007-10-25 Sam Steingold * init.lisp: all foreign messages require UNICODE because they use non-ASCII characters (including german too!) 2007-10-24 Sam Steingold support post-4.4.20 berkeley-db; more uniform option handling * modules/berkeley-db/configure.in (DB_LOCK_READ_UNCOMMITTED) (DB_READ_UNCOMMITTED, DB_READ_COMMITTED): check for declarations * modules/berkeley-db/bdb.c (DB_LOCK_READ_UNCOMMITTED) [!HAVE_DECL_DB_LOCK_READ_UNCOMMITTED]: define to DB_LOCK_DIRTY (DB_READ_UNCOMMITTED) [!HAVE_DECL_DB_READ_UNCOMMITTED]: define to DB_DIRTY_READ (DB_READ_COMMITTED) [!HAVE_DECL_DB_READ_COMMITTED]: define to DB_DEGREE_2 (DB-GET, DB-OPEN, MAKE-DBC, DBC-GET, LOCK-GET, TXN-BEGIN): accept only :READ-UNCOMMITTED and READ-COMMITTED, not :DEGREE-2 & DIRTY-READ Reported by Reini Urban 2007-10-24 Sam Steingold * Makefile.devel (build-aux-update): new .PHONY target, extracted from gnulib-update; also updates ltmain.sh and compile (gnulib-update): depend on build-aux-update 2007-10-24 Sam Steingold * Makefile.devel (gnulib-update): also get uniwidth/width streq uniname/uniname unitypes * cjk.h, streq.h, uniname.c, uniname.h, uninames.h, unitypes.h, * uniwidth.h, width.c: remove; get them from gnulib * makemake.in: find these files in gllib 2007-10-24 Sam Steingold * Makefile.devel (AUTOCONF_FILES): src/aclocal.m4 (autoconf/aclocal.m4): move to aclocal.m4 (autoconf/autoconf.m4): remove this move is necessary for automake which expects aclocal.m4 in the current directory, just like configure.in 2007-10-24 Sam Steingold * m4/gethostname.m4, m4/readlink.m4: remove trivial files * configure.in: use AC_CHECK_FUNCS instead of CL_GETHOSTNAME & CL_READLINK 2007-10-23 Sam Steingold * error.d (begin_error): check *RECURSIVE-ERROR-COUNT* before accessing it, not after 2007-10-22 Sam Steingold * Makefile.devel (upload): split into upload-ssh upload-sf upload-sunsite upload-gnu 2007-10-22 Sam Steingold * modules/clx/new-clx/clx.f (xlib_error_handler): fix converter types: NextRequest and serial are unsigned long, while minor_code is uint8 (XLIB:GET-PROPERTY): fix type of r (int->Status) 2007-10-22 Sam Steingold remove libcharset; use gnulib/localcharset * Makefile.devel (CONFIGURES): remove libcharset/configure (libcharset/configure): remove target (gnulib-update): add localcharset (SOURCES4): drop libcharset * configure: do not configure libcharset * encoding.d: include "localcharset.h" instead of "libcharset.h" * makemake.in: use gnulib/localcharset instead of libcharset 2007-10-22 Sam Steingold * Makefile.devel (gnulib-update): cvs up gnulib; check for duplicate m4 files declare phony targets as such (multibuild-linux-x86, multibuild-darwin-powerpc): use descriptive directory names 2007-10-22 Sam Steingold * makemake.in (LIBOBJS): undo the 2007-10-19 patch; completely remove (XCFLAGS): do not add -Igllib (MODULE_CFLAGS): add -Igllib 2007-10-22 Sam Steingold * m4/glibc2.m4, m4/lcmessage.m4, m4/progtest.m4, m4/uintmax_t.m4: * m4/wchar_t.m4, m4/xsize.m4: remove files, they are now in glm4 2007-10-22 Sam Steingold * configure: disable "exit on error" (set +x) around 'test -z "$stacksizelimit"' to access exit status instead of exiting configure 2007-10-22 Sam Steingold * makemake.in [CC_CPLUSPLUS]: build gnulib with gcc because of http://sources.redhat.com/bugzilla/show_bug.cgi?id=5200 (version.h): always use ${SPVW_VERSION} * version.h: regenerated 2007-10-20 Sam Steingold * lispbibl.d (malloc) [UNIX | __MINGW32__]: undef after #include "config.h" because it could be defined as rpl_malloc by gnulib 2007-10-20 Sam Steingold * modules/clx/new-clx/clx.f (OPEN-FONT, LIST-FONTS, LIST-FONT-NAMES): use check_string & check_uint_defaulted (make_font_with_info): rename to make_font; do not accept info (LIST-FONTS): do not fill XFontStruct (FONT-INFO) because it introduces a memory leak (CLOSE-FONT): call DISCARD-FONT-INFO 2007-10-20 Sam Steingold * ffcall/avcall/configure.in, ffcall/callback/configure.in: * ffcall/callback/trampoline_r/configure.in: * ffcall/callback/vacall_r/configure.in: * ffcall/trampoline/configure.in, ffcall/vacall/configure.in: call AC_CONFIG_AUX_DIR before AC_PROG_INSTALL 2007-10-19 Sam Steingold * modules/regexp/configure.in (REGEX_H, ALLOCA): drop unused variables * modules/regexp/link.sh.in (ALLOCA): drop useless variable * modules/regexp/regexi.c [HAVE_ALLOCA_H]: include 2007-10-19 Sam Steingold * ffcall/Makefile.devel (build-aux/config.guess, build-aux/config.sub) (build-aux/ltmain.sh, build-aux/install-sh): new targets (copy from CLISP which copies from gnulib) (ffcall/build-aux/install-sh): add (ffcall/build-aux/config.guess, ffcall/build-aux/config.sub) (ffcall/build-aux/ltmain.sh): update 2007-10-19 Sam Steingold * makemake.in (GL_LIBOBJS): init from @gl_LIBOBJS@ (LIBOBJS): link utils using it 2007-10-19 Sam Steingold * m4/general.m4 (CL_MODULE_COMMON_CHECKS): add * modules/berkeley-db/configure.in, modules/dirkey/configure.in: * modules/gdbm/configure.in, modules/gtk2/configure.in: * modules/i18n/configure.in, modules/pari/configure.in: * modules/pcre/configure.in, modules/postgresql/configure.in: * modules/rawsock/configure.in, modules/readline/configure.in * modules/regexp/configure.in, modules/syscalls/configure.in * modules/wildcard/configure.in, modules/zlib/configure.in: use it * m4/general.m4 (CL_FFCALL_COMMON_LIBTOOL) (CL_FFCALL_COMMON_TRAMPOLINE): add * ffcall/avcall/configure.in, ffcall/callback/configure.in: * ffcall/callback/vacall_r/configure.in: use CL_FFCALL_COMMON_LIBTOOL * ffcall/callback/trampoline_r/configure.in: * ffcall/trampoline/configure.in: use CL_FFCALL_COMMON_LIBTOOL and CL_FFCALL_COMMON_TRAMPOLINE 2007-10-19 Sam Steingold autoconf cleanup * ffcall/Makefile.devel (m4/install.m4): drop (m4/libtool.m4): do not generate from clisp * ffcall/m4/libtool.m4: use AC_CANONICAL_HOST instead of CL_CANONICAL_HOST * ffcall/autoconf/aclocal.m4 (m4/install.m4): drop * ffcall/avcall/configure.in, ffcall/callback/configure.in: * ffcall/callback/trampoline_r/configure.in: * ffcall/callback/vacall_r/configure.in: use AC_PROG_INSTALL instead of CL_PROG_INSTALL and AC_CONFIG_AUX_DIR instead of CL_CANONICAL_HOST * m4/general.m4: drop CL_CANONICAL_HOST, use AC_CANONICAL_HOST instead; we have build-aux/install-sh anyway, so no need for the trick * m4/install.m4, m4/lib-ld.m4, m4/libtool.m4: drop unused * configure.in: use AC_CANONICAL_HOST & CL_CANONICAL_HOST_CPU instead of CL_CANONICAL_HOST; and AC_PROG_INSTALL instead of CL_PROG_INSTALL 2007-10-18 Sam Steingold * modules/gdbm/gdbm.c (check_gdbm, open_gdbm): fix g++ compilation 2007-10-18 Sam Steingold * gettext.m4, iconv.m4, intdiv0.m4, intmax.m4, inttypes-pri.m4: * inttypes.m4, inttypes_h.m4, nls.m4, po.m4, size_max.m4: * printf-posix.m4, stdint_h.m4, lib-link.m4, lib-prefix.m4: * onceonly.m4: import from gnulib, so move from src/m4 to src/glm4 * Makefile.devel (gnulib-update): also get havelib & gettext * ffcall/Makefile.devel (m4/longlong.m4): get from $(CLISP_DIR)/src/glm4 2007-10-18 Sam Steingold * modules/gdbm/gdbm.c (GDBM-STORE, GDBM-DELETE, CHECK_RUN): tighten error checking: any non-0 status is an error 2007-10-18 Sam Steingold * Makefile.devel (view-html): use BROWSERS 2007-10-18 Sam Steingold * makemake.in (EVERY_INCLUDES_H): stdbool.h & stdint.h are in gllib * configure: accept --vimdir and pass it on to makemake always run makemake, it is no longer a user-level command this fixes bug#1467976: clisp configure does not follow GNU conventions 2007-10-17 Sam Steingold * makemake.in (SUBDIRS): pass depfiles to config.status to re-create gllib/.deps/ * configure.in: use gl_STDBOOL_H instead of gt_STDBOOL_H * modules/regexp/Makefile.in: drop REGEX_O * modules/regexp/link.sh.in (file_list): fix adding @ALLOCA@ & @REGEX_O@ * modules/wildcard/Makefile.in: drop FNMATCH_O * modules/wildcard/link.sh.in (file_list): fix adding @FNMATCH_O@ * Makefile.devel (src/gllib/Makefile.in): do not force; do not create src/configure.ac (src/autoconf/aclocal.m4): simplify (use src/configure.in as is) * clisp-link.in (link_some): new function; use it to avoid accidental creation of circular links because now some module files may reside in ../gllib instead of the module directory 2007-10-16 Sam Steingold use gnulib-tool to synchronize with gnulib * unixconf.h.in: rename to config.h.in * Makefile.devel (CONFIG_H_IN): update (gnulib-update): new target * configure.in: generate gllib/Makefile; call gl_EARLY, gl_INIT * makemake.in: unixconf.h -> config.h (MAKE): use @SET_MAKE@ (SUBDIRS): add, start with building gllib (am--refresh): new target, required by automake * lispbibl.d, win32.d: unixconf.h -> config.h * stdbool.h.in, stdint_.h: remove gnulib files * gllib, glm4: add directories (created by gnulib-update) * m4/alloca.m4, m4/codeset.m4, m4/extensions.m4, m4/fnmatch.m4: * m4/glibc21.m4, m4/longlong.m4, m4/mbstate_t.m4, m4/regex.m4: * m4/stdbool.m4, m4/stdint.m4, m4/ulonglong.m4, m4/wint_t.m4: remove files, they are now in glm4 * modules/regexp/: remove gnulib files * modules/regexp/link.sh.in, modules/regexp/Makefile.in: update * modules/wildcard/: remove gnulib files * modules/wildcard/link.sh.in, modules/wildcard/Makefile.in: update 2007-10-16 Masayuki Onjo Sam Steingold * modules/gdbm/gdbm.c (GDBM-STORE, GDBM-DELETE): signal an error on failure instead of returning a boolean 2007-10-16 Sam Steingold * Makefile.devel (GPG): use gpg, not gpg2 (tag-release): pass "." to cvs 2007-10-16 Sam Steingold * version.sh: clisp 2.42 release 2007-10-15 Sam Steingold * modules/clx/new-clx/demos/qix.lisp (qix): use uniform UI * modules/clx/new-clx/demos/clx-demos.lisp (*demos*): greynetic & bball are broken 2007-10-15 Sam Steingold * Makefile.devel (TP_EMAIL): coordinator@translationproject.org 2007-10-15 Sam Steingold * makemake.in (XCFLAGS) [debug & cpu=x86_64]: omit -DDEBUG_SPVW to work around bug#1413016: amd64 debug build broken (gc aborts) 2007-10-13 Sam Steingold * modules/gdbm/gdbm.c (check_gdbm): gdbm arg is a gcv_object_t* (GDBM-OPEN, GDBM-DEFAULT-KEY-TYPE, GDBM-DEFAULT-VALUE-TYPE, GDBM-CLOSE) (GDBM-FILE-SIZE, GDBM-STORE, GDBM-FETCH, GDBM-DELETE, GDBM-FIRSTKEY) (GDBM-NEXTKEY, GDBM-REORGANIZE, GDBM-SYNC, GDBM-EXISTS, GDBM-SETOPT): update all callers 2007-10-12 Sam Steingold * version.sh, spvw.d: pretest 2.41.1 (2007-10-12) * Makefile.devel: coalesce TOPNAME & TOPDIR; fix tp-mail 2007-10-12 Sam Steingold modify the last patch to be more general and less cluttered by default * trace.lisp (tracer): replace GLOBAL-CALL-COUNTER and LOCAL-CALL-COUNTER with BINDINGS (trace1): use BINDINGS in the trace body (trace-output, trace-pre-output, trace-post-output): do not accept LOCAL-CALL-COUNT (untrace2): remove the PROCLAIM call 2007-10-11 Sam Steingold * modules/gdbm/gdbm.c (open_gdbm): extract from GDBM-OPEN (GDBM-OPEN): accept GDBM structures to re-open them if necessary 2007-10-10 Sam Steingold drop sub-byte bit vectors because we need to keep vector length together with the data (similar to binary stream i/o) * modules/gdbm/gdbm.c (gdbm_data_t, check_data_type, with_datum) (datum_to_object): drop GDBM_DATA_BIT_VECTOR, add GDBM_DATA_32BIT_VECTOR & GDBM_DATA_8BIT_VECTOR 2007-10-10 Sam Steingold closed GDBM is no longer accepted by functions requiring DB access * modules/gdbm/gdbm.c (check_gdbm): accept require_valid_handle arg (GDBM-FILE-SIZE, GDBM-STORE, GDBM-FETCH, GDBM-DELETE, GDBM-FIRSTKEY) (GDBM-NEXTKEY, GDBM-REORGANIZE, GDBM-SYNC, GDBM-EXISTS, GDBM-SETOPT): require an open GDBM 2007-10-10 Sam Steingold * modules/gdbm/gdbm.c (gdbm_data_t): replace GDBM_DATA_BINARY with GDBM_DATA_VECTOR and GDBM_DATA_BIT_VECTOR; and GDBM_DATA_FIXNUM with GDBM_DATA_INTEGER (check_data_type): use CL symbols for types (gdbm_open_read_write, gdbm_open_option, gdbm_store_flag): use the "default=" DEFCHECKER option (GDBM-OPEN): accept :DEFAULT-KEY-TYPE and :DEFAULT-VALUE-TYPE (check_gdbm): also extract the default types (GDBM-DEFAULT-KEY-TYPE, GDBM-DEFAULT-VALUE-TYPE): add (error_bad_type): add (with_datum): use it; replace fixnum with integer, using I_to_LEbytes (datum_to_object): use switch; signal an error on GDBM_DATA_NOTYPE, handle integers (with LEbytes_to_I) and bit vectors (gdbm_setopt_option): accept :DEFAULT-VALUE-TYPE and :DEFAULT-KEY-TYPE (GDBM-SETOPT): set the default types make available even without HAVE_GDBM_SETOPT * modules/gdbm/gdbm.lisp (gdbm): add slots PATH, KEY-TYPE, VALUE-TYPE (gdbm-path, gdbm-default-key-type, gdbm-default-value-type): export (gdbm-open-p): add 2007-10-09 Sam Steingold * utils/modprep.lisp (to-C-name): drop package prefix to support non-keyword symbols in DEFCHECKER which are not followed by "=" 2007-10-09 Masayuki Onjo change keyword argument :binary -> :type * modules/gdbm/gdbm.c (gdbm_data_t, check_data_type): add (with_datum, datum_to_object): also handle fixnums and floats (GDBM-FETCH, GDBM-FIRSTKEY, GDBM-NEXTKEY): take :TYPE instead of :BINARY 2007-10-09 Sam Steingold implement RFE#1808029: trace with call counters * trace.lisp (make-local-call-counter): add (tracer): add GLOBAL-CALL-COUNTER & LOCAL-CALL-COUNTER slots (trace1): incf GLOBAL-CALL-COUNTER & bind LOCAL-CALL-COUNTER (trace-output): abstracted from ... (trace-pre-output, trace-post-output): accept LOCAL-CALL-COUNTER (untrace2): make LOCAL-CALL-COUNTER notspecial 2007-10-08 Sam Steingold * modules/clx/new-clx/clx.f (XLIB:ACCESS-HOSTS): handle FamilyServerInterpreted (make_xatom): check XGetAtomName return value (DISPLAY-VENDOR): check ServerVendor return value (KEYSYM-NAME): check XKeysymToString return value (XLIB::DISPLAY-EXTENDED-MAX-REQUEST-LENGTH) (XLIB::DISPLAY-RESOURCE-MANAGER-STRING) (XLIB::SCREEN-RESOURCE-STRING): add, but do not export (DISPLAY-RESOURCE-ID-BASE, DISPLAY-RESOURCE-ID-MASK): implement using (XScreenNo): return -1 on failure (XLIB::SET-DISPLAY-DEFAULT-SCREEN): use it * modules/clx/new-clx/clx.lisp (CHANGE-KEYBOARD-MAPPING) (KEYBOARD-MAPPING, DISPLAY-RESOURCE-ID-BASE) (DISPLAY-RESOURCE-ID-MASK): do not mark as UNDEFINED 2007-10-07 Sam Steingold * modules/clx/new-clx/clx.f (XLIB:SET-DISPLAY-DEFAULT-SCREEN): add (XLIB:LIST-FONTS): use XLoadFont instead of passing NULL font * modules/clx/new-clx/clx.lisp (DISPLAY-DEFAULT-SCREEN): add a DEFSETF (get-default-display, open-default-display): add from clx (cut-buffer, (setf cut-buffer), rotate-cut-buffers): use DISPLAY-DEFAULT-SCREEN instead of (FIRST DISPLAY-ROOTS) * modules/clx/new-clx/demos/clx-demos.lisp (x-host-display) (x-open-display): drop * modules/clx/new-clx/demos/bball.lisp: * modules/clx/new-clx/demos/bwindow.lisp: * modules/clx/new-clx/demos/greynetic.lisp: * modules/clx/new-clx/demos/hanoi.lisp: * modules/clx/new-clx/demos/koch.lisp: * modules/clx/new-clx/demos/petal.lisp: * modules/clx/new-clx/demos/plaid.lisp: * modules/clx/new-clx/demos/recurrence.lisp: * modules/clx/new-clx/demos/sokoban.lisp: use XLIB:DISPLAY-DEFAULT-SCREEN instead of CLX-DEMOS:X-OPEN-DISPLAY * modules/clx/new-clx/demos/clclock.lisp: new demo based on http://common-lisp.net/~crhodes/clx * modules/clx/new-clx/demos/clx-demos.lisp (*demos*): add clclock 2007-09-30 Sam Steingold * modules/clx/new-clx/image.lisp (image-pixmap): pass the required arguments :width & :height to put-image 2007-10-06 Sam Steingold * modules/berkeley-db/bdb.c: use safe_to_string when appropriate 2007-10-06 Sam Steingold * modules/gdbm/gdbm.c: use *misc-encoding* for string conversion (error_gdbm): accept fatal_message (GDBM-OPEN): pass it as the 5th arg to gdbm_open() * modules/gdbm/gdbm.lisp (gdbm-error): add :CODE slot 2007-10-06 Sam Steingold * lispbibl.d (switchu): remove: was used 3 times for strmtype in ... * predtype.d (TYPE-OF, CLASS-OF, heap_statistics_mapper): use switch instead of switchu. switch is already used with strmtype in stream.d and spvw_circ.d 2007-10-06 Sam Steingold * makemake.in (vimdir): install in ${datadir}/vim/vimfiles/after/syntax * clisp.spec: add %{prefix}/share/vim/vimfiles/after/syntax/lisp.vim 2007-10-02 Sam Steingold * error.d (OS_filestream_error): check that the stream argument is actually a stream object (this is needed because OS_filestream_error is called by handle_lseek which is called by handle_length which is used by the gdbm module which does not have Lisp streams) * genclisph.d (emit_to_I): add and use it for size, ssize and off * lispbibl.d (handle_length): add declaration (off_to_I): define using sint??_to_I instead of [QL]_to_I because Q_to_I may not be defined on a 32-bit platform (uint64_to_I, sint64_to_I): always define * stream.d (handle_length): implement (fd_lseek): extract from handle_lseek (handle_lseek): use it (FILE-LENGTH): use it to handle unbuffered streams (FILE-POSITION): use handle_lseek on unbuffered streams * modules/gdbm/gdbm.c (GDBM:GDBM-FILE-SIZE): use handle_length 2007-10-02 Sam Steingold * modules/gdbm/gdbm.c (GDBM:GDBM-FILE-SIZE): implement * modules/gdbm/gdbm.lisp (GDBM:GDBM-FILE-SIZE): export (gdbm-p, gdbm-error, gdbm-error-message): export * modules/gdbm/configure.in: check for all functions * modules/gdbm/gdbm.c: use the configure checks 2007-10-01 Sam Steingold * genclisph.d: emit size_to_I & ssize_to_I * modules/rawsock/rawsock.c (size_to_I, ssize_to_I): remove * modules/rawsock/configure.in: do not check for sizeof(size_t) * modules/pcre/cpcre.c (fullinfo_size): use size_to_I 2007-10-01 Sam Steingold * modules/pcre/cpcre.c (PCRE-VERSION, PCRE-COMPILE): use safe_to_string() (fullinfo_size): accept option argument; use size_t instead of unsigned long int (fullinfo_nametable): fix combining 2 bytes into an int (PATTERN-INFO): do not report PCRE_INFO_BACKREFMAX twice; use fullinfo_size instead of fullinfo_int for PCRE_INFO_STUDYSIZE 2007-09-30 Sam Steingold * utils/fix-perms.sh: report what is been done; make link.sh not executable 2007-09-30 Sam Steingold * makemake.in: accept --vimdir and install the new file lisp.vim there (defaults to ${datadir}/vim/vimfiles/after) 2007-09-30 Sam Steingold * .gdbinit (full): also break in xlib_error_handler * modules/clx/new-clx/demos/bball.lisp: * modules/clx/new-clx/demos/bwindow.lisp: * modules/clx/new-clx/demos/greynetic.lisp: * modules/clx/new-clx/demos/hanoi.lisp: * modules/clx/new-clx/demos/petal.lisp: * modules/clx/new-clx/demos/plaid.lisp: * modules/clx/new-clx/demos/recurrence.lisp: adapted from http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/gui/clx/clx_demo.cl * modules/clx/new-clx/demos/clx-demos.lisp (*demos*): new variable which lists all demos (run-all-demos): new function * modules/clx/new-clx/demos/qix.lisp (qix): use XLIB:DISPLAY-DEFAULT-SCREEN instead of (FIRST XLIB:DISPLAY-ROOTS) * modules/clx/new-clx/demos/koch.lisp (koch): ditto 2007-09-29 Sam Steingold * complete.lisp (completion): when no symbols are found and no package separator #\: has been entered, search for completion among packages * init.lisp: load complete after macros3 because of WITH-COLLECT 2007-09-26 Sam Steingold wrap all library calls in begin_system_call/end_system_call * modules/gdbm/gdbm.c (SYSCALL): add (GDBM-OPEN, GDBM-CLOSE, with_datum, GDBM-SYNC): use it (GDBM-STORE, GDBM-FETCH, GDBM-DELETE, GDBM-FIRSTKEY, GDBM-NEXTKEY) (GDBM-EXISTS): set values outside of with_datum() (CHECK_RUN): add a convenience wrapper (GDBM-REORGANIZE, GDBM-SETOPT): use it 2007-09-26 Sam Steingold * modules/clx/new-clx/clx.f (XLIB:MOTION-EVENTS): XFree(events) (XLIB:MODIFIER-MAPPING): use STACK_to_mv, return no values on failure (XLIB:SET-MODIFIER-MAPPING): clean-up stack on failure (make_fill_bit_vector): add (make_key_vector, XLIB:%SAVE-GCONTEXT-COMPONENTS) (XLIB:KEYBOARD-CONTROL): use it (XLIB:SET-MODIFIER-MAPPING): fix memory corruption in xmk construction (XLIB:CHANGE-KEYBOARD-MAPPING): fix memory corruption in XChangeKeyboardMapping call (num_codes = #keysyms, not #keycodes) 2007-09-26 Sam Steingold fix bug#1797132: assertion failure in new-clx support 64-bit KeySym in KEYBOARD-MAPPING using an extra dimension * modules/clx/new-clx/configure.in : AC_CHECK_SIZEOF(KeySym) * modules/clx/new-clx/clx.f (KBD_MAP_RANK, check_dim) (KBD_MAP_TYPE, extra_dim_push): define based on SIZEOF_KEYSYM (check_kbdmap_mx): replaces check_uint32_mx (XLIB:CHANGE-KEYBOARD-MAPPING, XLIB:KEYBOARD-MAPPING): use them 2007-09-26 Sam Steingold * modules/clx/new-clx/clx.f (check_error_code): add DEFCHECKER (xlib_error_handler): use check_error_code_reverse instead of a literal vector lookup for robustness and readability 2007-09-26 Sam Steingold support non-keyword symbols in DEFCHECKER * utils/modprep.lisp (maybe-prepend-colon): add (new-checker): use it (print-tables-1): separate objects with spaces 2007-09-26 Sam Steingold * modules/clx/new-clx/clx.f (xlib_a_cons): use allocate_cons() instead of `(NIL . NIL)` for initialization 2007-09-25 Sam Steingold * modules/clx/new-clx/clx.f (make_key_vector): do not clobber value1 (check_bitvec_256): new macro (get_key_vector): implement (XLIB:OPEN-DISPLAY): call disable_sigpipe() not here, but ... (module__clx__init_function_2): ... here (XLIB::SET-GCONTEXT-DASHES, handle_image_z, XLIB:PUT-IMAGE) (XLIB:CHANGE-PROPERTY, XLIB:GLOBAL-POINTER-POSITION) (XLIB:KEYBOARD-MAPPING, XLIB:OPEN-DISPLAY): remove unused variable (font_char_info): simplify to avoid a gcc warning (XLIB:INPUT-FOCUS): fix STACK handling (XLIB:GRAB-KEY): fix XGrabKey call (XLIB:QUERY-KEYMAP): use check_bitvec_256 (XLIB:KEYCODE->CHARACTER): fix KEYSYM-INDEX-FUNCTION handling (X11/Xauth.h): #include (my_xau_get_auth_by_name): add (fixme?) (XLIB:DISPLAY-AUTHORIZATION-DATA, XLIB:DISPLAY-AUTHORIZATION-NAME): use it or return constant "" (XLIB:DISPLAY-AUTHORIZATION): add * modules/clx/new-clx/clx.lisp (XLIB:DISPLAY-AUTHORIZATION): export 2007-09-23 Sam Steingold * modules/gdbm/gdbm.c (with_datum): replacement for with_gdbm_key * modules/gdbm/gdbm.lisp (define-condition): do not terminate the message with "." 2007-09-23 Masayuki Onjo * modules/gdbm/gdbm.lisp (GDBM:WITH-OPEN-DB): add macro * modules/gdbm/gdbm.c (with_gdbm_key): add macro (GDBM-FETCH, GDBM-DELETE, GDBM-EXISTS): add vector support (GDBM-FIRSTKEY, GDBM-NEXTKEY): new keyword argument :BINARY 2007-09-22 Sam Steingold * modules/dirkey/dirkey.c (fehler_ldap): rename to error_ldap * modules/pcre/cpcre.c (pcre_error): rename to error_pcre * modules/clx/new-clx/clf.x (closed_display_error): rename to error_closed_display * .gdbinit (full): break in error_gdbm 2007-09-21 Sam Steingold * modules/rawsock/rawsock.c (CHECK_SOCKADDR): new macro (SOCKADDR-FAMILY, optional_sockaddr_argument, BIND, CONNECT) (GETNAMEINFO, fill_msghdr, SENDTO): use it 2007-09-21 Sam Steingold * modules/berkeley-db/bdb.c (dbe_get_data_dirs): declare a variable in the block where it is actually used (record_length): use default: to avoid a compiler warning about enumeration values not handled in switch and control reaching end of non-void function 2007-09-20 Sam Steingold * modules/rawsock/rawsock.c [HAVE_SIGNALS]: use writing_to_subprocess to avoid being killed by SIGPIPE (begin_sock_call, end_sock_call): define (SYSCALL, GET_SOCK_OPT, SET_SOCK_OPT): use them instead of begin_system_call/end_system_call 2007-09-20 Sam Steingold * modules/gdbm/gdbm.c (GDBM-STORE, GDBM-FETCH, GDBM-DELETE) (GDBM-NEXTKEY, GDBM-EXISTS): use a variable from with_string_0 instead of calling asciz_length() (GDBM:GDBM-SETOPT): convert :CACHESIZE argument properly 2007-09-20 Masayuki Onjo * modules/gdbm/gdbm.c (GDBM:GDBM-VERSION): add * modules/gdbm/gdbm.lisp (GDBM-VERSION): export 2007-09-18 Sam Steingold bug fix: pwd struct fields can be NULL which caused segfault * misc.d, lispbibl.d (push_string_array, safe_to_string): add * modules/syscalls/calls.c (ARR_TO_LIST): remove (hostent_to_lisp, servent_to_lisp, grp_to_lisp): use push_string_array instead of ARR_TO_LIST (utmpx_to_lisp, UNAME, servent_to_lisp, passwd_to_lisp, FILE-OWNER) (VERSION, PropVariantToLisp, FILE-PROPERTIES): use safe_to_string * modules/rawsock/rawsock.c (GETADDRINFO): use safe_to_string (protoent_to_protocol, netent_to_network): use push_string_array 2007-09-17 Sam Steingold * modules/gdbm/gdbm.lisp (GDBM:DO-DB): new macro * modules/gdbm/configure.in (): check * modules/gdbm/gdbm.c: #include when it is available (GDBM::GDBM-OPEN): finalize GDBM object (datum_to_object): new function (GDBM:GDBM-FIRSTKEY, GDBM:GDBM-NEXTKEY): use it (GDBM:GDBM-SETOPT): simplify code (check_gdbm): return GDBM_FILE; update all callers; fix some GC-safety 2007-09-17 Sam Steingold * modules/syscalls/calls.c (POSIX:LOADAVG): implement * modules/syscalls/posix.lisp (POSIX:LOADAVG): export * modules/syscalls/configure.in (getloadavg): check 2007-09-17 Masayuki Onjo Sam Steingold * Makefile.devel (MODULES): add gdbm * modules/gdbm: new module 2007-08-26 Sam Steingold * foreign1.lisp (finalize-coutput-file): write register_foreign_inttype forms into init_function_2 ("init once") instead of init_function_1 ("init-always") 2007-08-24 Sam Steingold implement RFE#1779938: RENAME-DIRECTORY * pathname.d (RENAME-DIR): implement * constsym.d, subr.d (rename_dir): add * init.lisp (rename-dir): exoirt 2007-08-24 Sam Steingold * modules/berkeley-db/bdb.c: fix some error_bdb calls; use db->get_env instead of a direct dbenv slot access; avoid "DB->get_cachesize: method not permitted when environment specified" error log messages (BDB:DBE-SET-OPTIONS): accept :NCACHE :CACHESIZE :CACHE (BDB:DBE-GET-OPTIONS): report :CACHE (cache2lisp): extract from db_get_cache (dbe_get_cache): add (db_get_cache): call it when db is based on a dbe (db_get_type): new function fix bug#1779416: Berkeley-DB module outputs spurious errors (record_length): do not call get_re_len on DB_BTREE & DB_HASH (BDB:DB-GET-OPTIONS): do not call methods inappropriate for a DB type, avoiding "call implies an access method which is inconsistent with previous calls" error log messages 2007-08-23 Sam Steingold * constobj.d (foreign_inttype_table): add * lispbibl.d (register_foreign_inttype): declare and export to clisp.h (mallocing, nomalloc): declare to avoid warnings * exporting.lisp (def-c-type): only one argument is required * foreign.d (parse_foreign_inttype, register_foreign_inttype): add (foreign_layout, convert_from_foreign, convert_to_foreign, do_av_start) (do_av_arg, do_va_start, do_va_arg, do_va_return): use foreign_inttype_table for system int types (init_ffi): register a couple of int types for the test suite * foreign1.lisp (def-c-type): when typespec is missing, assume int type and get size and sign at compile time (finalize-coutput-file): output int types * modules/bindings/glibc/linux.lisp: define most int types using the new one argument def-c-type call (dirent64, readdir64, readdir64_r, scandir64, alphasort64) (versionsort, versionsort64): add (seekdir, telldir): for some reason position is "long", not "off_t", in my (glibc-headers-2.4-11) 2007-07-24 Sam Steingold merge some netbsd/pkgsrc patches * makemake.in (XCC_CREATESHARED): treat DragonFly like all the other BSDs * ffcall/avcall/asmi386.h, ffcall/callback/vacall_r/asmi386.h: * ffcall/vacall/asmi386.h, asmi386.h, asmi386.hh: DragonFly defines __DragonFly__, not __DragonFly 2007-07-08 Sam Steingold fix bug#1607416: back_trace is not initialized when it is a register * spvw.d (back_trace): do not init to NULL at the declaration, instead... (init_memory): init back_trace to NULL here 2007-06-28 Sam Steingold * pathname.d (make_launch_pipe): do not access STACK, accept pointers into it instead (init_launch_streamarg): accept a pointer into STACK instead of an index 2007-06-25 Jack Unrue * modules/syscalls/calls.c (FMTID_SummaryInformation) (FMTID_UserDefinedProperties): provide local definitions to support build using MinGW w32api 3.9 2007-06-25 Sam Steingold * pathname.d (interpret_launch_priority): do not access STACK, accept an argument instead 2007-06-22 Sam Steingold fix last patch * init.lisp (sys::get-doc-entity-caller): add (get-file-doc, set-file-doc): use it 2007-06-21 Sam Steingold Keep separate file information for each caller (DEFUN, DEFSTRUCT &c) * init.lisp (sys::get-file-doc, sys::set-file-doc): add (sys::check-redefinition): use them 2007-06-20 Sam Steingold * m4/proto.m4 (CL_PROTO_MISSING, CONST_VARIANTS, SIZE_VARIANTS): new macros * m4/connect.m4, m4/ioctl.m4, m4/select.m4, m4/tcpconn.m4: use them 2007-06-20 Sam Steingold * malloc/getpagesize.h, malloc/gmalloc.c: update from Emacs: LGPL->GPL; Pthreads; a prototype fix from CLISP bug#1607416 2007-06-19 Sam Steingold * m4/ioctl.m4 (CL_IOCTL): "request" is an "unsigned int" on arm-wince-pe * m4/tcpconn.m4 (CL_TCPCONN): "len" is a "socklen_t" in setsockopt() Reported by Kamil Shakirov 2007-06-09 Sam Steingold * modules/postgresql/configure.in, modules/postgresql/postgresql.lisp: search for PostgreSQL headers also in pgsql (for Mandriva) Suggested by Frederik Himpe 2007-06-08 Jörg Höhle * macros3.lisp (expand-LETF, expand-LETF*): use lexical environment (EXT:LETF): always return nil with empty body (LETF): fix a case with wrong order of parameters for (VALUES ...) 2007-06-06 Jörg Höhle fix bug#1731462: EXT:LETF with more than one place * macros3.lisp (expand-LETF): accumulate intermediates 2007-06-06 Jörg Höhle * loop.lisp (max-if, min-if): mark as ABI 2007-06-05 Sam Steingold * modules/fastcgi/fastcgi.lisp (hex-value): use DIGIT-CHAR-P * modules/oracle/oracle.lisp (hex-value): ditto Suggested by Jörg Höhle. (if-null): remove (use OR instead) (curconn, connect, to-sqlval, hash-to-sqlparam-array, check-connection) (pairs-to-hash, array-to-hash): use AND & UNLESS instead (cat): use EXT:STRING-CONCAT 2007-06-03 Jörg Höhle Use (gensym "NAME-") to enhance readability of CL macros. * condition.lisp (IGNORE-ERRORS, HANDLER-CASE, ASSERT, CHECK-TYPE) (ECASE, ETYPECASE, CCASE, CTYPECASE) (WITH-SIMPLE-RESTART, expand-restart-case): Use (gensym "NAME"). * defs1.lisp (DO-SYMBOLS, DO-EXTERNAL-SYMBOLS) (EXT:DOSEQ, EXT:DOHASH): ditto * defs2.lisp (WITH-HASH-TABLE-ITERATOR): ditto * macros1.lisp (PROG1, PROG2, do/do*-expand, DOLIST, DOTIMES) (PSETQ, MULTIPLE-VALUE-BIND, MULTIPLE-VALUE-SETQ, COND): ditto * macros2.lisp (TYPECASE, NTH-VALUE, EXT:TIMES) (WITH-OUTPUT-TO-STRING): ditto * macros3.lisp (EXT:ETHE): ditto * loop.lisp (LOOP, expand-loop): ditto 2007-05-23 Jörg Höhle fix bug#1721583: *terminal-encoding* readline segfault * encoding.d (sys::set-terminal-encoding): return normalized value. 2007-05-20 Bruno Haible * unix.d [UNIX_LINUX && UNIX_GNU]: Don't include . * lispbibl.d (UNIX_GNU): Move definition down. Reported by Ulrich Müller . 2007-05-13 Sam Steingold * clos-class3.lisp (check-method-redefinition): extract from ANALYZE-METHOD-DESCRIPTION (install-class-direct-accessors): use it * clos-method2.lisp (analyze-method-description): ditto 2007-05-13 Shawn Betts Sam Steingold * clx.f: as per the CLX manual, (:EXPOSURE, :GRAPHICS-EXPOSURE): :X, :Y, :WIDTH, :HEIGHT are uint16 (:CONFIGURE-NOTIFY, :CREATE-NOTIFY, :GRAVITY-NOTIFY) (:REPARENT-NOTIFY, :CONFIGURE-REQUEST): :X, :Y are sint16 2007-05-09 Shawn Betts Sam Steingold * modules/clx/new-clx/clx.f (XLIB:GET-PROPERTY): check XGetWindowProperty return value 2007-05-06 Sam Steingold ensure that (DEFGENERIC IF) and (DEFUN IF) signal PROGRAM-ERROR * init.lisp (check-special-operator): extract from REMOVE-OLD-DEFINITIONS (check-redefinition): call it (remove-old-definitions): call either CHECK-REDEFINITION or CHECK-SPECIAL-OPERATOR 2007-05-06 Sam Steingold fix bug#1713130: some CL symbols are not locked * clos-genfun3.lisp (defgeneric): call SYS::CHECK-REDEFINITION (defmethod, defgeneric): use SYS::GET-FUNNAME-SYMBOL (ensure-generic-function-using-class): use PREDEFUN instead of DEFUN * clos-class3.lisp (finalize-inheritance, make-instances-obsolete) (class-name, validate-superclass, add-direct-subclass) (ensure-class-using-class, reader-method-class, writer-method-class) (remove-direct-subclass, class-direct-subclasses, compute-slots) (compute-class-precedence-list, compute-effective-slot-definition) (compute-effective-slot-definition-initargs, compute-default-initargs): use PREDEFUN instead of DEFUN * clos-genfun1.lisp (print-object, generic-function-methods) (generic-function-method-class, generic-function-signature) (generic-function-undeterminedp, generic-function-method-combination) (generic-function-argorder, generic-function-declarations): ditto * clos-genfun2a.lisp (compute-applicable-methods) (compute-applicable-methods-using-classes): ditto * clos-genfun2b.lisp (compute-discriminating-function) (add-method, remove-method): ditto * clos-methcomb2.lisp (compute-effective-method) (find-method-combination): ditto * clos-method1.lisp (method-function, method-qualifiers) (method-lambda-list, method-signature, method-specializers) (method-generic-function, (setf method-generic-function)): ditto * defs1.lisp (expand-form): moved here from init.lisp * defs2.lisp (default-directory, date-format, date-string, dir): moved here from init.lisp * init.lisp (in-package, the-environment, load, defmacro, defun): call SYS::CHECK-REDEFINITION explicitly at top-level (expand-form, default-directory, date-format, date-string, dir): move to defs*.lisp so that they are defined with full DEFUN 2007-05-04 Sam Steingold * init.lisp (sys::check-redefinition): WHAT is a string, so use CALLER instead * places.lisp (define-setf-expander, defsetf): pass a string as WHAT to CHECK-REDEFINITION * clos-class2.lisp ((setf find-class)): call TEXT on WHAT in the CHECK-REDEFINITION call * clos-methcomb2.lisp (define-method-combination): ditto * clos-method2.lisp (analyze-method-description): ditto * cmacros.lisp (define-compiler-macro): ditto * trace.lisp (check-traceable): ditto 2007-04-28 Shawn Betts Sam Steingold * modules/clx/new-clx/clx.f (encode_event): because some slots point to the same C structure slot (:WINDOW and :EVENT-WINDOW mostly), the way encode_event is written :EVENT-WINDOW will overwrite :WINDOW. If :WINDOW is supplied and :EVENT-WINDOW is not, then the xevent slot will be set to 0, instead of the proper value. This patch memsets the whole structure to 0 and gets rid of the else clauses. 2007-04-28 Sam Steingold * spvw.d (fehler_notreached): refer to http://clisp.cons.org/impnotes/faq.html#faq-bugs instead of asking for private e-mail 2007-04-23 Sam Steingold * modules/libsvm: upgraded to upstream 2.84 2007-04-04 Vadim Konovalov Sam Steingold * lispbibl.d (unspecified) [MICROSOFT]: define to 0, like for GCC 2007-03-07 Sam Steingold fix bug#1666851: [AIX 5.3] Problem finding connect * m4/socklen_t.m4, configure.in, socket.d, stream.d, win32.d: * modules/rawsock/rawsock.c: replace SOCKLEN_T with CLISP_SOCKLEN_T because AIX defines SOCKLEN_T internally Reported by Laurent Vaucher . 2007-02-27 Shawn Betts Sam Steingold * modules/clx/new-clx/clx.f: use enum instead of #define for slot_DISPLAY_* (slot_DISPLAY_DISPLAY, display_structure_size): add (make_display): accept display_number (OPEN-DISPLAY): pass it to make_display() (DISPLAY-DISPLAY): return the new display slot * modules/clx/new-clx/clx.lisp (display): add DISPLAY slot 2007-02-22 Sam Steingold fix bug#1666470: EXT::LAUNCH crash again: cannot do pushSTACK(foo()) if foo() manipulates STACK * stream.d (make_pipe): new function (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM, MAKE-PIPE-IO-STREAM) (mkops_from_handles, mkips_from_handles): use it (mkops_from_handles, mkips_from_handles): return value without STACK * lispbibl.d (mkops_from_handles, mkips_from_handles): update prototypes * pathname.d (make_launch_pipe): pass stack location instead of index as the first argument (LAUNCH): use L_to_I() for PID, not fixnum() 2007-02-22 Sam Steingold fix new-clx "--with-debug" compilation * modules/clx/new-clx/clx.f (get_client_message_data): declare void (encode_event): use skipSTACK instead of popSTACK to avoid a warning (xlib_error_handler): make_bool() accept an int, not an object 2007-02-15 Sam Steingold * modules/clx/mit-clx/dependent.lisp (buffer-input-wait-default): SOCKET-STATUS accepts non-integer timeout 2007-02-15 Mattias Nilsson Sam Steingold * modules/clx/mit-clx/dependent.lisp (buffer-input-wait-default): only check the :input direction 2007-01-05 Evgeny Zubok Sam Steingold * modules/clx/mit-clx/display.lisp (read-xauth-entry): fix for McCLIM See patch#1628499: McCLIM/mit-clx: fail to connect to X server 2007-02-05 Sam Steingold * modules/oracle/oracle.lisp, modules/fastcgi/fastcgi.lisp: (hex-value): better error reporting (hex-byte-value): accept 2 arguments (hex-to-byte-array): optimized (less consing, 60% faster) 2007-02-05 Sam Steingold fix NO_UNICODE + WIN32_NATIVE (mingw) compilation * encoding.d (fehler_incomplete) [!UNICODE]: made available for CONVERT-STRING-FROM-BYTES * stream.d (rd_ch_keyboard, wr_ch_array_window) [WIN32_NATIVE]: fix cint/chart conversion Thanks to Michael Kappert for testing. 2007-02-03 Sam Steingold * modules/fastcgi/fastcgi.lisp (byte-array-to-string): optimized 2007-01-22 John Hinsdale Allow binary file uploads via FastCGI * modules/fastcgi/fastcgi.lisp, fastcgi_wrappers.c: handle binary data via STDIN on POST request. Reported by Mike.Halloran@gmail.com 2007-01-22 Shawn Betts Sam Steingold New-CLX supports stumpwm * modules/clx/new-clx/clx.f (SET-SELECTION-OWNER): fix argument order (encode_event): set the event type; fix STACK handling :EVENT-WINDOW is sometimes just a synonym for :WINDOW, sometimes not; correctly map :EVENT-WINDOW to the corresponding XEvent slot (:REPARENT-NOTIFY): add :OVERRIDE-REDIRECT-P (ungrab_X): fix STACK handling (xlib_error_handler): pass :ASYNCHRONOUS up (XLIB:MAPPING-NOTIFY): implement (travel_queque): used to peek the event and called the event handler which meant calling PROCESS-EVENTS inside that event handler got the same event (this doesn't happen in mit-clx or portable-clx). So travel_queque now just calls XNextEvent() * modules/clx/new-clx/clx.lisp (SET-SELECTION-OWNER): export implement error conditions (copied from mit-clx) 2007-01-01 Sam Steingold * spvw_debug.d (TheLfloat_) [DEBUG_SPVW]: add 2007-01-10 Sam Steingold * encoding.d (fehler_buffer_parity): rename to fehler_incomplete() (handle_incomplete): new function (uni16be_mbstowcs, uni16le_mbstowcs, uni32be_mbstowcs) (uni32le_mbstowcs): use it 2007-01-10 Sam Steingold fix bug#1632718: CONVERT-STRING-FROM-BYTES does not check incomplete byte sequences * encoding.d (CONVERT-STRING-FROM-BYTES): signal an error when the vector is not used completely 2007-01-10 Sam Steingold fix bug#1631760: unicode-16 et al cannot be used with unbuffered streams * encoding.d (uni16be_mbstowcs, uni16le_mbstowcs, uni32be_mbstowcs) (uni32le_mbstowcs): signal an error only when at least one char was found to enable single byte increments in rd_ch_unbuffered() 2007-01-08 Mike McMahon Sam Steingold fix bug#1564818: CRLF handling does not work for UNICODE-16 * stream.d (strm_channel_extrafields_t): move ignore_next_LF from ... (strm_unbuffered_extrafields_t): ... here (ChannelStream_ignore_next_LF): add (UnbufferedStream_ignore_next_LF): remove (low_clear_input_unbuffered_handle, rd_ch_unbuffered) (listen_char_unbuffered, rd_ch_array_unbuffered) (make_unbuffered_stream, stream_reset_eltype) (SYSTEM::BUILT-IN-STREAM-SET-ELEMENT-TYPE): use ChannelStream_ignore_next_LF instead of UnbufferedStream_ignore_next_LF (rd_ch_buffered, rd_ch_array_buffered): set and test ChannelStream_ignore_next_LF 2007-01-04 Sam Steingold * stream.d (STREAM-EXTERNAL-FORMAT): compare encodings using EQUALP 2007-01-04 Sam Steingold * stream.d (SET-STREAM-EXTERNAL-FORMAT): use check_encoding() instead of test_external_format_arg() because the encoding is NOT an :EXTERNAL-FORMAT keyword argument 2007-01-03 Sam Steingold * constobj.d (ansi_user_package_name, base10_radixnil) (common_lisp_string): remove unused objects (modern_user_package): add * package.d (init_packages): set it to CS-COMMON-LISP-USER * spvw.d (main_actions): use it for *PACKAGE* in -modern 2007-01-02 Sam Steingold * configure (STACK_LIMIT): set to 16384 because of power5, see https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=166347 2006-12-24 Bruno Haible Make it work with gcc-4.3 snapshots. * intparam.c (main1): Rename get_integer_bitsize to get_unsigned_integer_bitsize. New macro get_signed_integer_bitsize. * lispbibl.d (bit, bitm): Change return type to 'unsigned long' instead of 'long'. 2007-01-02 Sam Steingold * hashtabl.d (hashcode_tree_rec): rename from hashcode_tree (hashcode_tree): use it (gcinvariant_hashcode_tree_p_rec): rename from gcinvariant_hashcode_tree_p (gcinvariant_hashcode_tree_p): use it (HASHCODE_TREE_MAX_LEVEL, HASHCODE_TREE_NEED_LEAVES): undef after they are no longer used (hashcode3, hashcode3stable, hashcode4, sxhash) (gcinvariant_hashcode3_p, gcinvariant_hashcode3stable_p) (gcinvariant_hashcode4_p): simplify 2006-12-29 Sam Steingold discard macro lambda list when (OPTIMIZE SPACE) is 3 * init.lisp (sys::maybe-arglist): add (defmacro): use it * compiler.lisp (compile): ditto * record.d (MACRO-LAMBDA-LIST): signal an error when the lambda list is not available due to the compiler optimization settings * describe.lisp (describe-object@MACRO): call DESCRIBE-ARGLIST (describe-arglist): handle possible errors in ARGLIST 2006-12-29 Sam Steingold * backquote.lisp (BACKQUOTE): pass a 2nd argument to MAKE-MACRO * compiler.lisp (compile): ditto * places.lisp ((setf MACRO-FUNCTION)): ditto * trace.lisp (trace1): ditto 2006-12-28 Sam Steingold fix bug#948868: hashcode[34]_cons weakness * hashtabl.d (hashcode_tree, gcinvariant_hashcode_tree_p): add (hashcode3_cons0, hashcode3_cons1, hashcode3_cons2, hashcode3_cons3) (gcinvariant_hashcode3_cons0_p, gcinvariant_hashcode3_cons1_p) (gcinvariant_hashcode3_cons2_p, gcinvariant_hashcode3_cons3_p) (hashcode3stable_cons0, hashcode3stable_cons1, hashcode3stable_cons2) (hashcode3stable_cons3, gcinvariant_hashcode3stable_cons0_p) (gcinvariant_hashcode3stable_cons1_p, hashcode4_cons0) (gcinvariant_hashcode3stable_cons2_p, hashcode4_cons1) (gcinvariant_hashcode3stable_cons3_p, hashcode4_cons2) (hashcode4_cons3, gcinvariant_hashcode4_cons0_p) (gcinvariant_hashcode4_cons1_p, gcinvariant_hashcode4_cons2_p) (gcinvariant_hashcode4_cons3_p, sxhash_cons0, sxhash_cons1) (sxhash_cons2, sxhash_cons3): remove (hashcode3, hashcode3stable, hashcode4, sxhash): use hashcode_tree() (gcinvariant_hashcode3_p, gcinvariant_hashcode3stable_p) (gcinvariant_hashcode4_p): use gcinvariant_hashcode_tree_p() 2006-12-28 Sam Steingold fix bug#1208124: hashcode_bignum weakness * hashtabl.d (hashcode_bignum): use all digits 2006-12-27 Sam Steingold ARGLIST now works for macros too * constsym.d (macro_lambda_list): add * defmacro.lisp (make-macro-expander, make-funmacro-expander): pass lambdalist to MAKE-MACRO * init.lisp (defun, in-package, the-environment, do, dotimes) (defmacro): ditto * describe.lisp (describe-object@macro): suggest SYS::MACRO-LAMBDA-LIST (arglist): handle macros * lispbibl.d (Macro): add slot macro_lambda_list * record.d (MAKE-MACRO): accept second argument (check_macro): new function (MACRO-EXPANDER): use it (MACRO-LAMBDA-LIST): add * subr.d (make_macro): update (macro_lambda_list): add 2006-12-27 Sam Steingold fix bug#1483762: socket's stream-external-format always :default * stream.d (STREAM-EXTERNAL-FORMAT): return :DEFAULT for two-way and echo streams only if the external formats of the constituent streams are different 2006-12-27 Sam Steingold fix bug#1623179: broken (setf (stream-external-format stream direction) enc) * places.lisp (stream-external-format): fix argument handling 2006-12-27 Sam Steingold fix bug#1412454: format/*print-pretty* interaction: extra newlines * io.d (pr_enter_1): respect *PPRINT-FIRST-NEWLINE* in all cases 2006-12-27 Sam Steingold fix bug#1482465: confusing format error report, cause fill-stream * format.lisp (format-error): use ~T for indentation and ~S to print format string so that the spacing is preserved * constsym.d (stream_start_s_expression, stream_end_s_expression): add * io.d (write_spaces): use check_posfixnum (FORMAT-TABULATE): use check_posfixnum call STREAM-START-S-EXPRESSION and STREAM-END-S-EXPRESSION around spaces() to ensure that the spaces are preserved 2006-12-26 Sam Steingold fix bug#1622642: DESCRIBE: confusing spacing * fill-out.lisp (with-stream-s-expression): new macro * describe.lisp (describe1): use it 2006-12-19 Sam Steingold fix bug#1618724: broken compiler warning for invalid optimize quality * compiler.lisp (parse-optimize-quality): fix the c-warn call 2006-12-18 Sam Steingold fix bug#1612313: DEFPACKAGE code executed during non top-level compilation * defpackage.lisp (defpackage): use ANSI situations for EVAL-WHEN 2006-12-17 Sam Steingold * compiler.lisp (c-SYMBOL-MACROLET): uniform message syntax: "declare SPECIAL" 2006-12-17 Sam Steingold * init.lisp (date-string): add * dribble.lisp (dribble-toggle): use it * compiler.lisp (compile-file): ditto 2006-12-17 Sam Steingold * dribble.lisp (dribble-toggle): open the target file with the :EXTERNAL-FORMAT of the source stream Reported by Pascal Bourguignon 2006-12-11 Sam Steingold fix bug#1613300: extra space in unreadable output * io.d (pr_unreadably): do not print a space after string when the printer is pr_record_ab_00 2006-12-10 Sam Steingold fix bug#1612859: IMPORT into the KEYWORD package does not make a symbol a constant variable * error.d (check_symbol_not_symbol_macro) (check_symbol_not_global_special): implement * lispbibl.d (check_symbol_not_symbol_macro) (check_symbol_not_global_special): declared * control.d (PROCLAIM): use check_symbol_not_symbol_macro() * macros2.lisp (define-symbol-macro): call SYSTEM::%PROCLAIM-SYMBOL-MACRO before SYSTEM::%PUT, do not call CHECK-NOT-SPECIAL-VARIABLE-P at all (check-not-special-variable-p): obsolete * symbol.d (SYS::%PROCLAIM-SYMBOL-MACRO): use check_symbol_not_global_special() (SYS::%PROCLAIM-CONSTANT): use check_symbol_not_symbol_macro() * package.d (make_present): use check_symbol_not_symbol_macro(), do not make symbol a constant unless it was uninterned 2006-12-04 Sam Steingold * modules/libsvm: upgraded to upstream 2.83 2006-12-03 Anton Vodonosov Sam Steingold fix bug#1607666: LISTEN does not call STREAM-LISTEN * io.d (LISTEN): call STREAM-LISTEN * constsym.d (STREAM-LISTEN): add 2006-11-28 Sam Steingold fix bug#1604579: (SETF DOCUMENTATION) and COMPILE * record.d (CLOSURE-SET-DOCUMENTATION): allow NIL argument * compiler.lisp (compile): reset the documentation in the compiled closure because it might have been reset by (setf documentation) and is now different from the literal in the lambdabody 2006-11-28 Sam Steingold * comptran.d (R_R_atanh_R_R): fix IMAGPART sign for real arguments 2006-11-27 Sam Steingold fix bug#1603260: Loading a compiled file does not reset the first value of FUNCTION-LAMBDA-EXPRESSION * init.lisp (sys::remove-old-definitions): discard function lambda expression too because loading a compiled file does not set it 2006-11-21 Sam Steingold export structure MOP * defstruct.lisp (structure-keyword-constructor): rename from structure-kconstructor * init.lisp (structure-slots, structure-direct-slots) (structure-keyword-constructor, structure-boa-constructors) (structure-copier, structure-predicate): export * exporting.lisp (export-structure-accessories): the above are now external in EXT, not internal in SYS 2006-11-20 Sam Steingold fix bug#1436987: atanh branch cut strangeness * comptran.d (R_R_atanh_R_R): fix branch cuts logic 2006-11-20 Sam Steingold fix bug#1469663: clisp-link run does not work w/o dynamic modules * clisp-link.in (run): remove $destinationdir before add-module-sets 2006-11-17 Bruno Haible fix bug#1578179: print-read-consistency of strings containing #\Return characters * io.d (closure_reader): Recognize #0Y"..." syntax. (pr_sstring_ab): Write using #0Y"..." syntax if *print-readably* is true and the string contains #\Return characters. 2006-11-17 Sam Steingold fix bug#1483768: automatic pretty-printing of symbols in conses fix bug#1598053: PPRINT dispatch not honored for nested objects * io.d (pretty_print_call): remove (pr_enter_1): call pr_xxx directly (prin_object_ki): abstract from prin_object and pprin_object (prin_object, pprin_object): use prin_object_ki (prin_object_dispatch_low): rename from prin_object_dispatch (prin_object_dispatch_pretty): convert from pretty_print_call (prin_object_dispatch): call either of the above 2006-11-13 Magnus Henoch Sam Steingold * modules/clx/mit-clx/clx.lisp (*protocol-families*): Add :internet6. * modules/clx/mit-clx/display.lisp (read-xauth-entry): Likewise. 2006-11-13 Sam Steingold * modules/fastcgi/fastcgi.h: remove unused file 2006-11-13 Sam Steingold fix bug#1595700: bad base64 error report * encoding.d (base64_wcstombs): do not access invalid memory 2006-11-11 Jörg Höhle fix bug#1575569: utf-8 conversion error * encoding.d (utf8_wcslen): support up to 4 bytes/character. 2006-11-12 Sam Steingold * io.d (pr_unreadably): new function (similar to old pr_other_obj) (pr_unreadably_2, pr_record_ab_00): add (pr_hex6_obj, pr_other_obj): remove (pr_machine, pr_system): use pr_unreadably instead of pr_hex6_obj (pr_orecord) [Rectype_Readtable]: use pr_unreadably instead of pr_hex6_obj [Rectype_Byte, Rectype_Symbolmacro, Rectype_GlobalSymbolmacro]: [Rectype_Macro, Rectype_FunctionMacro, Rectype_Weakpointer]: [Rectype_WeakAnd, Rectype_WeakOr]: use pr_unreadably instead of inline code [Rectype_Weakmapping, Rectype_WeakAndMapping, Rectype_WeakOrMapping]: use pr_unreadably_2 instead of inline code (pr_subr, pr_fsubr, pr_cclosure): use pr_unreadably instead of pr_other_obj 2006-11-09 Bruno Haible fix bug#1591671: typep and subtypep fail ... * subtypep.lisp (indefinite-subclassp): New function. (STANDARD-OBJECT): Use it. 2006-11-09 Jörg Höhle * stream.d (finish_tty_output) [UNIX]: try fsync(), tcdrain() or ioctl() until success, not all of them. 2006-11-08 Sam Steingold * spvw.d (print_banner): print version and instructions on getting help * reploop.lisp (commands0): tweak help message 2006-11-08 Sam Steingold fix bug#1589311: ROUND is broken for long floats [even+1/2] * lfloat.d (LF_fround_LF): adjust mask when rounding to match comments 2006-11-06 Sam Steingold * io.d (read_vector_length_check): extract the common part of BIT-VECTOR-READER and VECTOR-READER (BIT-VECTOR-READER, VECTOR-READER): use it 2006-11-04 José H. Espinosa Sam Steingold * makemake.in (XCC_CREATESHARED) [darwin]: define 2006-11-01 Sam Steingold * modules/gtk2/gtk.lisp (glade-load): add (run-glade-file, gui-from-file): use it 2006-10-26 Sam Steingold * modules/gtk2/gtk.lisp (GladeXMLConnectFunc, GladeNewFunc) (GladeXMLCustomWidgetHandler, GladeBuildChildrenFunc) (GladeFindInternalChildFunc, GladeApplyCustomPropFunc): no need for C-POINTER indirection (gui-from-file): call glade_xml_signal_autoconnect_full 2006-10-22 Sam Steingold * threads.lisp (process-unlock): fix TEXT call (yes-or-no-p-timeout): add * xthread.d: "extern inline" --> "static inline" 2006-10-21 "José H. Espinosa" Sam Steingold * makemake.in (MODULE_CPPFLAGS) [with_dynamic_modules]: remove a spurious space that caused "error: `CPPFLAGS' has changed since the previous run" 2006-10-19 Sam Steingold * makemake.in (docdir) [redhat]: replaced CLISP_VERSION with TOPDIR (VERSION, VERSION_SUFFIX, TOPDIR): moved up to the configurable section (lisplibdir): append TOPDIR to enable multiple CLISP version installed on the same system simultaneously Suggested by Nelson H. F. Beebe 2006-10-18 Jörg Höhle * modules/fastcgi/fastcgi.lisp (FASTCGI:GETENV): can be called outside server loop. 2006-10-17 Sam Steingold * configure (--install): when ${prefix} or ${exec_prefix} are not writable, run "make install" using su 2006-10-16 Sam Steingold * modules/bindings/win32/win32.lisp: use default-foreign-library 2006-10-16 Sam Steingold * modules/libsvm/libsvm.lisp (finalize-model): accept an optional pointer arg (train): make model depend on problem so that problem cannot be GCed unless the model is GCed (make-problem): finalize the problem with destroy-problem 2006-10-16 Jörg Höhle * eval.d (get_closure): regularize nearly duplicate gettext message * po/de.po, po/fr.po: fix several tilde format errors and translations. Many translations still erroneous or missing. 2006-10-16 Sam Steingold * Makefile.devel (src--distrib, doc--distrib): remove (tp-mail): add target to send a note to translation@IRO.UMontreal.CA 2006-10-16 Sam Steingold module doc&interface unification * modules/i18n/i18n.lisp: do not lock CUSTOM:*SYSTEM-PACKAGE-LIST*, it is done by EXT:SAVEINITMEM * modules/matlab/matlab.lisp: add :MATLAB to *FEATURES*, add "MATLAB" to CUSTOM:*SYSTEM-PACKAGE-LIST* * modules/netica/netica.lisp: add :NETICA to *FEATURES*, add "NETICA" to CUSTOM:*SYSTEM-PACKAGE-LIST* * modules/zlib/zlib.lisp: do not lock "ZLIB", it is done by EXT:SAVEINITMEM 2006-10-15 Sam Steingold * Makefile.devel (MODULES): add gtk2 * modules/gtk2: new module based on http://dgym.homeunix.net/clisp-gtk2/ 2006-10-13 Sam Steingold * version.sh: clisp 2.41 release (Friday the 13th!) 2006-10-13 Sam Steingold * init.lisp, compiler.lisp: replaced FFI::*DEFAULT-FOREIGN-LIBRARY* with FFI::*FOREIGN-LIBRARY* * foreign1.lisp (DEFAULT-FOREIGN-LIBRARY): new macro, set FFI::*FOREIGN-LIBRARY* inside EVAL-WHEN 2006-10-13 Sam Steingold * modules/pcre/cpcre.c (fullinfo_firsttable): avoid a gcc warning 2006-10-13 Sam Steingold * foreign1.lisp (DEF-C-VAR, DEF-CALL-OUT): call NOTE-C-VAR and NOTE-C-FUN depending on the value of library at run time, not macroexpansion time 2006-10-13 Sam Steingold * modules/libsvm/Makefile (svm.so): pass -fPIC to $(CXX) 2006-10-12 Sam Steingold fix bug#1575946: broken COMPILE of APPLY in LABELS * compiler.lisp (c-APPLY): handle not-yet compiled local functions 2006-10-12 Sam Steingold * foreign1.lisp (*default-foreign-library*): defvar and export (get-assoc): new helper (DEF-C-VAR, DEF-CALL-OUT): use *DEFAULT-FOREIGN-LIBRARY* as the default :LIBRARY argument * compiler.lisp (with-compilation-unit): bind *DEFAULT-FOREIGN-LIBRARY* * init.lisp (*default-foreign-library*): init & proclaim special (load): bind *DEFAULT-FOREIGN-LIBRARY* * modules/libsvm/libsvm.lisp: set *DEFAULT-FOREIGN-LIBRARY* at top-level instead of passing (:LIBRARY ...) to each DEF-CALL-OUT 2006-10-12 Jörg Höhle * modules/fastcgi/fastcgi.lisp, fastcgi_wrappers.c (fcgi_env): Fix memory leak via :malloc-free allocation, check malloc(), untabify, reindent, small Lisp and C tweaks. 2006-10-12 Sam Steingold * configure.in: call AC_CONFIG_AUX_DIR, AC_PROG_LIBTOOL, AC_LIBTOOL_WIN32_DLL 2006-10-12 Sam Steingold * libcharset/build-aux/config.guess, libcharset/build-aux/config.sub: * libcharset/build-aux/install-sh, libcharset/build-aux/ltmain.sh: * ffcall/build-aux/config.guess, ffcall/build-aux/config.sub: * ffcall/build-aux/ltmain.sh, m4/libtool.m4: update * build-aux/config.dynamic: replace with ... * build-aux/ltmain.sh: add 2006-10-11 Sam Steingold fix FFI callbacks, broken since the 2005-10-02 patch * lispbibl.d (mallocing, nomalloc): declare for clisp.h * foreign.d (mallocing, nomalloc): declare global (converter_malloc_t): remove one level of indirection * foreign1.lisp (convert-to-foreign-C, note-c-call-in): output convert_to_foreign() with the appropriate 4th argument 2006-10-10 Sam Steingold * modules/libsvm/libsvm.lisp (predict-probability): prob_estimates is a DOUBLE-FLOAT vector, not an INT one 2006-10-10 Sam Steingold * _clisp.c (main): fix handling of "--" option terminator Reported by François-René ÐVB Rideau 2006-10-10 Sam Steingold * clhs.lisp (start-mesasge): helper extracted from read-from-file (read-from-file): use it * modules/libsvm/libsvm.lisp (load-problem, save-problem): ditto 2006-10-09 Sam Steingold * modules/libsvm/libsvm.lisp (problem-y-n, problem-x-n): add (problem-list, problem-slots): remove (cross-validation): call `check-parameter' 2006-10-09 John Hinsdale * modules/fastcgi/fastcgi.lisp, fastcgi_wrappers.c, fastcgi.h: New function FASTCGI:ENV to return the entire environment Useful enhancement, suggested by Don Cohen * modules/fastcgi/fastcgi.lisp: Compatible behavior to EXT:GETENV, behaving appropriately based on "true CGI" vs. "FastCGI" mode. 2006-10-08 Sam Steingold * modules/libsvm/libsvm.lisp (problem-slots, problem-list): add (problem-l, problem-y, problem-x): use `problem-slots' (save-problem): use `problem-list' 2006-10-05 Sam Steingold * modules/libsvm/libsvm.lisp: use C-POINTER instead of C-PTR to avoid needless conversions between Lisp and C (destroy-parameter, destroy-problem): pass :FULL T to FOREIGN-FREE to match ALLOCATE-DEEP (finalize-model): new function, use SET-FOREIGN-POINTER to avoid the "invalidating session pointer" error Suggested by Jörg Höhle 2006-10-05 Sam Steingold * Makefile.devel (gnu-distrib): use basename to strip off ../archives// (GPG): --yes, not -yes 2006-10-05 Sam Steingold merged LOOKUP-FOREIGN-FUNCTION & FOREIGN-LIBRARY-FUNCTION into FIND-FOREIGN-FUNCTION; LOOKUP-FOREIGN-VARIABLE & FOREIGN-LIBRARY-VARIABLE into FIND-FOREIGN-VARIABLE * foreign.d (check_foreign_function_type): new function (FOREIGN-FUNCTION): use it (lookup_foreign_variable): extract from LOOKUP-FOREIGN-VARIABLE (LOOKUP-FOREIGN-VARIABLE): use it (kept as legacy to avoid changing O(version)) (FIND-FOREIGN-VARIABLE): new function, calls either lookup_foreign_variable or foreign_library_variable (lookup_foreign_function): extract from LOOKUP-FOREIGN-FUNCTION (LOOKUP-FOREIGN-FUNCTION): use it (kept as legacy to avoid changing O(version)) (FIND-FOREIGN-FUNCTION): new function, calls either lookup_foreign_function or foreign_library_function (find_library_by_name): rename from find_library (find_library_by_address): new function (check_library): rewrote to absorb most of FOREIGN-LIBRARY (FOREIGN-LIBRARY): use it (foreign_library_check, push_foreign_library_object): new helpers (foreign_library_variable): extract from FOREIGN-LIBRARY-VARIABLE, signal an error on platforms without dlsym (FOREIGN-LIBRARY-VARIABLE): use it (kept as legacy to avoid changing O(version)) (foreign_library_function): extract from FOREIGN-LIBRARY-FUNCTION, signal an error on platforms without dlsym (FOREIGN-LIBRARY-FUNCTION): use it (kept as legacy to avoid changing O(version)) * foreign1.lisp (DEF-C-VAR): use FIND-FOREIGN-VARIABLE instead of FOREIGN-LIBRARY-VARIABLE and LOOKUP-FOREIGN-VARIABLE (DEF-CALL-OUT, DEF-LIB-CALL-OUT): use FIND-FOREIGN-FUNCTION instead of FOREIGN-LIBRARY-FUNCTION and LOOKUP-FOREIGN-FUNCTION * constsym.d, subr.d (find_foreign_variable) (find_foreign_function): add 2006-10-03 Sam Steingold * modules/libsvm: new module to interface to LibSVM http://www.csie.ntu.edu.tw/~cjlin/libsvm 2006-10-03 Sam Steingold fix bug#1569234: on some platforms SUBR is not a record * documentation.lisp (function-documentation) (set-function-documentation): do not fallthrough on subr 2006-10-01 Sam Steingold * Makefile.devel (release): new target (gnu-distrib): pass --use-agent -yes to gpg 2006-09-23 Sam Steingold * version.sh: clisp 2.40 release 2006-10-01 Sam Steingold * makemake.in (hln): do NOT use $(SHELL) and --cache-file=../config.cache to avoid error "`CFLAGS' has changed since the previous run" (this reverts the 2006-07-17 patch) 2006-10-01 Sam Steingold * documentation.lisp (function-documentation) (set-function-documentation): handle FSUBR 2006-09-29 Sam Steingold * sequence.d (end_minus_start): new function (seq_filterop, remove_op, delete_op, seq_duplicates) (substitute_op): use it 2006-09-28 Sam Steingold fix bug#1567186: set-difference ... :test 'equalp * defs1.lisp (list-to-ht): there is no separate fasthash & stablehash for EQUALP 2006-09-27 Sam Steingold fix bug#1566466: assoc error when combining compiled and interpreted code * compiler.lisp (declared-optimize): do not use ASSOC because a combination of interpreted and compiled code - e.g., via the (COMPILE) declaration - will break since the declarations in the interpreted code are not canonicalized 2006-09-26 Sam Steingold * spvw.d (init_symbol_functions): fix g++ compilation * record.d (CLOSURE-DOCUMENTATION, CLOSURE-LAMBDA-LIST): ditto * modules/pcre/cpcre.c (PCRE:PCRE-EXEC): ditto * lispbibl.d (chart, as_chart): ditto, as recommended by http://groups.google.com/group/comp.lang.c++/msg/a81d13be2aa78176 2006-09-22 Jörg Höhle * stream.d (publish_host_data): do-not-resolve-p in SOCKET-STREAM-PEER and SOCKET-STREAM-LOCAL behaves again as documented, like prior to inversion introduced 2005-12-14. 2006-09-19 Sam Steingold * foreign.d (convert_from_foreign, convert_to_foreign): check data==NULL and issue an error instead of a segfault 2006-09-15 Sam Steingold more meaningful error message on top-level READ with a non-NIL recursive-p argument * io.d (check_read_reference_table): new function (make_references, lookup_label): use it 2006-09-10 Sam Steingold * modules/rawsock/configure.in (net/if.h): need on *BSD * modules/rawsock/rawsock.c (RAWSOCK:IFADDRS): also require (check_iff): add *BSD macros 2006-09-10 Sam Steingold fix bug#1555096: cannot create pathnames with :wild-inferiors * pathname.d (PARSE-NAMESTRING) [WIN32_NATIVE]: when converting /cygdrive/c to C: check that the first directory component is a string Thanks to Yaroslav Kavenchuk for debugging. 2006-09-09 Sam Steingold * modules/rawsock/rawsock.c (sockaddr_to_lisp): add (RAWSOCK:IFADDRS): implement * modules/rawsock/sock.lisp (ifaddrs): add defstruct 2006-09-09 Sam Steingold * io.d (fehler_invalid_value): new function (make_references, lookup_label, circle_p): use it 2006-09-07 Sam Steingold * modules/rawsock/sock.lisp (open-unix-socket, open-unix-socket-stream): export; fix socket calls (:AF_UNIX -> :UNIX, :SOCK_STREAM -> :STREAM) 2006-09-07 Sam Steingold * foreign.d (FOREIGN-LIBRARY-FUNCTION): fix last patch Reported by Yaroslav Kavenchuk 2006-09-05 Sam Steingold * modules/rawsock/rawsock.c (RAWSOCK:IF-NAME-INDEX): new function 2006-09-03 Sam Steingold When the OPTIMIZE SPACE level is low enough, keep function documentation and lambda list. * compiler.lisp (make-closure): accept documentation and pass it on to SYS::%MAKE-CLOSURE (parse-optimize-quality): do not support interpreted code (reverses the 2005-02-11 patch) (fnode): add slots LAMBDA-LIST and DOCUMENTATION (c-LAMBDABODY): fill them (create-fun-obj): pass them to MAKE-CLOSURE when the OPTIMIZE SPACE level is right, using... (non-user-symbol-p, generatedp): new functions ... to avoid wasting space for gensyms and lambdas * constobj.d (version): bump * constsym.d (closure_documentation, closure_set_documentation) (closure_lambda_list): add * describe.lisp (describe-object@FUNCTION): use DESCRIBE-ARGLIST and DESCRIBE-DOCUMENTATION (arglist): use SYS::CLOSURE-LAMBDA-LIST (describe-arglist, describe-documentation): add (describe-signature): remove * documentation.lisp (function-documentation): use SYS::CLOSURE-DOCUMENTATION and Foreign-Function properties (documentation@symbol): use it (set-function-documentation): use SYS::CLOSURE-SET-DOCUMENTATION and Foreign-Function properties ((setf documentation)@symbol): use it * eval.d (parse_dd): do not call NOTE-OPTIMIZE (reverses the 2005-02-11 patch) because local DECLARE should not change the global OPTIMIZE settings * foreign.d (LOOKUP-FOREIGN-FUNCTION, FOREIGN-LIBRARY-FUNCTION): accept an additional PROPERTIES argument * foreign1.lisp (DEF-CALL-OUT): pass PROPERTIES to LOOKUP-FOREIGN-FUNCTION and FOREIGN-LIBRARY-FUNCTION, do not call (SETF DOCUMENTATION) * init.lisp (defmacro, defun): do not call SYSTEM::%SET-DOCUMENTATION * io.d (CLOSURE-READER): consts is a list, expect optional LAMBDA-LIST and DOCUMENTATION (pr_cclosure_lang): print consts as a list, also print LAMBDA-LIST and DOCUMENTATION, if any * lispbibl.d (Ffunction): add ff_properties slot (Cclosure_last_const, ccv_flags_lambda_list_p) (ccv_flags_documentation_p): new CPP macros: use bit(2) as an indicator for DOCUMENTATION and bit(1) for LAMBDA-LIST * record.d (CLOSURE-CONSTS): use them to keep DOCUMENTATION and LAMBDA-LIST separate from consts (%MAKE-CLOSURE): accept LAMBDA-LIST and DOCUMENTATION (MAKE-CONSTANT-INITFUNCTION): pass 6 arguments to %MAKE-CLOSURE (CLOSURE-DOCUMENTATION, CLOSURE-SET-DOCUMENTATION) (CLOSURE-LAMBDA-LIST): implement * spvw_debug.d (TheCclosure_, Cclosure_length_): add * subr.d (make_closure, lookup_foreign_function) (foreign_library_function): update (closure_documentation, closure_set_documentation) (closure_lambda_list): add 2006-09-03 Sam Steingold * configure: accept FOO=BAR argument to set the shell variable 2006-09-03 Stephen Compall Sam Steingold fix bug#1550803: make-pathname ignores explicit :DIRECTORY NIL * pathname.d (merge_dirs, MERGE-PATHNAMES): :DIRECTORY NIL overrides :DEFAULTS 2006-09-03 Magnus Henoch Sam Steingold * ffcall/callback/trampoline_r/proto.c, * ffcall/callback/vacall_r/vacall-powerpc.c (env) [__NetBSD__]: use r13 instead of r11 * ffcall/callback/vacall_r/Makefile.in (vacall-powerpc.lo): depend on vacall-powerpc-netbsd.s * ffcall/callback/vacall_r/vacall-powerpc-netbsd.s: add 2006-08-24 Sam Steingold * clhs.lisp (*browsers*): add :FIREFOX, :FIREFOX-WINDOW, :FIREFOX-TAB, :NETSCAPE-TAB, :MOZILLA-TAB; rename :NETSCAPE-REMOTE and :MOZILLA-REMOTE to :NETSCAPE-WINDOW and :MOZILLA-WINDOW respectively 2006-08-15 Sam Steingold * Makefile.devel (update-docbook-utils): delegate to doc/Makefile 2006-08-15 Sam Steingold support case-sensitive packages * modprep.lisp (*package-properties*): new parameter (defmodule-p): accept module properties as the 3rd argument (case-sensitive-package-p): new function (string-upcase-verbose): use it 2006-08-10 Sam Steingold fix bug#1538333: ADJUST-ARRAY on non-adjustable vectors without a fill pointer * array.d (fehler_no_fillp): new function (get_fill_pointer): use it (ADJUST-ARRAY): use it to signal an error instead of creating a new array with fill pointer from an array without one 2006-08-10 Sam Steingold support PCREv6 pcre_dfa_exec() * modules/pcre/cpcre.c (pcre_error): handle DFA errors (pcre_exec_flags): handle DFA flags (PCRE-EXEC): accept :WORK-SPACE :DFA :PARTIAL :DFA-SHORTEST :DFA-RESTART when pcre_exec returns 0, retry with doubled ovector_size * modules/pcre/configure.in: check for pcre_dfa_exec 2006-08-01 Sam Steingold * makemake.in (XCFLAGS) [ia64]: no special treatment is necessary anymore, according to Dr. Werner Fink in 2006-08-01 Sam Steingold * spvw_memfile.d (loadmem_from_handle): avoid a GCC warning 2006-08-01 John Hinsdale * modules/oracle/oracle.lisp: Fix incorrect loop termination and premature advancing of database cursor in ORACLE:FETCH-ALL Thanks to Feng Hou for report, test case and fix. 2006-07-31 Sam Steingold * modules/berkeley-db/bdb.c (asciz_to_string0): turn into a CPP macro this fixes the NO_UNICODE build (the encoding argument is not evaluated) Reported by Reini Urban 2006-07-31 Sam Steingold * spvw.d (find_name): reorder conditionals for WIN32_NATIVE Reported by Yaroslav Kavenchuk 2006-07-27 Sam Steingold fix bug#1482533: print-object built-in object: no-applicable-method * clos-print.lisp (print-object): add a method for built-in objects 2006-07-27 Sam Steingold * modules/rawsock/rawsock.c (RAWSOCK:CONVERT-ADDRESS): made restartable 2006-07-26 Sam Steingold fix bug#1529244: rawsock is broken on big-endian * socket.d (resolve_host): use UI_to_LEbytes() instead of I_to_uint32() for uint32 argument so that it will work on big-endian machines * modules/rawsock/rawsock.c (RAWSOCK:CONVERT-ADDRESS): ditto 2006-07-26 Sam Steingold * configure, makemake.in: accept --elispdir and install emacs files there (datadir/emacs/site-lisp/ by default) 2006-07-25 Sam Steingold * configure: when CONFIG_SHELL is bash and /bin/sh is not, re-exec the configure script with CONFIG_SHELL to enable sourcing of config.cache 2006-07-25 Dr. Werner Fink Sam Steingold fix executable images on ia64 * spvw_memfile.d (loadmem_from_handle): when mem_searched, call set_file_offset(mem_start), not set_file_offset(0) 2006-07-25 Sam Steingold fix bug#1526448: Reinitialization of class does not call finalize-inheritance * clos-class3.lisp (reinitialize-instance-): call FINALIZE-INHERITANCE * gray.lisp (fundamental-stream): bind CLOS::*ALLOW-MIXING-METACLASSES* also with EXT:COMPILER-LET; remove EVAL-WHEN 2006-07-25 Sam Steingold fix bug#1528201: sigsegv: make-instance of named anonymous class * clos-package.lisp: import sys::check-symbol * clos-class1.lisp (shared-initialize-): use it 2006-07-24 Sam Steingold * spvw.d (find_name) [!RTLD_DEFAULT]: emulate RTLD_DEFAULT whenever it is not defined (e.g., on AIX in addition to FreeBSD) (libc_handle): defined at static inside find_name() Reported by Nirendra Maharaj 2006-07-23 Sam Steingold * modules/syscalls/calls.c (POSIX::USER-INFO): use S(Kdefault) instead of `:DEFAULT` 2006-07-21 Sam Steingold * modules/syscalls/calls.c (POSIX::STAT-VFS): require HAVE_SYS_STATVFS_H in addition to HAVE_STATVFS 2006-07-20 Sam Steingold fix bug#1516684: initially not executed in loop * loop.lisp (loop-initialization): new slot preamble (revadd): new macro (expand-loop): merge INITIALLY-CODE and STARTUP-CODE into a single annotated list PREAMBLE (elements are marked on whether they come from :INITIALLY or :START) - this ensures that the initialization and :INITIALLY forms are evaluated in the right order 2006-07-19 Sam Steingold * makemake.in (encflags): make -E 1:1 the first argument to ensure that no encoding variable is ever left as ASCII (the default for the C locale) 2006-07-19 Sam Steingold fix bug#1494059: open-url fails to recognize file:/// (unix) * clhs.lisp (open-url): restore the leading #\/ on unix [win32|cygwin]: try the version without the leading #\/ first 2006-07-17 Sam Steingold * makemake.in (hln): use $(SHELL) and --cache-file=../config.cache 2006-07-17 Sam Steingold * Makefile.devel (REL, GNU_SYM): new variables (upload): also upload symlink directive (gnu-distrib): also create symlink directive (tag-release): new target 2006-07-16 Sam Steingold * version.sh: clisp 2.39 release 2006-07-14 Thiemo Seufer Sam Steingold * m4/general.m4 (CL_CANONICAL_HOST_CPU_FOR_FFCALL): re-enable FFI for mips/mipsel http://article.gmane.org/gmane.lisp.cl-debian/1493 2006-07-14 Peter Van Eynde Sam Steingold fix bug#1506857: build fails with gcc-4.1 on ia64 * makemake.in (XCFLAGS) [ia64]: -O0, not -O2 2006-06-30 Sam Steingold * modules/syscalls/posix.lisp (ffs): add a Lisp implementation of http://www.opengroup.org/onlinepubs/009695399/functions/ffs.html 2006-06-30 Sam Steingold * configure, makemake.in: accept --with-gmalloc * configure.in: do not call CL_GMALLOC * m4/gmalloc.m4: remove * malloc/getpagesize.h, malloc/gmalloc.c: update from Emacs 2006-06-30 Sam Steingold * makemake.in (anymodule): use $(SHELL) to run sub-configure scripts 2006-06-29 Sam Steingold use symbolic error codes when possible * modules/berkeley-db/bdb.c (bdb_errno): new checker * modules/berkeley-db/dbi.lisp (bdb-error): rename "number" to "code" 2006-06-29 Sam Steingold * modules/rawsock/sock.lisp: import EXPORTING:DEFINE-CONDITION 2006-06-29 Sam Steingold * modules/berkeley-db/bdb.c (BDB:DBC-GET): fix last patch - accept :READ-COMMITTED and :READ-UNCOMMITTED 2006-06-29 Sam Steingold use gai_strerror() to signal errors in getaddrinfo() and getnameinfo() * modules/rawsock/rawsock.c (error_eai): new function (RAWSOCK::GETNAMEINFO, RAWSOCK::GETADDRINFO): use it * modules/rawsock/sock.lisp (eai): new condition type * modules/rawsock/configure.in: check for gai_strerror() 2006-06-29 Sam Steingold * modules/syscalls/calls.c (POSIX::GROUP-INFO, POSIX::USER-INFO): set errno to 0 before system calls to separate errors from "not found" 2006-06-27 Sam Steingold * m4/test.m4: use sub-shell "()" instead of "eval" (needed on Solaris) 2006-06-27 Sam Steingold * m4/bold.m4: from libsigsegv * configure.in, modules/berkeley-db/configure.in: * modules/clx/new-clx/configure.in, modules/dirkey/configure.in: * modules/i18n/configure.in, modules/pari/configure.in: * modules/pcre/configure.in, modules/postgresql/configure.in: * modules/rawsock/configure.in, modules/readline/configure.in: * modules/regexp/configure.in, modules/syscalls/configure.in: * modules/wildcard/configure.in, modules/zlib/configure.in: use BOLD_MSG instead of AC_MSG_NOTICE 2006-06-23 Sam Steingold * modules/syscalls/calls.c (POSIX::PATHCONF): new function 2006-06-21 Sam Steingold fix bug#1426388: rawsock :end vs. :size confusion * charstrg.d (test_vector_limits): no return value, remove just 2 STACK elements: :START and :END (not vector) (test_string_limits_ro): adjusted the call to test_vector_limits() * encoding.d (CONVERT-STRING-TO-BYTES): ditto * lispbibl.d (test_vector_limits): update prototype (stringarg, test_vector_limits): export to clisp.h * modules/rawsock/rawsock.c (parse_buffer_arg, check_iovec_arg): use test_vector_limits() update their callers because now parse_buffer_arg() and check_iovec_arg() remove :START and :END from STACK 2006-06-20 Sam Steingold fix bug#1491252: i18n does not build on cf:alpha * utils/modprep.lisp (*tag-length-limit*): new variable (init-to-tag): use it to limit the size of C identifiers 2006-06-19 Sam Steingold * makemake.in (CLISP_VERSION): remove, use TOPDIR instead (VERSION_SUFFIX): new user variable for custom distributions 2006-06-19 John Hinsdale * modules/oracle/orafns.c: call OCILogoff so as to not leak connections Thanks to Feng Hou for report and patch. 2006-06-18 Peter Van Eynde Sam Steingold fix bug#1507628: #define unused (void) breaks clisp 2.38 on arm * modules/syscalls/calls.c (unused): undefine before #include 2006-06-15 Sam Steingold * m4/test.m4: redirect test output to log, not /dev/null 2006-06-15 Sam Steingold fix bug#1407763: (disassemble 'car) hangs on openpower-linux1 * spvw.d (init_symbol_values) [UNIX_LINUX & POWERPC]: set SYS::*DISASSEMBLE-USE-LIVE-PROCESS* to NIL 2006-06-14 Sam Steingold fix bug#1497226: clisp/src/m4/x11.m4 fails to detect x11 on FC5 * m4/x11.m4: remove * configure.in, makemake.in, modules/clx/new-clx/Makefile.in: * modules/clx/new-clx/configure.in, modules/clx/new-clx/link.sh.in: use AC_PATH_XTRA instead of CL_FIND_X This reverts parts of the 2005-09-16 patch 2006-06-14 Sam Steingold * foreign1.lisp (ffi-module@constant-table): fix :value declaration (DEF-CALL-OUT): fix a typo in the 2006-01-30 patch, this fixes bug#1483902: build error in ffi modules 2006-06-14 Sam Steingold * modules/bindings/win32/win32.lisp: add clipboard access functions 2006-05-30 John Hinsdale * modules/oracle/orafns.c: Support for Oracle 10g date/time types 2006-05-29 Sam Steingold * modules/pari/pari.lisp (pari-nil): remove, gnil not found in pari CVS 2006-05-29 Sam Steingold * modules/syscalls/configure.in: remove CL_LSTAT 2006-05-23 Bruno Haible * unix.d (gettimeofday): Remove workaround for Cygwin bug. It was fix on 1997-05-27. 2006-05-20 Bruno Haible * lispbibl.d: Treat DragonFly BSD like FreeBSD. * asmi386.hh (DECLARE_FUNCTION): Likewise. 2006-05-19 Sam Steingold * list.d (LIST-LENGTH-IN-BOUNDS-P): fix last fix 2006-05-18 Sam Steingold * stream.d (TERMINAL-RAW) [!KEYBOARD]: fix compilation 2006-05-17 Sam Steingold * list.d (LIST-LENGTH-IN-BOUNDS-P): fix g++ compilation, error was "jump to label 'no' crosses initialization of uintV m" 2006-05-17 Jörg Höhle Readline completion now works with UTF-8 terminal encoding. * stream.d (lisp_completion) [UNICODE]: Convert byte index to string index. (make_keyboard_stream) [WIN32_NATIVE]: add missing begin_system_call() 2006-05-05 Jörg Höhle * keyboard.lisp (exec-with-keyboard): Do not rely on *terminal-io*, call (terminal-raw *keyboard-input*) * stream.d (terminal-raw): Recognize *keyboard-input*. Reported by Dave Roberts 2006-05-16 Bruno Haible * stream.d (finish_tty_output, force_tty_output) [UNIX_CYGWIN]: Ignore error EBADRQC. Fixes: clisp -norc -x '(sys::exit nil)' > /dev/null 2006-05-16 Bruno Haible * unix.d [UNIX_CYGWIN]: Undefine WIN32 after including . * lispbibl.d [UNIX_CYGWIN]: Likewise. 2006-05-10 Bruno Haible * makemake.in: Respect the value of the environment variable CFLAGS given at configure time. 2006-05-07 Bruno Haible * spvwtabf.d (subr_tab_data): Align correctly also when using the SunPRO C compiler. * spvwtabs.d (symbol_tab_data): Likewise. 2006-05-15 Petr Salinger Jörg Höhle * makemake.in (XCC_CREATESHARED): Recognize k*bsd* OS type. 2006-05-07 Bruno Haible * stream.d (FILE-POSITION): Fix handling of non-empty broadcast-streams (bug introduced on 2004-02-15). 2006-05-05 Arseny Slobodyuk * modules/calls.c: do not use IPropertyStorage related constants not declared by modern mingw win32 headers. Reported by Yaroslav Kavenchuk 2006-05-03 Jörg Höhle * spvw.d (quit): do not duplicate call to done_win32(), leave it to fini_lowest_level() alone. 2006-05-02 Jörg Höhle Must use #if STACKCHECKxyz, not #if defined(STACKCHECKxyz) * eval.d (interpret_bytecode_): fix * lispbibl.d (with_saved_backtrace): fix * record.d (update_instance): fix 2006-04-29 Bruno Haible * makemake.in (XCFLAGS): Add -falign-functions=4 not only when debugging. But add it only for i386 CPUs. 2006-04-29 Bruno Haible * makemake.in (check-doc): Use lynx or curl as fallback when wget doesn't exist. 2006-04-29 Arseny Slobodyuk GREAT socket speedup on win32 * win32aux.d (interruptible_call_event, interruptible_return_event) (interruptible_routine, interruptible_arg) (interruptible_result): new static variables. (DoInterruptible): do not start new thread each time DoInterruptible is called. Use events to signal thread started once. Abort thread only when Ctrl-C or Ctrl-Break is pressed. (temp_interrupt_handler): close event handles as well as thread ones. (standbythreadf): "stand-by thread" function. (done_win32): terminate thread, close events. 2006-04-28 Sam Steingold * modules/berkeley-db/configure.in, modules/pari/configure.in: * modules/pcre/configure.in, modules/postgresql/configure.in: * modules/zlib/configure.in: add $LIB to $LIB (not $LTLIB) Reported by Albert Chin in message 2006-04-26 Jörg Höhle * spvw_sigsegv.d (stackoverflow_handler) [UNIX]: libsigsegv doc says to restore normal signal mask prior to leaving handler. 2006-04-25 Jörg Höhle Increase memory sizes for builds/tests with fix memory size. * spvw.d (parse_options): default -m 3MB * makemake.in (interpreted.mem, halfcompiled.mem): Grant 1800 KW. (stage/*.fas): Grant 1000 KW. 2006-04-26 Jörg Höhle (code-char #\Rubout) has value 127 since at least 1998. * constobj.d (charname_127) [WIN32_PATHNAMES]: rename from charname_8bis, value unchanged. 2006-04-26 Jörg Höhle * charstrg.d (charname_table_codes) [WIN32_PATHNAMES]: Add #\Esc as synonym to #\Escape for interoperability. * constobj.d (charname_27bis) [WIN32_PATHNAMES]: add Suggested by Frank Buss 2006-04-26 Sam Steingold * modules/pcre/configure.in: fix a typo Reported by Albert Chin 2006-04-26 Bruno Haible * build-aux/config.guess, build-aux/config.sub: Update to GNU version 2006-04-26. 2006-04-21 Jörg Höhle * spvw_garcol.d (gar_col_normal): delay close_some_files() until within gar_col_done(). 2006-04-22 Bruno Haible * m4/general.m4 (CL_CANONICAL_HOST_CPU): Recognize powerpc64 / powerpc and x86_64 / i386 depending on the compiler. (CL_CANONICAL_HOST_CPU_FOR_FFCALL): Likewise. 2006-04-21 Bruno Haible * clos-class6.lisp ((setf class-valid-initargs-from-slots)): Clear caches when the value actually changes. Fixes bug#1470929, reported by Kim-Minh Kaplan. 2006-04-19 Bruno Haible * m4/general.m4 (CL_CANONICAL_HOST_CPU): Map rs6000 -> powerpc, not vice versa. (CL_CANONICAL_HOST_CPU_FOR_FFCALL): Likewise. * m4/ffcall-codeexec.m4 (CL_CODEEXEC): Update. 2006-04-16 Jörg Höhle * describe.lisp (describe-object@global-symbol-macro): complete 2005-01-05. When adding internal types, please update DESCRIBE for it uses ECASE (TYPE-OF x). 2006-03-31 Jörg Höhle * debug.d (EXT:GC): use uintM_to_I(free_space()), not UL_to_I(). 2006-03-19 Jörg Höhle * xcharin.lisp (fehler-char-arg): fix format string. 2006-04-16 Bruno Haible * lispbibl.d (POWERPC): Rename from RS6000. * intlog.d: Update. 2006-04-15 Bruno Haible Report circular and dotted lists in macro forms and type specifiers. Allow circular and dotted lists in DESTRUCTURING-BIND. * list.d (sys::list-length-in-bounds-p) (sys::proper-list-length-in-bounds-p): New functions. * defmacro.lisp (macro-call-error): Provide different error messages for the case of a circular or dotted list. (%proper-list-p): New special variable. (make-length-test): Remove accept-dotted optional argument. Use %proper-list-p instead. If %proper-list-p is true, also emit a check whether the form is a proper list. If %proper-list-p is false, emit code that doesn't traverse the entire list. (make-macro-expansion): Bind %proper-list-p to t. * macros2.lisp (deftype): Bind %proper-list-p to t. * places.lisp (define-setf-expander): Bind %proper-list-p to t. * defs2.lisp (destructuring-bind): Bind %proper-list-p to nil. (destructing-error): Provide different error message for the case of a circular list. 2006-04-14 Bruno Haible Fix compiler macro handling. * cmacros.lisp (compiler-macro-function, (setf compiler-macro-function)): Simplify by use of get-funname-symbol. * compiler.lisp (expand-compiler-macro): Call the compiler-macro function directly, not through *macroexpand-hook*. Recognize special return value NIL. (c-form): If expand-compiler-macro did something, just recurse. Fixes bug#1420585. 2006-04-10 Bruno Haible Implement RFE#1415783. * clos-genfun3.lisp (make-generic-function): Add method-combination-p argument. If false, move the :method-combination keyword argument to the end. (analyze-defgeneric): Return method-combination-p as 5th value. (defgeneric): When :method-combination was not specified, move the :method-combination keyword argument to the end. (make-generic-function-form): Update. 2006-04-10 Bruno Haible Complete Sam's 2005-11-21 patch. * clos-class3.lisp (defclass): Verify that a slot's :ALLOCATION value is a symbol. Don't treat the symbol NIL specially. 2006-04-10 Bruno Haible * clos-class1.lisp: Undo read-macro hacks by Sam 2005-11-28. * clos-class3.lisp: Likewise. * clos-genfun2b.lisp: Likewise. * clos-genfun3.lisp: Likewise. Maintainability is more important than a few bytes of source code. The right place for unifying immutable strings across a file is io.d. 2006-04-10 Bruno Haible * clos-genfun3.lisp: Undo a de-internationalization by Sam 2005-11-28. Needed for French. 2006-04-10 Bruno Haible * Makefile.devel (ANSITESTS_CVS_ROOT): Update after savannah reorg. 2006-03-22 Jörg Höhle * array.d (ADJUST-ARRAY) [HAVE_SMALL_SSTRING]: Fix bug#1445842 ADJUST-ARRAY of 0-length adjustable string failed. Reported by David Tolpin 2006-03-22 Jörg Höhle * misc.d (registry) [WIN32_NATIVE]: refix 2000-12-04, do not goto outside `with_string_0'. 2006-03-10 Jörg Höhle * spvw.d (init_memory) [DEBUG_SPVW]: fix stack depth reporting. 2006-03-10 Jörg Höhle * clhs.lisp: add #+ for documentation of optional packages. 2006-03-06 Bruno Haible * backquote.lisp (bq-append): Don't optimize if form1 has the shape (QUOTE (SYS::UNQUOTE ...)). Fixes bug#1308444. Based on proposed fix by Matthew Cross . 2006-03-03 Jörg Höhle gcc-3.3.3 on Sparc64 barfs on ({ var x=y; {var z...; value;}}) * intlog.d (I_logcount_I): remove superfluous second {} block. * arilev0.d (mulu32_64) [SPARC]: ditto. Reported by Magnus Henoch 2006-03-01 Jörg Höhle * defs2.lisp (destructuring-bind): Forgotten by 2004-05-23 patch to allow () to match NIL in destructuring lambda lists. %ignored is no more, %null-tests is there. Reported by Rob Warnock and Kaz Kylheku 2006-02-28 Jörg Höhle * time.d (%%TIME): complete 2004-11-27, use uintM with used_space(). Reported by Don Cohen that TIME fails when allocated memory crosses the 4GB boundary. 2006-02-23 Sam Steingold fix bug#1399376: Failure of socket tests on Mac OS X * socket.d (FILL0): new macro (with_host_port, connect_to_x_server, socket_getlocalname_aux) (socket_getpeername, create_server_socket_by_socket) (accept_connection): use it to zero-out sockaddr before use 2006-02-23 Jörg Höhle * stream.d (listen_byte_ia8_buffered): use persev_immediate as in listen_char_buffered() to avoid hanging on sockets. Reported by Don Cohen 2006-02-22 Jörg Höhle * stream.d (SOCKET-SERVER): revisit 2006-01-25, avoid calling create_server_socket_by_string() twice when interface is supplied. Reported by Don Cohen 2006-02-21 Jörg Höhle Check compilation with MSVC6 * win32aux.d (with_file_id): fix a typo from 2005-12-18. * makemake.in [win32msvc]: for MS shell quoting, use template echotab '$(RUN) -x "(print \"hi\")"' (libcharset.h) [win32msvc]: complete 2005-07-01 copying localcharset.h together with libcharset.h (no new dependency) 2006-02-05 Jörg Höhle fix bug#1388897: FFI:uint64 maps to long long when supported * foreign.d [HAVE_LONG_LONG]: use av_start_longlong, va_return_longlong etc. Otherwise, continue to pass a struct of two uint32: this is compatible with MSVC's __int64 handling. 2006-02-04 Jörg Höhle fix bug#1421652: CPP macros using "do{}while(0)" do not work with statement arguments containing break or continue * lisparit.d (check_real_replacement, check_rational_replacement): remove break from calls to if_realp(), if_rationalp() 2006-02-04 Jörg Höhle * foreign.d (foreign-address-unsigned): revisit last patch. Do not yet introduce uintP_to_I abstraction, use ulong_to_I() for now. 2006-02-03 Jörg Höhle * foreign.d (foreign-address-unsigned, unsigned-foreign-address) [WIDE]: uintP does not fit into 32 bits, use I_to_UQ/UQ_to_I(). Reported by James Bielman 2006-02-02 Jörg Höhle * ffcall/avcall, ffcall/vacall [HAVE_LONG_LONG]: complete switch from HAVE_LONGLONG to HAVE_LONG_LONG, bug#1385013 * foreign.d [_MSC_VER]: Incidentally, this prevents #undef HAVE_LONGLONG in avcall.h with MSVC, so the FFI now provides FFI:UINT64/SINT64 conversions. 2006-01-30 Jörg Höhle fix bug#1211847: preserve object identity of FFI types * foreign1.lisp (def-call-out): no side effects during macro- expansion, minimize number of calls to parse-c-type (from Sam Steingold's wishlist) and do not inline the value of parse-c-function, to preserve EQ tests (cf. foreign.d:equal_fvd). * foreign1.lisp (note-c-fun): change API, but I argue not ABI * foreign1.lisp (argvector-to-signature): remove 2006-01-26 Sam Steingold * savemem.lisp (saveinitmem): accept :DOCUMENTATION * constsym.d (image_doc): add * spvw.d (init_symbol_values): init it (usage): document -help-image (argv_actions): add argv_help_image (parse_options): handle -help-image (main_actions): ditto: print *IMAGE-DOC* and *SCRIPT* 2006-01-26 Sam Steingold * spvw.d (main_actions): for "-x": use SYS::MAIN-LOOP instead of SYS::*DRIVER* so that even user images offer full CLISP functionality * constsym.d (main_loop): add 2006-01-26 Sam Steingold SAVEINITMEM now accepts :SCRIPT argument that disables interpreting the first positional argument as the script name. * savemem.lisp (saveinitmem): accept :SCRIPT * constsym.d (*script*): add * spvw.d (init_symbol_values): init it (main_actions): when it is NIL, push the script argument onto *ARGS* to be processed by the image's init function 2006-01-26 Sam Steingold * build-aux/config.sub, build-aux/config.guess: upgrade to 2006-01-02 2006-01-26 Sam Steingold * makemake.in (install) [cygwin]: clisp-.README goes to /usr/share/doc/Cygwin/, not to /usr/share/doc/clisp-/Cygwin/ 2006-01-25 Sam Steingold * stream.d (SOCKET-SERVER): avoid calling create_server_socket_by_string() twice when interface is supplied; restore the default interface to "0.0.0.0" for backwards compatibility 2006-01-25 Sam Steingold * makemake.in (EVERY_INCLUDES_H) [unix|win32gcc]: add unixconf.h 2006-01-24 Sam Steingold * Makefile.devel (gnu-distrib): new target (distrib): depend on gnu-distrib (upload): also upload to gnu.org 2006-01-24 Sam Steingold * version.sh: clisp 2.38 release 2006-01-23 Sam Steingold * makemake.in (clean0): also remove *.core and *.stackdump 2006-01-23 Sam Steingold * spvw_memfile.d (find_memdump): when 'image size' fails, reset mem_start to -1 2006-01-22 Sam Steingold * modules/berkeley-db/bdb.c, modules/berkeley-db/configure.in: support Berkeley DB 4.4 2006-01-22 Sam Steingold fix bug#1412268: buffer overflow in stream handling code * w32shell.c (real_path): check length of namein 2006-01-22 Sam Steingold * spvw_memfile.d (find_memdump) [!LOADMEM_TRY_SEARCH]: disable find_marker() 2006-01-20 Sam Steingold * Makefile.devel (distrib): also depend on doc-distrib (SRC_DIST, SRC_DIST1): go to $(ARCHIVE) (doc-distrib, doc--distrib): new targets (upload): also upload $(DOC_DIST) (src-distrib): do not depend on potfiles because they are already created by "all" and thus should not be re-created by "src-distrib" 2006-01-20 Sam Steingold * built.d (built_flags): report readline version 2006-01-19 Sam Steingold * makemake.in (check-exec-image): new target (CHECK_DEPS): add check-exec-image 2006-01-19 Sam Steingold * spvw_memfile.d (find_memdump): reduce the portion of memdump_header_t used as marker to comply with loadmem_from_handle(); use an intermediate variable to ensure that the second argument to lseek(SEEK_END) is indeed negative 2006-01-18 Sam Steingold speed-up image-in-executable loading * spvw_memfile.d (savemem_with_runtime): set mem_start if it was -1 (savemem): append mem_start to the image (loadmem_from_handle): assume that the image end with mem_start use ABORT_SYS, ABORT_INI, ABORT_MEM instead of abort[123] (find_memdump): try to find mem_start at the end of the image first; use the time-consuming (~1sec) find_marker() as a last resort 2006-01-18 Sam Steingold * execname.c (find_executable) [UNIX_CYGWIN32]: cygwin's realpath() does not append ".exe", so we have to do it here 2006-01-18 Sam Steingold * makemake.in (setup.hint) [cygwin]: depend on SUMMARY remove duplicate entries in the "require:" line 2006-01-18 Sam Steingold * spvw_memfile.d (loadmem_from_executable): check the return value of open_filename(), just in case cygwin breaks find_executable again 2006-01-18 Sam Steingold * modules/i18n/gettext.c (bool_char_lconv): WARN instead of NOTREACHED when the value is invalid (CHAR_MAX): defined in , do not redefine it here 2006-01-16 Sam Steingold * win32.d (HAVE_ICONV): Yaroslav Kavenchuk reports no problems with clisp/libiconv/mingw, so do not unconditionally disable ICONV here (reverts a part of the 2005-05-28 patch) 2006-01-16 Sam Steingold * constsym.d, init.lisp (*eq-hashfunction*, *eql-hashfunction*) (*equal-hashfunction*): export from CUSTOM Reported by Tomas Zellerin 2006-01-13 Sam Steingold * savemem.lisp (saveinitmem): accept :norc * constsym.d (*norc*): add * spvw.d (init_symbol_values): init *norc* (main_actions): do not load RC-file if *norc* is non-NIL 2006-01-13 Sam Steingold * spvw.d: executable image should load RC-file by default (parse_options): do not reset argv_norc when argv_memfile is NULL (init_memory): set argv_memfile to executable_name, not "self" (main_actions): check argv_memfile in addition to argv_norc when loading the RC-file 2006-01-13 Sam Steingold Ensure that the executable image contains just one memdump * spvw_memfile.d (find_memdump): new function (mem_searched): new variable (savemem_with_runtime): call find_memdump if it has not been called already so that an image saved by an executable image called with -M does not include 2 images (loadmem_from_executable): call find_memdump(); close the handle 2006-01-12 Sam Steingold use memdump_header as the marker instead of runtime_size for creating executable images * spvw.d (init_memory): remove marker and runtime_size * spvw_memfile.d (mem_start): new static, replaces runtime_size (savemem_with_runtime): when mem_start is 0, copy the whole executable (fill_memdump_header): extract from savemem() (savemem): use it (find_marker): moved here from utils/filesize.c (loadmem_from_executable): use it instead of runtime_size * makemake.in, _distmakefile: remove filesize * utils/filesize.c: remove 2006-01-12 Sam Steingold * modules/postgresql/configure.in: look for in addition to * modules/postgresql/postgresql.lisp: include either Reported by Jeff Bowman that debian unstable installs all of the postgres include files in /usr/include/postgresql/ 2006-01-12 Sam Steingold fix bug#1399709: cannot append to a file the 2005-12-13 patch that fix bug#1379620 introduced this one * pathname.d (open_output_file): open handle WRONLY only on UNIX and only if the underlying file exists and is special; this allows buffer filling for regular files (there are no special files on WIN32) * stream.d (low_fill_buffered_handle): assume that a non-readable stream with a regular handle has a readable handle (position_file_buffered): reverse last patch 2006-01-11 Sam Steingold fix bug#1402338: socket-status ignores microseconds in timeout * stream.d (sec_usec): fix a typo in TV_SEC 2006-01-07 Sam Steingold make utils/filesize idempotent * utils/filesize.c: append file size to marker instead of overwriting it, write file size in hex * spvw.d (init_memory): use stroul() instead of atol() 2006-01-07 Sam Steingold * defs1.lisp (encode-universal-time): handle correctly early 1900-01-01 GMT (which is 1899-12-31 EST) 2006-01-07 Sam Steingold * makemake.in (XCFLAGS) [disable-mmap]: add -DNO_MULTIMAP_SHM -DNO_MULTIMAP_FILE -DNO_SINGLEMAP -DNO_TRIVIALMAP 2006-01-05 Sam Steingold fix bug#1395894: bad read from make-xterm-io-stream * modules/syscalls/posix.lisp (make-xterm-io-stream): fix bitrot 2005-12-22 Jörg Höhle * modules/syscalls/calls.c (POSIX:SYSLOG): use syslog(priority,"%s",string) to disable % processing and avoid crashes 2006-01-05 Sam Steingold * modules/i18n/i18n.lisp, modules/syscalls/posix.lisp: do not define impnotes documentation in lisp, do it in libdir/Symbol-Table.text 2006-01-04 Sam Steingold * makemake.in: strip runtime on no-debug woe32 because woe32 users do not have gdb anyway 2006-01-03 Sam Steingold * utils/filesize.c (main): check that the marker is found just once 2006-01-03 Sam Steingold * misc.d (clisp_setenv) [WIN32_NATIVE]: use setenv_via_environ() when value is "" because putenv("NAME=") unsets NAME instead of setting it to "" 2006-01-03 Sam Steingold * spvw_language.d (init_language): pass NULL as the second argument to clisp_setenv() to unset a variable 2006-01-03 Sam Steingold * modules/syscalls/posix.lisp (make-xterm-io-stream): accept :title 2006-01-03 Sam Steingold * utils/filesize.c (find_marker): fread() returns size_t, not ssize_t 2006-01-03 Sam Steingold * spvw_memfile.d (loadmem_from_executable): use fd_read() instead of read() to fix woe32 2006-01-03 Sam Steingold SAVEINITMEM can create standalone executables * spvw.d (runtime_size): new static (init_memory): when runtime_size is non-0, try to load image from the end of the executable, and set argv_memfile to "self" * spvw_memfile.d (savemem): accept exec_p, call savemem_with_runtime (savemem_with_runtime, loadmem_from_executable): new functions (CLOSE_HANDLE): new macro (loadmem, loadmem_from_handle): use it * configure.in: check for fchmod * execname.c (get_executable_name): new function, returns executable_name * lispbibl.d (savemem): update the prototype * makemake.in (UTILS): add filesize (lisp.run): call filesize (distrib) [!BINARY_DISTRIB]: distribute filesize.c * _distmakefile [!UNIX_BINARY_DISTRIB]: call filesize on executables * pathname.d, subr.d (SAVEMEM): accept EXEC-P * savemem.lisp (%saveinitmem): pass NIL as EXEC-P to SAVEMEM (saveinitmem): accept :EXECUTABLE * utils/filesize.c: new file, replace "my magic marker" with the file size in decimal 2006-01-02 Jörg Höhle * spvw.d (parse_options): have lisp.run --version print information even without image file (no -M lispinit.mem). 2006-01-02 Sam Steingold * clisp-link.in (make_lisprun): new shortcut 2006-01-02 Sam Steingold * version.sh: clisp 2.37 release 2006-01-02 Sam Steingold * clhs.lisp (documentation@symbol): handle uninterned symbols 2006-01-01 Sam Steingold * constsym.d, execname.c, lispbibl.d, misc.d, pathname.d, spvw.d: * subr.d: remove HAVE_DISASSEMBLER 2006-01-01 Sam Steingold better handle numbers that are exactly the midpoint between their possible binary approximations, like 1d23 (bug#1389060) * format.lisp (format-scale-exponent): use exact values as arguments to FORMAT-SCALE-EXPONENT-AUX 2006-01-01 Sam Steingold * time.d (DEFAULT-TIME-ZONE) [WIN32]: decrease time_max by 24 so that the second call to seconds_west() will receive an acceptable argument 2006-01-01 Sam Steingold * configure: replaced --list-modules with --help-modules and print more information 2005-12-27 Sam Steingold * m4/make.m4 (cl_cv_gnu_make): send make error output to 5 2005-12-23 Sam Steingold * modules/syscalls/calls.c (RLIMIT): never signal an error when "what" is missing and the alist is returned 2005-12-22 Sam Steingold * lispbibl.d, socket.d, stream.d: "interface" is a win32 keyword 2005-12-21 Jörg Höhle * clhs.lisp (http-proxy): downcase environment variable http_proxy 2005-12-21 Sam Steingold * makemake.in (check-doc): explicitly check for the internet connection 2005-12-21 Sam Steingold * m4/test.m4: use eval to avoid errors 2005-12-21 Sam Steingold * configure.in: call CL_PROG_MAKE * m4/make.m4: add * makemake.in: benchmarks & --enable-maintainer-mode require GNU make 2005-12-21 Dr. Werner Fink fix bug#1376646: factorial broken on 64bit cpu * intmal.d (FN_fak_I): uintL is not uintV on 64-bit platforms 2005-12-19 Tomas Zellerin * constsym.d: new keywords :INTERFACE, :BACKLOG * lispbibl.d, socket.d: create_server_socket split to create_server_socket_by_string and create_server_socket_by_socket * socket.d (bindlisten_via_ip): accept pointer to backlog * stream.d (SOCKET-SERVER): accept keywords :INTERFACE :BACKLOG * subr.d, subrkw.d (SOCKET-SERVER): changed signature 2005-12-19 Sam Steingold * stream.d (find_open_file): fix compilation with gcc4 2005-12-18 Sam Steingold base check_file_re_open() on unique file ID, not truenames that can be fooled by hard links * win32.d, unix.d (file_id, with_file_id, errno_t, handle_file_id) (file_id_eq): declare * win32aux.d, unixaux.d (with_file_id, handle_file_id) (file_id_eq): implement * pathname.d (check_file_re_open): use with_file_id & &find_open_file * stream.d (strm_channel_extrafields_t): add fid field (ChannelStream_file_id): new macro (find_open_file): implement (make_file_stream): fill ChannelStream_file_id 2005-12-16 Sam Steingold * modules/syscalls/calls.c (POSIX::FILE-STAT): use SIZEOF_INO_T to determine how to convert inode number to Lisp * configure.in: use CL_STAT instead of explicit checks * modules/syscalls/configure.in: ditto * m4/stat.m4 (CL_STAT): rename from CL_LSTAT; concentrate all sys/stat.h and sys/statvfs.h checks here 2005-12-16 Sam Steingold * describe.lisp (describe-object@funcallable-standard-object): add the method Reported by Yaroslav Kavenchuk 2005-12-16 Sam Steingold * makemake.in (clisp.dvi, clisp.ps, clisp.pdf): I am sick of telling people to ignore clisp.dvi errors, so now these errors are ignored 2005-12-16 Dr. Werner Fink Sam Steingold * foreign.d (check_faddress_valid): do not declare inline, g++ 4 cannot link global inline on linux * lispbibl.d (check_faddress_valid): ditto 2005-12-15 Sam Steingold * stream.d (position_file_buffered): when the file is not readable, do not call buffered_nextbyte() 2005-12-15 Sam Steingold * pathname.d (direction_symbol, check_file_re_open): add (open_file): use check_file_re_open() to ensure that we are not opening a file twice * constsym.d (file_error): add 2005-12-15 Sam Steingold * socket.d (socket_getlocalname_aux, socket_getpeername): assume that unknown sa_family means local connection (AF_UNIX, AF_LOCAL) 2005-12-15 Sam Steingold * modules/bindings/win32/win32.lisp (with-handle): fix 2005-12-15 Sam Steingold * stream.d (publish_host_data): do not invoke test_socket_stream twice 2005-12-14 Sam Steingold * stream.d (publish_host_data): fix STACK handling Reported by Lennart Staflin 2005-12-14 Sam Steingold * spvw_objsize.d (objsize_iarray, objsize_s8string, objsize_s16string) (objsize_s32string, objsize_sstring): return uintM instead of uintL Reported by Dr. Werner Fink on IA64 with g++ 2005-12-13 Sam Steingold fix bug#1379620: OPEN :DIRECTION :OUTPUT now creates write-only handles and handles named pipes correctly * stream.d (low_fill_buffered_handle): when the stream is not readable, do not try to read from it * pathname.d (open_output_file): accept wronly argument (open_file): pass wronly to open_output_file() 2005-12-12 Sam Steingold * lispbibl.d (defined_class_length): cast address to aint instead of ULONG to avoid the g++ warning "cast from pointer to integer of different size" on amd64 2005-12-12 Sam Steingold * spvw.d: use while instead of dotimes and do/while instead of dotimesp to simplify debugging with gdb 2005-12-11 Sam Steingold * lispbibl.d (I_to_uint64, I_to_sint64) [!HAVE_FFI]: define for STREAM Reported by Lennart Staflin on MacOS X 10.3.9 2005-12-09 Sam Steingold * constobj.d (type_hashtable_size): use ASH instead of FLOOR, use upper case uniformly 2005-12-09 Sam Steingold * spvw.d (init_object_tab): handle "." specially to save time 2005-12-09 Sam Steingold * encoding.d (base64_range): declare "signed char" because we store -1 (triggers a bug on PowerPC where "char" = "unsigned char") Reported by Magnus Henoch 2005-12-09 Sam Steingold * m4/readline.m4 (CL_READLINE): check for 2005-12-09 Sam Steingold * encoding.d (CHARSET-TYPEP): use Sstring_length instead of Svector_length for the range string because Svector_length returns non-0 value for "" on AMD64-Linux 2005-12-08 Sam Steingold * misc.d (clisp_setenv): add a cast for C++ compilation 2005-12-08 Sam Steingold * encoding.d (base64_range): do not use a literal string for initialization because it allocates an extra element for 0 2005-12-07 Sam Steingold * clhs.lisp (documentation@package): prepend (impnotes-root) to the doc 2005-12-07 Sam Steingold * defs1.lisp (*system-package-list*): use "COMMON-LISP" instead of "LISP" 2005-12-06 Sam Steingold * m4/termcap.m4 (CL_TERMCAP): avoid "case x in (..) ;; esac" 1-line syntax as it is not understood by the Solaris /bin/sh 2005-12-06 Sam Steingold * clhs.lisp (open-url): new function (ensure-clhs-map, ensure-impnotes-map): use it 2005-12-05 Sam Steingold * m4/putenv.m4 (CL_PUTENV): check unsetenv() declared return value * misc.d (cat_env_var): value must be non-NULL (setenv_via_environ): extract from clisp_setenv() (clisp_setenv): use it to unset the variable 2005-12-05 Sam Steingold * m4/readline.m4 (CL_READLINE): pass filename_completion_function to CL_PROTO to avoid ugly messages 2005-12-05 Sam Steingold * m4/x11.m4: fix overlapping messages, do not use broken CL_SILENT * m4/general.m4 (CL_SILENT): remove broken macro 2005-12-05 Sam Steingold * makemake.in (HSDEFAULT): drop trailing slash (clisp-1.html): substitute @PLATFORM@ 2005-12-05 Sam Steingold * inspect.lisp (inspect-frontend@:http): use UNWIND-PROTECT to ensure that SOCK and SERVER are closed Suggested by Tomas Zellerin 2005-12-05 Sam Steingold * misc.d (clisp_setenv) [HAVE_UNSETENV]: use unsetenv 2005-12-04 Sam Steingold * spvw.d (main_actions): remove the legacy warning about RC file name (_clisprc -> .clisprc) transition 2005-12-04 Sam Steingold * m4/putenv.m4 (CL_PUTENV): check for unsetenv 2005-12-04 Sam Steingold * makemake.in (UNAME_R): strip everything after [^A-Za-z0-9.] 2005-12-04 Sam Steingold * m4/readline.m4: fix last patch that was totally broken 2005-12-04 Sam Steingold * version.sh: clisp 2.36 release 2005-12-04 Sam Steingold * spvw_circ.d (get_circ_mark, get_circ_unmark): use the appropriate flavor of dotimes Reported by Peter Van Eynde [on m68k] 2005-12-03 Sam Steingold * pseudofun.d (base64_mblen, base64_mbstowcs, base64_wcslen) (base64_wcstombs, base64_range): declare 2005-12-03 Sam Steingold * spvw_debug.d (nobject_out1): print encodings 2005-12-03 Sam Steingold * encoding.d (base64_range): fix for "-1" in table_base64 2005-12-02 Sam Steingold * defs1.lisp (encode-universal-time): revert part of the 2005-11-30 patch: no need to adjust the return value of DEFAULT-TIME-ZONE * time.d (seconds_west): fix a bug in the last patch: now_gm and now_local must be structures, not pointers, because gmtime and localtime return pointers to the same memory ares. also note that seconds_west is NOT the same as (mktime(&now_gm) - mktime(&now_local)) during DST 2005-12-01 Sam Steingold * spvw_debug.d (nobject_out1): output more information for streams 2005-11-30 Sam Steingold Fix a bug in ENCODE-UNIVERSAL-TIME that made it an imperfect inverse for DECODE-UNIVERSAL-TIME because it passed non-UT hours to DEFAULT-TIME-ZONE which required UT hours * time.d (seconds_west): new function, extracted from... (DEFAULT-TIME-ZONE): require 2 arguments: time in hours and UT-P call seconds_west() and then again if UT-P is false * subr.d (default_time_zone): requires 2 arguments * defs1.lisp (decode-universal-time, encode-universal-time): pass 2 arguments to DEFAULT-TIME-ZONE 2005-11-30 Sam Steingold * modules/i18n/gettext.c: include to define CHAR_MAX Reported by Magnus Henoch 2005-11-30 Sam Steingold fix bug#1369668: invalid slot :ALLOCATION causes segfault * record.d (ptr_to_slot): do not assume that slotinfo is valid, signal an error if it is not, accept slotname for error reporting (slot_using_class_up, SLOT-VALUE, SET-SLOT-VALUE, SLOT-BOUNDP) (SLOT-MAKUNBOUND, %SHARED-INITIALIZE, %REINITIALIZE-INSTANCE) (do_initialize_instance): pass slot to ptr_to_slot 2005-11-29 Sam Steingold * misc.d (cat_env_var) [woe32]: putenv("FOO=") removes FOO, [posix]: putenv("FOO") removes FOO (clisp_setenv) [WIN32_NATIVE]: ignore ERROR_ENVVAR_NOT_FOUND when passing NULL value to SetEnvironmentVariableA() 2005-11-28 Sam Steingold * init.lisp (loading-message): new function (load): use it * defs1.lisp (load-lpt-many, load-lpt-one): ditto (load-logical-pathname-translations): use search-file exclusively 2005-11-28 Sam Steingold * foreign1.lisp (convert-to-foreign-C): add (note-c-call-in): use it 2005-11-28 Sam Steingold * makemake.in (lispbibl.h): depend on unixconf.h 2005-11-28 Sam Steingold * clhs.lisp, clos-class1.lisp, clos-class3.lisp, clos-genfun2b.lisp: * clos-genfun3.lisp, clos-methcomb2.lisp, compiler.lisp, defmacro.lisp: * defs1.lisp, describe.lisp, format.lisp, type.lisp, condition.lisp: read-macro micro-optimizations 2005-11-26 Sam Steingold * stream.d (error_eof_p): new function; on woe32, WSAESHUTDOWN is signaled when the other end is shutdown, so take it to mean EOF (low_read_array_unbuffered_handle, low_fill_buffered_handle) (low_read_unbuffered_socket, low_listen_unbuffered_socket) (low_read_array_unbuffered_socket, low_fill_buffered_socket): use it Reported by Vasilis M. 2005-11-26 Sam Steingold * .gdbinit: ensure that all invocations get -E 1:1 2005-11-26 Sam Steingold New charset BASE64 * encoding.d (base64_mblen, base64_mbstowcs, base64_wcslen) (base64_wcstombs, base64_range, base64_table, table_base64) (base64_to_bytes, base64_to_chars): add (init_encodings_1): unit BASE64 * constsym.d (BASE64): add * clhs.lisp (*base64-table*, base64-encode, *table-base64*) (base64-decode): remove (open-http): use CHARSET:BASE64 instead of BASE64-ENCODE 2005-11-26 Sam Steingold * .gdbinit (run_test, run_all_tests): suite --> tests (typo) 2005-11-26 Sam Steingold * makemake.in (LN_HARD): set from @LN@, also set a Makefile variable with the same name so that the AFS users can change it at run time 2005-11-26 Sam Steingold * lispbibl.d (Snstring): export to clisp.h to make module i18n build --without-unicode 2005-11-25 Sam Steingold * modules/syscalls/posix.lisp: set documentation sys::process-id to point to impnotes#process-id 2005-11-23 Sam Steingold * makemake.in (check-doc): new target to check Symbol-Table.text 2005-11-23 Sam Steingold * clhs.lisp (base64-encode, base64-decode): stolen from CLLIB (http-proxy): do not separate username with password (open-http): send "Authorization" when proxy user:pass is specified 2005-11-22 Sam Steingold fix bug#1364177: infinite loop in regexp-split * modules/regexp/regexp.lisp (regexp-split): avoid an infinite loop by signaling an error when the pattern matches an empty string 2005-11-22 Sam Steingold * init.lisp (*http-proxy*): export * clhs.lisp (*http-proxy*): new variable (http-proxy): new function (open-http): use it (ensure-impnotes-map): handle errors in Symbol-Table.text 2005-11-22 Sam Steingold * modules/syscalls/posix.lisp (SOCKET-SERVICE-PORT): avoid package lock warnings 2005-11-22 Sam Steingold * modules/i18n/i18n.lisp (i18n:locale-conv, i18n:set-locale) (i18n:language-information): add impnotes documentation 2005-11-22 Sam Steingold * makemake.in (.SHELL): add on all *bsd* systems 2005-11-21 Sam Steingold fix bug#1359066: :ALLOCATION kind not extensible * clos-class3.lisp (defclass): permit user-defined :allocation (checked-compute-slots): require non-NIL location only from slots with standard :ALLOCATION (:CLASS or :INSTANCE) 2005-11-21 Sam Steingold * configure: suggest setting CC when printing libsigsegv building recommendations 2005-11-21 Sam Steingold * m4/readline.m4 (CL_READLINE): fail when --with-readline was specified, but a modern readline cannot be found 2005-11-21 Sam Steingold * foreign1.lisp (DEF-C-CONST): rewrote (note-c-const): remove (c-const-value): add 2005-11-20 Sam Steingold * clhs.lisp: set package/impnotes documentation for packages EXT, CLOS, AFFI 2005-11-19 Sam Steingold * clhs.lisp (ensure-clhs-map, ensure-impnotes-map): use a separate variable to record whether the map is good 2005-11-19 Sam Steingold * describe.lisp (launch-doc): launch the browser only on top-level 2005-11-19 Sam Steingold * clhs.lisp, exporting.lisp: document package EXPORTING in exporting.lisp, not in clhs.lisp 2005-11-19 Sam Steingold * clhs.lisp (impnotes-map-source) [woe32]: #\\ is also a path separator 2005-11-19 Sam Steingold * foreign1.lisp (DEF-C-CONST): call PREPARE-MODULE before the first reference to *name*; do not evaluate NOTE-C-CONST at macroexpansion time (note-c-const): do not call PREPARE-MODULE here 2005-11-18 Sam Steingold * modules/syscalls/calls.c (POSIX:STRING-TIME): implement * modules/syscalls/posix.lisp (STRING-TIME) [unix]: exported * modules/syscalls/configure.in (strptime, strftime, mktime): check 2005-11-18 Sam Steingold * modules/bindings/win32/win32.lisp (with-handle): declare the HANDLE variable READ-ONLY (MessageBoxA): new function 2005-11-18 Sam Steingold * condition.lisp (find-subclasses-of-type): add (make-condition): use it to enable TYPE arguments that do not name a specific class * utils/clispload.lsp (*expected-failures*): remove MAKE-CONDITION.3 and MAKE-CONDITION.4 2005-11-17 Sam Steingold * defs1.lisp (*system-package-list*): remove "CUSTOM": the variables and functions in this package are for the users to change 2005-11-17 Sam Steingold DESCRIBE can now point the browser to impnotes * package.d ((SETF PACKAGE-DOCUMENTATION)): package documentation is either a doc-string or a list (doc-string impnotes-id) * documentation.lisp (documentation): ditto * makemake.in (DATA_FILES): add Symbol-Table.text * init.lisp (clhs-root): moved from EXT to CUSTOM to avoid locking (*impnotes-root-default*, impnotes-root): export from CUSTOM * describe.lisp (launch-doc): new function (describe): use it for symbols and packages for CLHS and impnotes * clhs.lisp (open-http): catch connection errors when :IF-DOES-NOT-EXIST is not :ERROR (ensure-clhs-map): reset clhs-map-source early to avoid re-running again and again after a failure (get-string-map, ensure-impnotes-map): add (documentation@symbol/clhs): call ENSURE-CLHS-MAP only for symbols in the COMMON-LISP package (documentation@symbol/impnotes, documentation@package/impnotes): add set package/impnotes documentation for packages GRAY, CL-USER, CS-CL, CS-CL-USER, SCREEN, SOCKET, GSTREAM, I18N, FFI, CHARSET, EXPORTING * cfgunix.lisp, cfgsunux.lisp, cfgwin32.lisp (*impnotes-root-default*): defvar (impnotes-root): defun * modules/berkeley-db/dbi.lisp: add impnotes doc for package BDB * modules/dirkey/dirkey1.lisp: add impnotes doc for package LDAP * modules/fastcgi/fastcgi.lisp: add impnotes doc for package FASTCGI * modules/matlab/matlab.lisp: add impnotes doc for package MATLAB * modules/netica/netica.lisp: add impnotes doc for package NETICA * modules/oracle/oracle.lisp: add impnotes doc for package ORACLE * modules/pari/pari.lisp: add impnotes doc for package PARI * modules/pcre/pcre.lisp: add impnotes doc for package PCRE * modules/postgresql/postgresql.lisp: add impnotes doc for package SQL * modules/rawsock/sock.lisp: add impnotes doc for package RAWSOCK * modules/readline/readline.lisp: add impnotes doc for package READLINE * modules/regexp/regexp.lisp: add impnotes doc for package REGEXP * modules/syscalls/posix.lisp: add impnotes doc for package POSIX * modules/wildcard/wildcard.lisp: add impnotes doc for package WILDCARD * modules/zlib/zlib.lisp: add impnotes doc for package ZLIB 2005-11-17 Sam Steingold * makemake.in (.SHELL) [netbsd]: new target to ensure make uses $(SHELL) 2005-11-17 Sam Steingold * modules/syscalls/configure.in: check for * modules/syscalls/calls.c: include before to avoid warnings on FreeBSD 2005-11-17 Sam Steingold New declaration EXT:NOTSPECIAL undoes the effects of DEFVAR et al * compiler.lisp (c-PROCLAIM): handle NOTSPECIAL declarations * control.d (PROCLAIM): ditto * constsym.d (EXT:NOTSPECIAL): add * init.lisp (EXT:NOTSPECIAL): export 2005-11-16 Sam Steingold New function EXT:OPEN-HTTP and macro EXT:WITH-HTTP-INPUT. Function EXT:CLHS is now deprecated in favor of DESCRIBE. * clhs.lisp (*browsers*) [cygwin macos]: add :DEFAULT browser (*clhs-table*): remove (browse-url): do not handle NIL browser specially; still need to special-case :DEFAULT on woe32 (with-http-input): new macro (open-http, get-clhs-map, ensure-clhs-map): new functions (documentation@symbol/clhs): new method (clhs): use them, deprecate * describe.lisp (describe-object@symbol): when CLHS doc is available, print it or launch the browser (depending on *browser*) * makemake.in (DATA_FILES, DATA_FILES_TOP_PATH): remove clhs.txt 2005-11-16 Sam Steingold * macros2.lisp (with-open-stream): close VAR only when it is not NIL 2005-11-15 Sam Steingold * modules/clx/new-clx/clx.f (XLIB:CHANGE-KEYBOARD-MAPPING) (XLIB:KEYCODE->CHARACTER): fix C++ compilation 2005-11-15 Sam Steingold * modules/rawsock/rawsock.c (check_socket_domain) (check_socket_protocol): add some woe32 constants 2005-11-14 Sam Steingold * compiler.lisp (traverse-anode): use make-array/dotimes instead of coerce/mapcap/list/coerce (avoids some consing) 2005-11-14 Sam Steingold * subtypep.lisp (STANDARD-OBJECT): fix handling of (AND ...) 2005-11-14 Sam Steingold * array.d (fill_initial_element): extract from make_storagevector() (ADJUST-ARRAY): call if for strings when the data vector is not created using make_storagevector() to ensure that the :INITIAL-ELEMENT argument is not ignored 2005-11-14 Sam Steingold fix bug#1356695: read labels are not resolved in #2A * io.d (ARRAY-READER): disentangle references in generic arrays Reported by Yaroslav Kavenchuk 2005-11-12 Sam Steingold * modules/rawsock/configure.in: include before when checking for struct iovec so that size_t is defined 2005-11-11 Sam Steingold * modules/rawsock/rawsock.c (GETNAMEINFO, GETADDRINFO): support woe32: (error_missing): new function (getnameinfo_t, getaddrinfo_t, freeaddrinfo_t): new types (my_getnameinfo, my_getaddrinfo, my_freeaddrinfo): new functions (getnameinfo_f, getaddrinfo_f, freeaddrinfo_f): new variables (module__rawsock__init_function_2): init them 2005-11-11 Sam Steingold * modules/syscalls/calls.c (module__syscalls__init_function_2): moved ole32 and kernel32 here (not static anymore) 2005-11-11 Sam Steingold * modules/syscalls/posix.lisp (service): do not check type of PROTOCOL 2005-11-10 Sam Steingold * modules/rawsock/rawsock.c [win32]: include for getaddrinfo, freeaddrinfo, getnameinfo (SETSOCKOPT_ARG_T) [win32]: define to char* (unix: from CL_TCPCONN) * modules/rawsock/configure.in, modules/syscalls/configure.in: use CL_SOCKET for solaris 2005-11-09 Sam Steingold SOCKET:SOCKET-SERVICE-PORT is now deprecated in favor of OS:SERVICE * modules/syscalls/calls.c (POSIX:SERVICE): implement * modules/syscalls/posix.lisp (service): new structure * beossock.lisp: remove * constsym.d, subr.d (socket_service_port): remove * init.lisp (socket-service-port): remove; do not load beossock * socket.d (socket-service-port): remove * makemake.in (LPARTS): remove beossock 2005-11-09 Sam Steingold * modules/syscalls/posix.lisp (group-info): new structure * modules/syscalls/calls.c (group-info): implement (user-info): rename from user-data 2005-11-09 Sam Steingold * makemake.in (encflags): add -Emisc 1:1 to avoid encoding errors 2005-11-08 Sam Steingold * modules/syscalls/calls.c (passwd_to_lisp): replaces PASSWD_TO_STACK (USER-DATA): use passwd_to_lisp() instead of PASSWD_TO_STACK() user argument is now optional, as documented 2005-11-08 Sam Steingold * defpackage.lisp (defpackage): :SHADOWING-IMPORT-FROM, :USE, :IMPORT-FROM accept package designators, not just package names 2005-11-08 Sam Steingold * m4/test.m4 (CL_TEST_NT): TEST_NT defaults to "no" 2005-11-07 Sam Steingold * makemake.in (SACLA_CLISP): run in ANSI mode 2005-11-07 Sam Steingold * loop.lisp (expand-loop/compatible-p): handle "ing" keyword variants 2005-11-07 Sam Steingold * stream.d (parse_sock_list): handle socket servers as documented Reported by Johan Liseborn 2005-11-01 Sam Steingold * m4/readline.m4 (CL_READLINE): check for rl_gnu_readline_p and refuse to use readline if it is not defined - this should take care of the OSX broken readline (see unix/PLATFORMS) * modules/readline/configure.in: do not check rl_gnu_readline_p here 2005-11-01 Sam Steingold * makemake.in (CHECK_DEPS): add check-script (check-script): new target 2005-11-01 Sam Steingold * m4/test.m4: stricter test to catch *BSD sh/test breakage 2005-10-31 Sam Steingold * spvw_debug.d (nobject_out1): handle Foreign-Address only when DYNAMIC_FFI is defined 2005-10-31 Sam Steingold * spvw.d (main_actions): when argv_execute_file=="-", use the value of *STANDARD-INPUT*, not the symbol itself (bug#1344222) 2005-10-30 Sam Steingold ensure that make uses the same shell that configure tests * configure.in: write CONFIG_SHELL into makemake * makemake.in: set SHELL to CONFIG_SHELL 2005-10-29 Sam Steingold * package.d (get_current_package): issue a CERROR when resetting the package * lispbibl.d (get_current_package): declare maygc * io.d (write_sstring_case, pr_symbol, pr_like_symbol): save objects around get_current_package() 2005-10-28 Sam Steingold * stream.d (publish_host_data): accept raw sockets (STREAM-HANDLES): replaces SOCKET-STREAM-HANDLES, returns both input and output handles as two values * subr.d, constsym.d (stream_handles): ditto * init.lisp (stream-handles): always export it 2005-10-27 Sam Steingold * spvw_typealloc.d (reallocate_small_string) [DEBUG_SPVW]: use varobject_bytelength() instead of objsize() to compile with SPVW_PURE * spvw_page.d (oint_addr_relevant_len): define to 32 by default * lispbibl.d (oint_type_* &c) [AMD64]: define the same way on all platforms: works on BSD* with -DNO_TRIVIALMAP -DNO_MULTIMAP_SHM -DNO_MULTIMAP_FILE -DNO_SINGLEMAP 2005-10-25 Yaroslav Kavenchuk Sam Steingold * makemake.in (NEED_RECONFIGURE) [!TEST_NT]: fix a typo 2005-10-25 Sam Steingold * .gdbinit (OS_error, OS_file_error, OS_filestream_error): break 2005-10-25 Sam Steingold * modules/rawsock/configure.in: check "struct iovec" * modules/rawsock/rawsock.c (struct iovec) [!HAVE_STRUCT_IOVEC]: define (read, write) [win32]: use recv/send instead (readv) [!HAVE_READV]: implement (writev) [!HAVE_WRITEV]: implement (SOCKETPAIR) [!HAVE_SOCKETPAIR]: implement (SOCK-READ, SOCK-WRITE): use readv and writev even when the OS does not offer them * modules/rawsock/sock.lisp (describe-object@sockaddr): new method, calls getnameinfo 2005-10-24 Sam Steingold * modules/rawsock/rawsock.c (check_socket_protocol): add IPPROTO-RSVP IPPROTO-GRE IPPROTO-PIM IPPROTO-COMP 2005-10-24 Sam Steingold * modules/postgresql/postgresql.lisp, modules/readline/readline.lisp: do not #include - it is done automatically 2005-10-23 Sam Steingold * modules/clx/new-clx/clx.f (XLIB:CHANGE-KEYBOARD-MAPPING) (XLIB:SHAPE-EXTENTS, XLIB:SHAPE-RECTANGLES, XLIB:DEFAULT-KEYSYM-INDEX) (XLIB:KEYBOARD-MAPPING, XLIB:KEYSYM-NAME, XLIB:KEYCODE->CHARACTER): implement * modules/clx/new-clx/clx.lisp (gcontext): add a %timestamp slot for the sake of clue/clio 2005-10-22 Sam Steingold * screen.lisp (*new-window*, read-keyboard-char): remove undocumented and unused symbols 2005-10-22 Sam Steingold avoid configure errors on woe32 * m4/eloop.m4: check that conftest exists before running it * m4/poll.m4: if AC_CHECK_FUNC does not find poll, cl_cv_func_poll will not be set 2005-10-21 Sam Steingold * modules/rawsock/rawsock.c (SOCK-LISTEN): backlog is optional and defaults to SOMAXCONN 2005-10-21 Sam Steingold fix user-defined HT tests * lispbibl.d (hashtable_length): fix the wrong value * hashtabl.d (rehash): fix user-defined ht-test handling (hash_prepare_store): fix `cacheable' logic 2005-10-20 Sam Steingold * modules/berkeley-db/bdb.c: avoid void* pointer arithmetics 2005-10-20 Sam Steingold * modules/rawsock/rawsock.c (RAWSOCK:SENDMSG): call fill_msghdr() (NETWORK, SOCK-READ, SOCK-WRITE): add casts to pacify G++ (RAWSOCK:GETADDRINFO): fix argument order and stack cleanup 2005-10-20 Sam Steingold * hashtabl.d (hash_store): user-defined hash tables do not have to be rehashed due to GC (hash_prepare_store): fix a GC-safety bug: hashcode_raw() may trigger GC for user-defined hash tables * spvw_debug (TheHashtable_) [DEBUG_SPVW]: add 2005-10-20 Sam Steingold * modules/rawsock/rawsock.c (check_socket_type): default=0 for the sake of getaddrinfo() (RAWSOCK:GETADDRINFO): ai_canonname may be NULL (RAWSOCK:RECVMSG, RAWSOCK:SENDMSG): fix typo in the conditionals, fix some typos; accept :START and :END to conform with other SEND/RECV functions 2005-10-20 Sam Steingold * modules/readline/readline.lisp: remove "RL_" prefix from the Lisp names of the STATE-* constants 2005-10-20 Sam Steingold * foreign1.lisp (to-c-name): downcase all-upper-case names only in case-insensitive packages so that (def-c-const ENOENT) will work in modules/bindings/glibc/linux.lisp (def-c-const): simplified :DOCUMENTATION handling, fix :TYPE handling, issue a warning when the constant cannot be defined, tweak f-name case 2005-10-20 Sam Steingold * lispbibl.d (WIDE_HARD): define oint_data_* to oint_addr_* when they are the same, for clarity 2005-10-20 Sam Steingold * modules/rawsock/rawsock.c (parse_buffer): start is uintL, not uintV (parse_buffer_arg, check_struct_data, fill_iovec, fill_msghdr): avoid void* pointer arithmetics (check_addrinfo_flags): bitmasks=both (GETADDRINFO): typo: value1, not values1 2005-10-20 Sam Steingold * modules/clx/new-clx/clx.f (XLIB:ACCESS-HOSTS, lisp_to_XHostAddress): check FamilyInternet6 in addition to HAVE_IPV6 2005-10-20 Sam Steingold * exporting.lisp (def-c-const): add * foreign1.lisp (def-c-const, note-c-const): add (ffi-module): add slot CONSTANT-TABLE (finalize-coutput-file): output constant map functions * modules/bindings/glibc/linux.lisp, modules/readline/readline.lisp: * modules/wildcard/wildcard.lisp, modules/pari/pari.lisp: use DEF-C-CONST instead of DEFCONSTANT with explicit values 2005-10-20 Sam Steingold * lispbibl.d (oint_type_len): #error when undefined 2005-10-19 Sam Steingold * execname.c (MAXPATHLEN): define when it is not defined Reported by Soeren D. Schulze 2005-10-19 Sam Steingold * modules/rawsock/configure.in (getnameinfo, getaddrinfo) (freeaddrinfo): check * modules/rawsock/sock.lisp (msghdr): remove (getnameinfo, getaddrinfo): export (message, addrinfo): add (defstruct): import from EXPORTING * modules/rawsock/rawsock.c (GETNAMEINFO, GETADDRINFO): implement (RECVMSG, SENDMSG): use MESSAGE instead of MSGHDR 2005-10-19 Sam Steingold * modules/clx/new-clx/clx.lisp (undefined): do not use package prefix 2005-10-19 Sam Steingold * foreign.d: uniform use of articles in messages 2005-10-19 Sam Steingold * m4/test.m4 (CL_TEST_NT): check that test(1) can serve as make(1) * configure.in: call CL_TEST_NT * makemake.in (anymodule): use "test -nt" only when supported 2005-10-17 Sam Steingold * modules/clx/new-clx/clx.lisp (DRAW-GLYPH): undefined; use MACROLET instead of EVAL-WHEN+DEFMACRO 2005-10-17 Sam Steingold * modules/readline/readline.lisp (readline-reader): return NIL on EOF (resize-terminal, set-screen-size, get-screen-size): add (readline-state): new variable together with its constants * modules/readline/configure.in: check everything forgotten by Tom 2005-10-17 Sam Steingold * complete.lisp (completion): define even when not on UNIX 2005-10-11 Tomas Zellerin * modules/readline/readline.lisp: more ffi functions and variables; package, some functions and variables documented; (*readline-input-stream*): new stream * modules/readline/configure.in: all declared functions tested * modules/readline/test.tst: add functionality tests 2005-10-17 Sam Steingold * spvw_sigterm.d (install_sigterm_handler): ignore SIGTTOU to avoid being stopped on a terminating signal when running in the background 2005-10-17 Sam Steingold * modules/rawsock/configure.in: check for msghdr.msg_flags when sys/socket.h is present * modules/rawsock/rawsock.c (RECVMSG, SENDMSG): implement only when the system implementation is POSIX, i.e., has msg_flags 2005-10-17 Sam Steingold * lispbibl.d (STACK_to_mv): export to clisp.h * modules/syscalls/calls.c (hostent_to_lisp): new public function converted from hostent_to_stack() (RESOLVE-HOST-IPADDR): update to use hostent_to_lisp() * modules/clx/new-clx/configure.in: check for socket headers * modules/clx/new-clx/clx.lisp (ACCESS-CONTROL): new defsetf mark non-implemented functions with compiler macros * modules/clx/new-clx/clx.f (POINTER-CONTROL): fix STACK cleanup (check_on_off): YES->ON (MODIFIER-MAPPING): C arrays are base 0, not base 1 (SET-MODIFIER-MAPPING, KEYSYM->KEYCODES, ACCESS-HOSTS) (ADD-ACCESS-HOST, REMOVE-ACCESS-HOST): implement (SET-ACCESS-CONTROL): fix argument order * modules/clx/new-clx/test.tst: add 2005-10-16 Sam Steingold * spvw_sigwinch.d: rl_resize_terminal() should be called only if readline has been already initialized (sigwinch_handler) [HAVE_READLINE]: call rl_resize_terminal() (update_linelength) [HAVE_READLINE]: do not call rl_resize_terminal() 2005-10-16 Sam Steingold * configure (--version): call src/configure instead of sourcing version.sh which is not included in the source distribution Reported by T. Kurt Bond 2005-10-14 Sam Steingold * spvw_sigwinch.d (update_linelength) [HAVE_READLINE]: call rl_resize_terminal() 2005-10-15 Sam Steingold * modules/clx/new-clx/clx.f (CHANGE-KEYBOARD-CONTROL): implement 2005-10-14 Sam Steingold fix bug#1310753: Gray streams ==> stack overflow and segfault * stream.d (read_char): fix recursion: cannot assume that the constituent streams of constructed streams are built-in 2005-10-14 Sam Steingold C-level CLOSE functions accept abort argument to ensure that auto-close (in GC and quit) cannot fail * lispbibl.d (builtin_stream_close): accept abort * stream.d (close_synonym, close_str_in, close_buff_in, close_buff_out) (close_generic, strm_channel_extrafields_t.low_close, low_close_handle) (close_ichannel, close_ochannel, close_buffered, low_close_console) (close_window, term_nlunraw, end_term, low_close_socket) (low_close_socket_nop, builtin_stream_close): ditto (close_some_files): pass abort=1 to builtin_stream_close() (BUILT-IN-STREAM-CLOSE): pass :ABORT to builtin_stream_close() (low_flush_buffered_handle, make_buffered_stream, make_file_stream): pass abort=0 to builtin_stream_close() * debug.d (LOAD): ditto * misc.d (MACHINE-TYPE, MACHINE-VERSION): ditto * pathname.d (DELETE-FILE): ditto * spvw_memfile.d (WRITE, savemem): ditto * modules/syscalls/calls.c (copy_attributes_and_close, copy_file_low) (copy_one_file): ditto 2005-10-10 Sam Steingold * m4/termcap.m4 (CL_TERMCAP): accept --with-termcap-prefix * makemake.in (INCTERMCAP, LIBTERMCAP): add to XCFLAGS & XLDFLAGS allow readline on mingw 2005-10-14 Yaroslav Kavenchuk Sam Steingold * modules/bindings/win32/win32.lisp (GetConsoleScreenBufferInfo) (GetConsoleWindow): add 2005-10-12 T. Kurt Bond * lispbibl.d (PC386): also define on FreeBSD, NetBSD, and OpenBSD 2005-10-12 Sam Steingold * modules/rawsock/rawsock.c (check_socket_protocol): no prefix, accept IPPROTO-* in addition to ETH-P-* (get_socket_protocol): new function, use getprotobyname() when it is available in addition to check_socket_protocol() (SOCKET, SOCKETPAIR): use get_socket_protocol() 2005-10-12 Sam Steingold * lispbibl.d (Atype_T): export to clisp.h * modules/rawsock/configure.in: check , readv, writev, sizeof ssize_t and size_t * modules/rawsock/rawsock.c (SOCK-READ, SOCK-WRITE) [HAVE_SYS_UIO_H]: call readv/writev when buffer is a vector of vectors (check_iovec_arg, fill_iovec) [HAVE_SYS_UIO_H]: new functions 2005-10-11 Sam Steingold * error.d (check_vector_replacement): new function * encoding.d (CONVERT-STRING-FROM-BYTES): use it instead of fehler_vector() * array.d (VECTOR-ENDTEST, VECTOR-FE-INIT, VECTOR-LENGTH) (VECTOR-INIT-START, VECTOR-FE-INIT-END): ditto * lispbibl.d (check_vector_replacement, check_vector): export 2005-10-11 Sam Steingold * makemake.in (anymodule): call configure not just when config.status is not present, but also when configure is newer than config.status * modules/dirkey/Makefile.in, modules/i18n/Makefile.in: * modules/pari/Makefile.in, modules/pcre/Makefile.in: * modules/postgresql/Makefile.in, modules/rawsock/Makefile.in: * modules/readline/Makefile.in, modules/regexp/Makefile.in: * modules/syscalls/Makefile.in, modules/wildcard/Makefile.in: * modules/zlib/Makefile.in, modules/berkeley-db/Makefile.in: (config.status, config.h, Makefile): remove targets: config.status failed with error: `CFLAGS' was not set in the previous run This is a partial reversal of the 2005-10-07 patch (dependency of C files on config.h are kept). 2005-10-11 Sam Steingold * modules/rawsock/configure.in: check getnetent* * modules/rawsock/rawsock.c (netent_to_network, NETWORK): add * modules/rawsock/sock.lisp (network): new defstruct 2005-10-11 Sam Steingold fix bug#1323941: when killed, clisp does not execute cleanup forms * spvw.d (main): call install_sigterm_handler(), include spvw_sigterm.c * spvw_sigterm.c: new file * makemake.in (SPVW_INCLUDES): add spvw_sigterm * po/Makefile.devel (DSOURCES): ditto 2005-10-11 Sam Steingold * modules/rawsock/configure.in: check and getproto* do not check poll() and select(), we already have SOCKET-STATUS * modules/rawsock/rawsock.c (protoent_to_protocol, PROTOCOL): add * modules/rawsock/sock.lisp (protocol): new defstruct 2005-10-10 Sam Steingold * modules/syscalls/calls.c (FILE-PROPERTIES): use my_malloc() instead of malloc() and add begin_system_call()/end_system_call() 2005-10-10 Sam Steingold * lispbibl.d (handle_fault_range, PROT_READ_WRITE, PROT_READ): exported to clisp.h * modules/berkeley-db/bdb.c (fill_dbt, dbt_to_object): call it before memcpy() on lisp object data * modules/pcre/cpcre.c (fullinfo_firsttable): ditto * modules/rawsock/rawsock.c (parse_buffer_arg, check_struct_data): ditto 2005-10-10 Sam Steingold * stream.d (handle_set): do not call stream_isbuffered on non-streams 2005-10-09 Sam Steingold * modules/netica/wrap.lisp (*verbose*): init to NIL to avoid saving a closed terminal stream into the image (like with *sql-log*) (net-info, node-info): accept :OUT 2005-10-09 Sam Steingold make sure that SOCKET-STATUS handles buffered streams properly * stream.d (handle_set): accept non_empty_buffers_p (handle_isset): call listen_char() and listen_byte() on buffered input streams even when FD_ISSET is false (SOCKET-STATUS): pass non_empty_buffers_p to handle_set() and reset timeout to 0 when non_empty_buffers_p is true (stream_isbuffered_low): derived from stream_isbuffered() to return the amount of data available in the input buffer (stream_isbuffered): call stream_isbuffered_low() 2005-10-08 Sam Steingold * modules/clx/new-clx/clx.f (XLIB:SET-DISPLAY-ERROR-HANDLER): fix argument order Reported by Magnus Henoch 2005-10-07 Sam Steingold * modules/dirkey/Makefile.in, modules/i18n/Makefile.in: * modules/pari/Makefile.in, modules/pcre/Makefile.in: * modules/postgresql/Makefile.in, modules/rawsock/Makefile.in: * modules/readline/Makefile.in, modules/regexp/Makefile.in: * modules/syscalls/Makefile.in, modules/wildcard/Makefile.in: * modules/zlib/Makefile.in, modules/berkeley-db/Makefile.in: (config.status, config.h, Makefile): new targets: no need to "rm -rf" module dir when configure changes 2005-10-07 Sam Steingold * modules/syscalls/calls.c (my_utime): use convert_time_to_universal() (my_utime) [WIN32_NATIVE]: a separate implementation to avoid the woe32 DST bugs (http://www.codeproject.com/datetime/dstbugs.asp) Reported by Yaroslav Kavenchuk (find_first_file, get_file_time) [WIN32_NATIVE]: new functions (SET-FILE-STAT): use get_file_time() and convert_time_to_universal() (FILE-INFO): accept an optional argument ALL-P, use find_first_file() 2005-10-06 Sam Steingold * foreign.d (object_handle, object_address): name is an object (update_library, validate_fpointer): rework to avoid GC safety issues 2005-10-06 Sam Steingold * modules/postgresql/configure.in: check all functions interfaced to do not abort when PQserverVersion() is not found * modules/postgresql/postgresql.lisp: include & 2005-10-06 Sam Steingold * modules/i18n/gettext.c (SET-TEXTDOMAINDIR): fix a GC-safety bug (LOCALE-CONV): p_sep_by_space, n_sep_by_space, p_sign_posn, n_sign_posn, int_p_sep_by_space, int_n_sep_by_space, int_p_sign_posn, int_n_sign_posn are integers, not booleans 2005-10-06 Sam Steingold * foreign.d (update_library): fix a GC-safety bug 2005-10-06 Sam Steingold * misc.d (MODULE-INFO): fix a GC-safety bug * modules/berkeley-db/test.tst, modules/i18n/test.tst: * modules/pcre/test.tst, modules/rawsock/test.tst: * modules/regexp/test.tst, modules/syscalls/test.tst: call MODULE-INFO 2005-10-06 Sam Steingold * modules/rawsock/rawsock.c (SOCK-LISTEN): rename from LISTEN * modules/rawsock/sock.lisp (LISTEN): do not shadow the CL symbol (SOCK-LISTEN): export 2005-10-05 Sam Steingold * modules/readline/configure.in: abort when readline is not used test for all functions and variables interfaced to * modules/readline/test.tst: new file * modules/readline/readline.lisp: include config.h (*foreign-guard*) [compilation]: set to T (add-defun): fix "name" argument allocation (readline-name): fix :ALLOC * modules/postgresql/configure.in: check for PQinitSSL() * modules/postgresql/postgresql.lisp: interface to PQinitSSL() (*foreign-guard*) [compilation]: set to T * modules/bindings/win32/win32.lisp: interface to longhorn functions GetProcessId(), GetProcessIdOfThread(), GetThreadId() (*foreign-guard*) [compilation]: set to T * modules/bindings/win32/test.tst: enabled tests for longhorn functions 2005-10-05 Sam Steingold * modules/i18n/i18n.lisp (locale-conv-p): export * modules/i18n/test.tst: new file 2005-10-05 Sam Steingold * stream.d (init_streamvars) [HAVE_DECL_RL_READLINE_NAME]: init rl_readline_name * m4/readline.m4 (CL_READLINE): fix the rl_readline_name test 2005-10-05 Sam Steingold FFI modules can now take advantage of autoconf feature detection. * foreign.d (LOOKUP-FOREIGN-VARIABLE, LOOKUP-FOREIGN-FUNCTION) (object_handle): signal a continuable error when the foreign object cannot be found (update_library, object_address): update for the changes in object_handle() (FOREIGN-LIBRARY-VARIABLE, FOREIGN-LIBRARY-FUNCTION): return NIL when the foreign object cannot be found and the CONTINUE restart was invoked * foreign1.lisp (*foreign-guard*): new variable (finalize-coutput-file): when it is non-NIL, guard the forms with CPP #if conditionals (def-c-var, def-call-out): do nothing when the foreign object cannot be found and the CONTINUE restart was invoked 2005-10-03 Sam Steingold functions that take a BUFFER, also take :START and :END * modules/rawsock/rawsock.c (parse_buffer_arg): check STACK_0, STACK_1: START & END (RECV, RECVFROM, SOCK-READ, SEND, SENDTO, SOCK-WRITE) (IPCSUM, ICMPCSUM, TCPCSUM, UDPCSUM): accept :START & :END 2005-10-03 Sam Steingold * configure.in: $ac_cv_use_readline is tested in CL_READLINE already, do not test it here too * m4/readline.m4 (CL_READLINE): check for rl_readline_name 2005-10-02 Sam Steingold * stream.d (handle_isset): do not call listen_byte() on raw sockets Reported by Don Cohen 2005-10-02 Sam Steingold foreign.d data walkers is now reentrant (no static data) * lispbibl.d (converter_malloc_t): typedef & export to clisp.h (convert_to_foreign_mallocing, convert_to_foreign_nomalloc): remove prototypes (convert_to_foreign): prototype * foreign.d (foreign_layout): new structure type (data_size, data_alignment, data_splittable): remove statics (foreign_layout, convert_to_foreign_needs): accept a pointer to struct foreign_layout (foreign_size): new inline (%SIZEOF, %BITSIZEOF, convert_from_foreign, LOOKUP-FOREIGN-VARIABLE) (FOREIGN-VARIABLE, SET-FOREIGN-VALUE, SLOT, DEREF, CAST, OFFSET) (EXEC-ON-STACK, FOREIGN-ALLOCATE, FOREIGN-CALL-OUT, do_va_arg, callback) (FOREIGN-LIBRARY-VARIABLE): update for the new foreign_layout() (walk_foreign): new structure type (walk_foreign_null_terminates, walk_foreign_pre_hook) (walk_foreign_post_hook, walk_foreign_function_hook): remove statics (walk_foreign_pointers, free_walk_pre, free_walk_post) (free_walk_function): accept a pointer to struct walk_foreign (free_foreign): update for the new walk_foreign_pointers() (walk_lisp): new structure type (walk_lisp_nil_terminates, walk_lisp_pre_hook, walk_lisp_post_hook) (walk_lisp_function_hook, walk_counter, walk_alignment): remove statics (walk_lisp_pointers, count_walk_pre, count_walk_post): accept a pointer to struct walk_lisp (converter_malloc): remove a static (convert_to_foreign): accept a converter_malloc_t (convert_to_foreign_allocaing, convert_to_foreign_mallocing) (convert_to_foreign_nomalloc): remove (libc_handle): remove old unused junk 2005-10-02 Sam Steingold * pathname.d (PARSE-NAMESTRING) [cygwin]: fix GC-safety bug 2005-10-01 Sam Steingold GC-safety bug: validate fpointers lazily, not eagerly * foreign.d (foreign_address): fix GCTRIGGER_IF statement (free_foreign_callin): call free_callback() only on valid pointers (check_faddress_valid): new function (SET-FOREIGN-POINTER, FOREIGN-FUNCTION, convert_to_foreign) (LOOKUP-FOREIGN-VARIABLE, FOREIGN-VARIABLE, FOREIGN-VALUE) (SET-FOREIGN-VALUE, DEREF, READ-MEMORY-AS, WRITE-MEMORY-AS) (FOREIGN-FREE, FOREIGN-CALL-OUT): call it (validate_fpointer): local, maygc * io.d (pr_orecord): use Faddress_value, not Fpointer_value_no_check * lispbibl.d (Fpointer_value, Faddress_value): do not validate the argument (check_faddress_valid): declare * misc.d (CODE-ADDRESS-OF): explicitly validate faddress 2005-10-02 Sam Steingold * stream.d (SOCKET-STREAM-SHUTDOWN): handle is uint, not uint32 (SOCKET-CONNECT, sock_opt_int, SOCKET-OPTIONS): use check_uint() instead of fehler_uint() 2005-09-30 Sam Steingold clisp -v -v sets *LOAD-ECHO* to T * constsym.d (load_echo): add * spvw.d (init_symbol_values): init *load-echo* to NIL (main_actions): when argv_verbose > 3, set *load-echo* to T 2005-09-30 Sam Steingold * foreign.d (open_library): quite a few platforms do not define RTLD_DEFAULT, but accept NULL as a library handle to mean the same (e.g., WIN32, FreeBSD, MacOSX), so we always accept :DEFAULT 2005-09-29 Sam Steingold enable saving callbacks into memory images * foreign.d (convert_function_to_foreign): when the Ffunction found in O(foreign_callin_table) is invalid, renew it Reported by Tomas Zellerin 2005-09-30 Sam Steingold * makemake.in (BASE_MODULES): fix last patch: add "readline" only when libreadline is actually available 2005-09-29 Sam Steingold * Makefile.devel (MODULES): add readline * makemake.in (BASE_MODULES): add readline when both readline and FFI are present * modules/readline: new module directory 2005-09-29 Sam Steingold * stream.d (get_standard_output_file_stream) (get_standard_error_file_stream): return a synonym stream instead of a terminal stream for the benefit of dribble 2005-09-29 Sam Steingold * spvw_debug.d (nobject_out1): handle Foreign-Address 2005-09-28 Sam Steingold * modules/clx/new-clx/demos/sokoban.lisp (sokoban-usage): rename from USAGE to avoid a conflict with POSIX * modules/clx/new-clx/clx.f (travel_queque): timeout is struct timeval (get_timeout): remove (PROCESS-EVENT, EVENT-LISTEN): use sec_usec() instead of get_timeout() * modules/clx/new-clx/demos/clx-demos.lisp: load "koch" * modules/clx/new-clx/demos/koch.lisp: new demo * modules/clx/new-clx/clx.lisp (*keyword-package*): remove (kintern): do not use it (EVENT-COND): remove some gunk 2005-09-27 Sam Steingold use map_sequence() instead of ELT * modules/clx/new-clx/clx.f (get_seq_len, set_seq): new functions (struct seq_rectangle, coerce_into_rectangle): MAP infrastructure (SET-GCONTEXT-CLIP-MASK, DRAW-RECTANGLES, SHAPE-COMBINE): use it (struct seq_point, coerce_into_point): MAP infrastructure (DRAW-POINTS): use it (struct seq_segment, coerce_into_segment): MAP infrastructure (DRAW-SEGMENTS): use it (struct seq_arc, coerce_into_arc): MAP infrastructure (DRAW-ARCS): use it (struct seq_path, coerce_into_path): MAP infrastructure (SET-FONT-PATH): use it (struct seq_pixel, coerce_into_pixel): MAP infrastructure (FREE-COLORS): use it (struct seq_color, coerce_into_color): MAP infrastructure (QUERY-COLORS): use it (struct seq_pixel_color, coerce_into_pixel_color): MAP infrastructure (STORE-COLORS): use it (struct seq_map, coerce_into_map): MAP infrastructure (CHANGE-PROPERTY): use it (struct seq_xatom, coerce_into_xatom): MAP infrastructure (ROTATE-PROPERTIES): use it (struct seq_uint8, coerce_into_uint8): MAP infrastructure (SET-POINTER-MAPPING): use it * modules/clx/new-clx/demos/sokoban.lisp (find-outers): pass a flat list to SHAPE-COMBINE instead of a list of lists 2005-09-27 Sam Steingold * lispbibl.d (map_sequence_function_t): do not use emit_typedef_f() because g++ complains: error: invalid application of `sizeof' to a function type 2005-09-27 Sam Steingold * modules/rawsock/rawsock.c (MAKE-SOCKADDR): DATA is optional and can be an integer specifying the data size (0 content) 2005-09-26 Sam Steingold * lispbibl.d (map_sequence_function_t, map_sequence): export to clisp.h * modules/rawsock/rawsock.c (MAKE-SOCKADDR): use them to accept arbitrary sequences as DATA instead of requiring a byte vector 2005-09-26 Sam Steingold * modules/rawsock/rawsock.c (check_buffer_arg): remove (parse_buffer_arg): accept arbitrary vectors (BUFFER, RESIZE-BUFFER): remove (MAKE-SOCKADDR, RECVFROM, SENDTO): modified for the parse_buffer_arg() change (IPCSUM, ICMPCSUM, TCPCSUM, UDPCSUM): buffer argument is now required * modules/rawsock/sock.lisp (sockaddr-data): return a vector displaced to the underlying data structure 2005-09-26 Sam Steingold * socket.d (resolve_host): init offset before array_displace_check() * modules/berkeley-db/bdb.c (check_gid): ditto 2005-09-26 Sam Steingold * error.d (check_byte_vector_replacement): add * lispbibl.d (MAKE_CHECK_LOW): tweak to be more general (check_byte_vector_replacement): prototype and export to clisp.h * stream.d (test_n_bytes_args): use check_uint32() and check_byte_vector() * modules/berkeley-db/bdb.c (check_byte_vector): replaced with check_byte_vector_len(), use check_byte_vector() 2005-09-25 Sam Steingold * modules/syscalls/calls.c (GETUID, %SETUID, GETGID, %SETGID) (GETEUID, %SETEUID, GETEGID, %SETEGID): implement * modules/syscalls/posix.lisp (getuid, getgid, geteuid, getegid): exported and DEFSETFed * modules/syscalls/configure.in (gid_t, uid_t): AC_CHECK_SIZEOF (getegid, geteuid, getgid, getuid, setegid, seteuid, setgid, setuid): AC_CHECK_FUNCS 2005-09-25 Sam Steingold * modules/rawsock/sock.lisp (resize-buffer): export * modules/rawsock/rawsock.c (SENDTO): fix STACK cleanup (RECV, RECVFROM, RECVMSG, SEND, SENDMSG, SENDTO): remove "MSG_" prefix from the &key arguments 2005-09-23 Sam Steingold * array.d (VECTOR-PUSH-EXTEND): set extension to inc when it is not supplied (for error reporting) 2005-09-21 Sam Steingold * foreign.d (foreign_address): use GCTRIGGER_IF(allocate_p) instead of a blanket maygc, as appropriate (open_library): always restart on error (update_library): mark as maygc 2005-09-21 Sam Steingold * functions.lisp (function-lambda-expression): handle compiled (SETF FOO) Reported by Pascal Bourguignon 2005-09-21 Sam Steingold * misc.d (map_lisp_to_c, map_c_to_lisp): fix EXPECTED-TYPE 2005-09-20 Sam Steingold instead of DEFCHECKER creating a bunch of undebuggable identical functions, it now creates a data structure that is passed to a few standard built-in functions * misc.d (map_to_alist, map_lisp_to_c, map_c_to_lisp, map_c_to_list) (map_list_to_c): implement * lispbibl.d (c_lisp_pair_t, c_lisp_map_t): add, export to clisp.h * utils/modprep.lisp (print-tables-1): instead of checker functions, output #defines using map_* functions * modules/berkeley-db/bdb.c, modules/i18n/gettext.c: * modules/pcre/cpcre.c, modules/rawsock/rawsock.c: * modules/syscalls/calls.c: update to use the map_* functions 2005-09-20 Sam Steingold * modules/syscalls/posix.lisp: do (ext:re-export "POSIX" "EXT") at the end of the file to re-export all POSIX symbols 2005-09-19 Sam Steingold * modules/bindings/win32/win32.lisp (GetProcessVersion) (GetThreadPriority, GetThreadPriorityBoost, GetProcessPriorityBoost) (with-handle): add 2005-09-19 Sam Steingold * modules/rawsock/rawsock.c (MAKE-SOCKADDR): do not make unwarranted assumptions about struct sockaddr structure (SENDTO): pass size to sendto() 2005-09-17 Sam Steingold * utils/modprep.lisp (print-tables-1): do not use NOTREACHED, issue a TYPE-ERROR instead 2005-09-16 Sam Steingold remove the implicit assumption that struct sockaddr consists of 2 slots sa_family and sa_data with no padding - fixes BSD * modules/rawsock/rawsock.c (my_check_argument): use GETTEXT (SOCKADDR-FAMILY-SIZE): remove (SOCKADDR-SLOT): new function, replaces SOCKADDR-FAMILY-SIZE; not exported * modules/rawsock/sock.lisp (sockaddr-data): use SOCKADDR-SLOT; use EXPORTING:DEFUN, export SOCKADDR-P and MSGHDR-P 2005-09-16 Sam Steingold * modules/syscalls/calls.c (check_ut_type): add RUN-LVL and ACCOUNTING 2005-09-16 Sam Steingold * modules/clx/new-clx/configure.in (XGetAtomNames): fix the test use CL_FIND_X instead of AC_PATH_XTRA * modules/clx/new-clx/link.sh, modules/clx/new-clx/Makefile.in: update to use CL_FIND_X instead of AC_PATH_XTRA 2005-09-15 Sam Steingold * lispbibl.d: use puts() instead of printf() when possible (MAKE_CHECK_LOW, MAKE_CHECK, MAKE_CHECK_): new macros (with_string_0_help_, with_sstring_0_help_): take both "A" for cstombs_help_() and "NR" for unpack_sstring_alloca_help_() * genclisph.d (export_literal): add 2005-09-15 Sam Steingold * modules/bindings/win32/win32.lisp (GetCurrentThreadId): add * modules/bindings/win32/test.tst: new file 2005-09-15 Sam Steingold * configure: document --enable-maintainer-mode * makemake.in: handle --enable-maintainer-mode the only developer target (affected by --enable-maintainer-mode) is remaking src/configure using autoconf 2005-09-15 Sam Steingold (clisp.h): ensure that __FILE__ and __LINE__ are expanded after the file is included, not when it is generated * lispbibl.d (NOTREACHED, ASSERT, OBJECT_OUT): do not use export_def() to avoid putting string "lispbibl.d" into clisp.h (cstombs, unpack_sstring_alloca): define using *_help_() for the same reason (with_string_0_help_, with_sstring_0_help_): ditto * makemake.in (clisp.h): check that the string "lispbibl.d" is not there 2005-09-14 Sam Steingold * lispbibl.d (GCself, varobject_type): fix export conditional 2005-09-14 Sam Steingold * stream.d (sec_usec): support 64-bit struct timeval (sec_usec_number): new function * lispbibl.d (sec_usec_number): export * configure.in (struct timeval): check sizeof * modules/rawsock/rawsock.c (timeval_to_number): remove (get_sock_opt): use sec_usec_number() instead of timeval_to_number() * modules/syscalls/calls.c (utmpx_to_lisp): use sec_usec_number() * modules/syscalls/test.tst: add a GETUTXENT test * modules/syscalls/configure.in: remove unused sizeof tests 2005-09-14 Sam Steingold * lispbibl.d (GETTEXT): properly define in clisp.h on woe32 2005-09-14 Sam Steingold * modules/berkeley-db/bdb.c (BDB:DB-VERSION): fix a GC-safety bug 2005-09-14 Sam Steingold * modules/postgresql/sql.lisp (*sql-login*, *sql-password*): new variables (sql-connect): default login and password to them instead of a literal 2005-09-13 Sam Steingold * modules/postgresql/sql.lisp (*sql-log*): init to NIL to avoid saving a closed terminal stream into the image (with-sql-connection): accept :LOG and bind *sql-log* * modules/postgresql/postgresql.lisp ("SQL"): make DEFVAR exporting Reported by Richard Ray * modules/postgresql/sql.lisp: moved tests into ... * modules/postgresql/test.tst: new file 2005-09-13 "Dr. Werner Fink" * modules/clx/new-clx/demos/sokoban.lisp (find-outers): call DISPLAY-FORCE-OUTPUT * modules/clx/new-clx/clx.f (PUT-IMAGE): do not call XSync() (x_open_display): install error handlers here before XOpenDisplay() to catch errors there too (OPEN-DISPLAY): do not install error handlers 2005-09-12 Sam Steingold * modules/syscalls/test.tst: SHOW the results for FILE-OWNER physical-memory: guard against broken unixes, like FreeBSD 4.10-BETA stat-vfs: FreeBSD lacks this too 2005-09-12 Sam Steingold * modules/clx/new-clx/clx.f (%DISPLAY-XID): wrap XAllocID in X_CALL (image_put_and_destroy): wrapper for XPutImage & XDestroyImage (handle_image_z, PUT-IMAGE): use it (foreign_slot): wrapper for SLOT-VALUE & check_fpointer (get_ptr_object_and_display, get_font_info_and_display) (DISCARD-FONT-INFO): use it (create_image): wrapper for XCreateImage (handle_image_z, PUT-IMAGE): use it 2005-09-12 Sam Steingold * genclisph.d (export_def): add (emit_define1): remove * lispbibl.d: use export_def() instead of emit_define() and emit_define1() most of the time. BENFIT: reliably correct definitions are exported COST: the definitions are not always readable TODO: use "gcc -E -dM" -- like with lispbibl.h -- instead 2005-09-12 Sam Steingold * modules/clx/new-clx/clx.f (FORCE-GCONTEXT-CHANGES): clean-up STACK (SHAPE-COMBINE): accept :SOURCE-KIND 2005-09-12 "Dr. Werner Fink" * modules/clx/new-clx/clx.f (GCONTEXT-ID, FORCE-GCONTEXT-CHANGES) (PUT-IMAGE, ALLOC-COLOR-PLANES, ensure_shape_extension) (SHAPE-VERSION, SHAPE-COMBINE, SHAPE-OFFSET, ICONIFY-WINDOW) (WITHDRAW-WINDOW): wrap X calls in X_CALL 2005-09-08 Sam Steingold * modules/clx/new-clx/clx.f (XLIB:CHANGE-POINTER-CONTROL): use Fixnum_minus1 instead of fixnum(-1) which is actually illegal 2005-09-08 Sam Steingold * genclisph.d (emit_define_test, emit_define): new functions (emit_define1): new macro (define_count): new static variable (main): use it in stat output * lispbibl.d: use emit_define and emit_define1 in _some_ places cannot use it for fixnum() and The[Type] yet 2005-09-08 Sam Steingold * modules/syscalls/test.tst: check that OPEN :IF-EXISTS :RENAME-AND-DELETE produces a file with a new INODE (bug#1239523) 2005-09-08 Sam Steingold * lispbibl.d (record_) [TYPECODES]: rectype and recflags should come in the same order in lispbibl.d and clisp.h same for SRECORD_HEADER and XRECORD_HEADER Reported by Dr. Werner Fink 2005-09-07 Sam Steingold * modules/syscalls/test.tst: test file locking by starting and controlling via pipes two sub-processes (flush-stream, proc-send): new functions 2005-09-07 Sam Steingold * genclisph.d (emit_typedef_f): increment typedef_count, not test_count 2005-09-06 Sam Steingold * modules/syscalls/calls.c (POSIX::STREAM-LOCK) [!WIN32_NATIVE]: when LOCK-P is NIL, actually do unlock [WIN32_NATIVE]: fix :BLOCK handling always use OS to get file size instead of calling FILE-LENGTH because on win32 FILE-LENGTH will fail with ERROR_LOCK_VIOLATION when the underlying file is locked 2005-09-05 Sam Steingold * makemake.in (DISTFILE): use ${host} as discovered by configure 2005-09-04 Sam Steingold * configure: when libsigsegv is not found, print instructions on getting/building libsigsegv and bail out; override with --ignore-absence-of-libsigsegv 2005-09-05 Sam Steingold * makemake.in (LISPBIBL_INCLUDES): remove, modules use clisp.h now 2005-09-05 Sam Steingold * modules/syscalls/calls.c (POSIX::STREAM-LOCK) [!WIN32_NATIVE]: SHARED defaults to NIL 2005-09-05 Sam Steingold * modules/clx/new-clx/configure.in: bail out when X is not found 2005-09-04 Sam Steingold * modules/syscalls/configure.in: add AC_CHECK_SIZEOF(off_t) * modules/syscalls/calls.c (I_to_offset): define (STREAM-LOCK): use it 2005-06-06 Bruno Haible * makemake.in (MODULES): Don't use with_module_* variables any more. 2005-09-01 Sam Steingold * modules/rawsock/rawsock.c (set_sock_opt_many): new function (SET-SOCKET-OPTION): use it; also use endp() and fehler_plist_odd() to report argument errors 2005-09-01 Sam Steingold capture failed test output into the log file * tests/tests.lisp (*eval-out*, *eval-err*): new variables (my-eval): reset their streams before evaluating the form (do-test, do-errcheck): write them to log on test failure (run-test): bind *EVAL-OUT* and *EVAL-ERR* to string streams and *ERROR-OUTPUT* and *STANDARD-OUTPUT* to broadcast streams 2005-09-01 Sam Steingold * error.d (fehler_plist_odd): moved here from symbol.d, do not accept caller argument, use subr_self instead * symbol.d (fehler_plist_odd): moved to error.d (GETF, PUTF, REMF, GET-PROPERTIES): update calls to fehler_plist_odd() * lispbibl.d (fehler_plist_odd): add the prototype 2005-08-30 Sam Steingold * utils/modprep.lisp (print-tables-1, print-tables-2): name all types (even those used just once) to avoid the GCC 4 warning "non-local variable ' ...' uses anonymous type" (modprep): use "~&" to avoid an extra blank line * modules.d (MODULE): avoid the GCC 4 warning "non-local variable ' ...' uses anonymous type" 2005-08-30 Sam Steingold * lispbibl.d (HAVE_SIGNALS): pass on to clisp.h for clx/new-clx * modules/clx/new-clx/clx.f (writing_to_subprocess): define as "extern" without checking for SIGPIPE 2005-08-30 Sam Steingold * clisp-link.in (fail, check_dir, make_dest, check_linkset) (check_module): new functions; use them throughout the file (verbose): call exit (using fail) if the command fails avoid sub-shells to exit on the first failure 2005-08-30 Sam Steingold * configure: when --with-dynamic-ffi is supplied, but the FFI fails to build, issue an error message and fail 2005-08-30 Sam Steingold * makemake.in (LDFLAGS): fix handling (were effectively ignored) 2005-08-30 Sam Steingold * Makefile.devel (PACK, PACKOPT, PACKEXT): remove, assume tar/bzip2/gzip are present on the developer's machine (linux-distrib, linux--distrib): remove (unused) (distrib): do not depend on linux-distrib 2005-08-29 Sam Steingold * makemake.in (PWDCMD): remove (distrib) [cygwin]: fix tar.bz2 location 2005-08-29 Sam Steingold * version.sh: clisp 2.35 release 2005-08-29 Sam Steingold * m4/floatparam.m4: require gt_TYPE_LONGDOUBLE instead of CL_LONGDOUBLE use $gt_cv_c_long_double instead of $cl_cv_c_longdouble * m4/intparam.m4: require gl_AC_TYPE_LONG_LONG and gt_TYPE_LONGDOUBLE instead of CL_LONGLONG and CL_LONGDOUBLE use $ac_cv_type_long_long and $gt_cv_c_long_double instead of $cl_cv_c_longlong and $cl_cv_c_longdouble 2005-08-27 Bruno Haible Make the long-float overflow check work on 64-bit platforms. * aridecl.d (LF_exp_mid, LF_exp_high): Define as 'unsigned int', not 'unsigned long'. 2005-08-27 Bruno Haible More cross-compilation support. * m4/intparam.m4: New file. * m4/floatparam.m4: New file. * m4/param.m4: Rename from m4/intparam.m4. (CL_MACHINE): Add an additional CROSS_MACRO parameter. * configure.in (CL_MACHINE): When cross-compiling, use CL_INTPARAM_CROSS and CL_FLOATPARAM_CROSS. 2005-08-27 Bruno Haible * m4/rusage.m4 (CL_RUSAGE): Fix error when cross-compiling. 2005-08-29 Sam Steingold * Makefile.devel (src/configure): depend on version.sh 2005-08-28 Sam Steingold * noreadline.d: add prototypes to avoid warnings 2005-08-28 Sam Steingold * modules/regexp/regex_internal.c, modules/regexp/regex_internal.h: * modules/regexp/regexec.c, modules/regexp/regex.c: sync with gnulib * modules/regexp/test.tst: fix the tests whose behavior changed during the transition from uni-byte to the multi-byte version 2005-08-28 Sam Steingold Danish messages from Dennis Decker Jensen * configure.in (ALL_LINGUAS): add `da' * constsym.d (danish): add * init.lisp (danish.lisp) [GETTEXT UNICODE]: load * danish.lisp: new file * spvw_language.d (language_danish): add (current_language_o, init_language): handle it (init_language_from): check for Danish * makemake.in (LPARTS) [$with_unicode]: add danish 2005-08-28 Sam Steingold * describe.lisp (describe-object): use "~:p" instead of "~:*~[~;~:;s~]" 2005-08-28 Sam Steingold moved PARI i/o from Lisp to C to enable C++ compilation ("const" issues) * modules/pari/cpari.c (clispPutc, clispPuts, clispFlush) (clispErrPutc, clispErrPuts, clispErrFlush, clispErrDie): add * modules/pari/pari.lisp (pari-putc, pari-puts, pari-flush) (pari-err-putc, pari-err-puts, pari-err-flush, pari-err-die): remove 2005-08-26 Sam Steingold * lispbibl.d (Handle) [UNIX]: use emit_typedef and define to int 2005-08-26 Sam Steingold * lispbibl.d, errunix.d, errwin32.d (errno_out_low): rename from errno_out(), accept __FILE__ and __LINE__ * error.d: do not #undef errno_out * lispbibl.d (errno_out): define always, passing __FILE__ and __LINE__ to errno_out_low() 2005-08-26 Sam Steingold * Makefile.devel (makemake): substitute @PACKAGE_VERSION@ 2005-08-26 Sam Steingold * makemake.in: avoid putting ${} into Makefile, use $() instead 2005-08-26 John Hinsdale * modules/oracle/oracle.lisp, orafns.c: Handle Oracle BLOB data on output as array of (UNSIGNED-BYTE 8) and allow embedded NUL bytes. Reported by Tomas Hlavaty 2005-08-25 Sam Steingold * makemake.in: instead of having the user edit Makefile and select the packer, check for gzip/compress and assume that tar is present * configure.in: check for gzip/compress 2005-08-25 Sam Steingold * m4/regex.m4, modules/regexp/regcomp.c, modules/regexp/regex.h: * modules/regexp/regex_internal.c, modules/regexp/regex_internal.h: * modules/regexp/regexec.c, modules/regexp/regex.c: sync with gnulib G++ finally can compile regex! 2005-08-25 Sam Steingold * errunix.d, errwin32.d (errno_out): print newline beforehand * lispbibl.d (errno_out) [DEBUG_OS_ERROR]: print file:line * error.d: #undef errno_out * spvw_memfile.d (loadmem): do not print newline before errno_out() * spvw_mmap.d (mmap_zeromap): ditto * spvw_multimap.d (fdmap): ditto 2005-08-25 Sam Steingold * makemake.in: do note create rules for development targets unless the user is working from the CVS 2005-08-25 Sam Steingold * modules/syscalls/configure.in, modules/syscalls/calls.c: assume exists, just like in unix.d 2005-08-25 Sam Steingold * unixaux.d (close_all_fd): also try getrlimit() before OPEN_MAX * unix.d: include and as recommended by the autoconf manual (see AC_HEADER_TIME); include * configure.in: call AC_CHECK_FUNCS and AC_CHECK_HEADERS just once; use AC_HEADER_TIME to check for and 2005-08-25 Sam Steingold * m4/regex.m4, modules/regexp/regcomp.c, modules/regexp/regex.h: * modules/regexp/regex_internal.c, modules/regexp/regex_internal.h: * modules/regexp/regexec.c, modules/regexp/regex.c: sync with gnulib * modules/regexp/configure.in: add AC_GNU_SOURCE, use gl_REGEX instead of gl_INCLUDED_REGEX 2005-08-25 Sam Steingold * Makefile.devel (src/autoconf/aclocal.m4): prepend AC_GNU_SOURCE to configure.ac and strip it from configures Suggested by Stepan Kasal in http://article.gmane.org/gmane.comp.lib.gnulib.bugs:4165 2005-08-24 Sam Steingold explicitly close all file descriptors before exec() * socket.d (connect_to_x_server): do not set FD_CLOEXEC * configure.in: check for sysconf and * unixaux.d (close_all_fd): new function * unix.d (close_all_fd): declare it * stream.d (create_input_pipe, create_output_pipe, create_io_pipe): call it before execl() * pathname.d (EXECUTE, LAUNCH): call it before execv() and execvp() 2005-08-23 Sam Steingold * modules/syscalls/calls.c (POSIX::STREAM-OPTIONS): implement * modules/syscalls/posix.lisp (POSIX::STREAM-OPTIONS): export 2005-08-22 Sam Steingold * utils/modprep.lisp (print-tables-1): *_to_list(): when c_const is 0, do not put l_const into the list 2005-08-22 Sam Steingold * makemake.in: issue a warning on --with-module=base-module 2005-08-22 Sam Steingold * modules/regexp/regcomp.c, modules/regexp/regex.h: * modules/regexp/regex_internal.c, modules/regexp/regex_internal.h: * modules/regexp/regexec.c, m4/regex.m4: sync with gnulib 2005-08-19 Sam Steingold * stream.d (stream_lend_handle): propagate up the possible change in the first argument coming from check_value() * lispbibl.d (stream_lend_handle): update the declaration * pathname.d (init_launch_streamarg): update the call to stream_lend_handle() * modules/syscalls/calls.c (stream_get_handle): propagate up the possible change in the first argument coming from stream_lend_handle() (error_OS_stream): new function (STREAM-LOCK): use it (SYNC): use stream_get_handle() (FILE-STAT): update call to stream_get_handle() (copy_attributes_and_close, copy_file_low): update call to stream_lend_handle() 2005-08-18 Sam Steingold * lispbibl.d (attribute_aligned_object): use "#define" instead of a constant variable declaration "const char*" for gen.lispbibl.c 2005-08-18 Sam Steingold * makemake.in (PROC): handle OpenBSD 3.4 where `uname -p` prints "Intel Pentium III (Coppermine) ("GenuineIntel" 686-class)" 2005-08-18 Sam Steingold * spvw.d (libopen) [!WIN32_NATIVE]: pass RTLD_GLOBAL to dlopen() 2005-08-18 John Hinsdale * modules/oracle/orafns.c, oracle.lisp: handle floats as double precision by default; allow multiple connects to the same server via connection IDs 2005-08-18 Sam Steingold * modules/rawsock/configure.in: call AC_HEADER_TIME * modules/rawsock/rawsock.c: include so that "struct timeval" will be available on OSX too (optional_sockaddr_argument): declare static to avoid a warning 2005-08-16 Sam Steingold * modules/regexp/regex.h: sync with gnulib (support G++) 2005-08-15 Sam Steingold * documentation.lisp (documentation, (setf documentation)): specialize on CONS, not on NIL, to ensure that NIL is treated as a SYMBOL 2005-08-13 Arseny Slobodyuk * utils/comment5.c (main): init outfilenamebuffer so it won't contain trash when piping to exiting program occurs. Close infile before exit. 2005-08-12 Arseny Slobodyuk * w32shell.c (real_path): fix a bug with root directory checking on Win32 (bug#1252861). 2005-08-11 Sam Steingold * makemake.in (DEVPREFIX): simplified 2005-08-10 Sam Steingold * m4/onceonly.m4: use gnulib/m4/onceonly_2_57.m4 2005-08-10 Sam Steingold * init.lisp (char-invertcase, string-invertcase) (nstring-invertcase): export * charstrg.d (STRING-INVERTCASE): accept :START and :END (NSTRING-INVERTCASE): implement * constsym.d (NSTRING-INVERTCASE): add (char-invertcase, string-invertcase): moved from SYS to EXT * subr.d (string-invertcase): accept :START and :END (nstring-invertcase): add * subrkw.d (string-invertcase, nstring-invertcase): add 2005-08-05 Sam Steingold * compiler.lisp (compile-file): put source line number into the name of the compiled top-level form * init.lisp (*current-source-line-1*, *current-source-line-2*): add (sys::check-redefinition): FILE doc is now (file start-line end-line) (eval-loaded-form-low): set *CURRENT-SOURCE-LINE-[12]* from the compiled top-level form (load): bind and set *CURRENT-SOURCE-LINE-[12]* 2005-08-05 Sam Steingold * macros3.lisp (compiled-file-p): implement CLRFI-2 2005-08-04 Sam Steingold make configure creation process more robust * Makefile.devel (MODULES, MOD_CONFIGURES, MOD_CONFIG_H_IN) (CLISP_CONFIGURES, FFCALL, FFCALL_CONFIGURES): new variables (CONFIGURES, CONFIG_H_IN): use them (autoconf/aclocal.m4): depend only on CLISP_CONFIGURES 2005-08-04 Sam Steingold update bundled regex to the latest gnulib version * configure.in: call gl_USE_SYSTEM_EXTENSIONS * modules/regexp/configure.in: use gl_INCLUDED_REGEX instead of CL_REGEXP; do not call AC_AIX (done by toplevel) * modules/wildcard/configure.in: do not call AC_AIX (done by toplevel) * modules/regexp/regex.c, modules/regexp/regex.h: update * modules/regexp/regex_internal.c, modules/regexp/regex_internal.h: * modules/regexp/regexec.c, modules/regexp/regcomp.c: * m4/extensions.m4, m4/onceonly.m4, m4/regex.m4: add * m4/regexp.m4: remove * modules/regexp/link.sh.in: remove all gnulib regex files when using the system-wide regex implementation * modules/syscalls/calls.c: do not define __EXTENSIONS__, this is taken care of by gl_USE_SYSTEM_EXTENSIONS 2005-08-04 Sam Steingold * modules/fastcgi/configure.in, modules/oracle/configure.in: generate config.h 2005-08-03 Sam Steingold * makemake.in (check): fix the test for sacla-tests and ansi-tests 2005-08-03 Sam Steingold * spvw_memfile.d (loadmem): add a cast for C++ compilation 2005-08-03 Sam Steingold * documentation.lisp (function-documentation): pass NAME, not X, to SYS::GET-FUNNAME-SYMBOL 2005-08-03 Sam Steingold * defs1.lisp (decode-universal-time) [!(UNIX|WIN32)]: call FLOOR just once instead of twice 2005-08-02 Sam Steingold * encoding.d (init_dependent_encodings, SET-FOREIGN-ENCODING): partially reversed the 2005-07-30 patch: O(foreign_8bit_encoding) must agree with O(foreign_encoding) and only ASCII agrees with _all_ encodings, so use ASCII instead of DEFAULT_1_1_ENCODING 2005-08-02 Sam Steingold use symbol property lists instead of the global *DOCUMENTATION* hash table: the table is not weak, so it is not cleaned up this also reduced the size of lispinit.mem by almost 10% (15k) * init.lisp (get-funname-symbol): moved up (get-doc-entity-symbol): new function (%set-documentation, check-redefinition): use it with GET instead of GETHASH * describe.lisp (describe1): do not use *DOCUMENTATION* * documentation.lisp (documentation, (setf documentation)): ditto also, CHECK-FUNCTION-NAME may return a symbol when given a list (function-documentation, set-function-documentation): new functions 2005-08-02 Sam Steingold * package.d (cerror_package_locked): PACKAGE-ERROR slot PACKAGE must be a PACKAGE, not a list thereof (coming from CHECK-REDEFINITION) 2005-08-02 Sam Steingold * modules/berkeley-db/test.tst (show): moved to tests/tests.lisp * modules/rawsock/test.tst, modules/zlib/test.tst: use SHOW instead of PRINT 2005-08-01 Sam Steingold when the specified memory image does not exist, try appending ".mem" * spvw_memfile.d (open_filename): new function (extracted from loadmem) (loadmem): use it, and retry with filename".mem" on failure 2005-08-01 Sam Steingold * spvw_global.d (check_pack_consistency): made static to avoid warning 2005-08-01 Sam Steingold * savemem.lisp (saveinitmem): ensure that *PACKAGE* is bound to a package 2005-08-01 Sam Steingold * pathname.d (directory_trivial_p): check whether (CAR DIR) is a CONS This caused a crash on Sparc/Solaris 10. Reported by Nelson H. F. Beebe 2005-07-30 Sam Steingold * encoding.d (DEFAULT_1_1_ENCODING): iso-8859-1 (corresponds to the CLISP CODE-CHAR/CHAR-CODE conversion on the first 255 bytes) (encoding_from_name): when `name' does not name a known encoding, use the locale default instead of ASCII/UTF-8 (for CLISP contexts) and DEFAULT_1_1_ENCODING when context=locale (e.g., name=ISO8859-1) -E "1:1" and "8bit" now mean DEFAULT_1_1_ENCODING (init_dependent_encodings, SET-FOREIGN-ENCODING): O(foreign_8bit_encoding) defaults to DEFAULT_1_1_ENCODING, not to ASCII 2005-07-29 Sam Steingold * modules/berkeley-db/bdb.c (BDB:DBE-SET-OPTIONS): dbe->set_verbose() does not accept bit flag combinations 2005-07-29 Sam Steingold * makemake.in (gen.lispbibl.c): fix the sed(1) expression to work on solaris, darwin, openbsd, msys (gnu sed 3), cygwin&linux (gnu sed 4) Suggested by rouben@pc18.math.umbc.edu (Rouben Rostamian) 2005-07-27 Sam Steingold * spvw_debug.d (TheCons_): a new debugging prop 2005-07-26 Sam Steingold * stream.d (SOCKET-STREAM-SHUTDOWN): never call close(2), just shutdown(2) in the appropriate direction; accept raw sockets (builtin_stream_close): decide on which stream channel to close based on the channel value and not on strmflags * modules/rawsock/rawsock.c (SHUTDOWN): remove * modules/rawsock/sock.lisp (shutdown): remove 2005-07-27 Sam Steingold * condition.lisp (eval-loaded-form): accept a FILE argument and make the :REPORTs more informative * init.lisp (eval-loaded-form) [preliminary]: accept and ignore FILE (load): pass *LOAD-TRUENAME* to EVAL-LOADED-FORM as FILE 2005-07-25 Sam Steingold * modules/clx/new-clx/clx.f (ensure_living_display): avoid "Unprintable error message" by always returning when the argument is a DISPLAY 2005-07-25 Sam Steingold * modules/queens/link.sh (INCLUDES): no need for '-I' Reported by Dr. Werner Fink 2005-07-22 Sam Steingold * makemake.in (check): ansi-tests and sacla-tests are for developers only and are not included in the source distribution, so check should not depend on them; for developers, it should also depend on benchmarks 2005-07-22 Sam Steingold Fix win32 bug: when "foo" is a file, (directory "foo/") returned non-NIL and this prevented loading ~/.clisprc * pathname.d (check_stat_directory): remove (copy_pathname_and_add_subdir): extract from directory_search_1subdir() (check_sub_directory): replaces check_stat_directory() (directory_search_1subdir): call it 2005-07-22 Sam Steingold * makemake.in (clisp.1, clisp.html): substitute ${host} (on unix) or ${TSYS} (on win32) for @PLATFORM@ * doc/Makefile (FILLIN): do not substitute @PLATFORM@ here 2005-07-21 Sam Steingold * win32.d (HAVE_STRERROR): define to 1 to avoid a warning 2005-07-21 Sam Steingold * subtypep.lisp (get-charset-range): do not fill the cache here 2005-07-21 Sam Steingold * utils/fix-perms.sh: follow symlinks and also "-x" HTML and PNG 2005-07-21 Sam Steingold * makemake.in (distrib) [cygwin]: fix CLISP_VR; use /tmp for DEST_TMP do not put curr/prev/test into setup.hint - normally they are not needed 2005-07-21 Sam Steingold * modules/clx/mit-clx/link.sh (TO_LOAD): remove split-sequence * modules/clx/mit-clx/Makefile (ALLLISP, ALLFAS): ditto 2005-07-20 Sam Steingold * version.sh: clisp 2.34 release 2005-07-20 Sam Steingold * makemake.in (VERSION): remove 2005-07-20 Sam Steingold * lispbibl.d: do not put "var" into clisp.h 2005-07-20 Sam Steingold * m4/libtool.m4: upgrade to libtool-1.5.18 + clisp 2005-07-08 patch 2005-07-20 Sam Steingold * lispbibl.d (var): do not put into clisp.h (elif, loop, until): deprecated 2005-07-20 Sam Steingold * Makefile.devel: remove the last vestiges of DOS support update release procedure * clisp.spec: ditto 2005-07-20 Sam Steingold * utils/fix-perms.sh: make configure files executable 2005-07-18 Sam Steingold * spvw.d (usage): made the message more consistent 2005-07-15 Sam Steingold * utils/varbrace.d (convert): declare static to avoid a warning 2005-07-15 Sam Steingold * modules/berkeley-db/bdb.c: use msgcall and msgfile (Berkeley-DB 4.3) (struct messages): new type (make_messages, free_messages, close_messages, extract_messages) (add_message): operate on the messages (message_callback): callback for msgcall (DBE-CREATE): init msgcall (close_msgfile, reset_msgfile, dbe_get_msgfile): add (BDB:DBE-MESSAGES): new function (DBE-SET-OPTIONS, DB-SET-OPTIONS, DBE-GET-OPTIONS, DB-GET-OPTIONS): accept :MSGFILE * modules/berkeley-db/dbi.lisp (BDB:DBE-MESSAGES): export 2005-07-15 Sam Steingold support Berkeley-DB 4.3 * modules/berkeley-db/bdb.c (BDB:DB-VERSION): also return LOGVERSION, TXNVERSION, SEQUENCE_VERSION (DBE-SET-OPTIONS): also accept DSYNC-LOG LOG-AUTOREMOVE LOG-INMEMORY (DB-GET, MAKE-DBC, TXN-BEGIN): also accept DEGREE-2 (DB-STAT): also accept TRANSACTION (DB-SET-OPTIONS): also accept INORDER * modules/berkeley-db/configure.in: check for DB_ENV.set_msgcall, DB->stat/TXN, DB_ENV->set_errcall/DBE, get_transactional 2005-07-15 Sam Steingold * configure (--list-modules): new option 2005-07-15 Sam Steingold * makemake.in (DEVPREFIX): "cd c:" --> "cd c:/" to avoid a cygwin error ./makemake: line 724: cd: c:: No such file or directory 2005-07-15 Devon Sean McCullough * makemake.in (gen.lispbibl.c): fix the sed(1) expression to work on macos-10.4-darwin-8.2.0 2005-07-13 Sam Steingold * makemake.in (setup.hint) [cygwin]: fix curr/test output 2005-07-12 Sam Steingold * modules/pari/pari.lisp: update obsolete names 2005-07-12 Sam Steingold * makemake.in (MSVCDIR): output sample values for all versions Reported by Ury Marshak 2005-07-11 Sam Steingold * modules/bindings/win32/win32.lisp (SetStdHandle): add 2005-07-11 Sam Steingold * spvw.d (parse_options): print (EXT:MODULE-INFO) for --version 2005-07-11 Sam Steingold * modules/i18n/i18n.lisp (*features*): add :I18N 2005-07-11 Sam Steingold * modules/pcre/pcre.lisp, modules/zlib/zlib.lisp: * modules/syscalls/posix.lisp, modules/rawsock/sock.lisp: * modules/berkeley-db/dbi.lisp, modules/dirkey/dirkey1.lisp: *SYSTEM-PACKAGE-LIST* is in CUSTOM 2005-07-10 Sam Steingold * modules/bindings/win32/win32.lisp (DestroyIcon): new function 2005-07-08 Sam Steingold * modules/bindings/win32/win32.lisp: do NOT use full paths for :LIBRARY arguments (reverses the 2005-06-06 patch) for portability of binary distributions [it now works on cygwin, go figure...] (GetStdHandle, STD_INPUT_HANDLE, STD_OUTPUT_HANDLE, STD_ERROR_HANDLE) (ReadFile, WriteFile, ReadConsoleA, WriteConsoleA): add i/o interface 2005-07-08 Jörg Höhle * modules/bindings/win32/win32.lisp: WINAPI means :stdc-stdcall 2005-07-08 Bruno Haible * m4/libtool.m4 (postinstall_cmds) [cygwin,mingw,pw32]: Make DLL executable after installing it. 2005-07-07 Sam Steingold * places.lisp (get-setf-expansion): do not return CLISP-specific form ((SETF ...) ...) to avoid confusing 3rd party code walkers 2005-07-07 Sam Steingold * utils/clispload.lsp (*expected-failures*): add MAKE-CONDITION.[34] 2005-07-07 Sam Steingold * places.lisp (get-setf-expansion): user may pass env=NIL to mean null lexical environment 2005-07-07 Sam Steingold * makemake.in [win32msvc]: use rc+cvtres to add the icon to clisp.exe (anymodule): use {MODULESDIR_} for ./configure --srcdir (needs): fix quoting 2005-07-07 Jörg Höhle * execname.c (default_executable_name) [WIN32_NATIVE]: default to lisp.exe, not lisp.run * _clisp.c [!UNIX]: do not #include files specific to UNIX 2005-07-06 Sam Steingold fix "./configure --build foo/bar/baz" * configure (maybe_mkdir): pass "-p" to mkdir (makemake_args): pass subdir_srcdir_args down to makemake * makemake.in (anymodule): pass srcdir to module configure Reported by Will Newton 2005-07-06 Sam Steingold * makemake.in (OUT): new variable (clisp): fix msvc rule Reported by Jörg Höhle 2005-07-06 Sam Steingold * makemake.in: remove the last(?) vestiges of DOS support 2005-07-06 Sam Steingold * modules/pari/pari.lisp (binomial-coefficient): commented out because `binomial' is not found in libpari-2.2.dll at link time 2005-07-06 Sam Steingold * modules/berkeley-db/bdb.c (error_callback, error_message_reset): declare static to avoid warnings (module__bdb__init_function_2): add a prototype * modules/pcre/cpcre.c (module__pcre__init_function_2): ditto 2005-07-06 Sam Steingold * version.sh: bumped because of many bug fixes 2005-07-05 Sam Steingold * foreign.d (MEMORY-AS): fix a cast for g++ compilation 2005-07-01 Sam Steingold * makemake.in: copy localcharset.h to the build directory on msvc too Reported by Jörg Höhle 2005-07-01 Jörg Höhle * foreign1.lisp (c-ident-p): accept @ in foreign names, useful for some libraries using :STDC-STDCALL. * errunix.d (strerror) [!HAVE_STRERROR]: fix typo. * win32.d (HAVE_STRERROR): #define (errunix.d needs it) 2005-06-28 Sam Steingold * init.lisp (%return-p): quoted constants cannot contain RETURN-FROM forms (this fixes a bug whereby quoted circular list hang the evaluator) Reported by Devon Sean McCullough 2005-06-26 Sam Steingold * compiler.lisp (c-OR): handle empty codelist Reported by Dan Corkill & bug#1227764 2005-06-24 Sam Steingold * makemake.in (config.status): does not depend on version.sh 2005-06-24 Sam Steingold RFE#1226120: configure shall report essential findings * configure: report configure findings 2005-06-24 Sam Steingold * foreign.d (CALL-WITH-FOREIGN-STRING): use check_posfixnum() 2005-06-22 Sam Steingold * foreign1.lisp (exec-with-foreign-string): ENCODING-ZEROES is defined both with and without UNICODE 2005-06-22 Jörg Höhle * foreign.d (read_memory_as, write_memory_as): low-level accessors * subr.d, constsym.d (read_memory_as, write_memory_as): add * foreign1.lisp (MEMORY-AS): export and define (SETF MEMORY-AS) 2005-06-21 Sam Steingold * charstrg.d (coerce_char): no INPUT-CHARACTER without KEYBOARD Reported by Roland Averkamp 2005-06-21 Sam Steingold * defs1.lisp (logical-pathname-translations "SYS"): update for the 2005-05-06 #p"" ==> :DIRECTORY NIL patch 2005-06-21 Sam Steingold * documentation.lisp ((setf documentation), documentation): remove the unnecessary (ignore doc-type) declarations (avoids warnings) 2005-06-20 Sam Steingold * pathname.d (FullName): declare static to avoid a warning (handle_dup): fix local variable type * w32shell.c (resolve_shell_shortcut, resolve_shell_shortcut_more) (resolve_shell_symlink): declare static to avoid warnings * _clisp.c (shell_quote, real_path, find_executable): add prototypes to avoid warnings * utils/ccmp2c.c (new_statement): declare main%d static to avoid warnings * modules/clx/new-clx/clx.f (get_font_info_and_display, get_font_name) (make_visual_info, x_open_display, general_draw_text, font_char_info) (module__clx__init_function_2): declare static to avoid warnings (xlib_error_handler, xlib_io_error_handler, xlib_after_function): global prototypes to avoid warnings 2005-06-20 Sam Steingold * makemake.in (UTILCC): new makefile variable: simplifies the hack necessary to make some utilities (comment5 and txt2c) that must understand symbolic links to permit building in a separate directory on woe32/cygwin/mingw 2005-06-20 Sam Steingold * socket.d (resolve_host) [HAVE_IPV6]: handle numeric IPv6 addresses 2005-06-20 Sam Steingold * error.d (check_uint32_replacement, check_sint32_replacement) (check_uint64_replacement, check_sint64_replacement): fix the message: use the correct article 2005-06-18 Bruno Haible * lispbibl.d (oint_data_len, oint_data_mask): On 64-bit platforms, always set oint_data_len to 48, not 40 or 32. (oint_type_*) [MIPS64]: Use only 16 bits for the type. 2005-06-15 Bruno Haible * socket.d (string_to_addr): Mark as maygc. 2005-06-15 Jörg Höhle * defs1.lisp (memoized): export it from EXT. 2005-06-14 Sam Steingold make executables built on NT run on w95 * modules/syscalls/calls.c (LockFileExFuncType, UnlockFileExFuncType): new typedefs (LockFileExFunc, UnlockFileExFunc): new statis variables (STREAM-LOCK): use them instead of the NT functions (module__syscalls__init_function_2): init them 2005-06-12 Bruno Haible Avoid "gcc -missing-declarations" warnings. * modules/syscalls/calls.c (module__syscalls__init_function_2): Declare. 2005-06-12 Bruno Haible Make PROVIDE, REQUIRE work as expected in case-inverted packages. * defs1.lisp (module-name): New function. (provide, require): Use it instead of #'string. * compiler.lisp (c-PROVIDE, c-REQUIRE): Likewise. 2005-06-12 Bruno Haible * constobj.d: Rename O(type_designator_function_name) to O(type_function_name). * error.d: Update. 2005-06-12 Bruno Haible * backquote.lisp (bq-non-list-splice-error, bq-dotted-splice-error): Change calling convention, to avoid use of sys::%unbound. (backquote-reader): Update. 2005-06-10 Sam Steingold * modules/pari/pari.lisp: update for pari 2.2.11 (ell-local-reduction): use elllocalred (ell-global-reduction): use ellglobalred (ell-modular-parametrization): use elltaniyama 2005-06-10 Sam Steingold * foreign1.lisp (note-c-call-in): emit prototypes * modules/pari/pari.lisp (clisp_get_prec, clisp_set_prec) (get_entry_doc, subres0): ditto 2005-06-10 Sam Steingold * makemake.in (XCFLAGS) [CC_CPLUSPLUS=true]: do not add -Wmissing-declarations: 'cc1plus: warning: command line option "-Wmissing-declarations" is valid for C/ObjC but not for C++' 2005-06-10 Sam Steingold avoid -Wstrict-prototypes warnings in modules * foreign1.lisp (finalize-coutput-file): emit init/fini prototypes * utils/modprep.lisp (print-tables-2): ditto * genclisph.d (LISPFUN_B): emit subr prototype 2005-06-08 Jörg Höhle * modules/bindings/glibc/linux.lisp (errno): Remove dependency on __errno_location(). 2005-06-07 Bruno Haible * genclisph.d (print_printf_arg, printf_with_args, print_file) (emit_typedef_test, emit_typedef, emit_typedef_f): Declare as local. 2005-06-07 Bruno Haible * Makefile.devel (EXCLUDE): Exclude also the 'queued' directory. 2005-06-07 Bruno Haible * win32.d [MINGW]: Include before redefining lseek, isatty. 2005-06-06 Bruno Haible * modules/berkeley-db/bdb.c (fill_dbt): Call I_to_LEbytes differently, avoiding a prior memset(). 2005-06-06 Bruno Haible * makemake.in: Ignore --with-module=... options for modules that are already contained in BASE_MODULES. Reported by . 2005-06-04 Bruno Haible * modules/syscalls/calls.c: Assume stdlib.h exists. (POSIX::STREAM-LOCK): Use a 64-bit variable for the length on systems with 64-bit off_t and on Woe32. Fix wrong assigment from GetLastError() to 'bool'. 2005-06-04 Bruno Haible * modules/regexp/regex.c: Undo 2005-03-18 patch. * modules/regexp/alloca_.h: New file, from gnulib. * modules/regexp/alloca.c: New file, from gnulib. * m4/alloca.m4: New file, from gnulib. * m4/restrict.m4: New file, from gnulib. * modules/regexp/configure.in: Invoke 'restrict' and 'alloca' requisites. Set ALLOCA to empty if we don't need it. * modules/regexp/Makefile.in (ALLOCA_H): New variable. (DISTRIBFILES): Add alloca.o if needed. (all): Depend on alloca.o if needed. (regex.o): Depend on $(ALLOCA_H). (alloca.o, alloca.h): New rules. (clean): Also remove alloca.h. * modules/regexp/link.sh.in (NEW_FILES, NEW_LIBS): Add alloca.o if needed. 2005-06-04 Bruno Haible * modules/rawsock/rawsock.c (RAWSOCK:HTONL): Make it work also if the system doesn't have the htonl() function. (RAWSOCK:NTOHL): Likewise for ntohl(). (RAWSOCK:HTONS): Likewise for htons(). (RAWSOCK:NTOHS): Likewise for ntohs(). 2005-06-04 Bruno Haible Emulate Unix APIs on Woe32, not vice versa. * lispbibl.d (handle_dup): Remove declaration. (INVALID_HANDLE_VALUE, HNULLP): Remove macro. (handle_dup1): Remove macro. (handle_dup): New declaration, replaces handle_dup1. (handle_dup2): New declaration, replaces a case of handle_dup. * unix.d (Handle): Change to 'int'. (INVALID_HANDLE): New macro. * win32.d (INVALID_HANDLE): New macro. * pathname.d (handle_dup, handle_dup2): Replace old function handle_dup. (nullfile): Remove unused initializer. (mkpipe, init_launch_streamarg, make_launch_pipe, LAUNCH): Update. (LAUNCH) [UNIX]: Call dup2, not handle_dup2, since handle_dup2 does unwanted error handling. * stream.d (handle_to_stream): Update. * modules/syscalls/calls.c (POSIX::DUPLICATE-HANDLE): Update. 2005-06-04 Bruno Haible Compile with gcc -Wmissing-declarations. * makemake.in (XCFLAGS): Add -Wmissing-declarations. * lispbibl.d: Include pseudofun.c with PSEUDO_C. (fehler_unencodable, mkops_from_handles, mkips_from_handles) (hashcode_lfloat, sigsegv_handler_failed, ext_show_stack): New declarations. * io.d (print): Make local. * pathname.d (fehler_pathname_designator): Make local. (mkops_from_handles, mkips_from_handles): Remove declarations. * stream.d (lisp_completion): Make local. Move pseudofun.c include with PSEUDO_C to lispbibl.d. * foreign.d (convert_to_foreign_allocaing): Make local. 2005-06-04 Bruno Haible Remove warnings emitted by gcc -Wstrict-prototypes. * unix.d (errno): Don't declare. Assume does it. * spvw.d (print_banner): Define with void argument list. * stream.d (get_col): Likewise. * pathname.d (fix_parse_namestring_dot_file, nullfile) (interpret_launch_priority): Likewise. * hashtabl.d (get_eq_hashfunction, get_eql_hashfunction) (get_equal_hashfunction): Likewise. * debug.d (ext_show_stack): Likewise. * realtran.d (sin_stack, cos_stack): Likewise. 2005-06-04 Bruno Haible * lispbibl.d (Encoding, Encoding_wcslen, Encoding_wcstombs, cslen) (cstombs, TheEncoding, TheMachineCode, ThePseudofun, Pseudofun): Emit to clisp.h. (with_string_0, with_sstring_0): Use cslen instead of cslen_f, cstombs instead of cstombs_f. * encoding.d (cslen_f, cslen_ff, cstombs_f, cstombs_ff): Remove functions. * genclisph.d (main): Don't emit cslen_f, cslen_ff, cstombs_f, cstombs_ff. * modules/syscalls/calls.c (LispToPropVariant, PropSpecSetStr) (with_string_0w): Use cslen instead of cslen_f, cstombs instead of cstombs_f. * modules/clx/new-clx/clx.f (to_XChar2b): Use cstombs instead of cstombs_f. 2005-06-06 Sam Steingold * socket.d (MACHINE-INSTANCE, socket_getlocalname_aux) (socket_getpeername): avoid a GCC warning "value computed is not used" 2005-06-06 Sam Steingold * modules/bindings/win32/win32.lisp: use full paths for :LIBRARY arguments (needed on cygwin) 2005-06-06 Bruno Haible * spvw_language.d (init_language): When argv_localedir is NULL, don't use any message catalogs, not even those in the default location /usr/share/locale. 2005-06-06 Bruno Haible * clispload.lsp (*expected-failures*): Add DECLARATION.[4-11]. 2005-06-06 Sam Steingold * compelem.d (N_imagpart): use the normal Rational/Float contagion rules for reals * clispload.lsp (*expected-failures*): remove MISC.598 2005-06-06 Bruno Haible * win32.d (_UWIN): Remove macro. (lseek, isatty) [MINGW]: Define to clisp-private names. 2005-06-04 Bruno Haible * lispbibl.d: Include the C code for generating clisp.h, with %%. * genclisph.d (main): Remove most statements. Include gen.lispbibl.c. Emit convert_time_to_universal_w32, convert_time_from_universal_w32 as inline functions. * makemake.in (CFILES): Add gen.lispbibl. (lispbibl.c): Blank out the %% lines. (gen.lispbibl.c): New rule. (genclisph.[oi]): Depend on gen.lispbibl.c. 2005-06-04 Bruno Haible * unix.d (time_t_from_filetime, time_t_to_filetime) [UNIX_CYGWIN32]: New declarations. 2005-06-04 Bruno Haible * lispbibl.d (convert_time_from_universal): New declaration. 2005-06-04 Bruno Haible * lispbibl.d (my_realloc): New declaration. 2005-06-04 Bruno Haible * lispbibl.d (stream_handles): New declaration. 2005-06-04 Bruno Haible * lispbibl.d (open_file_stream_handle, file_stream_truename): New declarations. 2005-06-04 Bruno Haible * lispbibl.d (addr_to_string, nonintr_connect, string_to_addr) (resolve_host, connect_to_x_server, socket_getlocalname) (socket_getpeername, create_server_socket, accept_connection) (create_client_socket): New declarations. * socket.d: Improve documentation. (create_server_socket, create_client_socket): Remove redundant declarations. 2005-06-04 Bruno Haible * lispbibl.d (check_classname): New declaration. * error.d (check_classname): Fix documentation. 2005-06-04 Bruno Haible * lispbibl.d (to_double, to_int): New declarations. * lisparit.d (to_double, to_int): Fix missing documentation. (to_double): Simplify. 2005-06-04 Bruno Haible * lispbibl.d (physical_namestring): New declaration. * pathname.d (physical_namestring): Improve documentation. 2005-06-04 Bruno Haible * pathname.d (MAKE-PATHNAME): Remove useless code introduced on 2005-05-16. 2005-06-04 Bruno Haible * lispbibl.d (if_does_not_exist_symbol, if_exists_symbol): New declarations. 2005-06-05 Sam Steingold * clispload.lsp (*expected-failures*): add MISC.598 (assumes that complex numbers have the same Re & Im types) 2005-06-03 Bruno Haible * spvw.d (main_actions): Don't increase argv_verbose. Reported by David Tolpin . 2005-06-03 Bruno Haible * utils/fix-perms.sh: New file. * Makefile.devel (fixperms): New target. (all, distrib): Depend on it. 2005-06-02 Bruno Haible * win32.d: Include . 2005-06-01 Bruno Haible * spvw_language.d (init_language): Fix syntax error in last patch. 2005-06-01 Bruno Haible * m4/poll.m4 (CL_POLL): Check against MacOS X 10.4.0 poll() bug. 2005-05-30 Bruno Haible * hashtabl.d (SXHASH): Fix compilation error on platforms where 24 < oint_data_len < 32, introduced on 2005-05-24. 2005-05-30 Bruno Haible Restore portability to Windows 95/98/ME/NT/2000. * win32.d (lseek): Declare as a function. * win32aux.d (lseek): New function. * spvw_memfile.d (loadmem_from_handle): Undo 2005-05-12 patch. Use the extended form of GetFileSize() instead. * stream.d (handle_lseek) [WIN32_NATIVE]: Use lseek. 2005-05-30 Bruno Haible * win32aux.d (lowlevel_fd_read, fd_write): Remove useless assignment. 2005-05-29 Bruno Haible Store the documentation string of interpreted functions in the function object. Make DOCUMENTATION work for traced functions. * init.lisp (sys::%set-documentation): Undo last patch. (defun): Add the doc string back to the function's lambdabody. * functions.lisp (unwrapped-fdefinition): New function. * documentation.lisp (documentation): Undo last patch. Use unwrapped-fdefinition instead of fdefinition. Look for the docstring of a function first in the function object. ((setf documentation)): Use unwrapped-fdefinition instead of fdefinition. Store the docstring also in the function object. 2005-05-29 Bruno Haible * compiler.lisp (*compile-file-resolved-pathname*): New variable. (compile-file): Bind it. 2005-05-29 Bruno Haible * compiler.lisp (c-OR): Rearrange 2005-05-20 patch for better maintainability. 2005-05-29 Bruno Haible Fix a bug of DEBUG_GCSAFETY with modules. * genclisph.d (main): In nonimmprobe, don't optimize away inside_gc. Needed because gcv_object_t::gcv_object_t uses nonimmprobe, and all definitions of gcv_object_t::gcv_object_t must be equivalent, because the linker picks one of them at random. 2005-05-29 Bruno Haible Fix omission in 2004-06-20 patch. * spvw_garcol.d (gc_sweep1_instance_forward) (gc_sweep1_instance_target) [TYPECODES]: Make it work for closure_type as well. 2005-05-29 Bruno Haible Optimize the caching of the expansion of FUNCTION-MACRO-LET macroexpanders. * defmacro.lisp (make-macro-expansion): Return an additional second value, the expansion's lambdabody. (make-funmacro-full-lambdabody, make-funmacro-expander): New functions. * clos-methcomb2.lisp (add-next-method-local-functions): Insert the macroexpander's full lambdabody instead of the unprocessed lambdabody. * control.d (SYSTEM::FUNCTION-MACRO-LET): Call make-funmacro-expander instead of make-macro-expander. * compiler.lisp (c-FUNCTION-MACRO-LET): Likewise. * init.lisp (%expand-funmacdefs-2): Expand the macroexpander in the null lexical environment. (defmacro): Update. * macros1.lisp (defmacro-special): Update. * cmacros.lisp (define-compiler-macro): Update. 2005-05-29 Bruno Haible Speedup creation of interpreted.mem and halfcompiled.mem. * init.lisp (%expand-lexical-variables, %expand-special-declarations): Declare inner lambdas as being already expanded. 2005-05-29 Bruno Haible * pathname.d (PARSE-NAMESTRING): Fix three GC-safety bugs introduced on 2005-05-06. 2005-05-14 Bruno Haible * makemake.in (ansi-tests): Undo 2005-05-05 patch. 2005-05-28 Bruno Haible Fix unmaintainable hack introduced on 2005-05-16. * defmacro.lisp (make-macro-expansion): Add valid-name-p argument. * cmacros.lisp (define-compiler-macro): Pass valid-name-p argument. (strip-funcall-form): Mark as ABI. 2005-05-28 Bruno Haible Supplement to 2005-05-23 patch. * makemake.in (clisp): Remove COMPILE_STANDALONE from the compilation flags. 2005-05-28 Bruno Haible * .gdbinit: Add comments reflecting 2005-05-17 change. 2005-05-28 Bruno Haible * makemake.in (XCFLAGS): Don't force HEAPCODES when DEBUG_GCSAFETY is used. 2005-05-28 Bruno Haible Fix a bug introduced on 2002-02-22. * spvw_language.d (init_language): Don't set O(current_language). Fixes a crash in TYPECODES && MAP_MEMORY && DEBUG_GCSAFETY builds. It is forbidden to work with 'object's before init_memory(). 2005-05-28 Bruno Haible Make DEBUG_GCSAFETY work with TYPECODES. * lispbibl.d (pointable, type_pointable, types_pointable): Move up. (pointable_unchecked): Rename from pointable. Use pointable_address_unchecked. (pointable_address_unchecked): New macro. (pointable): Rename from gcsafety_pointable. (nonimmprobe): Use pointable_address_unchecked. (hfintsize, hfint): Use a full word if DEBUG_GCSAFETY. When using a full word, use an uintP, not an uintL. (VAROBJECT_HEADER) [TYPECODES]: If DEBUG_GCSAFETY, don't wrap _GCself in a union. (GCself, header_flags) [TYPECODES]: Define differently if DEBUG_GCSAFETY. (cgci_pointable, pgci_pointable, ngci_pointable): Define also if TYPECODES. (cgci_types_pointable, pgci_types_pointable, ngci_types_pointable): New macros. (TheCons, TheRatio, TheComplex, TheSymbol, TheSymbolflagged, TheBignum) (TheFfloat, TheDfloat, TheLfloat, TheSarray, TheSbvector, TheCodevec) (TheS8string, TheS16string, TheS32string, TheSnstring, TheSistring) (TheSstring, TheSvector, TheIarray, TheRecord, TheLrecord, TheSrecord) (TheXrecord, ThePackage, TheHashtable, TheReadtable, ThePathname) (TheLogpathname, The_Random_state, TheByte, TheFsubr, TheLoadtimeeval) (TheSymbolmacro, TheGlobalSymbolmacro, TheMacro, TheFunctionMacro) (TheBigReadLabel, TheEncoding, TheFpointer, TheFaddress, TheFvariable) (TheFfunction, TheWeakpointer, TheMutableWeakList, TheWeakList) (TheWeakAnd, TheWeakOr, TheWeakmapping, TheWeakAndMapping) (TheWeakOrMapping, TheMutableWeakAlist, TheWeakAlist) (TheWeakHashedAlist, TheFinalizer, TheSocketServer, TheYetanother) (TheStream, TheStructure, TheClosure, TheIclosure, TheCclosure) (TheInstance, TheVarobject): Define using ngci_types_pointable. (TheSubr, TheFramepointer, TheMachine): Define using cgci_types_pointable. (ThePointer): Define using pgci_types_pointable. * subr.d (LISPFUN_F, LISPFUN_G) [TYPECODES]: Provide different definition if DEBUG_GCSAFETY. * constsym.d (LISPSYM_B) [TYPECODES]: Provide different definition if DEBUG_GCSAFETY. * genclisph.d (main): Update. Provide definitions for pointable_unchecked, pointable_address_unchecked, symbol_tab. 2005-05-28 Bruno Haible Fix compilation with g++ 3.3/3.4 if TYPECODES && OBJECT_STRUCT && !DEBUG_GCSAFETY. * lispbibl.d (INIT_SUBR_TAB, INIT_SYMBOL_TAB, INIT_OBJECT_TAB): Don't define if OBJECT_STRUCT and g++ 3.3/3.4. 2005-05-28 Bruno Haible * intserial.d (LEbytes_to_UI, LEbytes_to_I) [TYPECODES]: Fix compilation error in C++ mode with g++ 3.3 and 3.4. 2005-05-28 Bruno Haible * hashtabl.d (MAKE-HASH-TABLE) [TYPECODES]: Fix a compilation error in C++ mode. 2005-05-28 Bruno Haible Make it possible to use iconv() on platforms other than Unix. Fixes 2005-03-01 patch. * lispbibl.d (ANSIC_error): New declaration. * errunix.d [!UNIX]: Define only OS_error. * error.d [!UNIX]: Include errunix.c, to define ANSIC_error. * stream.d (open_iconv, check_charset, iconv_mblen, iconv_mbstowcs) (iconv_wcslen, iconv_wcstombs, iconv_range, ChannelStream_fini): Undo 2005-03-01 patch. Call ANSIC_error instead of OS_error. * makemake.in (ERROR_INCLUDES): Add errunix unconditionally. * win32.d: Undefine HAVE_ICONV, in case it's set by unixconf.h (on mingw). 2005-05-27 Sam Steingold * spvw_language.d (init_language) [WIN32_NATIVE]: avoid a mingw crash by setting argv_localedir to "" when it is NULL 2005-05-26 Sam Steingold * _clisp.c [WIN32_NATIVE]: include 2005-05-26 Sam Steingold * modules/syscalls/calls.c (MKDTEMP): new function * modules/syscalls/posix.lisp (MKDTEMP): export * modules/syscalls/configure.in (mkdtemp): check 2005-05-25 Sam Steingold * compiler.lisp (c-OR): fix last patch 2005-05-25 Sam Steingold * defseq.lisp (LIST): use LIST-LENGTH-PROPER instead of LIST-LLENGTH * list.d, constsym.d, subr.d (list_llength): remove 2005-05-25 Sam Steingold * control.d (PROCLAIM): forbid dotted declaration-specifier lists 2005-05-25 Sam Steingold * documentation.lisp (documentation): return NIL for NIL because NIL = (FUNCTION-NAME (COMPILE NIL (LAMBDA () ...))) * init.lisp (%set-documentation): ditto 2005-05-24 Sam Steingold * hashtabl.d (SXHASH): when fixnums are large enough, do not fold the value to fit into 24 bits: consider (SXHASH (1- (ASH 1 32))): On 32-bit platforms, hashcode_bignum() is used (returns 3 ==> 3). On 64-bit platforms, hashcode_fixnum() is used (4294967175 ==> 135). Therefore, limiting ourselves to 24 bits on all platforms does not buy us anything anyway. 2005-05-24 Sam Steingold pcre 3 lacks pcre_config() * modules/pcre/configure.in: check for pcre_config() * modules/pcre/cpcre.c (pcre-config) [HAVE_PCRE_CONFIG]: add condition 2005-05-24 Bruno Haible * spvw_sigsegv.d (stackoverflow_handler): Treat WIN32_NATIVE like UNIX_CYGWIN. Based on a patch by Doug Currie . 2005-05-23 Sam Steingold * makemake.in (distrib) [!BINARY_DISTRIB]: do not expect gnu tr * _clisp.c: do not include lispbibl.c because it is not included with a binary distribution; include execname.c textually * execname.c (maybe_executable): do not use boolean constants (find_executable): use "unsigned long" instead of "uintL" 2005-05-22 Bruno Haible * stdint_.h (_STDINT_H_HAVE_INT64): New macro. Use it in #ifdefs. (INT64_MIN): Fix definition. Suggested by Paul Eggert . * stdint_.h (_STDINT_H_NEED_SIGNED_INT_TYPES): Rename from NEED_SIGNED_INT_TYPES. * stdint_.h (_STDINT_H_HAVE_SYSTEM_INTTYPES): Rename from HAVE_SYSTEM_INTTYPES. 2005-05-22 Bruno Haible * m4/ffcall-smallstruct.m4 (CL_SMALL_STRUCT_RETURN): Use 'long' instead of 'int'. Needed because on sparc64, 'int' has 32 bits, a function returning a 'struct { int x; }' returns the result in the 32 _high_ bits of %o0, whereas a function returning 'int' returns the result in the 32 _low_ bits of %o0 (sign-extended to 64 bits). Reported by Valeriy E. Ushakov . 2005-05-22 Sam Steingold * modules/clx/new-clx/clx.f (make_display): when fixnum size is less than 29, use STABLEHASH-EQUAL hash table, otherwize STABLEHASH-EQ (xlib_a_cons): not needed when fixnum can hold XID (XID_to_object_old, XID_to_object_new): define differently depending on whether fixnum can hold XID or not (lookup_xid, delete_resource_id): use XID_to_object_old (set_resource_id): use XID_to_object_new 2005-05-20 Sam Steingold * spvw.d (init_symbol_values): UNIX_CYGWIN -> UNIX_CYGWIN32 2005-05-20 Sam Steingold * modules/rawsock/sock.lisp (SOCKET-OPTION): simplified DEFSETF * modules/syscalls/calls.c (SET-PRIORITY): made value the first argument, it is easier to return it this way * modules/syscalls/posix.lisp (PRIORITY): update DEFSETF 2005-05-20 Bruno Haible * spvw.d (print_license): Update FSF postal address. 2005-05-20 Sam Steingold * compiler.lisp (compile-file): as per the ANSI CL spec, bind *COMPILE-FILE-PATHNAME* to (merge-pathnames file) 2005-05-20 Sam Steingold * makemake.in: remove duplicated link options only needed for early versions of Solaris 2005-05-20 Sam Steingold * compiler.lisp (c-OR): (or ... (foo) nil) ==> (or ... (values (foo))) this permits a better optimization of (COND ((...))), i.e., when a clause consists of just the test form. This adds 71 bytes to compiler.fas (0.01%) and removes 91 bytes total from all the other files, for a net change of 20 bytes (0.0005%) 2005-05-20 Sam Steingold * modules/rawsock/rawsock.c (SHUT_RD, SHUT_WR, SHUT_RDWR) [WIN32_NATIVE]: defined Reported by Yaroslav Kavenchuk 2005-05-19 Sam Steingold * stream.d (stream_handles): made global for modules; respect check_open for streams * genclisph.d (SOCKET) [UNIX]: emit typedef [WIN32_NATIVE]: include winsock2.h for SOCKET (stream_handles): export * modules/rawsock/rawsock.c (RAWSOCK:SOCKET-OPTION) (RAWSOCK::SET-SOCKET-OPTION): use stream_handles() 2005-05-19 Sam Steingold * modules/rawsock/rawsock.c (RAWSOCK:SOCKET-OPTION) (RAWSOCK::SET-SOCKET-OPTION): new functions * modules/rawsock/sock.lisp (RAWSOCK:SOCKET-OPTION): new defsetf 2005-05-19 Sam Steingold * modules/rawsock/sock.lisp (open-unix-socket): add the package prefix for EXT:ABSOLUTE-PATHNAME (open-unix-socket-stream): ditto for EXT:FINALIZE 2005-05-18 Sam Steingold * utils/modprep.lisp (split-option): remove an absurd check (split-command): do not call SPLIT-OPTION on all ARGS (def-something-p): call SPLIT-OPTION just on the options (split-command, extract-argument-string, check-signature, new-checker): standardized error message 2005-05-18 Sam Steingold * genclisph.d (sec_usec): export 2005-05-18 Sam Steingold * m4/tcpconn.m4 (CL_TCPCONN): check for getsockopt() here * configure.in: do not check for getsockopt() here * modules/rawsock/configure.in: use CL_TCPCONN 2005-05-17 Sam Steingold * .gdbinit (ansi_tests_compiled): new command (SIGSEGV, SIGBUS): do not handle (commented out): gdb 6+ does not stop .gdbinit processing after a failed command, so SIGSEGV remained handled even on platforms without GENERATIONAL_GC 2005-05-16 Sam Steingold * init.lisp (open-for-load): return FILENAME as is only if it is an open input stream, symmetric to COMPILE-FILE-PATHNAME-HELPER 2005-05-16 Sam Steingold * pathname.d (MAKE-PATHNAME): accept :DEVICE :UNSPECIFIC to mean NIL because of COMPILE-FILE-PATHNAME with logical :OUTPUT-FILE 2005-05-16 Sam Steingold * defmacro.lisp (make-macro-expansion): when PRE-PROCESS is supplied, this is a DEFINE-COMPILER-MACRO call, so name could be a (SETF symbol) 2005-05-16 Sam Steingold * documentation.lisp (documentation): return NIL for KEYWORDs because :LAMBDA = (FUNCTION-NAME (LAMBDA () ...)) for all LAMBDAs * init.lisp (%set-documentation): ditto 2005-05-16 Sam Steingold * pathname.d (ENOUGH-NAMESTRING): check consp() before taking Car() 2005-05-16 Sam Steingold * compiler.lisp (compile-file): return the FAS file truename as per ANSI 2005-05-14 Sam Steingold * modules/berkeley-db/Makefile.in (bdb.o): depend on clisp.h * modules/clx/new-clx/Makefile.in (clx.o): ditto * modules/dirkey/Makefile.in (dirkey.o): ditto * modules/i18n/Makefile.in (gettext.o): ditto * modules/queens/Makefile.in (callqueens.o): ditto * modules/rawsock/Makefile.in (rawsock.o): ditto * modules/regexp/Makefile.in (regexi.o): ditto * modules/syscalls/Makefile.in (calls.o): ditto * modules/postgresql/Makefile.in (.o): ditto * modules/bindings/glibc/Makefile.in (linux.o): ditto * modules/bindings/win32/Makefile.in (win32.o): ditto * modules/matlab/Makefile.in (matlab.o): ditto * modules/netica/Makefile.in (netica.o): ditto * modules/pari/Makefile.in (pari.o): ditto * modules/wildcard/Makefile.in (wildcard.o): ditto * modules/zlib/Makefile.in (zlib.o): ditto * modules/regexp/regexi.c: include "clisp.h", not 2005-05-14 Sam Steingold when lndir copies or hard links, "cvs up" required "rm -rf module-dir" * makemake.in (anymodule): always call lndir, even when destination exists * lndir: when destination exists, update it 2005-05-13 Bruno Haible * makemake.in (clisp): Set COMPILE_STANDALONE. Fixes link error introduced on 2005-03-10. 2005-05-13 Bruno Haible * genclisph.d (main): Make VAROBJECT_HEADER definition consistent with lispbibl.d. Undo LISPFUN_F modification from 2005-03-29. 2005-05-13 Bruno Haible * spvw.d (main) [UNIX_DARWIN && TYPECODES && TRIVIALMAP_MEMORY]: Provide a good location of heaps. 2005-05-13 Bruno Haible Make it possible to use 64-bit integer types with MSVC. * stdint_.h (int64_t, uint64_t, int_least64_t, uint_least64_t) (int_fast64_t, uint_fast64_t, intmax_t, uintmax_t, INT64_MIN, INT64_MAX) (UINT64_MAX, INT_LEAST64_MIN, INT_LEAST64_MAX, UINT_LEAST64_MAX) (INT_FAST64_MIN, INT_FAST64_MAX, UINT_FAST64_MAX, INTMAX_MIN) (INTMAX_MAX, UINTMAX_MAX, INT64_C, UINT64_C, INTMAX_C, UINTMAX_C): Add support for 64-bit integers in the MSVC compiler. * lispbibl.d (LL, ULL): New macros. (oint_type_mask, oint_addr_mask) [WIDE_SOFT]: Use ULL macro. (vbit, vbitm, minus_vbit, wbit, wbitm, minus_wbit): Use ULL macro. * genclisph.d (main): Emit definitions for LL, ULL. Update vbit, vbitm, minus_vbit, wbit, wbitm, minus_wbit. * unixaux.d (FACTOR, NSPERSEC): Use LL macro. * arilev0.d (divu_6464_6464): Use cast instead of ULL. * aridecl.d (wbitc): Define also if MICROSOFT. Use ULL macro. * intlog.d (logcount_64): Use ULL macro. * intmal.d (FN_fak_I): Use ULL macro. 2005-05-11 Bruno Haible Support for 48-bit wide fixnums. * lispbibl.d (WIDE_SOFT): Set if WIDE_SOFT_LARGEFIXNUM is set. (dotimesV, dotimespV): New macros. (WIDE_STRUCT): Don't define if WIDE_SOFT_LARGEFIXNUM. (oint_data_len): Increase from 32 to 40 or 48 where possible. (oint_data_mask): Update accordingly. (oint_type_len, oint_addr_len) [WIDE_SOFT]: Define differently if WIDE_SOFT_LARGEFIXNUM is set. (intVsize): New macro. (uintV, sintV): New types. (GENERATIONAL_GC): Don't define if WIDE_SOFT_LARGEFIXNUM is set. (vbit, vbitm, vbit_test, minus_vbit): New macros. (Fixnum_minus1): Use vbit* macros. (posfixnum_to_V): Rename from posfixnum_to_L. Return an uintV value. (negfixnum_to_V): Rename from negfixnum_to_L. Return an uintV value. (negfixnum_abs_V): Rename from negfixnum_abs_L. Return an uintV value. (fixnum_to_V): Rename from fixnum_to_L. Return a sintV value. (fixnum_to_Q): Cast to sintQ. (make_small_read_label, small_read_label_integer_p) (small_read_label_value): Use uintV type and vbit* macros. (make_system): Likewise. (TheHandle): Use posfixnum_to_V instead of posfixnum_to_L. (arraysize_limit_1): Define as 2^32-1 if oint_data_len > 32. (array_displace_check): Change second argument type to uintV. (map_hashtable, map_hashtable_nogc): Use posfixnum_to_V instead of posfixnum_to_L. (fehler_stringsize): Change argument type to uintV. (fehler_uint8, fehler_sint8, fehler_uint16, fehler_sint16) (fehler_uint32, fehler_sint32, fehler_uint64, fehler_sint64): New declarations. (fehler_uint, fehler_sint, fehler_ulong, fehler_slong): New macros. (L2_to_I, UL2_to_I): Define as macros if intVsize>32. (Q_to_I, UQ_to_I): Declare also if intVsize>32. (V_to_I, UV_to_I): New macros. (uint64_to_I, sint64_to_I): Define also if intVsize>32. (I_to_uint, I_to_sint): Define always. * genclisph.d (main): Emit definitions of uintV, sintV. Update for Fixnum_minus1. Emit posfixnum_to_V, negfixnum_to_V, fixnum_to_V instead of posfixnum_to_L, negfixnum_to_L, fixnum_to_L. Update for make_system, array_displace_check. Emit declarations for fehler_uint8, fehler_sint8, fehler_uint16, fehler_sint16, fehler_uint32, fehler_sint32, fehler_uint64, fehler_sint64, fehler_uint, fehler_sint, fehler_ulong, fehler_slong, L2_to_I, UL2_to_I, Q_to_I, UQ_to_I. Emit definitions for V_to_I, UV_to_I. Update for uint64_to_I, sint64_to_I. Emit check_uint_defaulted instead of posfixnum_default2. Emit check_uint_default0 instead of posfixnum_default. * error.d (begin_error): Use posfixnum_to_V instead of posfixnum_to_L. (fehler_stringsize): Change argument type to uintV. (fehler_uint8, fehler_sint8, fehler_uint16, fehler_sint16) (fehler_uint32, fehler_sint32, fehler_uint64, fehler_sint64): New functions. * arilev0.d (high32, low32, highlow64, highlow64_0): New macros. (mulu32_64): New macro. (divu_6432_6432, divu_6464_6464): New macros. * intelem.d (get_maxV_Dptr): New macro. (FN_to_V): Rename from FN_to_L. (FN_V_zerop): Rename from FN_L_zerop. (FN_V_minusp): Rename from FN_L_minusp. (I_to_UL): When intVsize>32, reject values >= 2^32. (I_to_L): When intVsize>32, reject values >= 2^31 or < -2^31. (I_to_UQ): Use posfixnum_to_V instead of posfixnum_to_L. (I_to_Q): Likewise. Use negfixnum_to_V instead of negfixnum_to_L. (L2_to_I, UL2_to_I): Comment out if intVsize>32. (Q_to_I): Enable if intVsize>32. Use wbitc macro. (UQ_to_I): Enable if intVsize>32. (NDS_to_I): If intVsize>32, use 64-bit variables. (pFN_maxlength_digits_at): Return a value of type uintV instead of uint32. * intlog.d (I_to_DS_n_): Use uintV instead of uint32. (I_I_logand_I, I_I_lognand_I, I_I_logandc2_I, I_I_logtest, I_I_logbitp) (I_I_ash_I): Use uintV instead of uint32. Use vbit* macros. (logcount_64): New macro. (I_logcount_I): Use uintV instead of uint32. Use logcount_64 if intVsize>32. (integerlength64): New macro. (I_integer_length, I_integer_length_I): Use uintV instead of uint32. Use integerlength64 if intVsize>32. (ord2_64): New macro. (I_ord2): Use uintV instead of uint32. Use ord2_64 if intVsize>32. (I_power2p): Use uintV instead of uint32. Use integerlength64 if intVsize>32. * intplus.d (I_I_plus_I, I_minus_I, I_I_minus_I): Use FN_to_V/V_to_I instead of FN_to_L/L_to_I. Use sintV instead of sint32. * intbyte.d (Byte_to_V_V): Rename from Byte_to_L_L. Use posfixnum_to_V instead of posfixnum_to_L. (fullbyte_I): Change argument types to uintV. (I_Byte_ldb_I, I_Byte_ldb_test, I_Byte_mask_field_I): Use uintV instead of uintL. * intmal.d (I_square_I, I_I_mal_I): Use sintV instead of sint32. (prod_ungerade): Change argument types to uintV. (FN_fak_I): Extend table. Use uintV instead of uintL. * intdiv.d (I_I_divide_I_I): Handle case intVsize>32 when dividing fixnums. * intgcd.d (UV_UV_gcd_UV): Rename from UL_UL_gcd_UL. Change argument types to uintV. (I_I_gcd_I): Update. * intserial.d (LESbvector_to_UI, LESbvector_to_I): Use uintV instead of uintL. (UI_to_LEbytes, I_to_LEbytes): Likewise. * sfloat.d (RA_to_SF): Use posfixnum_to_V instead of posfixnum_to_L. * ffloat.d (RA_to_FF): Use posfixnum_to_V instead of posfixnum_to_L. * flo_rest.d (SF_I_scale_float_SF, FF_I_scale_float_FF) (DF_I_scale_float_DF, LF_I_scale_float_LF): Use uintV instead of uintL. * realtran.d (R_sin_R, R_cos_R, R_cos_sin_R_R): Use posfixnum_to_V instead of posfixnum_to_L. * comptran.d (N_N_expt_N): Use uintV instead of uintL. * lisparit.d (FLOAT-DIGITS): Use uintV instead of uintL. (SYS::RANDOM-POSFIXNUM): When oint_data_len>32, call random_L twice. ((SETF LONG-FLOAT-DIGITS), log_digits): Use uintV instead of uintL. * affi.d (affi_callit, affi_call_argsa): Use fixnum_to_V instead of fixnum_to_L. (SYSTEM::MEM-READ, SYSTEM::MEM-WRITE): Use posfixnum_to_V instead of posfixnum_to_L. Use negfixnum_to_V instead of negfixnum_to_L. * array.d (array_displace_check): Change second argument type to uintV. (test_subscripts, test_index): Use uintV instead of uintL. (storagevector_store): Likewise. (ROW-MAJOR-AREF, SYS::ROW-MAJOR-STORE): Likewise. (ARRAY-DIMENSION, ARRAY-IN-BOUNDS-P): Likewise. (SET-FILL-POINTER, VECTOR-PUSH-EXTEND): Likewise. (test_dims): Verify that each dimension is < 2^32. (test_displaced, test_fillpointer): Use uintV instead of uintL. (MAKE-ARRAY, reshape, ADJUST-ARRAY): Use posfixnum_to_V instead of posfixnum_to_L. (SYS::VECTOR-INIT-START, SYS::VECTOR-FE-INIT-END): Likewise. (SYS::MAKE-BIT-VECTOR): Verify that the argument is < 2^32. * charstrg.d (coerce_char): Use uintV instead of uintL. (test_radix_arg): Likewise. (CODE-CHAR, DIGIT-CHAR, INT-CHAR): Likewise. (test_index): Expect an assignment to an uintV. Use posfixnum_to_V instead of posfixnum_to_L. (test_index_arg, test_vector_limits, test_1_stringsym_limits) (test_2_stringsym_limits): Use uintV instead of uintL. (MAKE-STRING, SUBSTRING): Likewise. * debug.d (read_form): Use posfixnum_to_V instead of posfixnum_to_L. (test_mode_arg): Use uintV instead of uintL. (top_of_back_trace_frame): Use posfixnum_to_V instead of posfixnum_to_L. (SHOW-STACK): Use uint32_p/I_to_uint32 instead of posfixnump/posfixnum_to_L. * control.d (SYSTEM::%EXIT): Use uint_p/I_to_uint instead of posfixnump/posfixnum_to_L. (SYS::UNWIND-TO-DRIVER): Use uint32_p/I_to_uint32 instead of posfixnump/posfixnum_to_L. * encoding.d (SYSTEM::CHARSET-RANGE): Use uint32_p/I_to_uint32 instead of posfixnump/posfixnum_to_L. * eval.d (SYS::%FUNTABREF): Use uintV instead of uintL. (invoke_handlers): Use posfixnum_to_V instead of posfixnum_to_L. (get_closure, funcall_iclosure, eval_fsubr): Likewise. (interpret_bytecode_): Use fixnum_to_V instead of fixnum_to_L. Use posfixnum_to_V instead of posfixnum_to_L. Use uintV instead of uintL. Use vbit* macros. * foreign.d (convert_function_to_foreign): Use uintV instead of uintL. (FFI::LOOKUP-FOREIGN-VARIABLE): Use posfixnum_to_V instead of posfixnum_to_L. (FFI::%ELEMENT, FFI::CALL-WITH-FOREIGN-STRING): Use uintV instead of uintL. (FFI::FOREIGN-CALL-OUT, callback): Use posfixnum_to_V instead of posfixnum_to_L. * hashtabl.d (hashcode1stable): Use posfixnum_to_V instead of posfixnum_to_L. (rehash, hash_lookup_builtin, hash_lookup_user, hash_store): Likewise. (prepare_resize): Use uintV instead of uintL. (resize, clrhash, MAKE-HASH-TABLE, REMHASH, MAPHASH) (SYSTEM::HASH-TABLE-ITERATE, (SETF HASH-TABLE-WEAK-P)) (CLOS::CLASS-GETHASH, hashcode_tuple, CLOS::CLASS-TUPLE-GETHASH): Use posfixnum_to_V instead of posfixnum_to_L. * io.d (syntax_table_get_notinline): Use posfixnum_to_V instead of posfixnum_to_L. (SET-MACRO-CHARACTER, GET-MACRO-CHARACTER, RTCase): Likewise. (get_base): Use uintV instead of uintL. (bit_vector_reader, vector_reader): Use uintV instead of uintL. Signal error if n >= 2^32. (lookup_label): Use posfixnum_to_V instead of posfixnum_to_L. (closure_reader): Use uintV instead of uintL. Signal error if n >= 2^32. (PARSE-INTEGER): Use uintV instead of uintL. (spaces): Use uintV instead of uintL. (format_tab): Use posfixnum_to_V instead of posfixnum_to_L. (pprint_prefix): Change return type to uintV. (right_margin, klammer_zu): Use uintV instead of uintL. (justify_end_fill): Use posfixnum_to_V instead of posfixnum_to_L. (justify_end_linear): Use uintV instead of uintL. (indent_start): Change argument type to uintV. (indentprep_end): Change return type to uintV. (level_check): Use posfixnum_to_V instead of posfixnum_to_L. (get_print_length): Likewise. (check_lines_limit, circle_p, pr_circle, space_available): Use uintV instead of uintL. (string_fit_line_p): Use posfixnum_to_V instead of posfixnum_to_L. (pr_enter_1): Use uintV instead of uintL. (get_indent_lists): Change return type to uintV. (pr_array): Use uintV instead of uintL. (pr_orecord): Use posfixnum_to_V instead of posfixnum_to_L. (pr_cclosure_codevector): Use uintV instead of uintL. (PPRINT-INDENT): Use sintV instead of int. Verify range when using fixnum_to_V. Use uintV instead of uintL. * list.d (get_integer_truncate): If intVsize>32, check whether the argument is >= 2^32. * package.d (rehash_symtab, symtab_lookup, symtab_find, symtab_insert) (symtab_delete, map_symtab, map_symtab_c, SYSTEM::PACKAGE-ITERATE): Use posfixnum_to_V instead of posfixnum_to_L. * predtype.d (hash_table_equalp): Use posfixnum_to_V instead of posfixnum_to_L. (expand_deftype): Use uintV instead of uintL. (init_hs_locals, with_gc_statistics): Use posfixnum_to_V instead of posfixnum_to_L. * record.d (record_up): Use uintV instead of uintL. (test_record_length): Expect an uintV variable. (structure_up, SYS::%MAKE-STRUCTURE, SYS::MAKE-CODE-VECTOR) (CLOS::ALLOCATE-METAOBJECT-INSTANCE, CLOS::ALLOCATE-STD-INSTANCE) (CLOS::ALLOCATE-FUNCALLABLE-INSTANCE): Use uintV instead of uintL. (ptr_to_slot): Use posfixnum_to_V instead of posfixnum_to_L. (slot_access_up, update_instance): Use uintV instead of uintL. (CLOS::%CHANGE-CLASS): Use posfixnum_to_V instead of posfixnum_to_L. * sequence.d (copy_seqpart_into): Use uintV instead of uintL. (seq_check_index): Use posfixnum_to_V instead of posfixnum_to_L. (REVERSE, NREVERSE): Use uintV instead of uintL. (MAKE-SEQUENCE): Use elt_fill only if the size is < 2^32. (MAP-INTO): Use posfixnum_to_V instead of posfixnum_to_L. (FILL): Use uintV instead of uintL. (help_function): Change argument types to uintV. (seq_filterop): Use uintV instead of uintL. (remove_help, delete_help): Change argument types to uintV. (remove_op, delete_op): Use uintV instead of uintL. (remove_duplicates_list_from_start, delete_duplicates_list_from_start) (delete_duplicates_list_from_end): Change argument type to uintV. (seq_duplicates): Use uintV instead of uintL. (substitute_help): Change argument types to uintV. (substitute_op): Use uintV instead of uintL. (nsubstitute_fe_help): Change argument types to uintV. (READ-CHAR-SEQUENCE, WRITE-CHAR-SEQUENCE, READ-BYTE-SEQUENCE) (WRITE-BYTE-SEQUENCE): Use uintV instead of uintL. * spvw.d (define_constant_UL1): Use UV_to_I instead of UL_to_I. (print_banner): Use posfixnum_to_V instead of posfixnum_to_L. (main): Use vbit* macros. * spvw_debug.d (nobject_out1): Use posfixnum_to_V instead of posfixnum_to_L. * spvw_garcol.d (uintVLA): Rename from uintV. (move_aligned_p1_p2): Update. * spvw_weak.d (weak_hashed_alist_update_one): Use posfixnum_to_V instead of posfixnum_to_L. * stream.d (wr_ss_lpos): Use uintV instead of uintL. (stream_get_lastchar, stream_set_lastchar): Use posfixnum_to_V instead of posfixnum_to_L. (read_byte_array, write_byte_array, read_char_array): Use uintV instead of uintL. (write_char, write_char_array, harden_elastic_newline): Use posfixnum_to_V instead of posfixnum_to_L. (rd_ch_str_in, rd_ch_array_str_in, listen_char_str_in, rd_ch_buff_in) (listen_char_buff_in, test_eltype_arg): Use uintV instead of uintL. (wr_by_iau8_unbuffered, wr_by_iau8_buffered): Use posfixnum_to_V instead of posfixnum_to_L. (make_file_stream): Use uintV instead of uintL. (rd_ch_terminal2): Likewise. (listen_char_terminal2): Use posfixnum_to_V instead of posfixnum_to_L. (rd_ch_terminal3): Use uintV instead of uintL. (listen_char_terminal3): Use posfixnum_to_V instead of posfixnum_to_L. (SCREEN::SET-WINDOW-CURSOR-POSITION): Likewise. (SYS::MAKE-SOCKET-STREAM): Use uint16_p/I_to_uint16 instead of posfixnump/posfixnum_to_L. (test_n_bytes_args): Use uint32_p/fehler_uint32 instead of posfixnump/fehler_posfixnum. (create_server_socket): Use uint16_p/I_to_uint16 instead of posfixnump/posfixnum_to_L. (sec_usec): Use uint32_p/fehler_uint32 instead of posfixnump/fehler_posfixnum. (SOCKET-CONNECT): Use uint16_p/I_to_uint16 instead of posfixnump/posfixnum_to_L. (stream_handles): Use uint_p/I_to_uint instead of posfixnump/posfixnum_to_L. (sock_opt_int): Mark as maygc. Use uint_to_I instead of posfixnum. Use uint_p/I_to_uint instead of posfixnump/posfixnum_to_L. (SOCKET-OPTIONS): Use uint_p/I_to_uint/fehler_uint instead of posfixnump/posfixnum_to_L/fehler_posfixnum. (MAKE-STREAM): Use uint_p/I_to_uint instead of posfixnump/posfixnum_to_L. (get_line_position): Use uintV instead of uintL. (elastic_newline_pending_p, elastic_newline, stream_get_read_eval) (stream_set_read_eval): Use posfixnum_to_V instead of posfixnum_to_L. * time.d (SYS::DEFAULT-TIME-ZONE, SYSTEM::%SLEEP): Use posfixnum_to_V instead of posfixnum_to_L. (SYS::DELTA4): Use uintV instead of uintL. * weak.d (WEAK-LIST-LIST, WEAK-ALIST-CONTENTS, (SETF WEAK-ALIST-VALUE)): Use posfixnum_to_V instead of posfixnum_to_L. * modules/berkeley-db/bdb.c (BDB:DBE-CREATE): Use uint_p/I_to_uint instead of posfixnump/posfixnum_to_L. (BDB:DBE-OPEN): Update. (BDB:DBE-SET-OPTIONS): Use check_uint/I_to_uint instead of check_posfixnum/posfixnum_to_L. (BDB:DB-OPEN): Update. (BDB:DB-JOIN): Use posfixnum_to_V instead of posfixnum_to_L. (BDB:DB-SET-OPTIONS): Use check_uint/I_to_uint instead of check_posfixnum/posfixnum_to_L. (BDB:TXN-CHECKPOINT): Update. * modules/clx/new-clx/clx.f (get_fixnum): Use fixnum_to_V instead of fixnum_to_L. * modules/dirkey/dirkey.c (state_next_key, LDAP::DKEY-SEARCH-NEXT-ATT): Use posfixnum_to_V instead of posfixnum_to_L. * modules/pcre/cpcre.c (PCRE:PCRE-EXEC): Update. * modules/i18n/gettext.c (I18N:NGETTEXT): Use uint32_p/I_to_uint32 instead of posfixnump/posfixnum_to_L. * modules/queens/callqueens.c (USER::QUEENS): Use check_uint/I_to_uint instead of check_posfixnum/posfixnum_to_L. Change result type from uint32 to 'unsigned int'. * modules/rawsock/rawsock.c (RAWSOCK:SOCKATMARK, RAWSOCK:ACCEPT) (RAWSOCK:BIND, RAWSOCK:CONNECT, RAWSOCK:GETPEERNAME) (RAWSOCK:GETSOCKNAME, RAWSOCK:LISTEN, RAWSOCK:RECV, RAWSOCK:RECVFROM) (RAWSOCK:RECVMSG, RAWSOCK:SOCK-READ, RAWSOCK:SEND, RAWSOCK:SENDMSG) (RAWSOCK:SENDTO, RAWSOCK:SOCK-WRITE, RAWSOCK:SOCK-CLOSE) (RAWSOCK:SHUTDOWN, RAWSOCK:CONFIGDEV): Use check_uint/I_to_uint instead of check_posfixnum/posfixnum_to_L. * modules/regexp/regexi.c (REGEXP::REGEXP-EXEC): Update. * modules/syscalls/calls.c (POSIX::STREAM-LOCK): Use uint_p/I_to_uint instead of posfixnump/posfixnum_to_L. (POSIX:GETSID, POSIX:GETPGRP, POSIX:SETPGID, POSIX:KILL, OS:PRIORITY) (OS:SET-PRIORITY): Use check_uint32/I_to_uint32 instead of check_posfixnum/posfixnum_to_L. (POSIX::USER-DATA, POSIX::SET-FILE-STAT, POSIX::CONVERT-MODE): Use check_uint32/I_to_uint32 instead of check_posfixnum/posfixnum_to_L. (POSIX::CONVERT-MODE): Use integerp instead of posfixnump, uint32_to_I instead of fixnum. (POSIX::DUPLICATE-HANDLE): Use check_uint/I_to_uint instead of check_posfixnum/posfixnum_to_L. (POSIX::CONVERT-ATTRIBUTES, POSIX::MAKE-SHORTCUT): Use check_uint32/I_to_uint32 instead of check_posfixnum/posfixnum_to_L. 2005-05-11 Bruno Haible * intelem.d (FN_MSD): Define in a way that doesn't require the sintDD type. 2005-05-11 Bruno Haible Fix bug introduced on 2005-01-27. * lispbibl.d (defined_class_length): New macro. (built_in_class_length): Define based on defined_class_length. 2005-05-13 Sam Steingold * modules/pcre/cpcre.c: update for PCRE5 2005-05-13 Sam Steingold * backquote.lisp (bq-non-list-splice-error, bq-dotted-splice-error): avoid bootstrapping problems by not using LOAD-TIME-EVAL 2005-05-12 Sam Steingold support 4GB+ files on woe32 * lispbibl.d (off_to_I): new macro * win32.d (off_t): define to sint64 (SIZEOF_OFF_T): define to 8 * pathname.d (READDIR_entry_size): return a 64-bit number (directory_search_scandir) [WIN32_NATIVE]: entry_size is off_t, not uintL (loadmem_from_handle) [WIN32_NATIVE]: use GetFileSizeEx() instead of GetFileSize() * stream.d (handle_lseek) [WIN32_NATIVE]: use SetFilePointerEx() instead of SetFilePointer() 2005-05-12 Sam Steingold * io.d (signal_reader_error): expect STREAM in sp (read_internal): pass stream_ in sp 2005-05-11 Bruno Haible Make it possible to use 'aint' = 'uint64' on 32-bit machines. * lispbibl.d (type_pointer_object) [TYPECODES]: If WIDE_SOFT, cast the address to uintP first, to force zero-extend instead of sign-extend. * genclisph.d (main): Likewise. 2005-05-11 Bruno Haible Fix bug in handling of reallocated simple-strings with TYPECODES, introduced on 2004-02-18. * lispbibl.d (sstring_flags) [TYPECODES]: Include the forwarded_B bit. 2005-05-12 Sam Steingold * stream.d (finish_tty_output) [UNIX_DARWIN]: ignore EOPNOTSUPP and ENODEV, just like in clear_tty_output() Reported by Pascal Costanza 2005-05-12 Sam Steingold * compiler.lisp (compile-file-pathname-helper): return OUTPUT-FILE as is only if it is an open output stream 2005-05-12 Sam Steingold * io.d (pr_orecord): enable saving pathnames into *.fas files even when *PRINT-PATHNAMES-ANSI* is non-NIL 2005-05-11 Sam Steingold * utils/clispload.lsp (*expected-failures*): add DISASSEMBLE.ERROR.3: CLISP extends DISASSEMBLE to accept STRINGs, METHODs, and forms 2005-05-11 Sam Steingold * error.d (end_error): READER-ERROR also accepts :STREAM * backquote.lisp (backquote-reader, comma-reader) (bq-non-list-splice-error, bq-dotted-splice-error): ditto 2005-05-11 Sam Steingold * modules/syscalls/calls.c (utmpx_to_lisp): add casts to avoid C++ warnings * modules/syscalls/configure.in (time_t, suseconds_t): AC_CHECK_SIZEOF (utmpx.ut_host): check only when is present 2005-05-10 Sam Steingold * places.lisp (define-setf-expander, defsetf): pass SETF-EXPANDER instead of "SETF expander" to CHECK-REDEFINITION * init.lisp (check-redefinition): when WHAT is SETF-EXPANDER, avoid unnecessary warnings for SUBRs 2005-05-10 Sam Steingold * makemake.in (PATH) [win32gcc]: add /mingw/bin 2005-05-10 Sam Steingold * lispbibl.d, intelem.d (I_to_Q, I_to_UQ) [HAVE_LONGLONG]: always define 2005-05-10 Sam Steingold better error checking for UNION at al * list.d (LIST-LENGTH-PROPER): new function * constsym.d, subr.d (list_length_proper): add * init.lisp (list-length-proper): export * error.d (fehler_proper_list_dotted): EXPECTED-TYPE = PROPER-LIST * defs1.lisp (list-to-ht): use LIST-LENGTH-PROPER instead of LENGTH 2005-05-10 Sam Steingold fix EXPECTED-TYPE in function-name errors * constobj.d (type_designator_function_name): add * error.d (check_funname_replacement): use it instead of type_designator_function 2005-05-10 Sam Steingold * defs1.lisp (encode-universal-time): time zone is specified by ANSI in [-24;24], not [-13;12]; use ISO date format for error reporting 2005-05-09 Sam Steingold * modules/rawsock/rawsock.c [WIN32_NATIVE]: fix C++ compilation (BUF_TYPE_T): new CPP define (RECV, RECVFROM, SEND, SENDTO): cast buffer 2005-05-09 Sam Steingold * pathname.d (ENOUGH-NAMESTRING): fix for possible NIL directory 2005-05-09 Sam Steingold * init.lisp (load): bind *LOAD-PATHNAME* to the result of MERGE-PATHNAMES as per ANSI CL spec Found by Paul Dietz's ansi-tests test suite. 2005-05-09 Sam Steingold * modules/syscalls/calls.c (STREAM-LOCK, MKSTEMP, FILE-STAT, MKNOD) (sid_cache_put) [WIN32_NATIVE]: fix C++ compilation 2005-05-09 Sam Steingold * modules/i18n/gettext.c (get_locale_info, DECLARE_RES): add casts for C++ compilation 2005-05-09 Pascal J.Bourguignon * modules/syscalls/calls.c (OPENLOG): allocate ident and keep it in a static variable (CLOSELOG): release it 2005-05-09 Sam Steingold * modules/clx/mit-clx/dependent.lisp (host-address): use READ-FROM-STRING instead of SLIT-SEQUENCE * modules/clx/mit-clx/defsystem.lisp (dependent, load-clx): remove split-sequence * modules/clx/mit-clx/split-sequence.lisp: remove 2005-05-09 Sam Steingold * modules/clx/mit-clx/dependent.lisp (host-address): use POSIX::HOSTENT-ADDRTYPE instead of POSIX::HOSTENT-ADDR-TYPE Reported by Pascal J.Bourguignon 2005-05-09 Sam Steingold * pathname.d (use_default_dir) [PATHNAME_WIN32]: fix a GC-safety bug 2005-05-09 Sam Steingold * lispbibl.d, intelem.d (I_to_UQ): define on WIN32_NATIVE for convert_time_from_universal() * time.d (convert_time_from_universal): use I_to_UQ() instead of its alias I_to_uint64() 2005-05-09 Sam Steingold * execname.c (find_executable): add a cast for C++ compilation * pathname.d (use_default_dir): ditto * socket.d (resolve_host1): ditto 2005-05-09 Sam Steingold * pathname.d (merge_dirs): fix logic for NIL defaults 2005-05-09 Sam Steingold * places.lisp (*ansi*): fix the doc string: mention all 13 variables and avoid non-ASCII characters to ensure non-UTF8 terminal compatibility 2005-05-06 Sam Steingold * modules/clx/new-clx/image.lisp, modules/clx/new-clx/resource.lisp: pass a string to REQUIRE to avoid case conversion issues * modules/clx/new-clx/clx.lisp: PROVIDE whatever was REQUIREd 2005-05-06 Sam Steingold * defstruct.lisp: keep direct slot information (*defstruct-description-direct-slots-location*): new constant (make-load-form-slot-list): new function (defstruct): use it; save direct slot information (structure-direct-slots): new function (structure-undefine-accessories): use it to remove slot accessors * exporting.lisp (export-structure-accessories): use STRUCTURE-DIRECT-SLOTS instead of CLASS-ACCESSOR-SYMBOLS * io.d (STRUCTURE-READER): DEFSTRUCT-DESCRIPTION has length 8 * clos-class3.lisp (define-structure-class): pass DEFCLASS-FORM 'DEFSTRUCT to MAKE-INSTANCE (initialize-instance-): do not call INSTALL-CLASS-DIRECT-ACCESSORS to avoid slot accessor redefinitions * clos-class6.lisp (initialize-instance@structure-class): new method, uses the DEFCLASS-FORM argument to avoid slot accessor redefinitions * constobj.d (version): bumped 2005-05-06 Sam Steingold * condition.lisp (without-global-handlers): new macro 2005-05-06 Sam Steingold * eval.d (SUBR-INFO): add a cast for C++ compilation * pathname.d (use_default_dir): ditto 2005-05-06 Sam Steingold * pathname.d (PARSE-NAMESTRING): "" ==> :DIRECTORY NIL (directory_namestring_parts): :DIRECTORY (:RELATIVE) => "./" (merge_dirs, MERGE-PATHNAMES, directory_match, directory_diff) (translate_directory, use_default_dir): treat NIL directory just like (:RELATIVE) (SAMPLE_UNBOUND_CHECK): remove (MAKE-PATHNAME): :DIRECTORY defaults to NIL (has_directory_wildcards): :DIRECTORY may be NIL * constobj.d (directory_default): remove * utils/clispload.lsp (*expected-failures*): update 2005-05-05 Sam Steingold * stream.d (force_tty_output) [UNIX_DARWIN]: ignore EOPNOTSUPP and ENODEV, just like in clear_tty_output() Reported by Pascal Costanza 2005-05-05 Sam Steingold * makemake.in (ANSITESTSDIR): do update-ansi-tests first 2005-05-04 Sam Steingold * modules/zlib/configure.in: use AC_LIB_LINKFLAGS([z]) 2005-05-04 Sam Steingold * install.lisp (clisp-cmd): quote *CLISP-DRIVER* when it contains spaces 2005-05-03 Sam Steingold * compiler.lisp (compile-file-pathname-helper): use read-time instead of run-time to produce a constant pathname 2005-05-03 Sam Steingold * eval.d (funcall): pass args_on_stack to with_saved_back_trace_subr 2005-05-02 Sam Steingold * compiler.lisp (c-PROVIDE, c-REQUIRE): use STRING instead of MODULE-NAME * defs1.lisp (provide, require): ditto (module-name): remove This partly reverts the 2002-07-15 patch. This is necessary because case converting module names is not permitted by ANSI. 2005-05-02 Sam Steingold * defs1.lisp (require): avoid duplication in *LOAD-PATHS* to minimize disk access on recursive REQUIREs 2005-05-02 Sam Steingold * defs1.lisp (module-name): reverted the 2002-07-21 patch: STRING already accepts only strings, symbols, and characters 2005-05-02 Sam Steingold * type.lisp (PLIST): use LIST-LENGTH-DOTTED instead of LISTP+LENGTH 2005-05-02 Sam Steingold * modules/berkeley-db/dbi.lisp, modules/syscalls/posix.lisp: use EXPORTING to export structure slot accessors 2005-05-02 Sam Steingold * exporting.lisp (define-condition): use MOP 2005-04-30 Sam Steingold * init.lisp (open-for-load): do not append "/" to a logical pathname Reported by Pascal J.Bourguignon 2005-05-01 Sam Steingold * defstruct.lisp (defstruct): save accessor names in :READER and :WRITER slots of the DIRECT-SLOT-DEFINITION: we cannot recover accessor names later because of the :CONC-NAME option * exporting.lisp (export-structure-accessories): use CLASS-ACCESSOR-SYMBOLS 2005-04-28 Sam Steingold * modules/syscalls/calls.c (stat_obj): new function (my_chmod) [WIN32_NATIVE]: call SetFileAttributes() (SET-FILE-STAT) [WIN32_NATIVE]: use check_file_attributes_parse() and stat_obj() (copy_attributes_and_close): ported to WIN32_NATIVE close streams before utime() (it modifies atime&mtime) wrap system calls with begin_system_call()/end_system_call() 2005-04-28 Bruno Haible * clos-genfun2b.lisp (reinitialize-instance-): When removing old defgeneric-originated methods, also call remove-direct-method on the specializers. Reported by Paul F. Dietz . 2005-04-27 Sam Steingold * utils/modprep.lisp (string-rest): check POS 2005-04-27 Sam Steingold * utils/modprep.lisp (checker): add slot DELIM (to-C-name, new-checker): accept DELIM * modules/syscalls/calls.c (check_chmod_mode, mknod_type_check): prefix=S_I, void delim (mknod): use :FIFO instead of :IFIFO &c * modules/syscalls/posix.lisp (make-xterm-io-stream): ditto 2005-04-27 Sam Steingold * modules/syscalls/calls.c (POSIX::MKNOD): when mknod() is not present, use mkfifo(), mkdir(), and creat() * modules/syscalls/configure.in (mkfifo, mkdir, creat): check 2005-04-27 Sam Steingold fix bug#1190843: no mknod p on OS/X * reploop.lisp (make-xterm-io-stream): moved to syscalls module * modules/syscalls/posix.lisp (make-xterm-io-stream): use POSIX:MKNOD and POSIX:MKSTEMP instead of the shell commands 2005-04-25 Sam Steingold * modules/berkeley-db/bdb.c, modules/berkeley-db/dbi.lisp: use dash instead of underscore for all keywords 2005-04-25 Sam Steingold * modules/berkeley-db/bdb.c (fill_dbt): re_len==-1 ==> integer object (db_key_type): accept second action argument (DB-GET, DBC-GET): handle :SET-RECNO and :GET-RECNO actions (DB-PUT, DB-KEY-RANGE, DBC-PUT): pass 0 as the second argument to db_key_type() 2005-04-25 Sam Steingold * utils/clispload.lsp (*expected-failures*): update 2005-04-24 Sam Steingold * init.lisp (search-file): use MAKE-PRELIMINARY to avoid a warning 2005-04-22 Sam Steingold prevent accidental EXT:! redefinition by users * eval.d (SUBR-INFO): pass false to coerce_sequence() to avoid bootstrap problems * init.lisp (sys::check-redefinition): use SUBR-INFO to check whether the function has been already defined in C 2005-04-24 Sam Steingold * sequence.d (coerce_sequence): fix STACK clean-up on !error_p 2005-04-21 Bruno Haible * clos-genfun2a.lisp (safe-gf-methods): Avoid endless recursion also for #'compute-discriminating-function and #'compute-applicable-methods-using-classes. * clos-genfun2b.lisp (add-method, remove-method): New preliminary functions. (initialize-instance-): Call add-method instead of std-add-method. (reinitialize-instance-): Likewise. * clos-genfun3.lisp (make-generic-function, do-defmethod): Likewise. * clos-genfun4.lisp (add-method, remove-method): Allow erasing preliminary definition. Reported by Pascal Costanza . 2005-04-21 Bruno Haible * genclisph.d (main): Emit check_array etc. conditionally, not if COMPILE_STANDALONE is defined. Needed to avoid link errors with compilers that don't eliminate inline functions. 2005-04-21 Bruno Haible * foreign.d (dlerror_string): Use 'const char*' instead of 'char*'. Avoids a gcc warning on MacOS X. 2005-04-21 Bruno Haible * arilev0.d (divu_3232_3232_): Use 'unused'. Avoids a gcc warning "statement without effect". 2005-04-21 Bruno Haible * lispbibl.d (nonreturning_function, SP_register): Test for __APPLE_CC__ > 1. * eval.d (FAST_DISPATCH, FAST_DISPATCH_THREADED): Likewise. * genclisph.d (main): For nonreturning_function, test for __APPLE_CC__ > 1. Needed because gcc-4.0 supports all the GCC features but defines __APPLE_CC__ to 1. 2005-04-21 Bruno Haible * noreadline.d (NULL): Define as void*, not char*. Avoids gcc warning. 2005-04-21 Sam Steingold clean-up the LEbytes_to_I breakage * modules/berkeley-db/bdb.c (db_recno_p, db_recno_to_I, I_to_db_recno): define depending on SIZEOF_DB_RECNO_T (fill_dbt): re_len==-1 means this is a key and thus db_recno_t must be handled specially; fix the bitsize argument to I_to_LEbytes() (dbt_to_object): add the key_type argument, symmetric to re_len==-1 (db_key_type): new function (DB-DEL, DB-GET, DB-PUT, DB-KEY-RANGE, DBC-GET, DBC-PUT): pass db_key_type() to fill_dbt(key) and dbt_to_object() (fill_or_init): re_len is int, not u_int32_t * modules/berkeley-db/configure.in (db_recno_t): check SIZEOF 2005-04-21 Sam Steingold * makemake.in (base-mod-check, mod-check): handle the case when there are no test files 2005-04-21 Sam Steingold * modules/berkeley-db/bdb.c (check_dbe_open_flags): new DEFCHECKER (DBE-OPEN): accept :FLAGS (dbe_get_open_flags): use check_dbe_open_flags_to_list() (check_db_open_flags): new DEFCHECKER (DB-OPEN): accept :FLAGS (db_get_open_flags): new function (uses check_db_open_flags_to_list()) (DB-GET-OPTIONS): accept :OPEN (bdb_ac_flags): replaces db_put_flags() (DBE-DBREMOVE, DBE-DBRENAME, DB-DEL, DB-TRUNCATE, DB-PUT): use it (DBE-REMOVE): invalidate the handle 2005-04-21 Sam Steingold * utils/modprep.lisp (print-tables-1): output C-NAME_parse() * modules/syscalls/calls.c (parse_mode): remove (SET-FILE-STAT, UMASK, MKNOD): use check_chmod_mode_parse instead 2005-04-20 Sam Steingold * modules/berkeley-db/bdb.c (asciz_to_string0): new inline (dbe_get_errpfx, get_lg_dir, get_tmp_dir, get_re_source): use it (txn_check_sync): restore default=0 (db_get_dbname, db_get_transactional): new functions (DB-GET-OPTIONS): accept :DBNAME and :TRANSACTIONAL * modules/berkeley-db/test.tst (show): new function, use instead of PRINT for better spacing collect bad items instead of using ASSERT 2005-04-19 Sam Steingold * modules/berkeley-db/dbi.lisp (with-dbe): new exported macro (with-db): accept :CREATE :OPTIONS :OPEN and pass them to DB-CREATE, DB-SET-OPTIONS, DB-OPEN respectively 2005-04-18 Sam Steingold * modules/syscalls/calls.c: include and in the preamble because they define CPP constants used by DEFCHECKERs 2005-04-18 Sam Steingold * makemake.in (base-mod-check): new target (mod-check): rename from full-check; fix RUN-SOME-TESTS call targets fail when RUN-SOME-TESTS return non-0 2005-04-18 Sam Steingold * makemake.in (echo_dist_modules): end directory name with a slash (distrib) [win32]: remove $distdir before populating it Reported by Yaroslav Kavenchuk 2005-04-18 Sam Steingold * modules/syscalls/calls.c (utmpx_to_lisp): GLIBC 2.3.2 uses 32-bit slots for the utmpx->ut_tv even on 64-bit platforms, so SIZEOF_STRUCT_TIMEVAL is useless here; resort to run-time sizeof() and hope that the compiler will optimize that away 2005-04-18 Sam Steingold * modules/pcre/cpcre.c (PCRE:PCRE-NAME-TO-INDEX): older PCRE versions did dot have pcre_get_stringnumber() * modules/pcre/configure.in: check for pcre_get_stringnumber() 2005-04-18 Sam Steingold * modules/clx/new-clx/clx.f (SET-GCONTEXT-DISPLAY): use foreign pointers instead of 32-bit integers to accommodate 64-bit platforms (general_draw_text, TEXT-EXTENTS, TEXT-WIDTH): fix 2nd and 3rd arguments to unpack_string_ro() 2005-04-18 Sam Steingold * modules/berkeley-db/bdb.c (fill_dbt, check_gid): fix the 3rd argument to array_displace_check() * modules/berkeley-db/configure.in: check for Berkeley-DB 4.2+ * modules/postgresql/configure.in: fix check for PostgreSQL 8.0+ * modules/zlib/configure.in: check for ZLIB 1.2+ 2005-04-15 Sam Steingold * modules/syscalls/calls.c (statvfs) [WIN32_NATIVE]: fix last patch Reported by Yaroslav Kavenchuk 2005-04-14 Sam Steingold * modules/syscalls/posix.lisp (utmpx-p, rlimit-p) (shortcut-info-p): export 2005-04-13 Sam Steingold * modules/syscalls/configure.in (sys/statfs.h, sys/vfs.h): do not check unused headers (HAVE_SCALAR_FSID): do not check without (fsblkcnt_t, fsfilcnt_t): check SIZEOF (struct stat): do not check whithout * modules/syscalls/calls.c (STAT-VFS): convert f_blocks/f_bfree/f_bavail according to SIZEOF_FSBLKCNT_T and f_files/f_ffree/f_favail according to SIZEOF_FSBLKCNT_T (vfs_flags): add FILE_SUPPORTS_ENCRYPTION 2005-04-13 Sam Steingold * makemake.in [win32gcc]: distribute module sources (echo_dist_modules): new function Reported by Yaroslav Kavenchuk 2005-04-13 Sam Steingold * modules/syscalls/calls.c (STAT-VFS) [WIN32_NATIVE]: implement using GetDiskFreeSpace, GetDiskFreeSpaceEx, GetVolumeInformation * modules/syscalls/posix.lisp (STAT-VFS): export always add vol-name and fs-type slots 2005-04-12 Bruno Haible * weak.d (MAKE-WEAK-ALIST, WEAK-ALIST-TYPE): Use :key-and-value instead of :either, :key-or-value instead of :both. * hashtabl.d (hash_table_weak_type): Return :key-and-value instead of :either, :key-or-value instead of :both. (allocate_kvt, prepare_resize, check_weak): Accept :key-and-value instead of :either, :key-or-value instead of :both. * describe.lisp (describe-object@t): Update for change :either -> :key-and-value, :both -> :key-or-value. 2005-04-12 Sam Steingold * modules/syscalls/calls.c (POSIX:SYNC): implement * modules/syscalls/posix.lisp (SYNC): export * modules/syscalls/configure.in (sync, fsync): check 2005-04-10 Sam Steingold * modules/berkeley-db/dbi.lisp (db-stat): add slot TYPE (mkdbstat-hash, mkdbstat-btree, mkdbstat-queue): accept TYPE * modules/berkeley-db/bdb.c (check_dbt_type, check_dbtype): define with DEFCHECKER (DB-STAT): use check_dbtype_reverse() for TYPE 2005-04-10 Sam Steingold * utils/modprep.lisp (print-tables-1): do not wrap DEFAULT with #ifdef when the return type is an enum 2005-04-10 Sam Steingold * modules/berkeley-db/bdb.c (dbe_set_encryption, db_get_action) (db_put_action): restored 0 defaults, as per the spec (my_fopen): check fopen() return value 2005-04-09 Sam Steingold * modules/berkeley-db/bdb.c (check_lk_detect): add DB_LOCK_NORUN (reset_errpfx): use my_malloc() instead of just malloc() (error_callback): insert ": " between error prefix and message allocate an extra byte for NULL 2005-04-09 Sam Steingold * genclisph.d (srecord_): recdata is gcv_object_t, not object 2005-04-09 Sam Steingold * condition.lisp (set-global-handler): use load-time value (#,) instead of read-time value (#.) to avoid an error on check-recompile 2005-04-09 Sam Steingold * modules/regexp/regexi.c (REGEXP-COMPILE): fix a GC-safety bug 2005-04-08 Sam Steingold * modules/syscalls/posix.lisp (file-info): 1 slot size instead of hi&lo (file-info) [UNIX && !UNIX_CYGWIN32]: implement * modules/syscalls/calls.c (wfd_to_file_info): rename from wfd_to_stack; 1 slot size instead of hi&lo 2005-04-08 Sam Steingold * modules/syscalls/posix.lisp (convert-attributes): export * modules/syscalls/calls.c (FILE-STAT) [WIN32_NATIVE]: use GetFileInformationByHandle() instead of fstat() because woe32 fstat() does not accept a file handle, only an integer of an unknown nature; return a list as :MODE, not a number (check_file_attributes) [WIN32_NATIVE||UNIX_CYGWIN32]: new DEFCHECKER (CONVERT-ATTRIBUTES) [WIN32_NATIVE||UNIX_CYGWIN32]: new DEFUN 2005-04-07 Sam Steingold * modules/syscalls/calls.c (stream_get_handle, FILE-STAT, STAT-VFS): fix GC-safety bugs 2005-04-07 Sam Steingold * modules/syscalls/calls.c: ported MKSTEMP to win32 (temp_name) [!HAVE_MKSTEMP && (HAVE_TEMPNAM || WIN32_NATIVE)]: add (MKSTEMP)[!HAVE_MKSTEMP && (HAVE_TEMPNAM || WIN32_NATIVE)]: use it * modules/syscalls/configure.in: check for tempnam() 2005-04-07 Sam Steingold * modules/syscalls/calls.c (check_chmod_mode): fix symbol names (parse_mode): new function (SET-FILE-STAT, UMASK, MKNOD): use it 2005-04-07 Sam Steingold * genclisph.d (allocate_handle, make_file_stream): export * modules/syscalls/calls.c (MKSTEMP): implement * modules/syscalls/configure.in: check for and mkstemp() * modules/syscalls/posix.lisp (mkstemp, hostent-p, user-data-p) (file-stat-p, stat-vfs-p, uname-p, system-info-p, version-p) (memory-status-p): export 2005-04-07 Sam Steingold * utils/modprep.lisp (print-tables-1): add casts for C++ compilation * modules/berkeley-db/bdb.c: ditto * modules/pcre/cpcre.c: ditto 2005-04-07 Bruno Haible * .gdbinit (boot, base, full, interpreted, run_test, run_all_tests) (ansi_tests): Add -N locale option. 2005-04-06 Sam Steingold * modules/syscalls/calls.c (SETPGRP) [!HAVE_SETPGRP_POSIX]: call setpgrp(0,0) BSD-style (SETPGID): new function * modules/syscalls/posix.lisp (setpgid): export * modules/syscalls/configure.in: check whether setpgrp() is POSIX Reported by Lars Rosengreen 2005-04-06 Sam Steingold * modules/clx/new-clx/resource.lisp: add (from mit-clx with minor adaptations) 2005-04-06 Sam Steingold * modules/clx/new-clx/clx.f (set_resource_id, delete_resource_id): add (make_xid_obj_2): use set_resource_id() (XLIB::SAVE-ID, XLIB::DEALLOCATE-RESOURCE-ID, XLIB:KEYSYM) (XLIB::SET-GCONTEXT-DISPLAY): for CLUE (XLIB:KEYSYM->CHARACTER): use int_char() * modules/clx/new-clx/clx.lisp (GCONTEXT-DISPLAY): defsetf for CLUE 2005-04-06 Sam Steingold * .gdbinit (full): add commented-out module debugging infrastructure 2005-04-06 Sam Steingold * modules/clx/new-clx/clx.f (XLIB::%DISPLAY-XID): new function (XLIB:DISPLAY-XID): return it (display_hash_table): pass the arguments the usual way, not via STACK (lookup_xid): new function (mostly extracted from make_xid_obj_2) (make_xid_obj_2): use make_xid_obj_2() (XLIB::LOOKUP-RESOURCE-ID): implement using lookup_xid() 2005-04-05 Sam Steingold * case-sensitive.lisp: add CS-COMMON-LISP to *SYSTEM-PACKAGE-LIST* * exporting.lisp: add EXPORTING to *SYSTEM-PACKAGE-LIST* * modules/bindings/win32/win32.lisp: add WIN32 to *SYSTEM-PACKAGE-LIST* * modules/clx/mit-clx/package.lisp: add XLIB to *SYSTEM-PACKAGE-LIST* * modules/clx/new-clx/clx.lisp: add XLIB & XPM to *SYSTEM-PACKAGE-LIST* * modules/pari/pari.lisp: add PARI to *SYSTEM-PACKAGE-LIST* 2005-04-05 Sam Steingold * modules/postgresql/link.sh.in (TO_LOAD): add sql * modules/postgresql/sql.lisp: rewrite to export higher-level functionality 2005-04-05 Sam Steingold * modules/matlab/Makefile (DISTRIBFILES): add test.tst 2005-04-04 Sam Steingold * modules/matlab/wrap.lisp (copy-lisp-to-mxArray): rename from copy-lisp-to-matlab (copy-mxArray-to-lisp): rename from copy-matlab-to-lisp check that mxArrays have data (copy-lisp-to-matlab, copy-matlab-to-lisp): call them to copy variables (invert-matrix): reuse the engine * modules/matlab/matlab.lisp (engGetVisible, engSetVisible) (engOpenSingleUse): win32-only (mx_aref, set_mx_aref): fix 2dim<->1dim conversion (mx-aref-i): access the imaginary part 2005-04-03 Sam Steingold * modules/syscalls/posix.lisp (utmpx): new defstruct * modules/syscalls/calls.c (endutxent, getutxent, getutxid) (getutxline, pututxline, setutxent): implement * modules/syscalls/configure.in (endutxent, getutxent, getutxid) (getutxline, pututxline, setutxent): check 2005-04-02 Sam Steingold * modules/syscalls/posix.lisp (physical-memory) [unix]: fix SYSCONF arguments 2005-04-01 Sam Steingold * modules/matlab/matlab.lisp ("MATLAB"): exporting DEFVAR too (mx-aref): fix DEFSETF * modules/matlab/wrap.lisp (*command*, *engine*): new variables (with-engine, with-MATfile): new macros (engine, copy-lisp-to-matlab, copy-matlab-to-lisp, invert-matrix): new functions * modules/matlab/link.sh (PATH): set 2005-04-01 Sam Steingold * package.d (intern): when STRING comes from READ, it points to a re-usable buffer that will be overwritten during the CERROR i/o therefore we must copy and save it before CERROR 2005-04-01 Sam Steingold implement global error handlers * eval.d (invoke_handlers): call GLOBAL-HANDLER at the end * constsym.d (APPEASE-CERRORS, BATCHMODE-ERRORS, ABORT-ERRORS, LOOP): remove (APPEASE-CERROR, EXITUNCONDITIONALLY, EXITONERROR, ABORTONERROR) (INTERRUPT-CONDITION, SERIOUS-CONDITION, SET-GLOBAL-HANDLER) (GLOBAL-HANDLER): add * condition.lisp (set-global-handler): new exported function (batchmode-errors, abort-errors): remove * savemem.lisp (saveinitmem): accept :KEEP-GLOBAL-HANDLERS * spvw.d (appease_form): replaced with ... (install_global_handlers): new function (main_actions): call it just once; do not wrap anything 2005-04-01 Sam Steingold * modules/syscalls/calls.c (POSIX:SET-FILE-STAT): use I_to_UL() instead for I_to_L() for time conversion Reported by Aurelio Bignoli 2005-03-29 Sam Steingold * modules/syscalls/posix.lisp (getpgid, setpgrp, getsid, setsid, kill): export * modules/syscalls/calls.c (getpgid, setpgrp, getsid, setsid, kill): implement * modules/syscalls/configure.in: check for the above 2005-03-29 Sam Steingold * m4/alloca.m4: remove * configure.in: use AC_FUNC_ALLOCA instead of CL_ALLOCA 2005-03-29 Sam Steingold * modules/rawsock/rawsock.c (RAWSOCK:SOCKATMARK): add * modules/rawsock/configure.in: check for sockatmark() * modules/rawsock/sock.lisp (sockatmark): export 2005-03-29 Sam Steingold * genclisph.d (LISPFUN_F) [TYPECODES]: do no wrap gcv_nullobj with {} to avoid a gcc warning 2005-03-28 Sam Steingold * modules/clx/new-clx/clx.f (xlib_error_handler): use switch, not if (DEFINE_INTEGER_GETTER): also define get_##type_0 (default to 0) (get_ordering): default=Unsorted (get_modifier_mask): unbound -> 0 (XLIB:SET-GCONTEXT-CLIP-MASK): rely on get_ordering() default (XLIB:CLEAR-AREA, XLIB:PUT-IMAGE, XLIB:TEXT-EXTENTS, XLIB:TEXT-WIDTH) (XLIB:ALLOC-COLOR-CELLS, XLIB:ALLOC-COLOR-PLANES, XLIB:GET-PROPERTY) (XLIB:WARP-POINTER-IF-INSIDE, XLIB:WARP-POINTER-RELATIVE-IF-INSIDE) (XLIB:BELL): use get_##type_0 (XLIB:GRAB-BUTTON, XLIB:UNGRAB-BUTTON, XLIB:GRAB-KEY, XLIB:UNGRAB-KEY): rely on get_modifier_mask() default (get_shape_kind): default=ShapeBounding (get_shape_operation): default=ShapeSet (XLIB:SHAPE-COMBINE): rely on these defaults (general_draw_text, XLIB:TEXT-EXTENTS, XLIB:TEXT-WIDTH): remove the SIMPLE-STRING limitation 2005-03-28 Sam Steingold * foreign1.lisp (DEF-C-VAR, DEF-CALL-OUT): accept :DOCUMENTATION Suggested by Yaroslav Kavenchuk 2005-03-26 Sam Steingold replaced -interactive-debug with -on-error * spvw.d (usage): update (init_symbol_values): define_variable(report_error_print_backtrace) (on_error_t): new enum type (appease_form): first argument is an on_error_t (argv_actions): replaced argv_interactive_debug with argv_on_error (parse_options): parse -on-error (main_actions): wrap the REPL according to argv_on_error * constsym.d (report_error_print_backtrace, abort_errors, lloop): add * condition.lisp (*report-error-print-backtrace*): add (report-error): new function (exitunconditionally): use it (abort-on-error, abort-errors): add * reploop.lisp (*debug-mode*): init in defvar (print-backtrace): extract from DEBUG-BACKTRACE (debug-backtrace): use it (break-loop, step-hook-fn): bind *DEBUG-MODE* to self 2005-03-27 Sam Steingold * modules/syscalls/configure.in: use CL_RLIMIT instead of checking for getrlimit() and setrlimit() explicitly * modules/syscalls/calls.c (I_to_rlim, rlim_to_I): new functions (POSIX::RLIMIT, POSIX::SET-RLIMIT, check_rlimit): use them 2005-03-25 Sam Steingold * m4/rlimit.m4 (CL_RLIMIT): pre-compute sizeof(rlim_t) 2005-03-25 Bruno Haible Fix clisp.c on Unix. * makemake.in (clisp): Set ENABLE_RELOCATABLE. * _clisp.c: Use ENABLE_RELOCATABLE to determine whether to call find_executable. (room_from_lisplibdir, room_for_localedir): Don't define when ENABLE_RELOCATABLE is given. (main): If find_executable fails, exit with code 1, not -1. Don't pollute Unix code with backslash handling. Perform a single memory allocation instead of two. 2005-03-25 Bruno Haible * m4/general.m4 (CL_CANONICAL_HOST_CPU): Set host_cpu_instructionset instead of modifying host_cpu. (CL_CANONICAL_HOST_CPU_FOR_FFCALL): Set host_cpu_abi instead of modifying host_cpu. * m4/ffcall-codeexec.m4 (CL_CODEEXEC): Use host_cpu_abi instead of host_cpu. 2005-03-16 Bruno Haible * m4/stdint.m4: Update from gnulib. * stdint_.h: New file, from gnulib. * stdint.h.in: Remove file. * makemake.in (stdint.h): Generate from stdint_.h instead of stdint.h. Substitute HAVE_LONG_LONG_64BIT instead of HAVE_LONGLONG_64BIT. * configure.in: Call gl_STDINT_H instead of gt_STDINT_H. 2005-03-24 Sam Steingold * pathname.d (parse_logical_pathnamestring): when version is blank, parse_logical_word() returns NIL, but all_digits() assumes a string Reported by Pascal J.Bourguignon 2005-03-22 Sam Steingold fix bug#1167991: Compiler bug, Occurred in SP-DEPTH at <0. * compiler.lisp (optimize-short): do not short the same refindex twice 2005-03-22 Sam Steingold * modules/berkeley-db/dbi.lisp, modules/bindings/glibc/wrap.lisp: * modules/dirkey/dirkey1.lisp, modules/matlab/wrap.lisp: * modules/netica/wrap.lisp, modules/rawsock/sock.lisp: * modules/regexp/regexp.lisp, modules/syscalls/posix.lisp: * modules/zlib/zlib.lisp: use PUSHNEW, not PUSH when adding to CUSTOM:*SYSTEM-PACKAGE-LIST* 2005-03-22 Sam Steingold * modules/wildcard/wildcard.lisp (*features*): add :WILDCARD Suggested by Yaroslav Kavenchuk 2005-03-22 Bruno Haible * build-aux: New directory, taking most files from autoconf/. * configure.in (CL_CANONICAL_HOST): Update. * modules/berkeley-db/configure.in (AC_CONFIG_AUX_DIR): Update. * modules/pcre/configure.in (AC_CONFIG_AUX_DIR): Update. * modules/postgresql/configure.in (AC_CONFIG_AUX_DIR): Update. * modules/pari/configure.in (AC_CONFIG_AUX_DIR): Update. * modules/regexp/configure.in (AC_CONFIG_AUX_DIR): Update. 2005-03-22 Sam Steingold * makemake.in (distrib) [win32]: fix 2005-03-10 patch: missing "; \\" Reported by Yaroslav Kavenchuk 2005-03-21 Sam Steingold * modules/queens/queens.c, modules/queens/callqueens.c: use "modern" tools and formatting 2005-03-21 Sam Steingold * spvw.d (init_module_2): do not allow redefinition of symbols in locked packages this should prevent bugs like the LISTEN bug also fixed today 2005-03-21 Sam Steingold * modules/wildcard/wildcard.lisp: include because it defines fnmatch as an alias to posix_fnmatch when the included fnmatch implementation is used Reported by Yaroslav Kavenchuk 2005-03-21 Sam Steingold * modules/rawsock/rawsock.c (HTONL, NTOHL, HTONS, NTOHS): define even when the OS lacks the C functions; in that case, return the argument on the assumption that the host order is the same as the network order 2005-03-21 Sam Steingold * modules/rawsock/sock.lisp: shadow LISTEN * modules/rawsock/preload.lisp: ditto Reported by Yaroslav Kavenchuk 2005-03-21 Sam Steingold * modules/postgresql/postgresql.lisp (PQinitSSL): commented out: not found in libpq 8.0 2005-03-21 Sam Steingold * modules/pcre/configure.in: use AC_LIB_LINKFLAGS([pcre]) * modules/pcre/Makefile.in: use PCRECPPFLAGS instead of CPPFLAGS to pass the result of --with-pcre-prefix to CC 2005-03-21 Sam Steingold * modules/syscalls/posix.lisp (with-stream-lock): new macro 2005-03-20 Sam Steingold * modules/syscalls/calls.c (POSIX::DUPLICATE-HANDLE): fix STACK handling 2005-03-20 Sam Steingold * modules/syscalls/calls.c (POSIX:FILE-INFO): wrap FindClose() in begin_system_call()/end_system_call() 2005-03-19 Arseny Slobodyuk * modules/syscalls/calls.c (OS:PRIORITY): fix compilation on cygwin without HAVE_GETPRIORITY. 2005-03-18 Sam Steingold * makemake.in (EMACS_FILES): add clhs.el and clisp-ffi.el 2005-03-18 Sam Steingold * makemake.in (DEEMA): permit spaces in empty macro arguments 2005-03-18 Sam Steingold * execname.c (find_executable): avoid declaring variables in the middle of a block (OSX portability) 2005-03-18 Sam Steingold * spvw.d: DYNAMIC_FFI does not imply that dlopen() is present, need to check for HAVE_DLOPEN or WIN32_NATIVE 2005-03-18 Sam Steingold * modules/regexp/regex.c: check HAVE_ALLOCA_H before #include 2005-03-18 Bruno Haible * configure.in (AC_INIT): Use esyscmd to retrieve the version number. Suggested by Alexandre Duret-Lutz and Sam Steingold. 2005-03-17 Sam Steingold * makemake.in (distrib) [cygwin]: remove the target before ln 2005-03-17 Sam Steingold * modules/syscalls/calls.c (SET-FILE-STAT): add a cast to avoid a woe32 and MacOS X warning (and fix a bug) 2005-03-17 Sam Steingold * version.sh: bumped for yet another woe32/cygwin pre-test 2005-03-17 Sam Steingold * makemake.in (cygwin_check): fix the logic 2005-03-17 Sam Steingold * execname.c (find_executable) [LINUX|CYGWIN]: use "/proc/self/exe" instead of sprintf()+getpid() 2005-03-17 Sam Steingold * configure.in: test for realpath() * pathname.d (realpath): use the OS-supplied realpath() implementation when it is available (we can add a workability test when/if necessary) 2005-03-14 Bruno Haible * debug.d (read_form): Don't delete input until EOL if the last char read from the stream was a newline. This fixes a multiline paste problem on MacOS X. 2005-03-14 Bruno Haible * lispbibl.d (stream_get_lastchar): New declaration. * stream.d (stream_get_lastchar, stream_set_lastchar): New functions. (read_char): Update $lastchar after calling STREAM-READ-CHAR. (unread_char): Update $lastchar after calling STREAM-UNREAD-CHAR. (read_char_array): Update $lastchar after calling STREAM-READ-CHAR-SEQUENCE. (read_line): Update $lastchar after calling STREAM-READ-LINE. * gray.lisp (fundamental-character-input-stream): Add slot $lastchar. 2005-03-16 Sam Steingold * modules/syscalls/calls.c (STREAM-LOCK): fix STACK handling 2005-03-16 Sam Steingold * modules/postgresql/postgresql.lisp (PQgetCancel, PQfreeCancel) (PQcancel, PQserverVersion, PQgetssl, PQinitSSL, PQdsplen): add v8 functions * modules/postgresql/configure.in: check for v8 do not check for crypt 2005-03-16 Sam Steingold * modules/clx/new-clx/clx.f (make_key_vector, XLIB:KEYBOARD-CONTROL) (XLIB:%RESTORE-GCONTEXT-COMPONENTS): wrap memcpy() with X_CALL 2005-03-15 Sam Steingold * modules/clx/new-clx/clx.f (get_enum, enum_error, DEF_ENUM_MAKER) (DEF_ENUM_GETTER, DEF_ENUM): remove use DEFCHECKER instead throughout the file (get_gcontext_key): replaced with a DEFCHECKER (check_modifier, check_event_mask): new DEFCHECKERs (get_modifier_mask, get_event_mask): use them (XLIB:MAKE-EVENT-KEYS): use check_event_mask_to_list() (XLIB:MAKE-EVENT-MASK): avoid consing (XLIB:MAKE-STATE-KEYS): use check_modifier_to_list() (XLIB:MAKE-STATE-MASK): use check_modifier() (check_propmode): new DEFCHECKER (XLIB:CHANGE-PROPERTY): use it (check_revert_focus): new DEFCHECKER (XLIB:SET-INPUT-FOCUS, XLIB:INPUT-FOCUS): use it (check_allow_events): new DEFCHECKER (XLIB:ALLOW-EVENTS): use it (check_yes_no): new DEFCHECKER (XLIB:SCREEN-SAVER, XLIB:SET-SCREEN-SAVER): use it 2005-03-14 Sam Steingold * utils/modprep.lisp (checker): new slot bitmasks (new-checker): accept bitmasks (print-tables-1): when bitmasks is supplied, output *_to_list() and *_from_list() * modules/syscalls/calls.c (check_chmod_mode): bitmasks=both (CONVERT-MODE): use check_chmod_mode_to_list() and check_chmod_mode_from_list() 2005-03-16 Sam Steingold * modules/regexp/Makefile.in (regex.o): remove -Dclisp 2005-03-14 Bruno Haible * modules/syscalls/calls.c (POSIX::STREAM-LOCK): Make it compile with g++ 3.3 and 3.4. 2005-03-14 Bruno Haible * spvw.d (init_module_2): Fix GC-safety bug. 2005-03-13 Bruno Haible Make DEBUG_GCSAFETY work with modules. * lispbibl.d (gcv_nullobj): New macro. * subr.d (LISPFUN_F): Use gcv_nullobj instead of nullobj. * genclisph.d (main): Add definitions of gcinvariant_oint_p, gcinvariant_type_p, gcinvariant_type_sum, gcinvariant_type_aux, gcinvariant_object_p, nonimmsubrp, gcv_nullobj. Update definitions of gcv_object_t::operator object, gcv_object_t::gcv_object_t, pgci_pointable, ngci_pointable, LISPFUN_F. 2005-03-13 Bruno Haible * genclisph.d (main): Reorder, to match the order of lispbibl.d. 2005-03-15 Sam Steingold * modules/clx/new-clx/clx.f (XPM:READ-FILE-TO-PIXMAP): use physical_namestring() instead of TRUENAME+NAMESTRING (xlib_rgb): new DEFFLAGSET (XLIB:STORE-COLOR, XLIB:STORE-COLORS): use it 2005-03-15 Bruno Haible * makemake.in (pathname): Depend on execname.c also on Unix. 2005-03-15 Bruno Haible * modules/regexp/regex.c: Upgrade from gnulib. 2005-03-14 Sam Steingold * condition.lisp (exitunconditionally): use PRETTY-PRINT-CONDITION instead of PRINT-CONDITION, like in reploop.lisp:BREAK-LOOP 2005-03-14 Sam Steingold * utils/modprep.lisp (string-upcase-verbose): do not upcase strings 2005-03-14 Sam Steingold * modules/syscalls/calls.c (SET-FILE-STAT): available when at least one of chmod(), chown() and utime() is available (my_chmod, my_chown, my_utime): auxiliaries 2005-03-14 Sam Steingold * modules/syscalls/posix.lisp (rlimit): add DEFSETF * modules/syscalls/calls.c (SET-RLIMIT): implement 2005-03-14 Sam Steingold * makemake.in (cygwin_check): make sure that no cygwin dependencies creep into the mingw builds 2004-03-12 Bruno Haible * modules/regexp/configure.in: Add AC_CONFIG_AUX_DIR invocation. 2004-03-12 Bruno Haible * modules/regexp/configure.in: Invoke AM_GNU_GETTEXT. * modules/regexp/regex.c: Don't include clisp.h. 2004-03-14 Bruno Haible * m4/codeset.m4, m4/gettext.m4, m4/glibc2.m4, m4/glibc21.m4: * m4/iconv.m4, m4/intdiv0.m4, m4/intmax.m4, m4/inttypes.m4: * m4/inttypes_h.m4, m4/inttypes-pri.m4, m4/isc-posix.m4: * m4/lcmessage.m4, m4/lib-ld.m4, m4/lib-link.m4, m4/lib-prefix.m4: * m4/longdouble.m4, m4/longlong.m4, m4/nls.m4, m4/po.m4: * m4/printf-posix.m4, m4/progtest.m4, m4/signed.m4, m4/size_max.m4: * m4/stdint_h.m4, m4/uintmax_t.m4, m4/ulonglong.m4, m4/wchar_t.m4: * m4/wint_t.m4, m4/xsize.m4: Upgrade to gettext-0.14.3. * configure.in: Use gt_LC_MESSAGES instead of AM_LC_MESSAGES. Invoke gl_AC_TYPE_LONG_LONG instead of CL_LONGLONG. * m4/fenv_default.m4: Update for changed m4/longdouble.m4. * floatparam.c: Test HAVE_LONG_DOUBLE instead of HAVE_LONGDOUBLE. 2005-03-14 Sam Steingold * genclisph.d (endp): export 2005-03-14 Sam Steingold * modules/syscalls/configure.in (stat): check for struct members st_rdev, st_blksize and st_blocks * modules/syscalls/posix.lisp (file-stat): not just on Unix * modules/syscalls/calls.c (file-stat): when lstat() is not available, use stat() instead (check_chmod_mode): use DEFCHECKER (CONVERT-MODE): use check_chmod_mode_table 2005-03-14 Doug Currie Sam Steingold * makemake.in: work around the woe32 stat(".../") bug: make sure that the -I argument does not end with a slash * berkeley-db/Makefile.in, bindings/win32/Makefile, dirkey/Makefile.in: * i18n/Makefile.in, matlab/Makefile, netica/Makefile, pcre/Makefile.in: * postgresql/Makefile.in, rawsock/Makefile.in, regexp/Makefile.in: * syscalls/Makefile.in, wildcard/Makefile.in, zlib/Makefile.in: (INCLUDES): remove the trailing slash 2005-03-14 Sam Steingold * modules/syscalls/calls.c (NZERO) [!NZERO]: define in the preamble so that it is defined before DEFCHECKER output 2005-03-14 Sam Steingold * modules/berkeley-db/configure.in: add AC_LIB_LINKFLAGS([db]) * modules/berkeley-db/Makefile.in: pass DBCPPFLAGS to CC when building bdb.o 2005-03-12 Bruno Haible * makemake.in (SHREXT): Rename from DLL. * clisp-link.in: Use @SHREXT@ instead of @DLL@. 2005-03-12 Bruno Haible * modules/syscalls/calls.c: Assume limits.h exists. * modules/syscalls/configure.in: Don't test whether limits.h exists. 2005-03-12 Bruno Haible * clisp-link.in (prepare_dynamic_module): Indentation. 2005-03-12 Arseny Slobodyuk * makemake.in (ARGQ1, QQUOT): new variables. (clisp.1): fix for MSVC. (clisp.html): use the new vars to remove conditional. 2005-03-10 Sam Steingold relocatable driver on win32 * pathname.d (find_executable): extract to ... * execname.c: new file * _clisp.c: include it * install.lisp, install.bat: use driver instead of batch file and runtime * makemake.in (pathname, clisp): depend on execname.c (clisp): build relocatable (distrib) [win32]: distribute clisp.exe, locale (when USE_GETTEXT) * version.sh: bumped 2005-03-10 Sam Steingold * m4/readline.m4 (CL_READLINE): add AC_ARG_WITH([readline]) * configure.in: remove AC_ARG_WITH([readline]) 2005-03-10 Sam Steingold * configure.in (AC_INIT): moved PACKAGE_NAME, PACKAGE_TARNAME and PACKAGE_BUGREPORT here 2005-03-08 Sam Steingold * lisparit.d (RANDOM): do not accept RATIOs 2005-03-08 Sam Steingold * modules/postgresql/configure.in: restore the second argument to AC_SEARCH_LIBS 2005-03-07 Sam Steingold * modules/regexp/regex.c [clisp]: include "clisp.h" * modules/regexp/gettext.h: add * modules/regexp/Makefile.in (regex.o): pass -I$(INCLUDES) -Dclisp 2005-03-07 Sam Steingold * m4/regexp.m4 (CL_REGEXP): add AC_ARG_WITH and some more tests * modules/regexp/configure.in: AC_ARG_WITH is in CL_REGEXP now the option is rename to included-regexp from sysre 2005-03-07 Sam Steingold * modules/syscalls/configure.in: use AC_FUNC_CHOWN 2005-03-07 Sam Steingold * m4/alloca.m4 (CL_ALLOCA): define HAVE_ALLOCA_H to 1 for compatibility with AC_FUNC_ALLOCA 2005-03-07 Sam Steingold * modules/regexp/regex.c, modules/regexp/regex.h: upgraded to gnulib CVS head 2005-03-07 Sam Steingold * debug.d, subr.d, constsym.d (CRASH): rename from DEBUG for better separation from CL * init.lisp: do not shadow SYS::DEBUG * compiler.lisp (parse-optimize-quality): no need for package prefix for DEBUG 2005-03-07 Bruno Haible * lispbibl.d (UL_to_I) [DEBUG_GCSAFETY]: Define as a function, not as a macro. * intelem.d (UL_to_I): Update. 2005-03-07 Bruno Haible * intelem.d (Q_to_I): Use minus_bit instead of -bit, to avoid a gcc warning. 2005-03-07 Bruno Haible * stream.d (iconv_wcstombs): Fix 2005-03-01 patch that broke compilation when CC=g++. 2005-03-07 Bruno Haible * arilev0.d (mulu32_, mulu32_unchecked, divu_3232_3232_) (divu_6432_3232_): Use ANSI C function declaration. Needed when CC=g++. 2005-03-07 Bruno Haible Make HEAPCODES work on 64-bit platforms. * lispbibl.d (oint_type_shift, oint_type_len, oint_type_mask) (oint_data_shift, oint_data_len, oint_data_mask, garcol_bit_o) [HEAPCODES && WIDE_HARD]: Define appropriately. * misc.d (SYS::ADDRESS-OF): Make it work if HEAPCODES && WIDE. * intlog.d (I_ord2): Fix bug on 64-bit platforms. 2005-03-06 Sam Steingold * modules/syscalls/calls.c (OPENLOG, SETLOGMASK, %SYSLOG, CLOSELOG): implement a interface * modules/syscalls/posix.lisp (openlog, setlogmask, syslog, closelog): export (syslog): thin wrapper over %SYSLOG, calling FORMAT * modules/syscalls/configure.in: check for the syslog facilities 2005-03-06 Sam Steingold fix bug#1157691: (optimize (debug 3)) fails * compiler.lisp (parse-optimize-quality): extract code from PROCESS-DECLARATIONS; use CL:DEBUG instead of DEBUG (process-declarations): use parse-optimize-quality 2005-03-03 Sam Steingold * built.d (built_flags): add libiconv version 2005-03-03 Sam Steingold ported DYNAMIC_MODULES to WIN32_NATIVE * spvw.d (libopen, find_name): moved here from foreign.d (get_module_symbol): new function (dynload_modules): use them (instead of dlopen and dlsym) * lispbibl.d (libopen, find_name): declare * foreign.d (libopen, find_name): moved to spvw.d (object_handle): surround find_name() with begin_system_call()/end_system_call() 2005-03-03 Sam Steingold * stream.d (oconv_unshift_output_unbuffered_) (oconv_unshift_output_buffered_): use OS_errno instead of errno 2005-03-02 Sam Steingold * modules/postgresql/postgresql.lisp (PQprepare, PQsendPrepare): add * modules/postgresql/sql.lisp: GETENV is in EXT, not SYS 2005-03-02 Sam Steingold * modules/syscalls/calls.c (check_priority_value): define separately on WIN32_NATIVE and UNIX: the former has a strict symbol-number map and pre-defined constants, while the latter has a lax reverse map and symbolic values are defined in-place 2005-03-02 Sam Steingold * utils/modprep.lisp (split-option): split only if #\= is unique (split-command): search for the final #\) :FROM-END (to-C-name, new-checker): cpp-name can be (:KEYWORD EXPRESSION) (word-list): call SPLIT-OPTION (print-tables-1): (:KEYWORD EXPRESSION) does not need #ifdef 2005-03-02 Sam Steingold * modules/syscalls/calls.c (check_priority_value): reverse=sint_to_I (OS:PRIORITY): use check_priority_value_reverse() as the return value 2005-03-02 Sam Steingold * utils/modprep.lisp (checker): add slot reverse (new-checker): accept reverse (print-tables-1): use reverse 2005-03-01 Sam Steingold * utils/modprep.lisp (checker): add slot suffix (to-C-name, new-checker): accept suffix (print-tables-1): use suffix 2005-03-01 Sam Steingold * modules/syscalls/configure.in: check for limits.h, getpriority and setpriority * modules/syscalls/posix.lisp (priority, process-id): export (priority): defsetf * modules/syscalls/calls.c (priority, set-priority): implement 2005-03-01 Sam Steingold * pathname.d (find_executable) [UNIX_CYGWIN32]: try to use /proc//exe like on Linux 2005-03-01 Sam Steingold * misc.d (PROCESS-ID): rename from PROGRAM-ID for semantic compatibility with getpid and GetCurrentProcessId * constsym.d, subr.d: ditto * disassem.lisp (disassemble): ditto 2005-03-01 Sam Steingold * lispbibl.d [__MINGW32__]: include unixconf.h 2005-03-01 Sam Steingold * makemake.in: handle gettext identically on unix and windows (LIB) [win32gcc]: add $LIBICONV Reported by Yaroslav Kavenchuk 2005-03-01 Sam Steingold * stream.d (open_iconv, iconv_mblen, iconv_mbstowcs, iconv_wcslen) (iconv_wcstombs, iconv_range): do not assume that errno is present, use OS_errno instead Reported by Yaroslav Kavenchuk 2005-02-28 Sam Steingold * comptran.d (N_N_expt_N): fix a GC-safety bug 2005-02-28 Sam Steingold fix c++ compilation * comptran.d (maybe_rebind): new macro, used throughout 2005-02-28 Bruno Haible * pathname.d (find_executable) [WIN32]: Fix malloc usage bug introduced on 2005-02-24. 2005-02-28 Sam Steingold * win32.d (STDC_HEADERS): define to 1 explicitly for compatibility with autoconf 2005-02-28 Sam Steingold * autoconf/install-sh: add (from autoconf 2.59); required by AC_LIB_LINKFLAGS 2005-02-28 Sam Steingold * modules/postgresql/configure.in: use AC_LIB_LINKFLAGS([pq]) * modules/postgresql/Makefile.in: use PQCPPFLAGS instead of CPPFLAGS to pass the result of --with-pq-prefix to CC * modules/pari/configure.in: use AC_LIB_LINKFLAGS instead of AC_LIB_LINKFLAGS_BODY * modules/pari/Makefile.in: use PARICPPFLAGS instead of CPPFLAGS to pass the result of --with-pari-prefix to CC 2005-02-28 Sam Steingold * modules/i18n/gettext.c (SET-LOCALE, LOCALE-CONV, res_to_obj) (locale_string_to_STACK): use *MISC-ENCODING* instead of UTF-8 (get_locale_info) [WIN32_NATIVE]: do not use LOCALE_USE_CP_ACP 2005-02-27 Sam Steingold * clisp-link.in (link): rm $2 to avoid an error on Solaris this fixes one of the problems reported in bug#1124425 2005-02-20 Bruno Haible * realtran.d (R_cosh_sinh_R_R): Remove start_p argument. (R_tanh_R): Update. * comptran.d (N_sin_N, N_cos_N, N_tan_N, N_sinh_N, N_cosh_N, N_tanh_N): Update. 2005-02-20 Bruno Haible * realtran.d (R_ln_R): Remove start_p argument. (R_R_log_R): Update. * comptran.d (N_log_N, N_N_log_N, R_R_atanh_R_R, R_R_asinh_R_R) (N_acos_N, N_acosh_N): Update. * lisparit.d (log_digits): Update. 2005-02-20 Bruno Haible * comptran.d (N_log_N): Remove start_p argument. (N_N_log_N, N_N_expt_N): Update. * lisparit.d (LOG): Update. 2005-02-24 Sam Steingold * lispbibl.d (HAVE_DISASSEMBLER): define always * misc.d (PROGRAM-ID): add a WIN32_NATIVE implementation * pathname.d (maybe_executable): only on UNIX (find_executable) [WIN32_NATIVE]: use GetModuleFileName() instead of GetCommandLine() * spvw.d (init_lowest_level): predicate find_executable() on HAVE_DISASSEMBLER, not on UNIX 2005-02-24 Bruno Haible * makemake.in (ALL_LINGUAS): Look for configure.in in the right directory. Update default value. Don't enclose default value in double-quotes. 2005-02-22 Sam Steingold * modules/pari/pari.lisp (pari-1): gen_1 instead of gone (pari-2): gen_2 instead of gtwo (pari--1): gen_m1 instead of gminusone 2005-02-22 Sam Steingold * makemake.in (config.status): remove config.cache * configure: do not remove config.cache (this undoes the 2002-07-21 change) 2005-02-22 Bruno Haible * m4/mprotect.m4 (CL_MPROTECT): Actually invoke GL_NOCRASH. 2005-02-21 Sam Steingold * makemake.in (XCC_CREATESHARED): treat cygwin like linux and gnu 2005-02-21 Sam Steingold * modules/pari/configure.in, modules/pari/Makefile.in: AC_LIB_LINKFLAGS_BODY should work since 2005-02-16 2005-02-21 Sam Steingold * defpackage.lisp (defpackage): use SYS::%FIND-PACKAGE instead of FIND-PACKAGE to give a meaningful error for non-existent packages 2005-02-20 Bruno Haible Fix wrong intermediate precision used in many transcendental function computations since 2002-09-11. Avoid unjustified contagion warnings. * realelem.d (R_float_digits): New function. * realtran.d (R_tan_R): New function, extracted from N_tan_N. (R_ln_R): Avoid computing 0*ln(2). (R_cosh_sinh_R_R): Small optim. (R_tanh_R): New function, extracted from N_tanh_N. * comptran.d (N_exp_N): Don't use F_extend2_F to extend b's precision; instead let R_cos_sin_R_R do it. Let R_exp_R increase the precision always. Avoid unjustified contagion warnings. (N_log_N): Don't use F_extend2_F to extend the precision; instead use F_extend_F. Small optim. (N_N_expt_N): Compute the needed precision correctly. Fix bug introduced on 2002-09-11: Don't waste time if x is a very long float and y is a short float. (N_sin_N): Fix bug introduced on 2002-09-11: If (realpart x) is the exact 0, return a complex number with realpart exact 0. Avoid unjustified contagion warnings. (N_cos_N): Handle the case of (realpart x) = 0 separately. Avoid unjustified contagion warnings. (N_tan_N): Use R_tan_R. Fix bug introduced on 2002-09-11: If (realpart x) is the exact 0, return a complex number with realpart exact 0. Avoid unjustified contagion warnings. (N_cis_N): Handle the case of (realpart x) = 0 separately. Fix bug introduced on 2002-09-11: (exp (- b)) was computed with too small precision. Avoid unjustified contagion warnings. (N_sinh_N): Fix bug introduced on 2002-09-11: If (realpart x) is the exact 0, return a complex number with realpart exact 0. Avoid unjustified contagion warnings. (N_cosh_N): Handle the case of (realpart x) = 0 separately. Avoid unjustified contagion warnings. (N_tanh_N): Use R_tanh_R. Fix bug introduced on 2002-09-11: If (realpart x) is the exact 0, return a complex number with realpart exact 0. Avoid unjustified contagion warnings. (R_R_atanh_R_R): Use F_extend_F instead of F_extend2_F. 2005-02-20 Bruno Haible * describe.lisp (describe-object@package): Print information about case-sensitive or case-inverted packages. Suggested by Duane Rettig . 2005-02-20 Bruno Haible * package.d (init_packages): Add nickname "CS-USER" to package CS-COMMON-LISP-USER. Add nickname "CS-LISP" to package CS-COMMON-LISP. Suggested by Duane Rettig . 2005-02-18 Bruno Haible * utils/modprep.lisp (new-checker): Don't make the first enum element the default. * i18n/gettext.c (check_locale_category): Use LC_MESSAGES as default. * berkeley-db/bdb.c: Make all DEFCHECKER defaults explicit. * rawsock/rawsock.c: Likewise. 2005-01-23 Bruno Haible * compiler.lisp (c-MULTIPLE-VALUE-SETQ): Eliminate assignments to symbols that occur later again in the symbol list. Found by Paul Dietz's ansi-tests test suite. 2005-02-17 Sam Steingold * makemake.in (anymodule): do not assume bash, just sh, when exporting a variable (fixed 2005-02-11 patch) 2005-02-17 Sam Steingold * modules/syscalls/calls.c (__EXTENSIONS__) [__sun]: define to enable confstr() prototype and avoid a gcc warning 2005-01-23 Bruno Haible * compiler.lisp (test-argument-syntax): When NIL is passed instead of a keyword, to a function expecting keyword arguments, signal it and return NIL instead of STATIC-KEYS. Found by Paul Dietz's ansi-tests test suite. 2005-02-17 Bruno Haible * makemake.in (VERSION, CLISP_VERSION, BASE_MODULES): Move out of the customizable section. 2005-02-16 Bruno Haible * configure: Accept --enable and --disable options and pass them down. * makemake.in: Accept --enable and --disable options. (module_configure_flags): New variable. (MODULE_CONFIGURE_FLAGS): New variable. (anymodule): Pass MODULE_CONFIGURE_FLAGS to subordinate configure. 2005-02-16 Bruno Haible Make it possible again to use Makefile.devel without having clisp installed. * Makefile.devel (GCC_INSTALL_DIR): Define as a macro, not as a variable. (install-gcc): Use it once only. Reported by Duane Rettig . 2005-02-16 Bruno Haible * makemake.in: Use the config.cache in the main build dir only if it exists. Fixes bug introduced on 2005-02-11. 2005-02-17 Bruno Haible Simplify the version handling. * version.sh: New file. * configure.in: Source the version.sh file. Call AC_INIT without arguments. Set PACKAGE_NAME, PACKAGE_TARNAME, PACKAGE_VERSION, PACKAGE_STRING, PACKAGE_BUGREPORT ourselves. * makemake.in (version): Remove variable. (VERSION): Define using the PACKAGE_VERSION, not the src/VERSION file. (Makefile): Don't depend on VERSION. (config.status): Depend on version.sh. (VERSION): Remove rule. (clisp.html, clisp.1, clisp-1.html): Don't depend on VERSION. (install-doc): Use the VERSION variable from this Makefile. (TOPDIR): Define using the PACKAGE_VERSION, not the src/VERSION file. (distrib): Use the VERSION variable from this Makefile. (clean7): Don't remove VERSION. * configure: Use version.sh, not VERSION. Don't symlink VERSION. * Makefile.devel (all): Remove src/VERSION. (src/VERSION): Remove rule. (src/version.h): Generate from version.sh, not using src/configure. (VER): Define using version.sh. (src-distrib): Don't depend on src/VERSION. (src--distrib): Don't touch src/VERSION. * po/po_header: Use version.sh, not VERSION. * po/Makefile.devel (clisp.pot, en.po, clisplow.pot): Depend on version.sh, not VERSION. 2005-02-16 Sam Steingold * modules/rawsock/rawsock.c: use SOCKLEN_T instead of socklen_t and uint.. instead of uint.._t 2005-02-16 Sam Steingold DEFCHECKER now accepts option-like arguments foo=bar * utils/modprep.lisp (split-option): new function (split-command): use it (new-flag-set): do not accept :TYPE and :PREFIX (checker): new slots ENUM-P and DEFAULT (new-checker): accept :DEFAULT and :ENUM (def-something-p): simplified (formatln): new macro (print-tables-1): reinstated defaults (check-signature): generated errors call GETTEXT and use ~S instead of ~ * modules/berkeley-db/bdb.c, modules/i18n/gettext.c: * modules/rawsock/rawsock.c, modules/syscalls/calls.c: update 2005-02-16 Sam Steingold * modules/regexp/regexi.c (regexp_exec_flags): new DEFFLAGSET (REGEXP-EXEC): use it and posfixnum_default2() 2005-01-23 Bruno Haible * compiler.lisp (c-DEPOSIT-FIELD): Fix bug introduced on 2004-04-04. Found by Paul Dietz's ansi-tests test suite. 2005-02-16 Bruno Haible * clos-package.lisp: Add "MOP" as nickname of package "CLOS". 2005-02-15 Bruno Haible * autoconf/config.dynamic: New file, based on libtool-1.5.10. 2005-02-15 Sam Steingold * init.lisp (open-for-load): use DIRECTORY instead of PROBE-DIRECTORY 2005-02-15 Bruno Haible * error.d (write_errorstring): Undo 2004-12-24 change: Don't call elastic_newline here. (end_error): Call elastic_newline here. 2005-01-23 Bruno Haible * compiler.lisp (c-error): Fix bug introduced on 2005-01-13. Found by Paul Dietz's ansi-tests test suite. 2005-02-14 Sam Steingold * init.lisp (open-for-load): open the file only if there is no directory with this name 2005-02-14 Sam Steingold * modules/pcre/Makefile.in, modules/regexp/Makefile.in: * modules/rawsock/Makefile.in (DISTRIBFILES): add preload.lisp 2005-02-14 Sam Steingold * defs1.lisp (require): search in *LIB-DIRECTORY*/dynmod too * makemake.in (install): install dynmod (distrib): distribute dynmod * clisp-link.in (prepare_dynamic_module): new function: prepare the loading infrastructure for the current dynamic module (add-module-set, add-module-sets): call it 2005-02-14 Sam Steingold * makemake.in (DLL): new platform-dependent variable (clisp-link): substitute it * clisp-link.in: use @DLL@ instead of the literal `.so' 2005-02-14 Sam Steingold * eval.d (parse_dd): declaration processing should not modify code 2005-02-13 Bruno Haible * utils/modprep.lisp (print-tables-1): For DEFCHECKER, don't do a unbound to 0 conversion and a 0 to NIL conversion. 2005-02-13 Bruno Haible * i18n/gettext.c (I18N:GETTEXT): Let the category argument default to LC_MESSAGES. (I18N:NGETTEXT): Likewise. Small optimizations. 2005-02-13 Bruno Haible * m4/ffcall-codeexec.m4 (CL_CODEEXEC): Assume that only AIX on RS6000 have non-executable malloc'ed memory, not other operating systems. For MacOS X. 2005-02-13 Bruno Haible Avoid core dumps during autoconfiguration. * m4/nocrash.m4: New file. * m4/ffcall-codeexec.m4 (CL_CODEEXEC): Use GL_NOCRASH. * m4/ffcall-ireg.m4 (CL_IREG_FLOAT_RETURN): Use GL_NOCRASH. * m4/ffcall-pccstruct.m4 (CL_PCC_STRUCT_RETURN): Use GL_NOCRASH. * m4/ffcall-smallstruct.m4 (CL_SMALL_STRUCT_RETURN): Use GL_NOCRASH. * m4/mmap.m4 (CL_MMAP): Use GL_NOCRASH. * m4/mprotect.m4 (CL_MPROTECT): Use GL_NOCRASH. 2005-02-13 Bruno Haible * stream.d (finish_tty_output, clear_tty_output): On MacOS X, ignore ENODEV as well. It occurs for a handle pointing to /dev/null. 2005-01-23 Bruno Haible * .gdbinit (ansi_tests): Remove unneeded *disassemble-use-live-process* setting. 2005-01-23 Bruno Haible * compiler.lisp (process-declarations): Add syntax check for most other declaration types. 2005-02-13 Sam Steingold * stream.d (error_unless_invalid) [WIN32_NATIVE]: new function: ignore ERROR_INVALID_PARAMETER in addition to ERROR_INVALID_HANDLE and ERROR_INVALID_FUNCTION (clear_tty_input, clear_tty_output) [WIN32_NATIVE]: use it Found by Paul Dietz's ansi-tests test suite. 2005-01-22 Bruno Haible * compiler.lisp (c-GLOBAL-FUNCTION-CALL): Generate references to CAR, CDR, SVREF with *denv*. (c-VAR, c-FUNCTION): Update. (simplify): Don't drop (CAR), (CDR), (SVREF) in non-for-value position if SAFETY = 3. Found by Paul Dietz's ansi-tests test suite. 2005-02-11 Sam Steingold * stream.d (get_standard_output_file_stream): in batch mode on win32 terminal_stream may be _closed_, so restore my 2005-01-31 fix which was remove on 2005-02-04 2005-02-11 Sam Steingold * makemake.in (anymodule): pass CC to configure only if it was actually set (fixed the 2004-03-15 patch) 2005-02-11 Sam Steingold * compiler.lisp (parse-optimize-quality): work in interpreter too * eval.d (parse_dd): call NOTE-OPTIMIZE 2005-01-22 Bruno Haible * compiler.lisp (c-GLOBAL-FUNCTION-CALL): Generate a SYMBOL-FUNCTION instruction with reference to *denv*. (c-FUNCTION): Likewise with null environment. (simplify): Don't drop (SYMBOL-FUNCTION) in non-for-value position if SAFETY = 3. Found by Paul Dietz's ansi-tests test suite. 2005-02-10 Sam Steingold handle OPTIMIZE PROCLAIMations * control.d (PROCLAIM): handle OPTIMIZE declarations * constsym.d (note_optimize): add for PROCLAIM * compiler.lisp (*optimize*): new: keep OPTIMIZE PROCLAIMations here (parse-optimize-quality): new: check OPTIMIZE declaration (declared-optimize): use *OPTIMIZE* for global settings; use ASSOC because PROCESS-DECLARATIONS calls PARSE-OPTIMIZE-QUALITY (process-declarations): use CASE instead of COND use PARSE-OPTIMIZE-QUALITY to canonicalize OPTIMIZE declarations (note-optimize): new: record global OPTIMIZE declarations in *OPTIMIZE* (c-PROCLAIM): handle OPTIMIZE PROCLAIMations using NOTE-OPTIMIZE 2005-02-10 Bruno Haible * compiler.lisp (declared-declaration): New function. (process-declarations): Use it. 2005-01-22 Bruno Haible * compiler.lisp (c-GLOBAL-FUNCTION-CALL): Fix bug introduced on 2003-12-30. 2005-02-09 Bruno Haible * type.lisp (%the): Add comments about the (VALUES ...) type specifier. 2005-02-10 Bruno Haible * compiler.lisp (declared-optimize): Revert last patch: Don't use POP. 2005-02-09 Sam Steingold * compiler.lisp (declared-optimize): use POP (c-GLOBAL-FUNCTION-CALL): simplified control flow 2005-02-09 Sam Steingold * charstrg.d (coerce_char): accept SYS::INPUT-CHARACTER * constsym.d (input_character, input_character_char): add * init.lisp (char-key): export * xcharin.lisp (char-key): implement 2005-02-08 Bruno Haible * type.lisp (safe-typep): Accept an env argument and return a second value, like SUBTYPEP does. * subtypep.lisp (STANDARD-OBJECT): Handle (FUNCTION ...) types. (canonicalize-type): Accept (FUNCTION ...) and (VALUES ...) type specifiers. (canonicalized-types-equal-p): Accept (FUNCTION ...) and (VALUES ...) type specifiers. (subtypep, subtypep-logic): Call safe-typep instead of typep and handle the possibility of unknown subresults. 2005-01-22 Bruno Haible * compiler.lisp: Fix comments that confused the seclass of an anode with the seclass of a function. (declared-optimize): New function. (f-side-effect): If SAFETY = 3, assume the worst. (c-GLOBAL-FUNCTION-CALL): Likewise. Found by Paul Dietz's ansi-tests test suite. 2005-01-22 Bruno Haible * compiler.lisp (c-TEST/TEST-NOT): Rewrite. Fixes multiple invalid optimizations. Found by Paul Dietz's ansi-tests test suite. 2005-02-08 Bruno Haible * m4/libtool.m4: Upgrade to libtool-1.5.12. 2005-02-07 Sam Steingold * spvw.d (parse_options): fix "--help" and "-help" 2005-02-07 Bruno Haible * built.d (built_flags): Use DYNAMIC_ARRAY instead of alloca(). 2005-02-07 Bruno Haible * foreign.d (FFI:CLOSE-FOREIGN-LIBRARY): Assign value1 only after calling close_library(). 2005-02-07 Bruno Haible * foreign.d (object_handle): Fix the GCTRIGGER statement. 2005-02-07 Bruno Haible * spvw_sigsegv.d (print_mem_stats): Fix fprintf statements for 64-bit platforms. 2005-02-07 Bruno Haible * spvw.d (INVALID_ARG): Rename from ILLEGAL_ARG. (parse_options): Use term "invalid" instead of "illegal". 2005-02-07 Bruno Haible * spvw.d (init_module_2, usage, arg_error): Use symmetric quotes, instead of `...'. 2005-01-22 Bruno Haible * compiler.lisp (c-DIRECT-FUNCTION-CALL): Fix error and wrong warning when a call is compiled that has :ALLOW-OTHER-KEYS T and other keyword arguments. Found by Paul Dietz's ansi-tests test suite. 2005-02-06 Sam Steingold * configure: accept --with-dynamic-modules 2005-02-05 Sam Steingold * control.d (SYMBOL-MACROLET, LET*, MULTIPLE-VALUE-BIND): always activate all SPECIAL declarations * eval.d (funcall_iclosure): ditto 2005-02-05 Sam Steingold * cfgwin32.lisp (*load-paths*): use the common "**" instead of the CLISP-specific "..." for :WILD-INFERIORS 2005-02-05 Sam Steingold free the mallocs! * built.d (built_flags): return an object, use alloca() instead of malloc() * lispbibl.d (built_flags): update the prototype * spvw.d (init_object_tab): update the built_flags() invocation 2005-02-04 Bruno Haible * built.d (built_flags): Append libsigsegv version if known. 2005-02-04 Bruno Haible * init.lisp: Export clos:standard-accessor-method. * clos-package.lisp: Likewise. Reported by Pascal Costanza . 2005-01-27 Bruno Haible * clos-class1.lisp (built-in-class): Add slot $prototype. (*-prototype-location*): New constant. (*-instance-size*): Increment. (structure-class): Add slot $prototype. (*-prototype-location*): New constant. (*-instance-size*): Increment. * clos-class3.lisp (shared-initialize-): Add prototype argument. Initialize the $prototype slot with it. (shared-initialize-): Initialize the $prototype slot to nil. (, , , ...): Initialize with a prototype. * clos-class4.lisp (shared-initialize@built-in-class): Add prototype argument. * clos-class6.lisp (class-prototype): Accept also built-in-class and structure-class instances. 2005-01-22 Bruno Haible * compiler.lisp (compile): If there were errors, return an error- signaling closure, not NIL. (compiled-with-errors): New function. Found by Paul Dietz's ansi-tests test suite. 2005-02-04 Bruno Haible * stream.d (get_standard_output_file_stream): Reuse terminal stream only if it allows character output. 2005-02-02 Sam Steingold * pathname.d: reverted some of the 2005-01-31 patch (substitute_resolved_path): remove (assure_dir_exists) [WIN32_NATIVE]: use MERGE-PATHNAMES instead [UNIX]: reverted 2005-02-02 Sam Steingold * genclisph.d (perseverance_t): ensure the constants have the right values (like with all the other enums) 2005-02-01 Sam Steingold * foreign.d (close_library): new function (exit_ffi): use it (FFI:CLOSE-FOREIGN-LIBRARY): implement * constsym.d, subr.d (close_foreign_library): add * foreign1.lisp (FFI:CLOSE-FOREIGN-LIBRARY): export 2005-02-01 Sam Steingold * foreign.d (find_library): extract from FFI::FOREIGN-LIBRARY (FFI::FOREIGN-LIBRARY): use it; fix a GC-safety bug (object_handle): maygc only if retry_p is true 2005-02-01 Sam Steingold * modules/syscalls/calls.c (POSIX::LGAMMA): finished the 2005-01-24 patch: HAVE_DECL_* is always defined to either 0 or 1 2005-02-01 Sam Steingold * modules/i18n/gettext.c (get_locale_info) [WIN32_NATIVE]: define for I18N:LANGUAGE-INFORMATION even when HAVE_LOCALECONV is defined which can happen on mingw which has localeconv() but not nl_langinfo(); do not require begin_system_call()/end_system_call() wrap and use my_realloc() and my_malloc() Reported by Yaroslav Kavenchuk (my_atoi) [WIN32_NATIVE]: new function (thousands_sep_to_STACK, locale_int_to_STACK) (locale_bool_to_STACK): use it 2005-02-01 Sam Steingold * spvw.d (my_realloc): new function for modules * genclisph.d (my_realloc): export 2005-02-01 Sam Steingold * modules/syscalls/calls.c (getrlimit_arg): do not define unless HAVE_GETRLIMIT is defined 2005-01-31 Sam Steingold * modules/clx/new-clx/clx.f: use skipSTACK() instead of popSTACK() to avoid a gcc warning 2005-01-31 Sam Steingold * exporting.lisp (export-structure-accessories): reverted the 2005-01-27 patch: export accessors for direct slots, not effective slots: first, the indirect slots may be "private" - defined elsewhere and not under exporting.lisp; second, there is no way to get accessors names from an EFFECTIVE-SLOT-DEFINITION 2005-01-31 Sam Steingold * stream.d (rd_ch_keyboard) [WIN32_NATIVE]: recognize many more keys 2005-01-31 Sam Steingold * spvw_sigsegv.d (print_mem_stats): new function (sigsegv_handler_failed, stackoverflow_handler): call it 2005-01-31 Sam Steingold fix TRUENAME on WIN32: it used to lose :VERSION :NEWEST * pathname.d (substitute_resolved_path): new function, extracted from assure_dir_exists/unix (assure_dir_exists): use it on both UNIX and WIN32 2005-01-31 Sam Steingold * stream.d (get_standard_output_file_stream): reuse terminal_stream only if it is still open 2005-01-31 Sam Steingold print diagnostics instead of usage on argument error * spvw.d (arg_error, ILLEGAL_ARG): add (parse_options): call them instead of usage() 2005-01-30 Sam Steingold * lispbibl.d (activate_specdecl, specdecled_p): moved here from * control.d: here (specdecled_): global * eval.d (funcall_iclosure): activate SPECDECL bindings together with the variable bindings 2005-01-30 Sam Steingold * lispbibl.d (SET_BIT, CLR_BIT): moved here from ... * control.d: here * eval.d: use SET_BIT & CLR_BIT 2005-01-30 Sam Steingold activate SPECDECL bindings * control.d (specdecled_): extract from make_variable_frame() (specdecled_p, activate_specdecl): new macros (make_variable_frame): also return SPECDECL bindings pointer and count (LET, LET*, LOCALLY, SYMBOL-MACROLET, MULTIPLE-VALUE-BIND): also activate SPECDECL bindings 2005-01-29 Sam Steingold * modules/berkeley-db/bdb.c (fill_dbt): use I_to_LEbytes() (dbt_to_object): use LEbytes_to_I() 2005-01-29 Sam Steingold * genclisph.d (I_integer_length): export 2005-01-23 Bruno Haible * foreign1.lisp (with-defining-c-type): Put the declarations from the body at the right place, so they can affect the c-type binding. 2005-01-23 Bruno Haible * macros2.lisp (with-output-to-string): Evaluate the element-type form outside, not inside, the scope of the declarations. Found by Paul Dietz's ansi-tests test suite. 2005-01-22 Bruno Haible Improved error checking for the handling of references from local macro definitions to bindings and declarations in the outer lexical environment. * control.d (macrolet): Add a marker to the venv and fenv being passed to make-macro-expander. * defmacro.lisp (make-macro-expander): Add a marker to the venv and fenv being constructed. * eval.d (symbol_env_search, sym_function): Respect the MACROLET markers. Signal an error if an invalid reference from inside a macroexpander is seen. * init.lisp (fenv-assoc, venv-assoc): Likewise. * compiler.lisp (fenv-search, venv-search): Likewise. 2005-01-27 Bruno Haible * clos-class3.lisp (checked-compute-slots): Tweak an error message. 2005-01-28 Bruno Haible * socket.d (host_fn_t, with_host, string_to_addr1, string_to_addr) (resolve_host1): Use const where appropriate. * genclisph.d (main): Update. 2005-01-28 Bruno Haible * lispbibl.d (udigits_to_I): Remove declaration. * intelem.d (udigits_to_I): Remove function. * socket.d (string_to_addr1): Call LEbytes_to_UI instead of udigits_to_I. * genclisph.d (main): Don't emit udigits_to_I declaration. 2005-01-28 Bruno Haible * lispbibl.d (FAKE_8BIT_VECTOR): New macro. (LEbytes_to_UI, LESbvector_to_UI, LEbytes_to_I, LESbvector_to_I) (UI_to_LEbytes, I_to_LEbytes): New declarations. * intserial.d: New file, mostly extracted from stream.d. * lisparit.d: Include intserial.c. * stream.d (bitbuff_iu_I): Use LESbvector_to_UI. (bitbuff_is_I): Use LESbvector_to_I. (bitbuff_ixu_sub): Remove bytesize argument. Use UI_to_LEbytes. Don't call ASSERT_wr_int here. (wr_by_ixu_sub): Call ASSERT_wr_int here. Update. (bitbuff_ixs_sub): Remove bytesize argument. Use I_to_LEbytes. Don't call ASSERT_wr_int here. (wr_by_ixs_sub): Call ASSERT_wr_int here. Update. (WRITE-INTEGER): Update. * genclisph.d (main): Emit declarations for LEbytes_to_UI, LEbytes_to_I, UI_to_LEbytes, I_to_LEbytes. * makemake.in (LISPARIT_SUBFILES): Add intserial. * po/Makefile.devel (DSOURCES): Add intserial. 2005-01-28 Bruno Haible * io.d (pr_readlabel): Fix C++ compilation. 2005-01-28 Bruno Haible * makemake.in (check-fresh-line): Reduce the scope of the test on Woe32. 2005-01-23 Bruno Haible * clos-methcomb2.lisp (build-effective-method-function-form): Don't use the single method's fast-function as effective-method if the effective-method must also do keyword argument checking or if the method occurs among the duplicates set of the method-combination. Found by Paul Dietz's ansi-tests test suite. 2005-01-23 Bruno Haible Make it possible to macroexpand a TRACE form referring to functions that are not yet defined. * trace.lisp (trace): Move the check-traceable to execution time. Remove the check-traceable call. (trace1): Perform the check-traceable call here. Found by Paul Dietz's ansi-tests test suite. 2005-01-23 Bruno Haible New condition type ARGUMENT-LIST-DOTTED. * lispbibl.d (argument_list_dotted): New enum value. * error.d (end_error): For type argument-list-dotted, expect the :datum argument on the stack. * eval.d (fehler_apply_zuwenig): Add 'tail' argument. (fehler_subr_zuwenig, fehler_closure_zuwenig): Likewise. (apply_subr, apply_closure): Pass the remaining args atom as tail. (funcall_subr, funcall_closure): Pass NIL as tail. (interpret_bytecode_): For UNLIST, UNLIST*, pass the tail. * condition.lisp (argument-list-dotted, simple-argument-list-dotted): New condition classes. (%defclcs call): Update. Found by Paul Dietz's ansi-tests test suite. 2005-01-23 Bruno Haible * format.lisp (formatter-main-1): Implement handling of ~^ inside ~<...~>. Found by Paul Dietz's ansi-tests test suite. 2005-01-22 Bruno Haible Make the handling of references from local macro definitions to SPECIAL declarations in the outer lexical environment ANSI CL compliant. * compiler.lisp (venv-search): Verify that only non-special VAR structs occur in *venv*. (push-*venv*): For special variable bindings or SPECIAL declarations, push #, not a VAR struct. 2005-01-27 Bruno Haible * pathname.d (parse_logical_host_prefix): Fix STACK corruption bug introduced on 2002-12-20. 2005-01-27 Bruno Haible * makemake.in (interpreted.mem, halfcompiled.mem, lispinit.mem) (lispinit2.mem): Exit with error code if an error occurs. 2005-01-27 Bruno Haible * clos-class3.lisp (structure-undefine-accessories): Remove function, moved to defstruct.lisp. * defstruct.lisp (structure-undefine-accessories): Remove preliminary definition. (defstruct): Update. (structure-slots, structure-instance-size, structure-kconstructor) (structure-boa-constructors, structure-copier, structure-predicate): New functions. (structure-undefine-accessories): Moved here from clos-class3.lisp. Do nothing if name is not currently defined as a structure type. * clos-class6.lisp (class-direct-slots@symbol): Remove method. ((setf class-direct-slots)): Back to a plain function expecting a instance. (class-instance-size, (setf class-instance-size)): Likewise. (class-kconstructor, (setf class-kconstructor)): Turn into a plain function expecting a instance. (class-boa-constructors, (setf class-boa-constructors)): Likewise. (class-copier, (setf class-copier)): Likewise. (class-predicate, (setf class-predicate)): Likewise. * exporting.lisp (export-structure-accessories): Rename from export-accessories. Use the list of effective slot names, not the list of direct slot names. (defstruct, def-c-struct): Update. 2005-01-27 Sam Steingold * stream.d (check_endianness_arg): rename from test_endianness_arg() (READ-INTEGER, READ-FLOAT, WRITE-INTEGER, WRITE-FLOAT): call check_endianness_arg() before check_stream() for GC-safety 2005-01-26 Sam Steingold * stream.d (same_handle_p): add debugging infrastructure 2005-01-22 Bruno Haible * init.lisp (in-package): Execute at compile-time only if it occurs as a top-level form. Found by Paul Dietz's ansi-tests test suite. 2005-01-22 Bruno Haible * makemake.in (check-ansi-tests-debug): Make more similar to the check-ansi-tests target. (check-ansi-tests-compiled, check-ansi-tests-compiled-debug): New targets. (check): Depend on check-ansi-tests-compiled. 2005-01-22 Bruno Haible * compiler.lisp (c-FUNCALL-INLINE): Fix long-standing bug in the handling of SPECIAL-declared optional variables: If the initforms of these variables come from the lambdalist, use sequential calls to c-bind-movable-var-anode instead of c-parallel-bind-movable-var-anode. 2005-01-22 Bruno Haible Allow bignums as read-label values. * lispbibl.d (Rectype_BigReadLabel): New enum item. (BigReadLabel): New type. (bigreadlabel_length): New macro. (small_read_label_value): New macro. (TheBigReadLabel): New macro. (big_read_label_p, allocate_big_read_label): New macros. * spvw_circ.d (subst, subst_circ_mark): Support BigReadLabel. (subst_circ_unmark): Update. * io.d (lookup_label): Support big integers as well. Can trigger GC now. (label_definition_reader): Update. (pr_readlabel): Use small_read_label_value. Add support for BigReadLabel. (pr_orecord): Support BigReadLabel. * predtype.d (TYPE-OF, CLASS-OF): Add support for BigReadLabel. (enum_hs_big_read_label): New enum value. (heap_statistics_mapper): Add support for BigReadLabel. Found by Paul Dietz's ansi-tests test suite. 2005-01-26 Bruno Haible * places.lisp (setf): Handle (SETF (VALUES-LIST ...) ...) correctly, although there can be no SETF expander for VALUES-LIST. 2005-01-25 Sam Steingold * stream.d (MAKE-STREAM): handle_to_stream() already duplicates the handle, do not do it here 2005-01-25 Sam Steingold * install.lisp: use EXT:STRING-CONCAT instead of CONCATENATE 'STRING (*clisp-linkset*): new variable (*clisp-runtime*, *clisp-args*): use it 2005-01-25 Bruno Haible * i18n/configure.in: Don't test for locale.h and setlocale. * i18n/gettext.c: Assume , , setlocale() exist. 2005-01-24 Bruno Haible * stream.d (read_byte, wr_ch_unbuffered_unix) (wr_ch_array_unbuffered_unix, wr_ch_unbuffered_mac) (wr_ch_array_unbuffered_mac, wr_ch_unbuffered_dos) (wr_ch_array_unbuffered_dos, wr_ch_buffered_unix) (wr_ch_array_buffered_unix, wr_ch_buffered_mac) (wr_ch_array_buffered_mac, wr_ch_buffered_dos) (wr_ch_array_buffered_dos): Don't assume that when the input of Encoding_wcstombs is nonempty, the output is nonempty as well. For example, glibc converts #\U000E0000 to an empty multibyte sequence for most encodings. Reported by Pascal Bourguignon. 2005-01-24 Bruno Haible * intelem.d (udigits_to_I): Use 'var'. * utils/gctrigger.d (convert): Likewise. 2005-01-24 Bruno Haible * configure.in: Add check for dvipdf. * makemake.in: Generate and install clisp.pdf only if DVIPDF is nonempty. 2005-01-24 Bruno Haible * syscalls/configure.in: Check whether lgamma_r is declared, assuming that it is defined in this case. * syscalls/calls.c (POSIX:LGAMMA): Use lgamma_r only if it's declared. Needed for FreeBSD 4.0, which has lgamma and lgamma_r, but declares lgamma_r only if _REENTRANT is defined. 2005-01-24 Bruno Haible * i18n/gettext.c (do_gettext, do_ngettext): Don't define if GNU_GETTEXT is not defined. Needed for platforms without gettext(). * makemake.in (BASE_MODULES): Add i18n always. 2005-01-22 Bruno Haible * lispbibl.d (small_read_label_type): Rename from read_label_type. (make_small_read_label): Rename from make_read_label. (small_read_label_integer_p): Rename from read_label_integer_p. (small_read_label_p): Rename from read_label_p. * spvw_circ.d (subst_circ_mark, subst_circ_unmark, subst): Update. * io.d (lookup_label, prin_object_dispatch): Update. * hashtabl.d (sxhash_atom): Update. * predtype.d (TYPE-OF, CLASS-OF): Update. 2005-01-23 Bruno Haible Implement the scope of other free declarations as ANSI CL 3.3.4 specifies it. ANSI CL issue . * compiler.lisp (process-declarations): Return the other declspecs as a fifth value. (push-*denv*): New function. (c-LAMBDABODY, c-LET/LET*, c-LOCALLY, c-MULTIPLE-VALUE-BIND) (c-SYMBOL-MACROLET, c-FUNCALL-INLINE): Call push-*denv* immediately before compiling the body-forms. 2005-01-21 Bruno Haible Implement the scope of free SPECIAL declarations as ANSI CL 3.3.4 specifies it. ANSI CL issue . * compiler.lisp (c-LAMBDABODY,c-LET/LET*, c-MULTIPLE-VALUE-BIND) (c-FUNCALL-INLINE): Call push-specials immediately before compiling the body-forms, not at the beginning. 2005-01-24 Sam Steingold * defpackage.lisp (defpackage): duplicate USE-PACKAGE is OK 2005-01-24 Bruno Haible * defpackage.lisp (defpackage): Let :case-sensitive and :case-inverted options override the default provided by :modern. 2005-01-24 Sam Steingold * modules/bindings/glibc/linux.lisp, modules/bindings/win32/win32.lisp: * modules/matlab/matlab.lisp, modules/netica/netica.lisp: * modules/pari/pari.lisp, modules/postgresql/postgresql.lisp: * modules/wildcard/wildcard.lisp: use :MODERN in DEFPACKAGE 2005-01-24 Sam Steingold * defpackage.lisp (defpackage): accept :MODERN argument 2005-01-24 Sam Steingold * makemake.in (BASE_MODULES): add i18n only when USE_GETTEXT is true 2005-01-24 Sam Steingold * makemake.in (clisp.rc) [win32]: depend on clisp.ico 2005-01-23 Bruno Haible * utils/clispload.lisp (*expected-failures*): Update. 2005-01-23 Bruno Haible Move long strings out of macroexpansions. * pprint.lisp (pprint-logical-block-both-error) (pprint-logical-block-prefix-not-string-error) (pprint-logical-block-suffix-not-string-error): New functions, extracted from pprint-logical-block. (pprint-logical-block): Use them. 2005-01-23 Bruno Haible * fill-out.lisp (with-fill-stream): Simplify a no-op. 2005-01-23 Bruno Haible * compiler.lisp (*declaration-types*): Add cs-cl:string. 2005-01-22 Bruno Haible * stream.d (streamp): Change seclass from seclass-foldable to seclass-read. 2005-01-22 Bruno Haible * init.lisp: Export the type ext:global-symbol-macro. 2005-01-22 Bruno Haible * io.d (pr_readlabel): Use oint_data_shift, not oint_addr_shift. 2005-01-22 Bruno Haible * compiler.lisp: Indentation fixes. 2005-01-22 Bruno Haible * compiler.lisp (*toplevel-name*): New variable. (compile-toplevel-form): Drop (declare (special *toplevel-name*)). 2005-01-23 Bruno Haible * exporting.lisp (export-accessories): Also export the copier's name. Fixes bug introduced on 2005-01-04. 2005-01-23 Bruno Haible * describe.lisp (apropos): Terminate the output with an elastic-newline, not a fresh-line. But output nothing if the symbol list is empty. 2005-01-23 Bruno Haible * foreign1.lisp (do-c-lines): Fully check the first argument already in the first etypecase. Allow format-control functions instead of a format string. 2005-01-23 Bruno Haible * spvw.d (print_license, print_banner): Optimize: Use fresh_line as C function. 2005-01-23 Bruno Haible * io.d (interpret_feature, FEATUREP): Optimize 2005-01-12 patch: Use boundp instead of streamp. Also fix comment. 2005-01-23 Bruno Haible * io.d (SYS::SET-READTABLE-CASE): Optimize after 2004-12-18 patch. 2005-01-02 Bruno Haible * condition.lisp (appease-cerror): Don't convert the error message to a string before signaling it, as this leads to ugly output. Example: (appease-cerrors (cerror "foo" "bar ~S" (make-sequence 'list 30 :initial-element 0 :update #'1+))) 2005-01-21 Sam Steingold * spvw_fault.d (handle_read_fault): fix the mingw build by using OS_set_errno(0) instead of errno=0 2005-01-21 Sam Steingold * control.d (make_variable_frame): fix the check whether the variable is special 2005-01-21 Sam Steingold * control.d (SET_BIT): new macro (make_variable_frame, activate_bindings, LET*, SYMBOL-MACROLET): (MULTIPLE-VALUE-BIND): use it 2005-01-21 Sam Steingold * condition.lisp (handler-bind): use the function syntax for %HANDLER-BIND * compiler.lisp (quote-p): new function (l-constantp, c-constantp): use it (c-form-table): do not handle HANDLER-BIND specially (c-HANDLER-BIND): handle HANDLER-BIND in function syntax * init.lisp (%expand-form): do not handle %HANDLER-BIND specially * clos-class3.lisp (reinitialize-instance-): use the function syntax for %HANDLER-BIND * clos-genfun4.lisp (generic-function-undeterminedp): ditto * clos-methcomb2.lisp (any-method-combination-check-options): ditto 2005-01-21 Sam Steingold fix bug#1106735: strange soft links in subdirectory full * clisp-link.in (CDPATH): unset 2005-01-20 Bruno Haible * stream.d (get_standard_output_file_stream) (get_standard_error_file_stream): Return *terminal-io* if this is needed to avoid a FRESH-LINE bug. * makemake.in (check-fresh-line): New rule. (check): Depend on it. 2005-01-20 Bruno Haible * init.lisp (symbol-to-keyword): Rename from symbol-keyword. * defmacro.lisp (analyze-key): Update. * lambdalist.lisp (analyze-lambdalist) (analyze-generic-function-lambdalist, analyze-defsetf-lambdalist): Update. * type.lisp (%the): Update. * defstruct.lisp (defstruct): Update. * foreign1.lisp (c-struct-constructor): Update. 2005-01-20 Bruno Haible * stream.d (terminal_stream_p): Avoid crash when the stream is a Gray stream. 2005-01-20 Bruno Haible * format.lisp (format-character): Fix bug introduced on 2004-12-21. 2004-12-24 Bruno Haible * clx/mit-clx/dependent.lisp (open-x-stream): Fix when display /= 0. 2005-01-15 Bruno Haible * clos-class1.lisp (print-object-): Improve output when *package* is a case-sensitive package. 2005-01-02 Bruno Haible * condition.lisp (maybe-continue): Remove function. (muffle-cerror, appease-cerror): Inline maybe-continue. 2005-01-20 Sam Steingold * control.d (activate_bindings): new function (extracted from LET) (LET, LOCALLY): use it 2005-01-20 Sam Steingold * control.d (LET, LET*, MULTIPLE-VALUE-BIND): simplified control flow 2005-01-20 Bruno Haible * eval.d (symbol_env_search): Fix definition of binds_sym_p. 2005-01-20 Bruno Haible * stream.d (listen_handle): Use 'var'. 2005-01-20 Bruno Haible * makemake.in (cflags.h.stamp): Use $(MV), not $(CP). 2005-01-20 Bruno Haible * io.d (structure_reader): Accept also strings and characters as slot names, and use test_stringsymchar_arg for converting them to a string. 2005-01-20 Bruno Haible * charstrg.d (test_stringsymchar_arg): Remove redundant code. 2005-01-20 Bruno Haible * utils/clispload.lsp (*expected-failures*): Update. 2005-01-20 Bruno Haible * io.d (list2_reader): If *read-suppress* is true, return NIL. 2005-01-19 Sam Steingold * control.d (make_variable_frame): the initial special binding is inactive 2005-01-19 Sam Steingold * eval.d (funcall_iclosure): when reserving space for variable bindings, the actual size depends on varframe_binding_size 2005-01-19 Arseny Slobodyuk Fix MSVC build * makemake.in (cflags.h.stamp): simplified for nmake. * win32.d: ssize_t defined for MICROSOFT. * stream.d (listen_handle): do not declare a variable in the middle of a code block. * utils/gctrigger.d (convert): the same. 2005-01-02 Bruno Haible * condition.lisp (find-noninteractively-invokable-continue-restart): New function. (maybe-continue, exitonerror): Use it. 2005-01-01 Bruno Haible * condition.lisp (maybe-continue): For a restart that requires user interaction, don't duplicate the break-loop's functionality; let the break-loop do it. 2005-01-17 John Hinsdale * modules/oracle/orafns.c, oracle.lisp: Support RowId data type 2005-01-17 Sam Steingold DEFCHECKER now accepts new "PREFIX" argument * utils/modprep.lisp (prev-non-blank): made more robust (*commands*, split-command, argument-string) (ensure-argument-string): add (defmodule-p): use SPLIT-COMMAND (checker): new slot PREFIX (to-C-name): new function (new-flag-set, new-checker): :CONDITION is now a &KEY argument; also accept :TYPE & :PREFIX (word-list): rewrote; return the un-reversed list (def-something-p): accept a NAME->CONSTRUCTOR alist; pass TYPE and PREFIX to constructor (parse): call DEF-SOMETHING-P just once (print-tables-1): respect PREFIX when printing checkers * modules/i18n/gettext.c (check_locale_category): use prefix "LC" * modules/rawsock/rawsock.c (check_socket_domain): use prefix "AF" (check_socket_type): use prefix "SOCK" (check_socket_protocol): use prefix "ETH_P" * modules/syscalls/calls.c (sysconf_arg): use prefix "_SC" (confstr_arg): use prefix "_CS" (getrlimit_arg): use prefix "RLIMIT" (mknod_type_check): use prefix "S" * modules/berkeley-db/bdb.c (txn_check_sync): use prefix "DB_TXN" (check_lk_detect, check_lockmode): use prefix "DB_LOCK" (dbe_encryption_check, db_get_action, db_put_action, dbc_get_action) (dbc_put_flag, logc_get_action): use prefix "DB" (txn_timeout_check): use prefix "DB_SET" 2005-01-01 Bruno Haible * condition.lisp (exitonerror): Treat non-meaningful or interactive CONTINUE restarts like absent. 2005-01-01 Bruno Haible * condition.lisp (maybe-continue): Ignore the CONTINUE restart if it is not meaningful: In a handler, it's better to decline than to call invoke-debugger. 2005-01-13 Sam Steingold * compiler.lisp: use STRING-CONCAT instead of (CONCATENATE 'STRING) 2005-01-13 Sam Steingold * compiler.lisp (c-comment): call FRESH-LINE & ELASTIC-NEWLINE here (c-warn, c-error, match-known-unknown-functions, c-report-problems): do not prepend "~&" nor append "~." to the format string This fixes a bug when C-WARN did not terminate with an ELASTIC-NEWLINE. 2005-01-13 Sam Steingold * stream.d (stream_handles): handle SYNONYM-STREAMs Reported by 2005-01-13 Sam Steingold * inspect.lisp (inspect-frontend): use (FORMAT "~&~S~%") instead of PRIN1 for :M & :E; print conditions with ~A 2005-01-01 Bruno Haible Make APPEASE-CERRORS and MUFFLE-CERRORS treat conditions with a nontrivial :interactive function the same as assert-restart-prompt. * condition.lisp (assert-failed): Drop explicit name for interactive function. (maybe-continue): Test the restart-interactive function against the trivial one. Generalize the special case for assert-restart-prompt. 2005-01-12 Sam Steingold * .gdbinit (boot): new command (formerly known as "base") (base): new command (similar to full) 2005-01-12 Sam Steingold add FEATUREP (http://clrfi.alu.org/clrfi/clrfi-1-featurep) * io.d (interpret_feature): STACK_1 may not be a stream (FEATUREP): implement * constsym.d, subr.d (featurep): add * init.lisp (featurep): export 2005-01-12 Sam Steingold * makemake.in (BASE_MODULES): add syscalls and regexp 2005-01-09 Bruno Haible Put the i18n module into the 'base' linking set. Needed for all kinds of internationalized programs and the GNU gettext test suite. * makemake.in (BASE_MODULES): New variable. (all): Depend on both 'boot' and 'base'. (boot): New target, like old 'base'. (base): New target, similar to 'full'. (distmakefile): Don't replace BASE_LIBS and BASE_FILES. (distrib): Treat 'base' like 'full'. Replace BASE_LIBS and BASE_FILES in distmakefile here. (clean1): Remove boot. (clean3): Clean BASE_MODULES as well. 2005-01-01 Bruno Haible * condition.lisp (maybe-continue): Don't call exitunconditionally. Instead, decline the condition. Fixes bug introduced on 2002-04-22. 2005-01-11 Sam Steingold * modules/syscalls/configure.in: check for * modules/syscalls/calls.c: include it when present 2005-01-11 Sam Steingold * socket.d (host_fn_t): new typedef (with_host, string_to_addr1t): new functions (string_to_addr): re-written using them (resolve_host1): simplified (resolve_host): use with_host() (with_host_port): rename from with_hostname() 2005-01-11 Sam Steingold * lispbibl.d (array_atype): declare 2005-01-11 Sam Steingold * intelem.d (udigits_to_I): new helper function for modules * lispbibl.d, genclisph.d (udigits_to_I): export * modules/berkeley-db/bdb.c (dbt_to_object): use it 2005-01-11 Sam Steingold unified cygwin/woe32 time conversion * unixaux.d (time_t_to_filetime) [UNIX_CYGWIN32]: new function (time_t_from_filetime) [UNIX_CYGWIN32]: rename from to_time_t_() * genclisph.d (time_t_to_filetime) [UNIX_CYGWIN32]: export (time_t_from_filetime) [UNIX_CYGWIN32]: rename from to_time_t_() (convert_time_to_universal_w32, convert_time_from_universal_w32) [UNIX_CYGWIN32]: new inline functions [WIN32_NATIVE]: new aliases * modules/dirkey/dirkey.c (LDAP::DKEY-INFO): use convert_time_to_universal_w32() * modules/syscalls/calls.c (wfd_to_stack, PropVariantToLisp): use convert_time_to_universal_w32() (LispToPropVariant): use convert_time_from_universal_w32() 2005-01-11 Sam Steingold * modules/matlab/matlab.lisp (mxIsLogicalScalar): remove * modules/matlab/wrap.lisp (matfile-content): remove unnecessary package prefixes 2005-01-11 Bruno Haible * spvw.d (main): Init O(argv) only after locale_encoding is initialized. Fix a GC-safety bug. Fixes bugs introduced on 2004-02-09. Reported by Juliusz Chroboczek and Mike Fabian . 2005-01-10 Bruno Haible * foreign1.lisp (to-c-name): For symbols from a case-sensitive package, use function cs-cl:string. 2005-01-10 Bruno Haible * stream.d (fresh_line): Add special code to care for the case that *standard-output* and *error-output* are aliased. 2005-01-09 Bruno Haible * configure: Document and implement options --bindir, --libdir, --includedir, --datadir, --localedir, --docdir, --mandir, --htmldir, --dvidir, --psdir, --pdfdir, for consistency with other GNU programs. * makemake.in: Likewise. (PREFIX): On Unix, don't ignore @prefix@. (EXEC_PREFIX): On Unix, don't ignore @exec_prefix@. (bindir, BINDIR): New variables. On Unix, don't ignore @bindir@. (libdir, LIBDIR): New variables. On Unix, don't ignore @libdir@. (includedir, INCLUDEDIR): New variables. On Unix, don't ignore @includedir@. (datadir, DATADIR, localedir, LOCALEDIR): New variables. On Unix, don't ignore @datadir@. (docdir): Remove variable. (docdir): New variable, rename from lispdocdir. (SRCDOCDIR): Rename from DOCDIR. (SRCDOCDIR_): Rename from DOCDIR_. (SRCDOCDIR_M): Rename from DOCDIR_M. (DOCDIR): New variable. (mandir, MANDIR, htmldir, HTMLDIR, dvidir, DVIDIR, psdir, PSDIR) (pdfdir, PDFDIR): New variables. (brace_to_paren): New variable. (datadir): Rename from shared. * _distmakefile (datadir): Rename from shared. (docdir): Remove variable. (docdir): New variable, rename from lispdocdir. (install-doc, uninstall): Update. 2005-01-09 Bruno Haible * po/Makefile.in.in (datadir): Use @datadir@. 2005-01-01 Bruno Haible * condition.lisp (maybe-continue): Remove useless code. 2005-01-10 Bruno Haible * Makefile.devel (GCC_VERSION, GCC_SOURCE_FILE, GCC_SOURCE_URL): New variable. (GCC_INSTALL_DIR): New computed variable. (install-gcc): New target. 2005-01-09 Bruno Haible Distribute the manual page also in PDF format. * makemake.in (pdfdir): New variable. (manual_dvi): Add clisp.pdf. (clisp.pdf): New rule. (installdirs): Create $(pdfdir). (install-man): Install also clisp.pdf. (uninstall-man): Uninstall also clisp.pdf. (clean1): Remove clisp.pdf. * _distmakefile (pdfdir): New variable. (install-man): Install also clisp.pdf. (uninstall): Uninstall clisp.pdf. 2005-01-09 Bruno Haible * clisp-link.in (func_tmpdir): New function. (run): Use it for all temporary files and directories. 2005-01-03 Bruno Haible * spvw.d (SP_ueber, STACK_ueber): Output a newline before reset(1). * spvw_alloca.d (malloca): Likewise. * spvw_allocate.d (error_speicher_voll): Likewise. 2005-01-02 Bruno Haible * debug.d (SYS::DESCRIBE-FRAME): Call print_stack_trace with the same logic as show_stack() does. 2005-01-02 Bruno Haible * debug.d (show_stack): Call print_stack_trace with the same logic in the frame_up_x != NULL case as in the frame_up_x == NULL case. 2005-01-02 Bruno Haible * spvw_debug.d (bt_out): Fix an invalid use of STACK_item_count. 2005-01-01 Bruno Haible Generalize the assert-restart-no-prompts hack. * condition.lisp (restart): Add slot 'meaningfulp'. (make-restart-form): Take an additional meaningfulp argument. (restart-bind, expand-restart-case): Accept MEANINGFULP restart option. (assert-restart-no-prompts): Remove function. (simple-assert-failed): Mark continue restart as not meaningful. (check-value, retry-function-call): Remove useless option from RETRY restart - useless since 2004-06-03. (maybe-continue): Test meaningfulp instead of comparing the interactive function against assert-restart-no-prompts. * reploop.lisp (break-loop): Likewise. 2005-01-10 Arseny Slobodyuk * modules/syscalls/calls.c (CRYPT, ENCRYPT, SETKEY): do not define on WIN32_NATIVE because it makes mingw version depending on cygcrypt-0.dll and cygwin1.dll. 2005-01-10 Bruno Haible Arseny Slobodyuk * modules/syscalls/calls.c (get_owner): new local functions on UNIX and WIN32_NATIVE. (GetSecurityInfoFunc, LookupAccountSidFunc, GetLengthSidFunc) (CopySidFunc, EqualSidFunc, ConvertSidToStringSidFunc) (initialized_sid_apis, sid_cache_entry, sid_cache_count) (sid_cache_allocated) [WIN32_NATIVE]: new variables to support get_owner on Win32. (sid_cache_entry) [WIN32_NATIVE]: new stuct. (sid_cache_get, sid_cache_put) [WIN32_NATIVE]: new local functions. (OS::FILE-OWNER): new DEFUN. * modules/syscalls/posix.lisp: export FILE-OWNER. * modules/syscalls/preload.lisp: set a nickname ("OS") in make-package. 2005-01-01 Bruno Haible Fix check-type, assert, ctypecase, ccase when used on locally defined places. * condition.lisp (prompt-for-new-value): Add new argument place-numvalues. (check-type): Pass number of value to check-type-failed. (check-type-failed): Add new argument place-numvalues. (assert): Pass number of values to prompt-for-new-value. Pass environment to get-setf-expansion. (check-value, retry-function-call): Update. (ctypecase, ccase): Pass number of value to ctypecase-failed. (ctypecase-failed): Add new argument place-numvalues. 2005-01-05 Bruno Haible * lispbibl.d (constant_bit_t, special_bit_t): Remove macros. (var_bit0_t, var_bit1_t): New macros. (constant_bit_f, special_bit_f): Remove macros. (var_bit0_f, var_bit1_f): New macros. (constant_bit_hf, special_bit_hf): Remove macros. (var_bit0_hf, var_bit1_hf): New macros. (Rectype_GlobalSymbolmacro): New enum value. (constant_var_p): Rename from constantp. Change to use var_bit0, var_bit1. (special_var_p): Change to use var_bit0, var_bit1. (symmacro_var_p): New macro. (set_const_flag, clear_const_flag): Change to use var_bit0, var_bit1. (set_special_flag, clear_special_flag): Likewise. (set_symmacro_flag, clear_symmacro_flag): New macros. (GlobalSymbolmacro): New type. (globalsymbolmacro_length): New macro. (TheGlobalSymbolmacro): New macro. (globalsymbolmacrop, allocate_globalsymbolmacro): New macros. (check_symbol_non_constant): Update. * spvw_objsize.d (case_symbolwithflags): Update. * eval.d (SYS::SPECIAL-VARIABLE-P): constant_var_p now implies special_var_p. (sym_value_place): Remove function. (sym_value): Turned into a function again. Add a symbolmacro_ argument. Handle symbol-macros in more detail. (check_local_symbol_value): Remove function. (sym_macrop, setq, macroexp0): Change symbol-macro handling. (eval1): Inline old check_local_symbol_value function. Change symbol-macro handling. (interpret_bytecode_): Update. * control.d (SYS::%SYMBOL-VALUE): Remove function. (SYMBOL-VALUE, SET): Don't test for symbol-macro. Access the value cell always. (make_variable_frame): constant_var_p now implies special_var_p. Update. (PROCLAIM): Signal an error when a symbol-macro is being proclaimed special. (form_constant_p): Update. (SYS::GLOBAL-SYMBOL-MACRO-P): New function. * symbol.d (SYS::%PROCLAIM-CONSTANT): Signal an error when a symbol-macro is being proclaimed constant. (SYS::%PROCLAIM-SYMBOL-MACRO): New function. * package.d (make_present): Signal an error when a symbol-macro is being imported into the KEYWORD package. Use set_const_flag. * record.d (SYMBOL-MACRO-EXPAND): Look for the symbol-macro definition on the property list. (SYS::MAKE-GLOBAL-SYMBOL-MACRO): New function. (SYS::GLOBAL-SYMBOL-MACRO-DEFINITION): New function. * io.d (pr_orecord): Handle GlobalSymbolmacro. * predtype.d (TYPE-OF, CLASS-OF): Handle GlobalSymbolmacro. (enum_hs_global_symbol_macro): New enum item. (heap_statistics_mapper): Handle GlobalSymbolmacro. * error.d (check_symbol_non_constant_replacement, check_encoding): Update. * encoding.d (MAKE-ENCODING): Update. * init.lisp (venv-assoc): Use symbol-macro-expand and global-symbol-macro-definition instead of %symbol-value. * macros2.lisp (define-symbol-macro): Put the definition on the property-list, not in the value cell. Call %proclaim-symbol-macro. * defs1.lisp (copy-symbol): Use symbol-value instead of %symbol-value. * describe.lisp (apropos, describe-object@symbol): Symbol-macros are now orthogonal to the contents of the value cell. Update. 2005-01-06 Sam Steingold * time.d (convert_time_from_universal): new function * genclisph.d (convert_time_from_universal): declare * modules/syscalls/calls.c (LispToPropVariant): use it (PropVariantToLisp): use convert_time_to_universal() (kwtopropid, PropSpecSetStr, propspeclistp, PropSpecSet): do not change STACK 2005-01-06 Sam Steingold * socket.d (string_to_addr): new function * genclisph.d (string_to_addr): declare * modules/rawsock/rawsock.c (CONVERT-ADDRESS): implement * modules/rawsock/sock.lisp (CONVERT-ADDRESS): export 2004-12-24 Bruno Haible * debug.d (print_back_trace, print_stackitem): Don't print a newline at the beginning. (SYS::DESCRIBE-FRAME, show_stack): Print the newlines here instead. Use fresh-line at the beginning and elastic-newline at the end. 2004-12-24 Bruno Haible * describe.lisp (describe1): Add a fresh-line call after the describe-object call, and a blank line before the documentation. 2004-12-24 Bruno Haible * compiler.lisp (disassemble-closure): Start with fresh-line, end with elastic-newline. 2004-12-24 Bruno Haible * compiler.lisp (c-warn, c-error): Use ~& at the beginning and ~. at the end of the output. (match-known-unknown-functions): Likewise. (c-report-problems): Likewise. Remove blank line at the end. (compile-file): Use fresh-line before and elastic-newline after the output. Remove blank lines. 2004-12-24 Bruno Haible Remove a redundant blank line at the beginning of DIR's output. * init.lisp (dir): Use fresh-line at the beginning and an elastic newline after each filename. 2004-12-24 Bruno Haible Remove an extra blank line at the beginning of trace output, and also after trace output if the program is using newline convention A. * trace.lisp (trace-pre-output): Use fresh-line instead of terpri at the beginning, and elastic-newline at the end. (trace-post-output): Use fresh-line instead of terpri at the beginning, and rely on trace-print for the final elastic newline. (trace-print): Use fresh-line instead of terpri at the beginning, and emit an elastic newline at the end. 2004-12-24 Bruno Haible Remove redundant blank lines in stepper output when a program uses newline convention A. * reploop.lisp (step-values): Use fresh-line before and elastic-newline after the output. 2004-11-05 Bruno Haible * query.lisp (y-or-n-p, yes-or-no-p): Remove extra blank line between wrong answer and complaint. 2004-12-24 Bruno Haible * debug.d (read_form): Use fresh-line instead of terpri before the prompt. (SYS::READ-EVAL-PRINT): Add an elastic newline after printing the values. * reploop.lisp (get-frame-limit): Use fresh-line before and elastic-newline after the output. (print-error): Likewise. (break-loop): Likewise. Remove extra newline after all helpstrings. 2004-12-24 Bruno Haible * error.d (begin_error): Use fresh-line, not terpri. (write_errorstring): Output an elastic newline at the end. (ERROR, SYS::ERROR-OF-TYPE): Output an elastic newline after the error message. (tast_break): Use fresh-line, not terpri. * init.lisp (cerror, warn): Use fresh-line before and elastic-newline after the output. * macros2.lisp (prompt-for-new-value-string): Start with ~& instead of ~%. * condition.lisp (prompt-for-new-value): Start with fresh-line instead of terpri. (break, cerror, warn, maybe-continue, exitunconditionally): Use fresh-line before and elastic-newline after the output. 2004-12-24 Bruno Haible * defs1.lisp (%time): Avoid printing a blank line before the statistics in some cases. Print an elastic newline afterwards. 2004-11-04 Bruno Haible * inspect.lisp (inspect-frontend@inspection@:tty): Don't print a blank line before the output of the :e and :m commands. 2004-12-24 Bruno Haible * edit.lisp (ed): Don't start the file with a blank line. Don't print a blank line; instead print a newline after each function name. 2004-12-24 Bruno Haible * init.lisp (load): Print an elastic newline after each line. 2005-01-05 Sam Steingold * modules/rawsock/test.tst (host->sa): call RAWSOCK:HTONS on PORT do not call RAWSOCK:BIND when local host is resolved to 127.0.0.1 now the test passes on Linux too, in addition to Cygwin and Solaris 2005-01-05 Bruno Haible * autoconf/config.rpath: Upgrade to current copy from GNU gettext. 2005-01-05 Bruno Haible * m4/libtool.m4: Upgrade to libtool-1.5.10. 2005-01-05 Bruno Haible * configure: Unset CDPATH in a more robust way. 2004-01-05 Bruno Haible * utils/clispload.lsp (*expected-failures*): Update. 2005-01-05 Bruno Haible * io.d (read_internal): Signal an error when an attribute a_illg is present. 2005-01-05 Bruno Haible * format.lisp (next-arg): Signal a TYPE-ERROR when the argument list is dotted. 2005-01-02 Bruno Haible Fix SHOW-STACK to show invocation activation at the right place, not randomly interspersed in the stack. * lispbibl.d (top_of_back_trace_frame): New declaration. (bt_beyond_stack_p): Use it instead of bt_stack. (with_saved_back_trace): Add stack argument. (with_saved_back_trace_fsubr, with_saved_back_trace_subr) (with_saved_back_trace_cclosure, with_saved_back_trace_iclosure): New macros. * debug.d (driver): Correct bt_stack value. (break_driver): Correct bt_stack and bt_function values. (top_of_back_trace_frame): New function. (SYS::DESCRIBE-FRAME): Use top_of_back_trace_frame instead of bt_stack. * spvw.d (main): Correct bt_stack value. * eval.d (interpret_bytecode): Use with_saved_back_trace_cclosure. (eval_fsubr): Use with_saved_back_trace_fsubr. (eval_subr): Use with_saved_back_trace_subr. Fix the argument count in the &rest case. (eval_closure): Use with_saved_back_trace_iclosure. (apply_subr): Use with_saved_back_trace_subr. Fix the argument count in the &rest case. (apply_closure): Use with_saved_back_trace_iclosure. (funcall_subr): Use with_saved_back_trace_subr. Fix the argument count in the &rest case. (funcall_closure): Use with_saved_back_trace_iclosure. (interpret_bytecode_): In JSR, use with_saved_back_trace_cclosure. In CALLS1, CALLS2, CALLSR, use with_saved_back_trace_subr. In CAR, CDR, CHECK_FDEF, INC, DEC, use with_saved_back_trace_subr. * pathname.d (ENOUGH-NAMESTRING, assume_dir_exists): Use with_saved_back_trace_subr. * sequence.d (copy_seqpart_into, FILL): Likewise. * stream.d (read_line): Likewise. * foreign.d (convert_function_to_foreign): Likewise. * spvw_debug.d (bt_out): Use top_of_back_trace_frame instead of bt_stack. 2005-01-01 Bruno Haible Reduce code size of some macro expansions. * condition.lisp (check-type-failed): New function. (check-type): Use it in the macroexpansion. (assert-failed, simple-assert-failed): New functions, extracted from assert. (assert): Use them in the macroexpansion. (etypecase-failed, ctypecase-failed): New functions. (etypecase, ctypecase, ecase, ccase): Use them in the macroexpansion. 2004-12-24 Bruno Haible New format directive "~.". * format.lisp (format-parse-cs): Add support for ~.. (format-elastic-newline): New function. (formatter-main-1): Add support for ~.. 2005-01-04 Sam Steingold * foreign1.lisp: import SYS:SYMBOL-KEYWORD * defstruct.lisp (*defstruct-description-type-location*): fix value (defstruct): set PREDICATE-OPTION to NIL before saving it into DEFSTRUCT-DESCRIPTION; fix the creation of DEFSTRUCT-DESCRIPTION (*defstruct-description-type-location*) (*defstruct-description-size-location*) (*defstruct-description-kconstructor-location*) (*defstruct-description-slots-location*) (*defstruct-description-boa-constructors-location*) (*defstruct-description-copier-location*) (*defstruct-description-predicate-location*): PROCLAIM CONSTANT-INLINE to pass "make check-recompile" 2005-01-04 Sam Steingold * exporting.lisp (export-accessories): new function (defstruct, def-c-struct): use it 2005-01-04 Sam Steingold carry predicate with the structure metaobject * clos-class1.lisp (*-defclass*): new slot: $predicate (*-predicate-location*): new constant (class-predicate, (setf class-predicate)): new predefuns (*-instance-size*): increased by 1 * clos-class3.lisp (make-instance-): accept and ignore 'predicate argument (shared-initialize-): accept and use 'predicate argument (define-structure-class): accept and use predicate argument * clos-class4.lisp (shared-initialize@structure-class): accept and ignore 'predicate argument * clos-class6.lisp (class-predicate, (setf class-predicate)): add (class-direct-slots): handle structures too ((setf class-direct-slots)): turn into a defgeneric * constobj.d (version): bumped * defstruct.lisp (*defstruct-description-predicate-location*): add (defstruct): pass predicate to DEFINE-STRUCTURE-CLASS * io.d (STRUCTURE-READER): structure descriptors have length 7 2005-01-04 Sam Steingold * defstruct.lisp (defstruct): avoid unnecessary warnings on predicate-accessor conflict 2005-01-01 Bruno Haible Improve prompt after assert failure. * macros2.lisp (report-new-values-string): Change to a format string that accepts more than 1 argument. (assert): Pass the places individually to the format string, not as a list of places. * condition.lisp (assert): Likewise. 2005-01-01 Bruno Haible * condition.lisp (assert): Simplify macroexpansion by use of wrap-let*. 2005-01-01 Bruno Haible * condition.lisp (assert): Simplify. (check-value): Comments. 2004-12-24 Bruno Haible * foreign.d (convert_to_foreign): When converting to (C-ARRAY CHARACTER ...), (C-ARRAY-MAX CHARACTER ...), (C-ARRAY-PTR CHARACTER), accept a non-string array of ASCII characters. 2004-12-24 Bruno Haible New function EXT:ELASTIC-NEWLINE. * lispbibl.d (Stream): Add fields strm_wr_ch_npnl, strm_wr_ch_array_npnl. (fresh_line, elastic_newline): New declarations. * stream.d (wr_ch_pending_newline): New function. (write_char): When writing to a Gray stream, output pending newline. (wr_ch_array_pending_newline): New function. (write_char_array): When writing to a Gray stream, output pending newline. (harden_elastic_newline): New functions. (stream_dummy_fill, make_synonym_stream, make_broadcast_stream) (make_twoway_stream, make_echo_stream, make_string_output_stream) (MAKE-STRING-OUTPUT-STREAM, SYSTEM::MAKE-STRING-PUSH-STREAM) (make_pphelp_stream, MAKE-BUFFERED-OUTPUT-STREAM, MAKE-GENERIC-STREAM) (fill_pseudofuns_unbuffered, fill_pseudofuns_buffered) (make_terminal_stream_, MAKE-WINDOW, make_socket_stream): Fill the strm_wr_ch_npnl, strm_wr_ch_array_npnl fields as well. (get_output_stream_string, builtin_stream_close, finish_output) (force_output): Call harden_elastic_newline(). (get_line_position): On a Gray stream, look at the $penl slot. (elastic_newline_pending_p, fresh_line, elastic_newline): New functions. * io.d (FRESH-LINE): Use fresh_line. (EXT:ELASTIC-NEWLINE): New function. * debug.d (SYS::READ-EVAL-PRINT): Use fresh_line(). * pseudofun.d: Update. * init.lisp: Export ext:elastic-newline. * gray.lisp (fundamental-stream): Add $penl slot. (close@fundamental-stream): Output pending newline. 2005-01-04 Sam Steingold carry BOA-constructors and copier with the structure metaobject * clos-class1.lisp (*-defclass*): new slots: $boa-constructors and $copier (*-boa-constructors-location*) (*-copier-location*): new constants (class-boa-constructors, (setf class-boa-constructors)) (class-copier, (setf class-copier)): new predefuns (*-instance-size*): increased by 2 * clos-class3.lisp (make-instance-): accept and ignore 'boa-constructors and 'copier arguments (shared-initialize-): accept and use 'boa-constructors and 'copier arguments (define-structure-class): accept and use boa-constructors and copier arguments (structure-undefine-accessories): new ABI function * clos-class4.lisp (shared-initialize@structure-class): accept and ignore 'boa-constructors and 'copier arguments * clos-class6.lisp (class-instance-size, (setf class-instance-size)): (class-kconstructor, (setf class-kconstructor)): turned into generic functions (class-boa-constructors, (setf class-boa-constructors)) (class-copier, (setf class-copier)): add * constobj.d (version): bumped * defstruct.lisp (*defstruct-description-type-location*) (*defstruct-description-size-location*) (*defstruct-description-kconstructor-location*) (*defstruct-description-slots-location*) (*defstruct-description-boa-constructors-location*) (*defstruct-description-copier-location*): add constants (ds-typep, ds-typep-expansion, ds-canonicalize-type) (find-structure-slot-initfunction): use them (clos::structure-undefine-accessories): add a predefun (defstruct): call it; pass copier and boa-constructors to DEFINE-STRUCTURE-CLASS * io.d (STRUCTURE-READER): structure descriptors have length 6 2005-01-03 Sam Steingold * init.lisp (symbol-keyword): new function * defmacro.lisp (analyze-key): use it * defstruct.lisp (defstruct): ditto * foreign1.lisp (c-struct-constructor): ditto * lambdalist.lisp (analyze-lambdalist, analyze-defsetf-lambdalist) (analyze-generic-function-lambdalist): ditto * type.lisp (%the): ditto * clos-package.lisp ("CLOS"): do not import SYS::*KEYWORD-PACKAGE* 2005-01-03 Sam Steingold * defstruct.lisp (defstruct): more grammatical error message 2005-01-03 Sam Steingold * clos-package.lisp (*features*): add :MOP 2005-01-02 Bruno Haible * lispbibl.d (backtrace_t): Rename field bt_caller to bt_function. (with_saved_back_trace, subr_self): Update. * spvw.d (main): Update. * spvw_update.d (update_back_traces): Update. * spvw_garcol.d (gc_markphase): Update. * spvw_debug.d (bt_out): Update. * debug.d (driver, break_driver, print_back_trace): Update. * genclisph.d (main): Update. 2005-01-02 Bruno Haible * lisparit.d (init_arith): Change initial value of *WARN-ON-FLOATING-POINT-CONTAGION* and *WARN-ON-FLOATING-POINT-RATIONAL-CONTAGION* to NIL. * utils/clispload.lsp: Remove setting of *WARN-ON-FLOATING-POINT-CONTAGION* and *WARN-ON-FLOATING-POINT-RATIONAL-CONTAGION*. 2005-01-01 Bruno Haible * init.lisp (cerror): Internationalize. * condition.lisp (cerror, maybe-continue): Likewise. (break-loop): Likewise. * reploop.lisp (break-loop): Likewise. 2005-01-01 Bruno Haible Avoid a possible collision with SP in libncurses. * lispbibl.d (SP): Alias to getSP in all cases. (NEED_OWN_GETSP): New macro. * spvw.d (getSP): Rename from SP. Define if NEED_OWN_GETSP. 2005-01-01 Bruno Haible * spvw_language.d (init_language): Invalidate the gettext internal caches. 2005-01-01 Bruno Haible * spvw.d (print_banner): Extend copyright years. 2004-12-24 Bruno Haible * foreign1.lisp: Indentation fixes. 2004-12-24 Bruno Haible Support multibyte encodings in FFI:*FOREIGN-ENCODING*. * encoding.d (init_dependent_encodings): Remove warning if *FOREIGN-ENCODING* is not 1:1. Initialize O(foreign_8bit_encoding). (SYSTEM::SET-FOREIGN-ENCODING): Update O(foreign_8bit_encoding). * foreign.d (convert_from_foreign_array_fill): For characters, use O(foreign_8bit_encoding). (convert_from_foreign): Likewise. Add special conversion routines for (C-ARRAY CHARACTER dim1), (C-ARRAY-MAX CHARACTER maxdim), (C-ARRAY-PTR CHARACTER). (count_walk_pre): For C-STRING and (C-ARRAY-PTR CHARACTER ...), compute the amount of needed memory. (convert_to_foreign): For characters, use O(foreign_8bit_encoding). Add special conversion routines for (C-ARRAY CHARACTER dim1), (C-ARRAY-MAX CHARACTER maxdim), (C-ARRAY-PTR CHARACTER). 2004-12-23 Bruno Haible * lispbibl.d (stream_get_read_eval, stream_set_read_eval): Mark as "can trigger GC". * stream.d (stream_get_read_eval, stream_set_read_eval): Likewise. * io.d (read_eval_reader, load_eval_reader, pr_orecord, pr_subr): Fix GC-safety bug introduced on 2004-04-12. 2004-12-19 Bruno Haible More powerful optimizations on places. * places.lisp (occurs-in-p, commuting-forms-p) (simple-occurrence-in-basic-block-p, optimized-wrap-let*) (optimized-wrap-multiple-value-bind): New functions. (push): Don't use simple-assignment-p, subst-in-form, sublis-in-form. Instead use optimized-wrap-let*. (pop): Likewise. (pushnew): Likewise. (remf): Don't use simple-assignment-p, subst-in-form. Instead simplify differently in all cases. (define-modify-macro): Don't use simple-assignment-p, subst-in-form. Instead use optimized-wrap-let*. (setf): Fix condition leading to error message. Don't use subst-in-form. Instead use optimized-wrap-let*. 2004-12-23 Sam Steingold * modules/matlab/matlab.lisp: add many mx functions 2004-12-19 Bruno Haible * places.lisp (remove-plist): Use more built-in functions. 2004-12-19 Bruno Haible * places.lisp (simple-assignment-p): Add env argument. Recognize assignments to symbol-macros. (push, pop, pushnew, remf, define-modify-macro, setf): Pass environment to simple-assignment-p. 2004-12-19 Bruno Haible Optimize away empty LET* in place macro expansions. * places.lisp (wrap-let*): New function. (push, pop, psetf, pushnew, remf, define-modify-macro, setf) (multiple-value-setf): Use it. 2004-12-19 Bruno Haible get-setf-method must reject dotted lists. * defmacro.lisp (make-length-test): Add optional argument accept-dotted. Use LIST-LENGTH if dotted lists must be rejected. * places.lisp (get-setf-expansion): Use endp instead of atom. (define-setf-expander): Pass accept-dotted = nil to make-length-test. (setf-VALUES-aux): Use endp instead of atom. 2004-12-18 Bruno Haible * places.lisp (subst-in-form, sublis-in-form): New functions. (push, pop, pushnew, remf, define-modify-macro, setf, the, if): Use them instead of subst, sublis. * macros3.lisp (expand-LETF*, expand-LETF): Likewise. 2004-12-21 Bruno Haible * predtype.d (COERCE): Accept cs-cl:string as equivalent to cl:string. * sequence.d (valid_type1): Likewise. * subtypep.lisp (canonicalize-type): Likewise. 2004-12-21 Bruno Haible * format.lisp (format-error): Take additional arguments specifying the error type and initargs. (format-parse-cs, next-arg, format-old-roman, format-new-roman) (format-cardinal, format-radix, format-character) (format-indirection-cserror, format-indirection-lerror) (format-conditional, format-conditional-error, format-iteration) (format-logical-block, format-logical-block-parse, formatter-main-1): Pass error type and initargs to format-error. 2004-12-19 Bruno Haible * modules/wildcard/wildcard.lisp: Define package as case-inverted. * modules/regexp/regexp.lisp: Modernize package declaration. Improve indentation. 2004-12-18 Bruno Haible * places.lisp (get-setf-method, push, pop, psetf, pushnew, remf) (rotatef, define-modify-macro, setf, shiftf, getf, char-bit, ldb) (mask-field, the, apply, progn, locally, if, values, setf-VALUES-aux) (multiple-value-setf): Use reasonable variable names. * condition.lisp (assert): Likewise. * macros3.lisp (expand-LETF*, expand-LETF): Likewise. 2004-12-20 Sam Steingold * exporting.lisp ("EXPORTING"): remove XP nickname because it is already used for a portable pretty-printer 2004-12-19 Bruno Haible * exporting.lisp: New file. * init.lisp: Load it. * makemake.in (LPARTS): Add exporting. (exporting.fas): Remove target. (LINKKIT, anymodule): Remove special handling of exporting.lisp. * po/Makefile.devel (LISPSOURCES): Add exporting. * modules/exporting.lisp: Remove file. * modules/bindings/glibc/linux.lisp: Define package as case-inverted. Use some symbols from package EXPORTING; drop old exporting code. * modules/bindings/glibc/wrap.lisp: Remove contradictory defpackage declaration. Use in-package instead. Remove many useless package prefixes. * modules/bindings/win32/win32.lisp: Define package as case-inverted. Use some symbols from package EXPORTING; drop old exporting code. * modules/matlab/matlab.lisp: Define package as case-inverted. Use some symbols from package EXPORTING; drop old exporting code. * modules/matlab/wrap.lisp: Remove contradictory defpackage declaration. Use in-package instead. Remove package-lock hacking. * modules/netica/netica.lisp: Define package as case-inverted. Use some symbols from package EXPORTING; drop old exporting code. * modules/netica/wrap.lisp: Remove contradictory defpackage declaration. Use in-package instead. Remove many useless package prefixes. Remove package-lock hacking. * modules/postgresql/postgresql.lisp: Define package as case-inverted. Use some symbols from package EXPORTING; drop old exporting code. 2004-12-19 Bruno Haible * utils/clispload.lsp (*expected-failures*): Revisited. 2004-12-19 Bruno Haible * format.lisp (formatter-main-1): In ~{, when the max-n-iterations prefix is not known to be a number, test it against nil before comparing it. 2004-12-19 Bruno Haible * format.lisp (format-goto-arg): If the argument is nil, use 0 or 1 instead. 2004-12-19 Bruno Haible Make calls to EXT:SPECIAL-VARIABLE-P compilable and usable in macro- expanders. * eval.d (EXT:SPECIAL-VARIABLE-P): Don't accept T and venv vectors as environment. Instead, accept macroexpansion environments. * compiler.lisp (ext:special-variable-p): Remove compiler macro. 2004-12-19 Bruno Haible * defs2.lisp (nth-value): Move macro from here... * macros2.lisp (nth-value): ... to here. 2004-12-19 Bruno Haible * disassem.lisp (disassemble@symbol): Use ext: package prefix. * macros3.lisp (expand-LETF*, expand-LETF): Add env argument. Handle locally defined symbol-macros correctly. (LETF*, LETF): Pass environment to expand-LETF*, expand-LETF. 2004-12-18 Bruno Haible * places.lisp (define-modify-macro): Implement the evaluation order according to ANSI CL 5.1.3. 2004-12-19 Sam Steingold * describe.lisp (apropos): finish with FRESH-LINE instead of TERPRI to avoid extra vertical space when nothing is found 2004-12-19 Sam Steingold * pathname.d (test_optional_host): :UNSPECIFIC means NIL because USER-HOMEDIR-PATHNAME is required to accept :UNSPECIFIC as argument 2004-12-18 Sam Steingold * io.d (SET-SYNTAX-FROM-CHAR): fix a GC-safety bug (from sacla-tests) 2004-12-18 Sam Steingold * package.d (%IN-PACKAGE): fix yet another GC-safety bug 2004-12-18 Sam Steingold * io.d (SET-READTABLE-CASE): fix a GC-safety bug (from sacla-tests) 2004-12-18 Sam Steingold * spvw_debug.d (nobject_out1): always use pack_shortest_name for symbols 2004-12-18 Bruno Haible * modules/clx/mit-clx/dependent.lisp (current-process): Return nil. (get-host-name): Don't always signal an error. 2004-12-18 Bruno Haible * stream.d (stream_handles): Support also the X11-socket streams. 2004-12-17 Sam Steingold * modules/pari/pari.lisp (entree): fix declaration 2004-12-17 Bruno Haible * _clisp.c (main): Fix handling of option -E. Reported by John K. Hinsdale . 2004-12-08 Bruno Haible Allocate narrow strings by default, instead of wide UCS-4 strings. * charstrg.d (MAKE-STRING): Call allocate_s8string instead of allocate_string. 2004-12-16 John Hinsdale * modules/oracle/orafns.c: Better error reporting of parse errors 2004-12-16 Sam Steingold * spvw_memfile.d (loadmem_from_handle): clarified an error message 2004-12-15 Sam Steingold * modules/pari/pari.lisp: major re-write (use "modern" package) 2004-12-15 Sam Steingold * defpackage.lisp (defpackage): always pass :CASE-SENSITIVE and :CASE-INVERTED to %IN-PACKAGE 2004-12-15 Sam Steingold * foreign1.lisp (do-c-lines): fix last patch * package.d (%IN-PACKAGE): fix last patch 2004-12-12 Bruno Haible Avoid warnings on glibc systems. * intparam.c: Don't include stdlib.h. (main): Provide the exit code through return, not exit. * floatparam.c: Don't include stdlib.h. (main): Provide the exit code through return, not exit. 2004-12-09 Bruno Haible More invariant checking for generational GC. * lispbibl.d (SP_anchor): New declaration. * spvw.d (SP_anchor): New variable. (main): Initialize it. * spvw_debug.d (DEBUG_SPVW_ASSERT): New macro. * spvw_global.d (is_valid_varobject_address, is_valid_cons_address) (is_valid_heap_object_address, is_valid_stack_address): New macros. * spvw_garcol.d (update) [DEBUG_SPVW]: Check that the pointers being written to memory are valid. * spvw_genera1.d (rebuild_old_generation_cache) [DEBUG_SPVW]: Check that the pointers being put into the physpage cache are valid. * spvw_genera2.d (gc_mark_old_generation) [DEBUG_SPVW]: Check that the pointers taken from the physpage cache are valid. * spvw_genera3.d (update_old_generation) [DEBUG_SPVW]: Check that the pointers in the physpage cache are valid and not pointing into the wrong heap. * spvw_fault.d (handle_read_fault): [DEBUG_SPVW]: Check that the pointers in the physpage cache are valid and not pointing into the wrong heap. 2004-12-14 Sam Steingold case-sensitive/case-inverted package properties are now mutable * lispbibl.d (mark_pack_caseinsensitive, mark_pack_casepreserved): add * package.d ((SETF EXT:PACKAGE-CASE-SENSITIVE-P)) ((SETF EXT:PACKAGE-CASE-INVERTED-P)): implement (SYSTEM::%IN-PACKAGE): reset case-sensitive/case-inverted properties and issue a warning * constsym.d, subr.d (set_package_case_sensitive_p) (set_package_case_inverted_p): add * places.lisp (package-case-inverted-p, package-case-sensitive-p): add 2004-12-12 Bruno Haible Command-line option -modern. * spvw.d (usage): Mention option -modern. (struct argv_actions): Add argv_modern field. (parse_options): Initialize it. Recognize -modern. (main_actions): Handle argv_modern option. 2004-12-12 Bruno Haible Support for :case-inverted packages and package CS-COMMON-LISP. * lispbibl.d (mark_pack_caseinverted, pack_caseinvertedp): New macros. (mark_pack_locked, mark_pack_unlocked, pack_locked_p): Use bit 2. (invert_case, string_gleich_inverted, string_invertcase): New declarations. (test_stringsymchar_arg, find_external_symbol, intern): Add invert argument. * package.d (string_hashcode): Add invert argument. (newinsert): Update. (symtab_lookup): Add invert argument. (symtab_find, symtab_insert, symtab_delete): Update. (package_lookup_ext, package_lookup_int): Add invert argument. (inherited_lookup): Likewise. (make_package): Likewise. (shadowing_lookup, shadowing_delete): Likewise. (accessiblep): Update. (find_external_symbol, find_symbol, intern): Add invert argument. (intern_keyword): Update. (package_lookup): Add invert argument. (shadowing_import): Update. (do_shadow): Rename from shadow. Add invert argument. (shadow, cs_shadow): New functions. (unintern, import, export, use_package_aux, test_package_arg): Update. (FIND-PACKAGE): Update. (test_names_args, RENAME-PACKAGE): Update. (EXT:PACKAGE-CASE-INVERTED-P): New function. (do_intern): New function, extracted from INTERN. (INTERN): Call it. (CS-COMMON-LISP:INTERN): New function. (do_find_symbol): New function, extracted from FIND-SYMBOL. (FIND-SYMBOL): Call it. (CS-COMMON-LISP:FIND-SYMBOL): New function. (apply_symbols): Update. (CS-COMMON-LISP:SHADOW): New function. (correct_packname): Update. (in_make_package): Add case_inverted argument. (MAKE-PACKAGE): Add :CASE-INVERTED argument. (CS-COMMON-LISP:MAKE-PACKAGE): New function. (SYSTEM::%IN-PACKAGE): Add :CASE-INVERTED argument. (do_find_all_symbols): New function, extracted from FIND-ALL-SYMBOLS. (FIND-ALL-SYMBOLS): Call it. (CS-COMMON-LISP:FIND-ALL-SYMBOLS): New function. (map_symbols_aux): Update. (SYSTEM::PACKAGE-ITERATE): Update. (init_packages): Reorganize. Creates packages CS-COMMON-LISP and CS-COMMON-LISP-USER too. * charstrg.d (invert_case): New function. (SYS::CHAR-INVERTCASE): New function. (string_eqcomp_inverted, string_gleich_inverted): New functions. (nstring_invertcase, string_invertcase): New functions. (SYS::STRING-INVERTCASE): New function. (test_stringsymchar_arg): Add invert argument. (test_1_stringsym_limits, test_2_stringsym_limits): Likewise. (STRING=): Update. (CS-COMMON-LISP:STRING=): New function. (STRING/=): Update. (CS-COMMON-LISP:STRING/=): New function. (STRING<): Update. (CS-COMMON-LISP:STRING<): New function. (STRING>): Update. (CS-COMMON-LISP:STRING>): New function. (STRING<=): Update. (CS-COMMON-LISP:STRING<=): New function. (STRING>=): Update. (CS-COMMON-LISP:STRING>=): New function. (STRING-EQUAL): Update. (CS-COMMON-LISP:STRING-EQUAL): New function. (STRING-NOT-EQUAL): Update. (CS-COMMON-LISP:STRING-NOT-EQUAL): New function. (STRING-LESSP): Update. (CS-COMMON-LISP:STRING-LESSP): New function. (STRING-GREATERP): Update. (CS-COMMON-LISP:STRING-GREATERP): New function. (STRING-NOT-GREATERP): Update. (CS-COMMON-LISP:STRING-NOT-GREATERP): New function. (STRING-NOT-LESSP): Update. (CS-COMMON-LISP:STRING-NOT-LESSP): New function. (SYS::SEARCH-STRING=): Update. (SYS::SEARCH-STRING-EQUAL): Update. (SYS::STRING-BOTH-TRIM): Add an invertp argument. (STRING-UPCASE, STRING-DOWNCASE, STRING-CAPITALIZE): Update. (STRING): Update. (CS-COMMON-LISP:STRING): New function. (NAME-CHAR): Update. (SUBSTRING): Update. * io.d (read_internal): Use the package's case-inverted bit. (write_sstring_invert): New function. (write_sstring_case_ext): New function, extracted from write_sstring_case, with an add case_inverted argument. (write_sstring_case): Call it. (pr_symbol): Use the package's case-inverted bit. (pr_symbol_part): Add case_inverted argument. (pr_like_symbol): Use the package's case-inverted bit. * symbol.d (CS-COMMON-LISP:SYMBOL-NAME): New function. * spvw.d (init_symbol_tab_2): Support packages CS-COMMON-LISP and CS-COMMON-LISP-USER too. * constpack.d (LISPPACK): Update. * encoding.d (MAKE-ENCODING): Update. * defs1.lisp (string-trim): Update. (cs-cl::string-trim): New function. (string-left-trim): Update. (cs-cl::string-left-trim): New function. (string-right-trim): Update. (cs-cl::string-right-trim): New function. * defpackage.lisp (defpackage): Support case-inverted option. (find-symbol-cerror): Add invert argument. (shadowing-import-cerror, import-cerror, intern-export): Likewise. * case-sensitive.lisp: New file. * init.lisp: Export package-case-inverted-p. Load case-sensitive.lisp. * runprog.lisp (xstring): Handle symbols according to *PRINT-CASE* and its package. * complete.lisp (completion): Reorganize. Support case-inverted packages. * makemake.in (LPARTS): Add case-sensitive. * po/Makefile.devel (LISPSOURCES): Add case-sensitive. 2004-07-14 Bruno Haible * lispbibl.d (X3J13_161): Undefine. * package.d (shadow, apply_symbols): Assume X3J13_161 to be true. 2004-12-14 Bruno Haible * configure: Unset CDPATH. Reported by Robert Olney . 2004-12-13 Bruno Haible * utils/clispload.lsp: Call disable-note. (*expected-failures*): Update. 2004-12-13 Bruno Haible * places.lisp (remf): Reorder bindings according to ANSI CL 5.1.3. 2004-12-13 Bruno Haible * format.lisp (format-iteration): In the cases without colon, a *FORMAT-UP-AND-OUT* = :TERMINATE terminates the entire construct. 2004-11-28 Bruno Haible Don't recursively compile-file modules that have already been loaded. * compiler.lisp (c-REQUIRE): Look for the module in both *modules* and *compiled-modules*, not just *compiled-modules*. 2004-12-12 Bruno Haible * win32.d: Move include of . 2004-12-12 Bruno Haible Fix the error checking of stdout. When writing to a full disk over an NFS or CODA file system, write() writes into a operating system's buffer, fflush() succeeds, and only fclose() fails. * intparam.c (main): Check the error status of fclose(stdout). * floatparam.c (main): Likewise. * utils/ccmp2c.c (main): Check the error status of fclose(stdout) instead of fflush(stdout). * utils/ccpaux.c (main): Likewise. * utils/deema.c (main): Likewise. * utils/txt2c.c (main): Likewise. * utils/comment5.c (main): Likewise. No need to fclose(stdin). * utils/varbrace.d (main): Likewise. * utils/gctrigger.d (main): No need to call fflush(stdout) before fclose(stdout). Reported by Jim Meyering. 2004-12-09 Bruno Haible Make DEBUG_GCSAFETY work with GENERATIONAL_GC && MORRIS_GC. * lispbibl.d (inside_gc): New declaration. (nonimmprobe, nonimmsubrp): Don't access memory if inside_gc. * spvw_global.d (inside_gc): New variable. * spvw_garcol.d (gar_col_normal, gar_col_compact): Set and reset inside_gc. * spvw_fault.d (handle_read_fault): Verify that this isn't called inside_gc. 2004-12-09 Bruno Haible * lispbibl.d (ASM_get_SP_register, SP) [SPARC64]: Respect the bias of 2048 bytes. 2004-12-09 Bruno Haible Make DEBUG_SPVW work in g++ && GENERATIONAL_GC mode. * spvw_genera1.d (gc_check_ptr_at): New function. (gc_overall_check): Use it instead of gc_check_at. 2004-12-09 Bruno Haible Make DEBUG_SPVW work in HEAPCODES && GENERATIONAL_GC mode. * spvw_genera1.d (gc_check_at): Add support for HEAPCODES mode. 2004-12-08 Bruno Haible * spvw.d (init_object_tab): Make the :CLISP-DEBUG feature depend on DEBUG_COMPILER, not DEBUG_SPVW. 2004-12-13 Sam Steingold * stream.d (clear_output_terminal3): fix a GC-safety bug 2004-12-13 Sam Steingold * spvw.d (print_license, print_banner): (FRESH-LINE *STANDARD-OUTPUT*) to clean up after *INIT-HOOKS* 2004-12-13 Sam Steingold * .gdbinit (ansi_tests): wrap setting of an internal variable in WITHOUT-PACKAGE-LOCK 2004-12-13 Sam Steingold * io.d (space_available): mark as "maygc" (string_fit_line_p): ditto + fix a GC-safety bug (pr_enter_1): update for string_fit_line_p() changes 2004-12-13 Sam Steingold * eval.d (progv): fix a GC-safety bug 2004-12-12 Bruno Haible * spvw.d (main_actions): Fix GC-safety bug in argv_package handling. 2004-12-11 Bruno Haible * control.d (parse_doc_decl): Fix GC-safety bug introduced on 2004-05-27. 2004-12-08 Bruno Haible * lispbibl.d (symbol_length): New macro. * constsym.d (LISPSYM_B): Use it. Fixes bug introduced on 2004-05-15. 2004-12-08 Bruno Haible * lispbibl.d (init_ffi): Mark as "can trigger GC". * foreign.d (init_ffi): Likewise. 2004-12-08 Bruno Haible * stream.d (FILE-POSITION): Avoid a false GC-safety bug alert: Call SET-FILL-POINTER directly, without going through funcall. 2004-12-08 Bruno Haible * stream.d (make_buffered_stream): Avoid a false GC-safety bug alert. (It's not worth exploiting the fact that builtin_stream_close doesn't cons for a file/pipe/socket stream.) 2004-12-08 Bruno Haible * lispbibl.d (shifthash): Add allowgc argument. * hashtabl.d (shifthash): Add allowgc argument. * io.d (perchar_table_put, copy_perchar_table) (syntax_table_put_notinline, copy_readtable_contents): Pass allowgc = true. * sequence.d (seq_duplicates): Likewise. * pathname.d (TRANSLATE-LOGICAL-PATHNAME, directory_search): Likewise. * foreign.d (register_foreign_variable, register_foreign_function) (convert_function_to_foreign): Pass allowgc = true. (free_foreign_callin): Pass allowgc = false. 2004-12-08 Bruno Haible * realelem.d (R_I_expt_R): Avoid a false GC-safety bug alert. 2004-12-08 Bruno Haible * encoding.d (CONVERT-STRING-FROM-BYTES): Avoid a false GC-safety bug alert. 2004-12-08 Bruno Haible * array.d (elt_copy_T_Char, elt_copy_Char_Char): Avoid calling sstring_store when the character already fits into dv2. 2004-12-08 Bruno Haible * control.d (form_constant_p): Inline the useful part of funname_to_symbol. Handle the case of an undefined function (setf foo). Call check_SP. (FUNCTION-SIDE-EFFECT): Inline the useful part of funname_to_symbol. 2004-12-08 Bruno Haible * stream.d (stream_get_read_eval, stream_set_read_eval): Use the forwarded instance for the access. Fixes bug introduced on 2004-04-12. 2004-12-12 Sam Steingold new module PARI for interface to * modules/pari: new directory 2004-12-12 Sam Steingold * spvw.d (parse_options): no longer accept "-a": 3.5 years is enough 2004-12-11 Bruno Haible * macros3.lisp (expand-LETF*, expand-LETF): Handle symbol-macros correctly. 2004-12-08 Bruno Haible * utils/gctrigger.d: New file. * makemake.in (GCTRIGGER): New variable. (XDECL_FILTER, XDECL_DEPENDENCIES): Invoke gctrigger. (UTILS): Add gctrigger. * lispbibl.d (maygc): New macro. (inc_allocstamp): New overloaded function. (GCTRIGGER, GCTRIGGER1, GCTRIGGER2, GCTRIGGER3, GCTRIGGER4, GCTRIGGER5) (GCTRIGGER6, GCTRIGGER_IF): New macros. * lispbibl.d: Use maygc declaration where possible. * spvw.d: Likewise. * spvw_circ.d: Likewise. * spvw_debug.d: Likewise. * spvw_language.d: Likewise. * spvw_garcol.d: Likewise. * spvw_memfile.d: Likewise. * spvw_module.d: Likewise. * spvw_typealloc.d: Likewise. * array.d: Likewise. * charstrg.d: Likewise. * control.d: Likewise. * debug.d: Likewise. * encoding.d: Likewise. * error.d: Likewise. * eval.d: Likewise. * foreign.d: Likewise. * hashtabl.d: Likewise. * io.d: Likewise. * list.d: Likewise. * misc.d: Likewise. * package.d: Likewise. * pathname.d: Likewise. * predtype.d: Likewise. * record.d: Likewise. * sequence.d: Likewise. * socket.d: Likewise. * stream.d: Likewise. * time.d: Likewise. * weak.d: Likewise. * zthread.d: Likewise. * lisparit.d: Likewise. * compelem.d: Likewise. * comptran.d: Likewise. * dfloat.d: Likewise. * ffloat.d: Likewise. * flo_konv.d: Likewise. * flo_rest.d: Likewise. * intbyte.d: Likewise. * intdiv.d: Likewise. * intelem.d: Likewise. * intgcd.d: Likewise. * intlog.d: Likewise. * intmal.d: Likewise. * intplus.d: Likewise. * intread.d: Likewise. * intsqrt.d: Likewise. * lfloat.d: Likewise. * rational.d: Likewise. * realelem.d: Likewise. * realrand.d: Likewise. * realtran.d: Likewise. * sfloat.d: Likewise. * lispbibl.d (subsstring): Mark as "can trigger GC". * io.d (syntax_table_get, syntax_table_put): Turn into inline functions. * hashtabl.d (sxhash): Cannot trigger GC. 2004-12-10 Sam Steingold * lispbibl.d (maygc): expand to nothing 2004-12-07 Bruno Haible Delay warn_forced_gc_rehash call if needed. * lispbibl.d (ht_test_code): Remove a bit. (ht_test_code_user_p): New macro. * hashtabl.d (htflags_test_builtin_B): New macro. (htflags_test_eq_B, htflags_test_eql_B, htflags_test_equal_B) (htflags_test_equalp_B): Define using fewer bits. (htflags_test_user_B): New macro. (htflags_stablehash_B): Update. (htflags_pending_warn_forced_gc_rehash): New macro. (hashcode_raw, hashcode_builtin, rehash): Update. (hash_lookup_builtin): Delay warn_forced_gc_rehash call if needed. Execute pending warn_forced_gc_rehash call if possible. (hash_lookup_builtin_with_rehash): Delay warn_forced_gc_rehash call if needed. (hash_prepare_store, MAKE-HASH-TABLE, hash_table_test): Update. * predtype.d (hash_table_equalp): Update. * spvw_debug.d (nobject_out1): Update. * pseudofun.d: Update. 2004-12-07 Bruno Haible * lispbibl.d (gethash): Add allowgc argument. (if_potential_class_p, if_defined_class_p): Pass allowgc = false. (instanceof): Likewise. * hashtabl.d (lookup_Pseudofun): Add allowgc argument. (hash_lookup_builtin, hash_lookup_builtin_with_rehash) (hash_lookup_user, hash_lookup): Likewise. (MAKE-HASH-TABLE): Pass allowgc = true. (gethash): Add allowgc argument. (GETHASH, SYSTEM::PUTHASH, shifthash, REMHASH): Pass allowgc = true. * predtype.d (hash_table_equalp): Return false if either hash table has a user-defined test. Pass allowgc = false. (typep_class, typep_classname): Pass allowgc = false. * eval.d (interpret_bytecode_): Pass allowgc = false. * io.d (perchar_table_get, syntax_table_get_notinline): Likewise. * stream.d (stream_get_read_eval, stream_set_read_eval): Likewise. * pathname.d (logical_host_p, TRANSLATE-LOGICAL-PATHNAME): Likewise. * record.d (CLOS:SLOT-VALUE, CLOS::SET-SLOT-VALUE, CLOS:SLOT-BOUNDP) (CLOS:SLOT-MAKUNBOUND, CLOS:SLOT-EXISTS-P): Pass allowgc = false. (CLOS::%REINITIALIZE-INSTANCE): Likewise. (CLOS::%INITIALIZE-INSTANCE): Pass allowgc = true. (CLOS::%MAKE-INSTANCE): Pass allowgc = false. * foreign.d (register_foreign_variable, register_foreign_function) (convert_function_to_foreign, free_foreign_callin) (FFI::LOOKUP-FOREIGN-VARIABLE, FFI::LOOKUP-FOREIGN-FUNCTION): Pass allowgc = false. * genclisph.d (main): Update gethash declaration. * modules/clx/new-clx/clx.f (make_xid_obj_2): Update. 2004-12-07 Bruno Haible * hashtabl.d (SYSTEM::PUTHASH, REMHASH): If the argument was not a hash-table and check_hashtable provided a replacement, use the replacement, not the original argument. Fixes bug introduced on 2003-05-13. 2004-12-07 Bruno Haible * array.d (storagevector_store): Rename local variable 'maygc'. 2004-11-29 Bruno Haible * describe.lisp (describe-stream): New class. (describe): Use it instead of fill-stream. 2004-12-07 Bruno Haible * stream.d (same_handle_p): Parenthesize the TIME_EQ arguments. 2004-12-09 Bruno Haible * stream.d (rd_ch_array_str_in): Fix GC-safety bug introduced on 2002-05-22. 2004-12-08 Bruno Haible * lisparit.d (LOG): Fix GC-safety bug introduced on 2002-10-06. 2004-12-08 Bruno Haible * foreign.d (object_address): Fix GC-safety bug introduced on 2003-08-07. 2004-12-08 Bruno Haible * foreign.d (convert_function_to_foreign): Fix long-standing GC-safety bug. 2004-12-08 Bruno Haible * foreign.d (SET-FOREIGN-POINTER): Fix GC-safety bug introduced on 2003-03-14. 2004-12-10 Sam Steingold New user variable CUSTOM:*PRINT-SYMBOL-PACKAGE-PREFIX-SHORTEST* allows using the shortest package (nick)name as the symbol prefix * lispbibl.d, genclisph.d (Package): new slot pack_shortest_name * package.d (ensure_pack_shortest_name): new function (make_package, RENAME-PACKAGE): call it (EXT:PACKAGE-SHORTEST-NAME): new function * constsym.d, subr.d (package_shortest_name): add * constsym.d (*PRINT-SYMBOL-PACKAGE-PREFIX-SHORTEST*): add * spvw.d (init_symbol_values): initialize it * reploop.lisp (package-short-name): remove (*prompt-body*): use PACKAGE-SHORTEST-NAME * io.d (pr_symbol): when *PRINT-SYMBOL-PACKAGE-PREFIX-SHORTEST* and not *PRINT-READABLY*, use pack_shortest_name instead of pack_name * init.lisp (EXT:PACKAGE-SHORTEST-NAME): export 2004-12-08 Bruno Haible * lispbibl.d (list_length): Mark as "can trigger GC". * list.d (list_length): Likewise. Fix GC-safety bug introduced on 2004-02-17. 2004-12-08 Bruno Haible * array.d (SYS::STORE): Fix GC-safety bug introduced on 2002-05-22. (SYS::ROW-MAJOR-STORE): Put the array into STACK_0, for error messages; fixes a long-standing bug. Fix GC-safety bug introduced on 2002-05-22. 2004-12-08 Bruno Haible * predtype.d (heap_statistics_record): New function. (heap_statistics_result): Use it. Fixes GC-safety bug when the heap size is big. 2004-12-08 Bruno Haible * sequence.d (MAKE-SEQUENCE): Avoid potential GC-safety bug: since now elt_fill can trigger GC. 2004-12-08 Bruno Haible * comptran.d (N_N_expt_N): Fix GC-safety bug introduced on 2002-09-11. 2004-12-08 Bruno Haible * stream.d (SYSTEM::SET-STREAM-EXTERNAL-FORMAT): Fix possible GC-safety bug. 2004-12-08 Bruno Haible * stream.d (SYSTEM::SET-STREAM-EXTERNAL-FORMAT): Use the encoding provided by test_external_format_arg, not the original argument; fixes bug introduced on 2003-05-07. * stream.d (SYSTEM::SET-STREAM-EXTERNAL-FORMAT): Fix GC-safety bug introduced on 2002-01-17. 2004-12-08 Bruno Haible * hashtabl.d (MAKE-HASH-TABLE): Fix GC-safety bug when using :INITIAL-CONTENTS with user-defined test, introduced on 2003-05-13. 2004-12-08 Bruno Haible * pathname.d (use_default_dir): Fix GC-safety bug introduced on 2002-01-09. 2004-12-10 Arseny Slobodyuk * win32.d: fix mingw build - include sys/types.h before using of ssize_t. 2004-12-09 Sam Steingold * genclisph.d (TESTOUT): check some constants (nullobj, unbound &c) 2004-12-09 Sam Steingold * modules/rawsock/rawsock.c (check_struct_data, SOCKADDR-FAMILY) (optional_sockaddr_argument, BIND, CONNECT, RECVMSG, SENDMSG, SENDTO): avoid warnings on AMD64 by using socklen_t instead of size_t 2004-12-09 Sam Steingold * modules/rawsock/rawsock.c (htonl, htons, ntohl, ntohs): implement * modules/rawsock/sock.lisp (htonl, htons, ntohl, ntohs): export 2004-12-07 Sam Steingold * compiler.lisp (compile): always return 3 values as specified by ANSI Reported by Michael Kappert 2004-12-06 Sam Steingold * modules/syscalls/calls.c (POSIX::SET-FILE-STAT): also set ATIME and MTIME using utime(2) (copy_attributes_and_close): use utime(2) instead of the deprecated utimes(2) 2004-12-06 Sam Steingold * modules/syscalls/calls.c (OS:FILE-PROPERTIES): support cygwin * modules/syscalls/posix.lisp (FILE-PROPERTIES) [win32|cygwin]: export * modules/syscalls/configure.in (LIBS) [win32|cygwin]: add oleaut32 2004-12-06 Sam Steingold * modules/syscalls/calls.c (check_chmod_mode): new function (POSIX::CONVERT-MODE): use it, permit symbol arguments 2004-12-06 Sam Steingold * eval.d (progv): do not modify the source code: when symlist contains bad symbols, copy it 2004-12-06 Arseny Slobodyuk IPropertyStorage interface on WIN32_NATIVE. * makemake.in: add liboleaut32 to libraries on cygwin. * modules/syscalls/calls.c (StgOpenStorageExFuncType): new type. (StgOpenStorageExFunc, ole32): new global static variables. (module__syscalls__init_function_2): load ole32.dll and get the StgOpenStorageEx address. (PropVariantToLisp, LispToPropVariant, kwtopropid, PropSpecSetStr) (propspeclistp, PropSpecSet, DecodeHRESULT): new static helper functions. (with_string_0w, MyPropVariantInit) new defines. Add a number of IPropertyStorage API defines missing in cygwin headers. (POSIX::FILE-PROPERTIES): new DEFUN. 2004-12-05 Bruno Haible Sequence constructing functions must check whether the result belongs to the given type. * sequence.d (valid_type1): Expect the type on the stack. Write back the expanded type. (valid_type): Likewise. (MAKE-SEQUENCE, coerce_sequence, SYSTEM::COERCED-SUBSEQ, CONCATENATE) (MAP, MERGE): Update. Invoke SEQTYPE_LENGTH_MATCH only if the type-length is an integer. At the end, verify using TYPEP. * predtype.d (COERCE): Try coerce_sequence also for non-atom types. 2004-12-05 Bruno Haible * lispbibl.d (execute): Remove declaration (leftover from Atari ST). 2004-12-05 Bruno Haible * lispbibl.d (DYNAMIC_8BIT_VECTOR, DYNAMIC_STRING): Use 'var'. 2004-12-05 Bruno Haible * hashtabl.d (check_weak): DON'T USE LOCAL VARIABLES OF TYPE gcv_object_t. 2004-12-05 Bruno Haible * lispbibl.d (mv_to_list, implicit_progn): Cosmetics. * io.d (LINES_INC): Likewise. 2004-12-05 Bruno Haible * lispbibl.d (init_packages, unread_char, write_byte_array) (write_char_array): Mark as "can trigger GC". (convert_to_foreign_mallocing, convert_to_foreign_nomalloc): Likewise. * spvw_language.d (CLSTEXT, CLOTEXT): Likewise. * charstrg.d (subsstring): Mark as "can trigger GC". * stream.d (write_byte_array, unread_char, write_char_array): Likewise. 2004-12-05 Bruno Haible * realelem.d (R_R_comp): Fix GC-safety bug introduced on 2004-09-18. 2004-12-05 Bruno Haible * stream.d (FILE-POSITION): Fix GC-safety bug introduced on 2004-02-15. 2004-12-05 Bruno Haible * charstrg.d (test_string_limits_rw): Mark as "can trigger GC". Fixes leftover from 2003-05-01. 2004-12-05 Bruno Haible * foreign.d (convert_to_foreign_*): Mark as "can trigger GC". (FFI::EXEC-ON-STACK): Fix GC-safety bug introduced on 2002-04-23. (FFI::FOREIGN-CALL-OUT): Fix several long-standing GC-safety bugs. 2004-12-05 Bruno Haible * foreign.d (FFI::%OFFSET): Fix GC-safety bug introduced on 2003-05-12. 2004-12-05 Bruno Haible * debug.d (read_form): Fix GC-safety bug introduced on 2003-01-21. 2004-12-05 Bruno Haible * io.d (pretty_print_call): Fix GC-safety bug introduced on 2001-08-17. Avoid goto. 2004-12-05 Bruno Haible * io.d (test_disp_sub_char): Expect readtable on the STACK. Fix GC-safety bug introduced on 2004-06-02. (SET-DISPATCH-MACRO-CHARACTER, GET-DISPATCH-MACRO-CHARACTER): Update. 2004-12-05 Bruno Haible * stream.d (SYSTEM::SET-STREAM-EXTERNAL-FORMAT): Fix GC-safety bug introduced on 2003-05-07. 2004-12-05 Bruno Haible * stream.d (test_input_stream_args, test_output_stream_args): Fix GC-safety bug introduced on 2004-06-02. 2004-12-05 Bruno Haible * eval.d (interpret_bytecode_ PROGV): Fix GC-safety bug introduced on 2003-05-20. 2004-12-05 Bruno Haible * stream.d (SYS::MAKE-SOCKET-STREAM, SOCKET-ACCEPT, SOCKET-CONNECT): Don't declare variables earlier than needed. (Deprecated BSD style.) 2004-12-04 Bruno Haible Prepare for using DEBUG_GCSAFETY with modules. * genclisph.d (main): Fix VAROBJECT_HEADER definition. * utils/modprep.lisp (print-tables-1): Change element type of the object-tab to gcv_object_t. * modules/clx/new-clx/clx.f (with_stringable_0_tc): Add casts in conditional expression. (XLIB:CREATE-PIXMAP): Likewise. 2004-12-04 Bruno Haible Make it possible to use CC=g++ with modules. * genclisph.d (main): Fix the declaration of fd_read, fd_write on Unix. * utils/modprep.lisp (print-tables-1): Use "extern" in the forward declaration on the subr-tab. * modules/clx/new-clx/clx.f (pop_display): Add a cast. (get_font_info_and_display): Likewise. (make_visual_info): Use field name 'c_class' in C++ mode. (XLIB:SCREEN-DEPTHS): Don't use 'template' as an identifier. (XLIB:CREATE-WINDOW): Don't use 'class' as an identifier. (XLIB:WINDOW-CLASS): Use field name 'c_class' in C++ mode. (handle_image_z, XLIB:PUT-IMAGE): Add a cast. (XLIB:DISCARD-FONT-INFO, XLIB:SET-FONT-PATH): Likewise. (XLIB:GET-PROPERTY): Don't use 'delete' as an identifier. (DEF_EVENT COLORMAP-NOTIFY): Use field name 'c_new' in C++ mode. (XLIB:PROCESS-EVENT): Add a cast. (grasp): New function, extracted out of encode_event. (encode_event): Update. (XLIB:QUERY-KEYMAP): Add casts. (XVisualIDToVisual): Don't use 'template' as an identifier. * modules/queens/queens.c (queens): Use ANSI C declaration syntax. Don't use 'try' as an identifier. * modules/rawsock/rawsock.c (RAWSOCK:MAKE-SOCKADDR): Add a cast. * modules/syscalls/calls.c (POSIX::CONFSTR): Add a cast. (POSIX::CONVERT-MODE): Move error-signaling code out of inner block. 2004-12-02 Bruno Haible Fix compilation errors with DEBUG_GCSAFETY. * foreign.d (FFI:FOREIGN-VARIABLE): Add cast in conditional expression. (open_library): Expect the name argument to be on the STACK. (update_library): Fix GC-safety bugs. 2004-12-02 Bruno Haible Make it possible again to do "make install" with a different user id even when Makefile is newer than cflags.h. * makemake.in (cflags.h.stamp): Rename from cflags.h. (cflags.h): New rule. (clean4): Remove also cflags.h.stamp. 2004-12-01 Sam Steingold * describe.lisp (arglist): COERCE the argument to FUNCTION so that (ARGLIST 'PRINT-OBJECT) returns meaningful variable names 2004-11-29 Sam Steingold * stream.d (low_read_array_unbuffered_handle) (low_read_unbuffered_handle, low_read_unbuffered_handle) (low_fill_buffered_handle, low_read_unbuffered_socket) (low_listen_unbuffered_socket, low_read_array_unbuffered_socket) (low_fill_buffered_socket): fd_read() returns ssize_t, not sintL (low_write_array_unbuffered_handle, low_flush_buffered_handle) (low_flush_buffered_pipe, low_write_array_unbuffered_pipe) (low_write_array_unbuffered_socket, low_flush_buffered_socket) (low_write_unbuffered_socket, low_write_unbuffered_handle): fd_write() returns ssize_t, not sintL 2004-11-29 Bruno Haible * spvw_memfile.d (loadmem_from_handle): More uses of sintM and ssize_t instead of sintL. 2004-11-29 Sam Steingold * spvw_memfile.d (loadmem_from_handle): full_read() returns ssize_t, not sintL 2004-11-27 Sam Steingold * foreign1.lisp (c-init-once, c-init-always, c-fini, do-c-init-once) (do-c-init-always, do-c-fini): remove (do-c-lines): when FORMAT-STRING is a symbol, add the code to the appropriate init/fini function 2004-11-27 Bruno Haible * lispbibl.d (uintM, sintM): Fix conditional. (static_space, used_space, free_space): Change return value type to uintM. 2004-11-26 Sam Steingold * compiler.lisp (try-eval): extracted from c-DIRECT-FUNCTION-CALL (c-DIRECT-FUNCTION-CALL): use it (c-PLUS, c-STAR, c-MINUS, c-SLASH): use it to avoid turning run-time errors into compile-time errors: issue a warning instead 2004-11-20 Bruno Haible * clos-genfun4.lisp (add-extended-method-check): Ignore the values of :after/:before methods. 2004-11-20 Bruno Haible Don't bypass the finalize-inheritance generic function. * clos-class2.lisp (class-pretty): New function. * clos-class3.lisp (shared-initialize-): Call finalizable-p and finalize-inheritance instead of finalize-class. (finalize-class): Remove function. (finalizable-p): New function. (finalize-inheritance): Call finalize-inheritance- instead of finalize-class. (finalize-inheritance-): New function. * clos-class6.lisp (finalize-inheritance@semi-standard-class): Call finalize-inheritance- instead of finalize-class. 2004-11-20 Bruno Haible * clos-class3.lisp (defclass): Warn about a syntax error that beginners often do. 2004-11-24 Bruno Haible Support heaps > 4 GB. * lispbibl.d (intMsize): New macro. (uintM, sintM): New types. (map_heap_function_t): Use uintM. (varobject_bytelength): Return uintM. (uintM_to_I, sintM_to_I): New macros. * spvw.d (argv_initparams): Change type of argv_memneed to uintM. (parse_options): Produce an uintM for argv_memneed. Accept GB as denoting "Giga". (init_memory): Use uintM. (dynload_modules): Likewise. * spvw_mmap.d (mmap_zeromap, mmap_filemap): Take an uintM. (mmap_prepare): Use uintM. * spvw_multimap.d (mmap_interval_t): Change the type of mm_len to uintM. (remember_mmap_interval, fdmap, zeromap, open_temp_fd, fdsave) (open_shmid, shmsave): Take an uintM. (multimap): Update. * spvw_singlemap.d (filemap): Take an uintM. * spvw_page.d (_Page): Change type of gcpriv.l to uintM. (spvw AVL_ELEMENT): Use uintM. * spvw_heap.d (Heap): Change the type of misaligned to uintM. * spvw_global.d (mem): Change the type of total_room, last_gcend_space0, last_gcend_space1, total_space, used_space, last_gcend_space, gctrigger_space to uintM. (check_gc_consistency, check_gc_consistency_2): Update. * spvw_gcstat.d (inc_gc_space): Take an uintM. * spvw_space.d (static_space, used_space, free_space): Return uintM. (recalc_space): Update. * spvw_objsize.d (varobject_bytelength): Return uintM. (size_svector): Likewise. (objsize, objsize_symbol, objsize_sbvector, objsize_sb2vector) (objsize_sb4vector, objsize_sb8vector, objsize_sb16vector) (objsize_sb32vector, objsize_svector, objsize_sxrecord, objsize_lrecord) (objsize_bignum, objsize_ffloat, objsize_dfloat, objsize_lfloat) (objsize_func_t): Likewise. * spvw_update.d (update_varobject, update_svector): Use uintM. * spvw_fault.d (xmprotect, xmmprotect): Take an uintM. * spvw_garcol.d (gc_sweep1_varobject_page): Update. (move_aligned_p1_p2): Take an uintM. (gc_sweep2_varobject_page, free_some_unused_pages): Update. (gar_col_normal): Update. (spvw SORT_KEY): Use uintM. (gc_compact_from_varobject_page, gc_compact_from_cons_page): Update. (gar_col_compact): Update. (move_conses): Take a sintM. * spvw_weak.d (markwatchset_allocated, markwatchset_size): Change type to uintM. (activate_weak): Update. * spvw_allocate.d (relax_reserve, mymalloc): Take an uintM. (not_enough_room_p, make_space, make_space_gc, make_space_true) (make_space_false, make_space_using_malloc): Likewise. * spvw_typealloc.d (allocate_vector): Use uintM. * spvw_walk.d (map_heap_objects): Update. * spvw_memfile.d (savemem, loadmem_from_handle): Use uintM. * predtype.d (hs_record_t): Change type of n_bytes to sintM. (heap_statistics_mapper, heap_statistics_result): Update. * debug.d (SYSTEM::%ROOM): Use uintM and uintM_to_I. 2004-11-24 Sam Steingold * stream.d (listen_handle) [WIN32_NATIVE]: use full_read() instead of read() to avoid a gcc warning 2004-11-19 Bruno Haible Repair the rest of the forward-referenced-class misdesign. * clos-class1.lisp (super-class): New class. (*-defclass*): New variable. (potential-class): Inherit all slots from super-class. (class-direct-subclasses-table): Make it work also for objects that are not of type . (forward-referenced-class): Remove class. (*-defclass*): Remove variable. (forward-reference-to-class): New class. (*-defclass*): New variable. (misdesigned-forward-referenced-class): New class. (*-defclass*): New variable. (shared-initialize-): Test for defined-class or forward-reference-to-class, instead of for potential-class. (forward-reference-to-class-p): New function. (print-object-): New function. * clos-class2.lisp (): Remove variable. (, ): New variables. ((setf find-class)): Use forward-reference-to-class-p instead of typep. * clos-class3.lisp (ensure-class-using-class-): Test for defined-class or forward-reference-to-class, instead of for potential-class. (reinitialize-instance-): Likewise. (finalize-class): Likewise. Define . Define , instead of . * clos-class6.lisp (class-name@forward-reference-to-class): Rename from class-name@forward-referenced-class. Don't use class-classname. (class-direct-subclasses-table): Make it work also for objects that are not of type . (class-direct-subclasses@forward-reference-to-class): Rename from class-direct-subclasses@forward-referenced-class. (class-direct-superclasses@forward-reference-to-class): Rename from class-direct-superclasses@forward-referenced-class. Don't use class-classname. (class-direct-slots@forward-reference-to-class): Rename from class-direct-slots@forward-referenced-class. Don't use class-classname. (class-direct-default-initargs@forward-reference-to-class): Rename from class-direct-default-initargs@forward-referenced-class. Don't use class-classname. (class-finalized-p@forward-reference-to-class): Rename from class-finalized-p@forward-referenced-class. (add-direct-subclass@super-class@potential-class): Rename from add-direct-subclass@potential-class@potential-class. (remove-direct-subclass@super-class@potential-class): Rename from remove-direct-subclass@potential-class@potential-class. * clos-print.lisp (print-object@forward-reference-to-class): New method. * clos-custom.lisp ((setf -under-)): Call also set--... (set--, set--): Disable package lock. (set--) (set--): New functions. 2004-11-18 Bruno Haible Repair part of the forward-referenced-class misdesign. * lispbibl.d (if_potential_class_p): Rename from if_class_p. * predtype.d (CLOS::%DEFCLOS): Update. (CLOS::POTENTIAL-CLASS-P): Rename from CLOS::CLASS-P. * clos-class1.lisp (potential-class): Rename from class. (*-defclass*): Rename from *-defclass*. (*-...-location*): Rename from *-...-location*. (class-classname, class-direct-subclasses-table): Update. (shared-initialize-): Rename from shared-initialize-. (forward-referenced-class, defined-class): Update. (shared-initialize-): Update. Use potential-class-p instead of class-p. (potential-class type): Rename from class. (print-object-): Rename from print-object-. (print-object): Use potential-class-p instead of class-p. * clos-class2.lisp (): Rename from . * clos-class3.lisp (ensure-class-using-class-): Use defined-class instead of class, potential-class-p instead of class-p. (reinitialize-instance-): Use potential-class-p instead of class-p. (std-compute-superclasses): Update. (finalize-class): Use potential-class-p instead of class-p. (list-all-finalized-subclasses): Update. Define instead of . Update %defclos call. * clos-genfun1.lisp (print-object): Use potential-class-p instead of class-p. * clos-genfun2a.lisp (compute-applicable-methods-using-classes-): Use defined-class-p instead of class-p. (compute-applicable-methods-for-set): Likewise. * clos-slots2.lisp (invalidate-slot-value-info): Use defined-class-p instead of class-p. * clos-class4.lisp (shared-initialize@potential-class): Rename from shared-initialize@class. * clos-class5.lisp (*make-instance-table*) (*reinitialize-instance-table*) (*update-instance-for-redefined-class-table*): Update. (note-ai-change): Use defined-class-p instead of class-p. (update-instance-for-different-class@potential-class@standard-object): Rename from update-instance-for-different-class@class@standard-object. * clos-class6.lisp (class-classname): Update. ((setf class-name)@potential-class): Rename from (setf class-name)@potential-class. (class-direct-subclasses-table): Update. (ensure-class-using-class@potential-class): Rename from ensure-class-using-class@class. (validate-superclass@potential-class@potential-class): Rename from validate-superclass@class@class. (add-direct-subclass@potential-class@potential-class): Rename from add-direct-subclass@class@class. (remove-direct-subclass@potential-class@potential-class): Rename from remove-direct-subclass@class@class. * clos-print.lisp (print-object@potential-class): Rename from print-object@class. * clos-custom.lisp: New file. * documentation.lisp (documentation, (setf documentation)): Use defined-class instead of class. * loadform.lisp (make-load-form@defined-class): Rename from make-load-form@class. * clos.lisp: Load clos-custom. * makemake.in (LPARTS): Add clos-custom. * po/Makefile.devel (LISPSOURCES): Add clos-custom. 2004-11-23 Sam Steingold * lispbibl.d (PC386) [AMD64]: define 2004-11-23 Sam Steingold revert the 2003-10-10 patch and fix the problem differently: since the problem is that COMPILE/LOAD-TIME-VALUE must work even inside COMPILE-FILE, *FASOUTPUT-STREAM* should be bound there * compiler.lisp (compile): bind *FASOUTPUT-STREAM* to NIL (c-EVAL-WHEN): do not bind *FASOUTPUT-STREAM* * reploop.lisp (break-loop): ditto Suggested by Don Cohen in 2004-11-23 Bruno Haible * package.d (rehash_symtab): If the vector length supports 32 bits, use 2^32-1 as maximum size, not 2^24-1. 2004-11-23 Bruno Haible * clhs.lisp (browse-url): On MacOS X, use the system's browser by default. Suggested by Pascal Costanza . 2004-11-23 Bruno Haible * spvw.d (init_object_tab): Add :MACOS to *FEATURES* on MacOS X. 2004-11-17 Bruno Haible Use forward-referenced-class instances instead of symbols in the direct-superclasses list. * clos-class1.lisp (shared-initialize-): Don't accept symbols in the direct-superclasses list any more. * clos-class2.lisp (): New variable. ((setf find-class)): When replacing a forward-referenced class, move the list of subclasses from the old class object to the new one. * clos-class3.lisp (ensure-class-using-class-): Convert symbols in the direct-superclasses list to forward-referenced-class instances. (reinitialize-instance-): Likewise. Handle the change from a forward-referenced-class to a defined-class. (update-subclasses-sets): Treat the forward-referenced-class the same way. (finalize-class): Handle the case where the argument is a forward-referenced-class. Handle the change from a forward-referenced-class to a defined-class. (): Initialize. 2004-11-22 Bruno Haible * stream.d (low_read_unbuffered_handle): Use full_read instead of read. Don't interpret EINTR on Unix as being a consequence of SIGINT. (low_write_unbuffered_handle): Use full_write instead of write. Don't interpret EINTR on Unix as being a consequence of SIGINT. 2004-11-22 Sam Steingold * stream.d (same_handle_p) [WIN32_NATIVE]: use TIME_EQ to compare FILETIME; fix a syntax(!) error in the last patch 2004-11-22 Sam Steingold * m4/regexp.m4 (CL_REGEXP): check for regoff_t and treat rm_so & rm_eo as regoff_t (which may be 64-bit!) 2004-11-21 Bruno Haible Make FRESH-LINE work correctly in batch-mode when stdout and stderr point to the same target. * spvw_memfile.d (loadmem_from_handle): Reset O(standard_{input,output,error}_file_stream) to NIL. * stream.d (same_handle_p): New function. (make_standard_input_file_stream): Rename from make_standard_input. Turn into a function. (make_standard_output_file_stream): Rename from make_standard_output. Turn into a function. (make_standard_error_file_stream): New function. (get_standard_input_file_stream, get_standard_output_file_stream) (get_standard_error_file_stream): New functions. (make_terminal_io): Use get_standard_{input,output}_file_stream instead of make_standard_{input,output}. (terminal_io_input_stream): New function, replaces init_standard_input. (terminal_io_output_stream): New function, replaces init_standard_output. (init_standard_input, init_standard_output): Remove functions. (init_standard_io): Remove macro. (init_streamvars): Update. (fehler_value_stream): Update. 2004-11-16 Bruno Haible Implement forward-referenced-class. * lispbibl.d (Class): Move direct_subclasses field to front. (if_class_p): Rename from if_classp. (if_defined_class_p): New macro. * io.d (structure_reader, pr_structure_default): Use if_defined_class_p instead of if_classp. * sequence.d (valid_type1): Use if_defined_class_p instead of if_classp. * predtype.d (%defclos): Accept one more argument, . (CLOS::CLASS-P): Update. (CLOS::DEFINED-CLASS-P): New function. (CLASS-OF): Use if_defined_class_p instead of if_classp. (CLOS:FIND-CLASS): Likewise. (CLOS::TYPEP-CLASS, COERCE): Likewise. * record.d (CLOS::ALLOCATE-FUNCALLABLE-INSTANCE) (CLOS::ALLOCATE-STD-INSTANCE): Use if_defined_class_p instead of if_classp. * init.lisp: Export forward-referenced-class. * clos-package.lisp: Export forward-referenced-class. * clos-macros.lisp (error-accessor-typecheck): Use defined-class-p instead of class-p. * clos-class0.lisp (*dummy-class*): Update. * clos-class1.lisp (defined-class): New class. (class): Move most slots down to defined-class. (forward-referenced-class): New class. (*-defclass*): New variable. (*-defclass*): New variable. (*-...-location*): Rename from *-...-location*. (class-direct-superclasses, class-all-superclasses) (class-precedence-list, class-direct-slots, class-slots) (class-slot-location-table, class-direct-default-initargs) (class-default-initargs, class-documentation, class-listeners) (class-initialized): Update. (shared-initialize-): New function. (shared-initialize-): Rename from shared-initialize-. (built-in-class, slotted-class): Inherit from defined-class instead of class. (shared-initialize-): Call shared-initialize- instead of shared-initialize-. (defined-class): New atomic type. (print-object-): Use defined-class-p. * clos-class2.lisp (): New variable. ((setf find-class)): Use defined-class-p instead of class-p. * clos-class3.lisp (%defclos): Pass defined-class as well. (ensure-class-using-class-): Use defined-class-p instead of class-p. (ensure-class): Likewise. (reinitialize-instance-): Rename from reinitialize-instance-. Use defined-class-p instead of class-p. (map-dependents-): Rename from map-dependents-. (checked-class-direct-subclasses): Use defined-class-p instead of class-p. (compute-class-precedence-list-): Rename from compute-class-precedence-list-. (compute-class-precedence-list): Update. (checked-compute-class-precedence-list): Use defined-class-p instead of class-p. (compute-effective-slot-definition-initargs-): Rename from compute-effective-slot-definition-initargs-. (compute-effective-slot-definition-initargs): Update. (compute-effective-slot-definition-): Rename from compute-effective-slot-definition-. Use defined-class-p instead of class-p. (compute-effective-slot-definition): Update. (compute-slots--primary): Rename from compute-slots--primary. (compute-slots): Update. (compute-default-initargs-): Rename from compute-default-initargs-. (compute-default-initargs): Update. (install-class-direct-accessors): Use defined-class-p instead of class-p. (shared-initialize-): Call shared-initialize- instead of shared-initialize-. (shared-initialize-): Update. (finalize-class): Use defined-class-p instead of class-p. (, forward-referenced-class): Define classes. * clos-slotdef1.lisp (convert-direct-slots): Use defined-class-p instead of class-p. * type.lisp (clos-class): Use defined-class-p instead of class-p. (typep, subtype-integer, subtype-sequence): Likewise. (type-expand): Likewise. * subtypep.lisp (type-category, canonicalize-type): Use defined-class-p instead of class-p. * defstruct.lisp (find-structure-slot-initfunction, defstruct): Test whether the closclass property is really a defined-class. * clos-class4.lisp (shared-initialize@class): New method. (shared-initialize@defined-class): Rename from shared-initialize@class. (reinitialize-instance@defined-class): Rename from reinitialize-instance@class. * clos-class6.lisp (initialize-instance@defined-class): Rename from initialize-instance@class. (class-name@defined-class): Rename from class-name@class. (class-name@forward-referenced-class): New method. (class-direct-subclasses@defined-class): Rename from class-direct-subclasses@class. (class-direct-subclasses@forward-referenced-class): New method. (class-direct-superclasses@defined-class): Rename from class-direct-superclasses@class. (class-direct-superclasses@forward-referenced-class): New method. (class-all-superclasses): Update. (class-precedence-list@defined-class): Rename from class-precedence-list@class. (class-direct-slots@defined-class): Rename from class-direct-slots@class. (class-direct-slots@forward-referenced-class): New method. (class-slots@defined-class): Rename from class-slots@class. (class-slot-location-table): Update. (class-direct-default-initargs@defined-class): Rename from class-direct-default-initargs@class. (class-direct-default-initargs@forward-referenced-class): New method. (class-default-initargs@defined-class): Rename from class-default-initargs@class. (class-documentation, class-listeners, class-initialized): Update. (compute-direct-slot-definition-initargs@defined-class): Rename from compute-direct-slot-definition-initargs@class. (class-finalized-p@defined-class): Rename from class-finalized-p@class. (class-finalized-p@forward-referenced-class): New method. (finalize-inheritance@defined-class): Rename from finalize-inheritance@class. (compute-class-precedence-list@defined-class): Rename from compute-class-precedence-list@class. (compute-effective-slot-definition-initargs@defined-class): Rename from compute-effective-slot-definition-initargs@class. (compute-effective-slot-definition@defined-class): Rename from compute-effective-slot-definition@class. (compute-slots): Update. (compute-default-initargs@defined-class): Rename from compute-default-initargs@class. (reader-method-class@defined-class): Rename from reader-method-class@class. (writer-method-class@defined-class): Rename from writer-method-class@class. * clos-method1.lisp (initialize-instance-): Reject specializers which are not defined classes. * clos-genfun2a.lisp (compute-applicable-methods-using-classes-): Use defined-class-p instead of class-p. (check-method-only-standard-specializers): Likewise. * clos-genfun2b.lisp (shared-initialize-): Use defined-class-p instead of class-p. * clos-method2.lisp (analyze-method-description): Use defined-class-p instead of class-p. * clos-genfun3.lisp (ensure-generic-function-using-class-): Use defined-class-p instead of class-p. * clos-genfun4.lisp (mop-standardized-p): Use defined-class-p instead of class-p. * clos-dependent.lisp (add-dependent@defined-class): Rename from add-dependent@class. (remove-dependent@defined-class): Rename from remove-dependent@class. (map-dependents@defined-class): Rename from map-dependents@class. * compiler.lisp (c-TYPEP): Use defined-class-p instead of class-p. * describe.lisp (describe-object@symbol): Test whether the closclass property is really a defined-class. (describe-object@generic-function): Use defined-class-p instead of class-p. 2004-11-21 Sam Steingold * places.lisp (get-setf-method): fix the error message: the number of store variables may be 0, e.g., (PROGN (VALUES)) (defsetf): permit missing store variables as specified by ANSI CL: (defsetf access-fn lambda-list (store-variable*) ...) Reported by Kalle Olavi Niemitalo 2004-11-20 Sam Steingold * m4/regexp.m4: new file * modules/regexp/configure.in: use CL_REGEXP 2004-11-19 Sam Steingold * modules/regexp/regexi.c (REGEXP-FREE): invalidate the fpointer 2004-11-13 Bruno Haible * clos-genfun3.lisp (make-generic-function): Add method-class-p, declspecs-p, documentation-p arguments. Put the defaults for :method-class, :declarations, :documentation after the user-defined args, not before. (analyze-defgeneric): Produce additional values method-class-p, declspecs-p, docstring-p. (defgeneric): Put the default key/argument pairs for :method-class, :documentation, :declarations after the default initargs from the generic-function-class, not before. (make-generic-function-form): Update. Reported by Pascal Costanza. 2004-11-13 Bruno Haible * clos-class3.lisp (defclass): Put the default key/argument pairs for :direct-default-initargs, :documentation, :generic-accessors after the default initargs from the metaclass, not before. 2004-11-08 Bruno Haible Don't call initialize-instance for dummy generic-function instances. * clos-genfun2b.lisp (allocate-generic-function-instance) (make-generic-function-prototype): New functions. * clos-genfun3.lisp (analyze-defgeneric): Use make-generic-function-prototype instead of make-generic-function-instance. * clos-genfun5.lisp (allocate-generic-function-instance): New function. Reported by Pascal Costanza . 2004-11-17 John Hinsdale * oracle.lisp: fix default for truncation parameter * orafns.c: handle truncation cases correctly 2004-11-09 Bruno Haible Implement notification from class redefinition to generic functions, part 2. * clos-class3.lisp (update-subclass-cpl-specializer-generic-functions): New function. (reinitialize-instance-): Call it. 2004-11-07 Bruno Haible Implement notification from class redefinition to generic functions, part 1. * lispbibl.d (Class): Add direct_instance_specializers field. * clos-specializer1.lisp (add-direct-method--): New function. (add-direct-method): Use it. * clos-class1.lisp (semi-standard-class): Add direct-instance-specializers slot. (*-direct-instance-specializers-location*): New constant. (class-direct-instance-specializers-table): New accessor. (*-instance-size*): Increment. * clos-class3.lisp (reinitialize-instance-): Call update-subclass-instance-specializer-generic-functions when the CPL changed. (shared-initialize-): Initialize the direct-instance-specializers slot to empty. (update-subclass-instance-specializer-generic-functions): New function. (add-direct-instance-specializer, remove-direct-instance-specializer) (list-direct-instance-specializers): New functions. * clos-genfun1.lisp (-instance-size*): Increment. * clos-class5.lisp (do-change-class): Update the old class' and the new class's direct-instance-specializer set. * clos-specializer3.lisp (add-direct-method): Use add-direct-method--. * clos-class6.lisp (class-direct-instance-specializers-table): New accessor. 2004-11-12 Bruno Haible * clos-genfun3.lisp (defmethod, defgeneric): Simplify the macro- expansion in the frequent case that the funname is a symbol. (Problem introduced on 2004-10-18 and 2004-10-19.) 2004-11-07 Bruno Haible Implement notification from change-class to generic functions. * clos-specializer1.lisp (existing-eql-specializer): New function. * clos-class5.lisp (do-change-class): Notify all generic functions which use an EQL specializer on the given object. 2004-11-12 Sam Steingold * m4/connect.m4 (CL_CONNECT): check whether connect() exists before attempting to determine its prototype - needed for mingw32 * m4/tcpconn.m4 (CL_TCPCONN): check inet_addr() and setsockopt() before prototype checks - for mingw32 2004-11-07 Bruno Haible * clos-class5.lisp (update-instance-for-different-class@generic-function): Update the generic function. 2004-11-07 Bruno Haible * clos-class5.lisp (update-instance-for-different-class@method): Update the generic function to which the method belongs. 2004-11-11 Bruno Haible * m4/ioctl.m4 (CL_IOCTL): Test whether ioctl exists at all before attempting to determine its prototype. Needed for mingw32. * unix.d (ioctl): Declare only if HAVE_IOCTL. 2004-11-11 Sam Steingold * spvw.d (main_actions) [PATHNAME_WIN32]: always try to load ~/.clisprc first, and try ~/_clisprc only when the former does not exist; issue a warning when the latter is found. This code is to be remove after the next release. 2004-11-01 Bruno Haible Change the meaning of :BUFFERED :DEFAULT to mean T on the input side. * lispbibl.d (stream_isbuffered): Change return type to uintB. * stream.d (MAKE-PIPE-INPUT-STREAM): Treat buffered = 0 like buffered > 0. (MAKE-PIPE-OUTPUT-STREAM): Nop. (mkips_from_handles): Treat buffered = 0 like buffered > 0. (MAKE-PIPE-IO-STREAM): On the input side, treat buffered = 0 like buffered > 0. (make_socket_stream): If buffered = 0, combine a buffered input stream with an unbuffered output stream. (stream_isbuffered): Change return value to be the combination of two bits. * io.d (pr_stream): Print "INPUT-BUFFERED" if the stream combines a buffered input stream with an unbuffered output stream. 2004-10-27 Bruno Haible * init.lisp: Export compute-direct-slot-definition-initargs. * clos-package.lisp: Likewise. * clos-slotdef1.lisp (compute-direct-slot-definition-initargs): New preliminary function. (convert-direct-slots): Use compute-direct-slot-definition-initargs. * clos-class6.lisp (compute-direct-slot-definition-initargs): New generic function. * clos-genfun2b.lisp (*dynamically-modifiable-generic-function-names*): Add it. 2004-11-10 Bruno Haible * clos-print.lisp (*print-object-method-warning*): Comment out. (print-object-method-warning): Comment out. (compute-effective-method@(eql #'print-object)): Comment out. Suggested by Jörg Höhle. 2004-10-31 Bruno Haible Avoid poll(), select() and non-blocking I/O on regular files. * stream.d (struct strm_channel_extrafields_t): Add 'regular' field. (ChannelStream_regular): New macro. (low_read_array_unbuffered_handle): For regular file handles, use persev_partial instead of persev_immediate or persev_bonus. (low_write_array_unbuffered_handle): Likewise. (make_unbuffered_stream): Add handle_regular argument. (struct strm_buffered_extrafields_t): Remove 'regular' field. (BufferedStream_regular): Remove macro. (low_fill_buffered_handle): For regular file handles, use persev_partial instead of persev_immediate or persev_bonus. (make_buffered_stream, make_file_stream, finish_output_buffered) (make_keyboard_stream, make_terminal_stream_, SCREEN:MAKE-WINDOW) (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM, mkops_from_handles) (mkips_from_handles, MAKE-PIPE-IO-STREAM, SYS::MAKE-SOCKET-STREAM) (make_socket_stream): Update. 2004-10-24 Bruno Haible Merge method allocation and initialization into a single step again. * clos-class3.lisp (install-class-direct-accessors): Pass the method-class, not the method, to method-function-initargs. Call make-instance instead of allocate-instance and initialize-instance. * clos-method1.lisp (initialize-instance-): Add backpointer argument. (initialize-instance-): Likewise. (allocate-method-instance, initialize-method-instance): Remove functions. (make-method-instance): New function. * clos-methcomb2.lisp (method-function-initargs): Take the method's class as argument, not the method. (add-next-method-local-functions): Rename argument self to backpointer. (effective-method-code-bricks): Emit code to use make-method-instance instead of allocate-method-instance, initialize-method-instance, and pass the method-class, not the method, to method-function-initargs. * clos-method2.lisp (analyze-method-description): Rename self to backpointer. * clos-genfun3.lisp (%call-next-method): Take the backpointer, not the method, as first argument. (do-defmethod, analyze-defgeneric): Use make-method-instance instead of allocate-method-instance, initialize-method-instance. Pass the method-class, not the method, to method-function-initargs. * clos-genfun4.lisp (%no-next-method): Take the backpointer, not the method, as first argument. * clos-method3.lisp (initialize-instance@method) (initialize-instance@standard-method): Add backpointer argument. * clos-method4.lisp (allocate-method-instance) (initialize-method-instance): Remove functions. (make-method-instance): New function. 2004-11-03 Bruno Haible Provide explanations in deprecation warnings. * compiler.lisp (*deprecated-functions-alist*): New variable, replaces *deprecated-functions-list*. (note-function-used, c-report-problems): Update. * deprecated.lisp (deprecate, ffi::foreign-address-null): Provide textual explanation. * describe.lisp (describe-object@symbol): Update. 2004-11-02 Bruno Haible * gray.lisp: Use class-name instead of clos::class-classname. 2004-10-31 Bruno Haible * stream.d (low_fill_buffered_handle): Don't call listen_handle; fd_read cares about the perseverance. Don't set BufferedStream_have_eof_p twice. (buffered_nextbyte): Simplify. 2004-10-24 Bruno Haible * init.lisp: Export compute-effective-method-as-function. * clos-package.lisp: Likewise. * clos-methcomb2.lisp (compute-effective-method-as-function-form): Add an argument and bind *method-combination-arguments* here. * clos-genfun2b.lisp (compute-applicable-methods-effective-method) (compute-applicable-methods-effective-method-for-set): Don't check against empty method list. Don't bind *method-combination-arguments*. Instead, pass the arguments to compute-effective-method-as-function. (compute-effective-method-as-function): Add args argument, pass it to compute-effective-method-as-function-form. Remove method-combination argument. Check against empty method list. 2004-10-31 Bruno Haible * unixaux.d (fd_read, fd_write, sock_write): Save errno around END_NO_BLOCK. * stream.d (listen_handle): Likewise. 2004-10-23 Bruno Haible New generic function compute-effective-slot-definition-initargs. * init.lisp: Export compute-effective-slot-definition-initargs. * clos-package.lisp: Likewise. * clos-slotdef1.lisp (): New variable. (direct-slot-definition-p): New function. * clos-class3.lisp (compute-effective-slot-definition-initargs-): New function. (compute-effective-slot-definition-initargs): New preliminary function. (compute-effective-slot-definition-): Call it. (): Initialize. * clos-genfun2b.lisp (*dynamically-modifiable-generic-function-names*): Add compute-effective-slot-definition-initargs. * clos-class6.lisp (compute-effective-slot-definition-initargs): New generic function. 2004-11-07 Bruno Haible * clos-class6.lisp (class-funcallablep): Fix function name in error message. 2004-11-07 Bruno Haible * lispbibl.d (Fpointer_value): Cast the conditional expression to void. Avoids a warning with g++-3.4.3. 2004-11-07 Bruno Haible * lispbibl.d (p_backtrace_t): Define as a struct only if DEBUG_BACKTRACE. Remove operator bool, because it leads to warnings when comparing a p_backtrace_t with NULL. Tweak operator=. 2004-11-07 Bruno Haible * m4/putenv.m4 (CL_PUTENV): Include stdlib.h before attempting to call putenv. Needed in C++ mode. 2004-11-07 Bruno Haible * m4/putenv.m4 (CL_PUTENV): Require AC_GNU_SOURCE. Needed for the declaration of 'environ' on glibc systems. * configure.in: Invoke AC_GNU_SOURCE. 2004-11-07 Bruno Haible * stream.d (unread_char): Fix GC-safety bug and gcc warning introduced on 2004-07-28. 2004-11-06 Bruno Haible Eliminate warnings during bootstrapping. * init.lisp (fbound-string): For a preliminary macro, return nil, not "function". (eval-loaded-form, cerror): Define as preliminary. * type.lisp (clos::builtin-class-p): Define as preliminary. * defs2.lisp (dispatch-reader): Refer to #'dispatch-reader outside the compiled block, not inside. 2004-11-06 Sam Steingold * makemake.in (clean3): also remove FAS files in modules 2004-10-31 Bruno Haible * stream.d (low_read_array_unbuffered_handle): Don't call low_listen_unbuffered_handle; the perseverance is now completely handled by fd_read. (low_read_array_unbuffered_socket): Don't call low_listen_unbuffered_socket; the perseverance is now completely handled by sock_read. 2004-10-17 Bruno Haible * init.lisp (custom:*suppress-check-redefinition*): Initialize to nil. 2004-10-17 Bruno Haible Notion of preliminary function and macro definitions. * record.d ((setf sys::closure-name)): New function. * init.lisp: Export ext:preliminary. (sys::make-preliminary): New function. (format, cerror): Define as preliminary. (sys::preliminary-p): New function. (sys::fbound-string): Return nil for preliminary functions and for preliminary macros. (sys::remove-old-definitions): Accept an optional argument. Don't call sys::check-redefinition when defining a preliminary entity. (global-in-fenv-p, warn, eval-when-compile): Define as preliminary. (sys::predefmacro, sys::predefun): New macros. * macros1.lisp (loop): Define using predefmacro. * macros2.lisp (check-type, assert, etypecase, ctypecase, ecase) (ccase): Define using predefmacro. * places.lisp (system::closure-name): Add setf definition. * clos-package.lisp: Import sys::predefun. * clos-class0.lisp (print-object): Define using predefun. * clos-slotdef1.lisp (slot-definition-*) (structure-effective-slot-definition-readonly) (direct-slot-definition-class, equal-direct-slot) (effective-slot-definition-class): Define using predefun. * clos-specializer1.lisp (specializer-direct-methods-table) (eql-specializer-singleton, specializer-direct-generic-functions) (add-direct-method, remove-direct-method, specializer-direct-methods): Define using predefun. * clos-class1.lisp (class-*, print-object): Define using predefun. * defstruct.lisp (clos::defstruct-remove-print-object-method): Define using predefun. * compiler.lisp (closure-name): Remove setf definition. (finalize-coutput-file): Define using predefun. * edit.lisp (editor-name, editor-tempfile, edit-file): Define using predefun. 2004-10-31 Bruno Haible * unixaux.d (fd_read, fd_write, sock_read, sock_write): When returning 0, set errno to indicate whether EOF or EOFW is reached. * win32.d (WSAEAGAIN, WSAENOENT): New macros. * win32aux.d (lowlevel_fd_read): When returning 0, set errno to indicate whether EOF is reached. (do_fd_read, fd_read): Transmit the error code also when result==0. (fd_write): When returning 0, set errno to indicate whether EOWF is reached. (lowlevel_sock_read): When returning 0, set errno to indicate whether EOF is reached. (do_sock_read, sock_read): Transmit the error code also when result==0. (lowlevel_sock_write): When returning 0, set errno to indicate whether EOWF is reached. (do_sock_write, sock_write): Transmit the error code also when result==0. * stream.d (low_read_array_unbuffered_handle): When EOF has been seen, store this information in the stream. (low_fill_buffered_handle): Likewise. (low_read_unbuffered_socket, low_listen_unbuffered_socket): Verify that EOF has really been seen. (low_read_array_unbuffered_socket): When EOF has been seen, store this information in the stream. (low_fill_buffered_socket): Likewise. 2004-10-17 Bruno Haible * defstruct.lisp (defstruct): Set the readers and writers slot of the structure-direct-slot-definition instances to empty. 2004-10-17 Bruno Haible * clos-class3.lisp (install-class-direct-accessors): Optimize the accessors also in the case of structure-class. 2004-11-04 Sam Steingold * genclisph.d [WIN32_NATIVE]: #include before the first use of HANDLE 2004-11-04 Sam Steingold * win32aux.d (fd_read, fd_write): fix the definition to conform with the declaration 2004-10-31 Bruno Haible * unixaux.d (fd_read_will_hang_p): New function, extracted from fd_read. (fd_read): Use it. Handle persev_bonus correctly. (fd_write_will_hang_p): New function, extracted from fd_write. (fd_write): Use it. Handle persev_bonus correctly. (sock_read_will_hang_p): New function, extracted from sock_read. (sock_read): Use it. (sock_write_will_hang_p): New function, extracted from sock_write. (sock_write): Use it. Handle persev_bonus correctly. * win32.d (fd_read_wont_hang_p): New declaration. * win32aux.d (fd_read_wont_hang_p): New function, extracted from listen_handle. (lowlevel_fd_read): Use it. Handle persev_immediate, persev_bonus correctly. (fd_write_will_hang_p): New function. (fd_write): Use it. Handle persev_immediate, persev_bonus correctly. (sock_read_will_hang_p): New function, extracted from lowlevel_sock_read. (lowlevel_sock_read): Use it. (sock_write_will_hang_p): New function, extracted from lowlevel_sock_write. (lowlevel_sock_write): Use it. Handle persev_bonus correctly. * stream.d (listen_handle) [WIN32_NATIVE]: Use fd_read_will_hang_p. 2004-10-17 Bruno Haible Remove initff slot from structure-effective-slot-definition. * clos-slotdef1.lisp (structure-effective-slot-definition): Remove slot initff. (structure-effective-slot-definition-initff): Remove accessor. (structure-effective-slot-definition-readonly): Update. (initialize-instance-): Remove initff argument. (make-instance-): Update. (make-load-form-): Use optional argument always. * clos-slotdef2.lisp (structure-effective-slot-definition-initff): Remove accessor. * defstruct.lisp (make-ds-slot): Remove initff argument. (copy-): Update. (defstruct): Change slotlist and slotdefaultslots to contain the initff separately. Always pass a form to make-load-form- (ds-make-pred, ds-arg-default, ds-make-constructor-body) (ds-arg-with-default, ds-make-boa-constructor) (ds-make-keyword-constructor, ds-make-readers, ds-make-writers): Update. 2004-11-03 Sam Steingold * init.lisp (load): do not call COMPILER::C-REPORT-PROBLEMS unless *LOAD-VERBOSE* and *COMPILE-VERBOSE* are true: this fixes a "clisp -q -q -C -i foo" error 2004-11-03 Sam Steingold * clos-slotdef3.lisp (slot-equal-using-class): avoid a compilation warning 2004-11-03 Sam Steingold * foreign1.lisp, lispbibl.d, genclisph.d, spvw.d, utils/modprep.lisp: * modules.d: rename exitfunction to finifunction for consistency 2004-11-03 Sam Steingold * modules/syscalls/calls.c (copy_file_low): use fd_read() and fd_write() instead of read_helper() and write_helper() * modules/bindings/glibc/linux.lisp: ditto 2004-11-03 Sam Steingold * constsym.d (*FINI-HOOKS*): new symbol * spvw.d (init_symbol_values): init it (run_hooks): new function (main, quit): use it 2004-10-31 Bruno Haible * unix.d (fd_read): Rename from read_helper. (fd_write): Rename from write_helper. * win32.d (fd_read): Rename from read_helper. (fd_write): Rename from write_helper. * genclisph.d: Declare fd_read, fd_write instead of read_helper, write_helper. * unixaux.d (fd_read): Rename from read_helper. (fd_write): Rename from write_helper. * win32aux.d (lowlevel_fd_read): Rename from low_read_helper. (fd_read_params): Rename from full_read_params. (do_fd_read): Rename from do_read_helper. (fd_read): Rename from read_helper. (fd_write): Rename from write_helper. * stream.d (low_read_array_unbuffered_handle) (low_write_array_unbuffered_handle, low_fill_buffered_handle) (low_write_array_unbuffered_pipe): Update. 2004-10-31 Bruno Haible * unixaux.d (read_helper, write_helper, sock_read, sock_write): Prefer poll or select over O_NONBLOCK. Don't call fcntl F_GETFL if persev != persev_immediate && persev != persev_bonus. Do nothing if nbyte==0. * win32aux.d (read_helper_low, write_helper): Do nothing if nbyte==0. (lowlevel_sock_read, lowlevel_sock_write): Implement persev_immediate and persev_bonus behaviour. Do nothing if nbyte==0. 2004-10-17 Bruno Haible Remove initff slot from structure-direct-slot-definition. * clos-slotdef1.lisp (structure-direct-slot-definition): Remove initff slot. (structure-direct-slot-definition-initff): Remove accessor. (initialize-instance-): Remove initff argument. (make-instance-): Update. (make-load-form-): Use optional argument always. * defstruct.lisp (defstruct): Change directslotlist and slotdefaultdirectslots to contain the initff separately. Always pass a form to make-load-form-. 2004-11-02 Sam Steingold allow the user to define his own init-once function * utils/modprep.lisp (*init-1-name*): new variable (defmodule-p): initialize it (parse): check for it (print-tables-2): use it with writing init-once function 2004-11-02 Sam Steingold * spvw.d (quit): when running as a script, *STANDARD-OUTPUT*, *ERROR-OUTPUT* and *TERMINAL-IO* must be finished separately 2004-11-02 Sam Steingold Modules now have an exit function. * foreign1.lisp (ffi-module): new slot FINALIZE (*c-finalize*): new symbol macro (finalize-coutput-file): write its contents into exitfunction (C-FINALIZE): new public macro (do-c-finalize): new aux function * lispbibl.d, genclisph.d (module_t): add slot exitfunction * modules.d (MODULE, modules): ditto * spvw.d (quit): call exitfunction() for all modules (dynload_modules): init the exitfunction slot * utils/modprep.lisp (*exit-name*): new variable (defmodule-p): initialize it (parse): check for it (print-tables-2): write a dummy exitfunction 2004-11-02 Sam Steingold New FFI macros C-INIT-ONCE and C-INIT-ALWAYS. * foreign1.lisp (ffi-module): new slots INIT-ONCE and INIT-ALWAYS (*init-once*, *init-always*): new symbol macros (finalize-coutput-file): write their contents into initfunction[12] (C-INIT-ONCE, C-INIT-ALWAYS): new public macros (do-c-init-once, do-c-init-always): new aux functions 2004-10-31 Bruno Haible Portability to BeOS. * m4/select.m4 (CL_SELECT): Fix detection test for BeOS, where fd_set is defined in , not . 2004-10-30 Bruno Haible A third way of reading input. * lispbibl.d (perseverance_t): New type. (read_byte_array, write_byte_array): Take a perseverance argument instead of a no_hang argument. * unix.d (read_helper, write_helper): Take a perseverance argument instead of a no_hang argument. (full_read, full_write): Update. (safe_read, safe_write): Pass persev_partial, not no_hang=true. (sock_read): Add a perseverance argument. (sock_write): Take a perseverance argument instead of a no_hang argument. * win32.d (read_helper, write_helper): Take a perseverance argument instead of a no_hang argument. Change type of nbyte argument. (full_read, full_write): Update. (safe_read, safe_write): Pass persev_partial, not no_hang=true. (sock_read): Add a perseverance argument. (sock_write): Take a perseverance argument instead of a no_hang argument. * unixaux.d (read_helper): Take a perseverance argument instead of a no_hang argument. Bug fixes: Handle EWOULDBLOCK like EAGAIN. Don't forget to call END_NO_BLOCK in case of an error. (write_helper): Take a perseverance argument instead of a no_hang argument. Bug fixes: Handle EWOULDBLOCK like EAGAIN. Don't cast a negative int to a size_t. (sock_read): Add a perseverance argument. (sock_write): Take a perseverance argument instead of a no_hang argument. * win32aux.d (read_helper_low): Take a perseverance argument instead of a no_hang argument. Change type of nbyte argument. When no blocking is required, call GetOverlappedResult with wait=false. Continue the loop when limited_nbyte == MAX_IO. (full_read_params): Replace no_hang with perseverance. Change type of nbyte field. (do_read_helper): Update. (read_helper): Take a perseverance argument instead of a no_hang argument. Change type of nbyte argument. (write_helper): Take a perseverance argument instead of a no_hang argument. Change type of nbyte argument. When no blocking is required, call GetOverlappedResult with wait=false, instead of skipping it. Continue the loop when limited_nbyte == MAX_IO. (lowlevel_sock_read): Add a perseverance argument. Change type of nbyte argument. Continue the loop when limited_nbyte == MAX_IO. (sock_read_params): Add perseverance. Change type of nbyte field. (do_sock_read): Update. (sock_read): Add a perseverance argument. Change type of nbyte argument. (lowlevel_sock_write): Take a perseverance argument instead of a no_hang argument. Change type of nbyte argument. Continue the loop when limited_nbyte == MAX_IO. (sock_write_params): Replace no_hang with perseverance. Change type of nbyte field. (do_sock_write): Update. (sock_write): Take a perseverance argument instead of a no_hang argument. Change type of nbyte argument. * stream.d (rd_by_array_Pseudofun, wr_by_array_Pseudofun): Take a perseverance argument instead of a no_hang argument. (rd_by_array_error): Update. (rd_by_array_dummy): Update. Implement persev_partial too. (wr_by_array_error): Update. (wr_by_array_dummy): Update. (read_byte_array): Update. Pass a 6th argument to GRAY:STREAM-READ-BYTE-SEQUENCE. (write_byte_array): Update. Pass a 6th argument to GRAY:STREAM-WRITE-BYTE-SEQUENCE. (rd_by_array_synonym, wr_by_array_synonym): Update. (wr_by_array_broad): Update. (rd_by_array_concat): Update. (wr_by_array_twoway): Update. (rd_by_array_twoway): Update. (rd_by_array_echo): Update. (struct strm_unbuffered_extrafields_t): Change low_read_array, low_write_array methods to take a perseverance argument instead of a no_hang argument. (low_read_array_unbuffered_handle): Update. (rd_by_aux_iax_unbuffered, rd_by_array_iau8_unbuffered): Update. (rd_ch_array_unbuffered): Update. (low_write_array_unbuffered_handle): Update. (wr_by_aux_ia_unbuffered, wr_by_array_iau8_unbuffered): Update. (wr_ch_unbuffered_unix, wr_ch_array_unbuffered_unix): Update. (wr_ch_unbuffered_mac, wr_ch_array_unbuffered_mac): Update. (wr_ch_unbuffered_dos, wr_ch_array_unbuffered_dos): Update. (oconv_unshift_output_unbuffered_): Update. (struct strm_buffered_extrafields_t): Change low_fill method to take a perseverance argument instead of a no_hang argument. (low_fill_buffered_handle): Update. When a byte has already been read, use persev_immediate also if no_hang=false. (buffered_nextbyte): Take a restricted perseverance argument instead of a no_hang argument. (buffered_writebyte, position_file_buffered): Update. (read_byte_array_buffered, write_byte_array_buffered): Take a perseverance argument instead of a no_hang argument. (rd_ch_buffered, listen_char_buffered, rd_ch_array_buffered): Update. (wr_ch_buffered_unix, wr_ch_array_buffered_unix): Update. (wr_ch_buffered_mac, wr_ch_array_buffered_mac): Update. (wr_ch_buffered_dos, wr_ch_array_buffered_dos): Update. (oconv_unshift_output_buffered_): Update. (position_file_i_buffered, rd_by_aux_iax_buffered) (rd_by_aux_ibx_buffered, rd_by_aux_icx_buffered, rd_by_iau8_buffered) (rd_by_array_iau8_buffered, listen_byte_ia8_buffered): Update. (wr_by_aux_ia_buffered, WRITE_LAST_BYTE, wr_by_aux_ib_buffered) (wr_by_aux_ic_buffered, wr_by_array_iau8_buffered): Update. (logical_position_file_end): Update. (make_file_stream): Update. (low_write_array_unbuffered_pipe): Update. (low_read_unbuffered_socket, low_listen_unbuffered_socket): Update. (low_read_array_unbuffered_socket): Update. (low_write_unbuffered_socket): Update. (low_write_array_unbuffered_socket): Update. Fix the safety check. (SYS::READ-N-BYTES, SYS::WRITE-N-BYTES): Update. (low_fill_buffered_socket): Take a perseverance argument instead of a no_hang argument. (low_flush_buffered_socket): Update. (READ-INTEGER, READ-FLOAT, WRITE-INTEGER, WRITE-FLOAT): Update. * sequence.d (READ-BYTE-SEQUENCE, WRITE-BYTE-SEQUENCE): Add :interactive argument. * genclisph.d (main): Emit perseverance_t. Emit include of sys/types.h. Fix declations of read_helper, write_helper to be consistent with those in unix.d. Update declarations of read_byte_array, write_byte_array. * gray.lisp (stream-read-byte-sequence): Add interactive argument. (stream-write-byte-sequence): Likewise. 2004-10-17 Bruno Haible * defstruct.lisp (defstruct): Simplify directslotlist iteration. 2004-10-17 Bruno Haible * defstruct.lisp (ds-initfunction-fetcher): New function. (defstruct): Use it. 2004-10-17 Bruno Haible Remove redundant data from a defstruct-description. * io.d (structure_reader): Expect a vector of size = 4. * defstruct.lisp (find-structure-slot-initfunction): New function. (defstruct): Use it to recover the initfunctions, not svref on the defstruct-description. Don't put the initfunctions into the defstruct-description. 2004-11-01 Sam Steingold * modules/rawsock/configure.in: check for select() with CL_SELECT; check for poll() with CL_POLL instead of AC_CHECK_FUNCS() 2004-10-31 Bruno Haible Portability to BeOS. * configure.in: Add test for getsockopt. * stream.d (sock_opt_bool): Define also when only SO_DEBUG exists. When getsockopt doesn't exist, push no values. (sock_opt_int, sock_opt_time): When getsockopt doesn't exist, push no values. (SOCKET-OPTIONS): Likewise. Check against stack overflow. 2004-10-31 Bruno Haible Portability to FreeBSD 4.0. * foreign.d (open_library): Handle FreeBSD as well. Improved error messages. (libc_handle) [UNIX_FREEBSD]: New variable. (find_name): On UNIX_FREEBSD, emulate RTLD_DEFAULT. 2004-10-31 Bruno Haible * init.lisp (load): Don't "return-from load" because defun doesn't establish a block when init.lisp is loaded interpreted. 2004-10-31 Bruno Haible * spvw.d (init_symbol_values): Initialize *disassemble-use-live-process* with support for FreeBSD. * disassem.lisp (*disassemble-use-live-process*): Remove variable. 2004-10-30 Bruno Haible * stream.d (SYSCALL): Use the first argument, not the variable that happens to be called 'result'. 2004-10-30 Bruno Haible Prefer poll() over select() when both exist and poll() is not worse. * m4/select.m4 (CL_SELECT): Test whether select() works on regular files. Don't test for poll here conditionally. * m4/poll.m4: New file. * configure.in: Invoke CL_POLL. * unixconf.h.in: Regenerated. * unix.d (poll): Comment out declaration. * stream.d (listen_handle): Use poll() when available and is not worse on files than select(). (rd_ch_keyboard): Use poll() when available. 2004-10-30 Bruno Haible * unixaux.d (select): Fix wrong argument order passed to poll(). 2004-10-30 Bruno Haible * stream.d (listen_handle, rd_ch_keyboard) (low_listen_unbuffered_socket): Rename local variable handle_menge to handle_set. 2004-10-29 Bruno Haible Allow handlers to override outer handlers. * error.d (SIGNAL): Establish a catch frame around invoke_handlers() invocation. 2004-10-17 Bruno Haible * inspect.lisp (inspect-backend@structure-object): Protect against unbound slots. (Can occur in objects created through make-instance.) 2004-10-17 Bruno Haible * clos-class3.lisp (shared-initialize-): Don't use the superclass' slots unmodified, since the initform may be different in the class being defined than in the superclass. * defstruct.lisp (defstruct): Create direct-slot-definitions also for the slot descriptions in the :include option. Create the direct-slot-definitions with the right initff. Reverse the list of direct-slot-definitions finally. 2004-10-31 Sam Steingold * defs1.lisp (list-to-ht): use a heuristic to decide whether HASH-TABLEs are better than LISTs in a particular case (sys::member1): remove (sys::member2): replaced with MEMBER? which does not cons 2004-10-30 Sam Steingold fix bug#1056862: socket:socket-status modifies stream * stream.d (listen_char_unbuffered): when ignore_next_LF is set, discard NL from buf 2004-10-29 Sam Steingold * loop.lisp (expand-loop): since RESULTS can contain forms, search the alist with :TEST #'EQUAL 2004-10-29 Sam Steingold use HASH-TABLEs when possible to speed-up SET functions * defs1.lisp (list-to-ht): new function (union, nunion, intersection, nintersection, set-difference) (nset-difference, subsetp): use it 2004-10-29 Bruno Haible fix bug#1027441: run-time broken when it does not fit in 32bit * aridecl.d (wbitc): New macro. * intelem.d (UQ_to_I): Use it instead of bitc. 2004-10-29 Sam Steingold * defs1.lisp (sys::member1): do not call IDENTITY 2004-10-29 Sam Steingold * loop.lisp (expand-loop): check that the accumulation variables are re-used compatibly, as described in ; give a better message for ambiguous results 2004-10-16 Bruno Haible * defstruct.lisp (ds-arg-default): Handle the case of a slot without initializer. (defstruct): Likewise. Set the initff values of the inherited slots. 2004-10-28 Sam Steingold * spvw_debug.d (nobject_out1): handle instances 2004-10-28 Bruno Haible * Makefile.devel (SBCL_VERSION, SBCL_SOURCE_FILE, SBCL_SOURCE_URL): New variables. (check-sbcl): New target. 2004-10-27 Bruno Haible * reploop.lisp (break-loop): Change Ctrl-D's behaviour when the CONTINUE restart comes from ASSERT with no places. 2004-10-26 Bruno Haible Fix two long-standing bugs whose combination leads to curious effects. * eval.d (interpret_bytecode_): Respect the inhibition flag in the FUNCALL&SKIP&RETGF instruction. * clos-genfun3.lisp (%call-next-method): Ensure the dispatch function is a real one before calling twice. Add safety check. 2004-10-16 Bruno Haible * clos-class3.lisp (define-structure-class): Remove redundant code. * defstruct.lisp (ds-make-constructor-body, ds-make-boa-constructor) (ds-make-keyword-constructor, ds-make-readers, ds-make-writers) (defstruct): For type = T, all slots are "real"; don't call ds-real-slot-p in this case. 2004-10-16 Bruno Haible * defstruct.lisp: Simplify package prefixes. 2004-10-16 Bruno Haible * defstruct.lisp (ds-typep, ds-typep-expansion, ds-canonicalize-type): Drop the case type = T. * compiler.lisp (c-TYPEP): For structure classes, emit a call to %STRUCTURE-TYPE-P. 2004-10-27 Sam Steingold * clisp.spec (modules): add i18n and zlib 2004-10-27 Sam Steingold * control.d (MULTIPLE-VALUE-SETQ): fix G++ compilation 2004-10-27 Bruno Haible * spvw_debug.d (nobject_out1): Use %lx to print addresses. * spvw.d (fehler_code_alignment, init_memory): Likewise. * spvw_fault.d (handle_fault, xmprotect): Likewise. * spvw_garcol.d (gc_mark_stack): Likewise. * spvw_mmap.d (mmap_zeromap, mmap_prepare): Likewise. * spvw_multimap.d (msync_mmap_intervals, fdmap, idmap): Likewise. * spvw_sigsegv.d (sigsegv_handler_failed): Likewise. * avl.d (out): Likewise. 2004-10-27 Sam Steingold * makemake.in: the correct redirection order is ">/dev/null 2>&1" 2004-10-27 Bruno Haible * Makefile.devel (DOCBOOK_XML_DOWNLOAD): New variable. (update-docbook-utils): New target. (all): Depend on it. 2004-10-17 Bruno Haible * format.lisp: Remove obsolete removal of defstruct-description. * compiler.lisp: Likewise. * loop.lisp: Likewise. 2004-10-16 Bruno Haible Stop creating a defstruct-description property for structure classes. * defstruct.lisp (defstruct): When creating a structure class, remove the DEFSTRUCT-DESCRIPTION property. * clos-class3.lisp: Likewise for structure-object itself. 2004-10-16 Bruno Haible * defstruct.lisp (find-structure-class-slot-initfunction): New function. (defstruct): Change the initfunctionform to refer to the class instead of the defstruct-description, if defining a class. 2004-10-25 Sam Steingold * makemake.in (cflags.h): do not touch cflags.h when the changes to Makefile do not modify it. Cost: maybe a few extra "echo"s on each make Benefit: lispinit.mem is not re-dumped when we add something to MODULES 2004-10-25 Sam Steingold * modules/i18n/i18n.lisp (locale-conv): new defstruct * modules/i18n/gettext.c (locale-conv): new function 2004-10-18 Bruno Haible * compiler.lisp (c-WITHOUT-PACKAGE-LOCK): Call macroexpand-1 instead of macroexpand. 2004-10-17 Bruno Haible * defs1.lisp (with-no-package-lock-internal, without-package-lock): Use *system-package-list* if the non-evaluated package list is empty, not when the evaluated package list is empty. For consistency with c-WITHOUT-PACKAGE-LOCK. 2004-10-16 Bruno Haible * defstruct.lisp (defstruct): Use gensym'ed variable to hold the initfunctions of all non-constant inherited slots, not just of those for which a new initform is declared. 2004-10-24 Sam Steingold * modules/i18n/gettext.c (LANGUAGE-INFORMATION): new function 2004-10-23 Sam Steingold new module I18N for user program internationalization * modules/i18n: new directory * subr.d, constsym.d (i18n_gettext, i18n_ngettext, i18n_textdomain) (i18n_set_textdomain, i18n_textdomaindir, i18n_set_textdomaindir): remove * constsym.d (Klc_messages, Klc_ctype, Klc_time, Klc_collate) (Klc_monetary): remove * constobj.d (type_category): remove * genclisph.d (R_minusp, check_pos_integer, pathname_to_OSdir) (OSdir_to_pathname): export include * i18n.d: remove "General internationalization, for Lisp programs too" * international.d: remove "Interface to GNU gettext" 2004-10-22 Sam Steingold * modules/bindings/glibc/linux.lisp (write-helper, read-helper): fix argument lists (they were swapped) 2004-10-22 Sam Steingold * utils/modprep.lisp (new-fundef): fix the package name case check 2004-10-22 Sam Steingold * stream.d (MAKE-STREAM): really duplicate the handle, as per the spec Reported by Pascal J.Bourguignon 2004-10-15 Bruno Haible * defstruct.lisp (defstruct): Take the slots list and instance size from the included class if possible. 2004-10-13 Bruno Haible * clos-genfun2b.lisp (compute-discriminating-function-): Rename from compute-discriminating-function-. * clos-genfun4.lisp (compute-discriminating-function): Generalize method from to . 2004-10-13 Bruno Haible Reorganize some CLOS code. * clos-genfun1.lisp (|#'compute-discriminating-function| etc.) (safe-gf-*): Move to clos-genfun2a.lisp. * clos-methcomb2.lisp (method-applicable-p, sort-applicable-methods): Move to clos-genfun2a.lisp. * clos-genfun2a.lisp, clos-genfun2b.lisp: New files, from clos-genfun2.lisp. * clos-genfun2.lisp: Remove file. * clos.lisp: Load clos-genfun2{a,b}.lisp instead of clos-genfun2.lisp. * makemake.in (LPARTS): Add clos-genfun2{a,b}, remove clos-genfun2. * po/Makefile.devel (LISPSOURCES): Likewise. 2004-10-13 Bruno Haible * clos-genfun2.lisp (compute-applicable-methods-): Rename from compute-applicable-methods-. (compute-applicable-methods-using-classes-): Rename from compute-applicable-methods-using-classes-. * clos-genfun4.lisp (compute-applicable-methods) (compute-applicable-methods-using-classes): Generalize the method from to . 2004-10-12 Bruno Haible * clos-methcomb2.lisp (compute-effective-method-): Rename from compute-effective-method-. * clos-genfun4.lisp (compute-effective-method): Generalize method from to . 2004-10-16 Bruno Haible Mark functions that are part of the .fas file ABI. 2004-10-20 Sam Steingold * _distmakefile (all): also make the clisp driver 2004-10-19 Sam Steingold FILL-STREAM now indents S-expressions too * fill-out.lisp (*fill-indent-sexp*): new user variable (fill-stream): new slot SEXP-INDENT, changed INDENT-VAR :INITARG to :TEXT-INDENT (fill-stream-sexp-indent): new function (fill-stream-flush-buffer): respect SEXP-INDENT (stream-write-char-sequence): enlarge buffer once (stream-start-s-expression): return the new binding for *PRINT-RIGHT-MARGIN* (with-fill-stream): update for the FILL-STREAM slot change * describe.lisp (describe): ditto * reploop.lisp (print-error, break-loop): ditto * condition.lisp (pretty-print-condition): rename INDENT to TEXT-INDENT (warn, maybe-continue): update the call to PRETTY-PRINT-CONDITION * format.lisp (format-s-expression, formatter-main-1): bind *PRINT-RIGHT-MARGIN* to the return value of STREAM-START-S-EXPRESSION 2004-10-15 Bruno Haible * defstruct.lisp: Remove names and directslotlist from the defstruct- description. (ds-typep, ds-typep-expansion, ds-canonicalize-type): Update. (defstruct): Cons up a new names list only when type = T. Take the names list from the class, not from the defstruct-description. * io.d (structure_reader): Update. * clos-class3.lisp (structure-object): Update. 2004-10-12 Bruno Haible Respect user-defined methods on generic-function-lambda-list. * clos-genfun1.lisp (std-gf-undeterminedp): New function. (generic-function-undeterminedp): New preliminary function. (|#'generic-function-undeterminedp|): New variable. (safe-gf-undeterminedp): New function. * clos-genfun2.lisp (std-add-method, std-find-method, finalize-fast-gf) (gf-never-called-p, compute-dispatch) (compute-applicable-methods-effective-method) (compute-applicable-methods-) (compute-applicable-methods-using-classes-) (compute-applicable-methods-effective-method-for-set) (compute-applicable-methods-for-set): Call safe-gf-undeterminedp instead of std-gf-signature. (shared-initialize-): Call safe-gf-undeterminedp to protect safe-gf-signature call. * clos-method2.lisp (analyze-method-description): Likewise. * clos-genfun4.lisp (no-applicable-method, missing-required-method) (no-primary-method): Likewise. (generic-function-undeterminedp): New generic function. * describe.lisp (describe-object@generic-function): Call safe-gf-undeterminedp instead of std-gf-signature. Respect user-defined methods on generic-function-declarations. * clos-genfun1.lisp (generic-function-declarations): New preliminary function. (|#'generic-function-declarations|): New variable. (safe-gf-declspecs): New function. * clos-genfun2.lisp (compute-discriminating-function-): Call safe-gf-declspecs instead of std-gf-declspecs. * clos-genfun4.lisp (generic-function-declarations): Redefine smoothly. Initialize |#'generic-function-declarations|. Respect user-defined methods on generic-function-argument-precedence-order. * clos-genfun1.lisp (generic-function-argorder): New preliminary function. (|#'generic-function-argorder|): New variable. (safe-gf-argorder): New function. * clos-genfun2.lisp (generic-function-argument-precedence-order-to-argorder): New function, extracted from check-gf-lambdalist+argorder. (check-gf-lambdalist+argorder): Use it. (compute-dispatch, compute-applicable-methods) (compute-applicable-methods-using-classes-) (compute-applicable-methods-for-set): Call safe-gf-argorder instead of std-gf-argorder. * clos-genfun4.lisp (generic-function-argorder): New generic function. Initialize |#'generic-function-argorder|. Respect user-defined methods on generic-function-method-combination. * clos-genfun1.lisp (generic-function-method-combination): New preliminary function. (|#'generic-function-method-combination|): New variable. (safe-gf-method-combination): New function. * clos-methcomb2.lisp (call-method-duplicates-error): Call safe-gf-method-combination instead of std-gf-method-combination. * clos-genfun2.lisp (check-method-qualifiers) (invalid-method-qualifiers-error) (shared-initialize-) (compute-applicable-methods-effective-method) (compute-applicable-methods-effective-method-for-set): Call safe-gf-method-combination instead of std-gf-method-combination. * clos-genfun4.lisp (no-next-method): Likewise. (generic-function-method-combination): Redefine smoothly. Initialize |#'generic-function-method-combination|. * describe.lisp (describe-object@generic-function): Call generic-function-method-combination instead of std-gf-method-combination. Respect user-defined methods on generic-function-lambda-list. * clos-genfun1.lisp (generic-function-signature): New preliminary function. (|#'generic-function-signature|): New variable. (safe-gf-signature): New function. * clos-methcomb2.lisp (effective-method-code-bricks) (build-effective-method-function-form): Call safe-gf-signature instead of std-gf-signature. * clos-genfun2.lisp (generic-function-lambda-list-to-signature): New function, extracted from check-gf-lambdalist+argorder. (check-gf-lambdalist+argorder): Use it. (check-signature-congruence) (shared-initialize-, std-find-method) (finalize-fast-gf, gf-never-called-p, compute-dispatch) (compute-applicable-methods-effective-method) (compute-applicable-methods-) (compute-applicable-methods-using-classes-) (compute-applicable-methods-effective-method-for-set) (compute-applicable-methods-for-set): Call safe-gf-signature instead of std-gf-signature. * clos-method2.lisp (analyze-method-description): Likewise. * clos-genfun4.lisp (no-applicable-method, missing-required-method) (no-next-method): Likewise. (generic-function-signature): New generic function. Initialize |#'generic-function-signature|. 2004-10-11 Bruno Haible * clos-genfun4.lisp (generic-function-lambda-list) (generic-function-argument-precedence-order): Signal an error if the lambda-list is not yet initialized. 2004-10-11 Bruno Haible * describe.lisp (describe-object@generic-function, arglist): For generic functions, use the lambda-list stored in it, instead of a list with artificially constructed variable names. 2004-10-11 Bruno Haible Respect user-defined methods on generic-function-method-class. * clos-genfun1.lisp (generic-function-method-class): New preliminary function. (|#'generic-function-method-class|): New variable. (safe-gf-default-method-class): New function. * clos-methcomb2.lisp (effective-method-code-bricks): Call safe-gf-default-method-class instead of std-gf-default-method-class. * clos-genfun3.lisp (do-defmethod): Likewise. * clos-genfun4.lisp (generic-function-method-class): Redefine smoothly. Initialize |#'generic-function-method-class|. Respect user-defined methods on generic-function-methods. * clos-genfun1.lisp (generic-function-methods): New preliminary function. (|#'generic-function-methods|): New variable. (safe-gf-methods): New function. * clos-genfun2.lisp (shared-initialize-) (std-add-method, std-remove-method, std-find-method) (reinitialize-instance-, compute-dispatch) (compute-applicable-methods-) (compute-applicable-methods-using-classes-) (compute-applicable-methods-for-set): Call safe-gf-methods instead of std-gf-methods. * clos-genfun4.lisp (no-applicable-method, missing-required-method) (no-primary-method): Likewise. (generic-function-methods): Redefine smoothly. Initialize |#'generic-function-methods|. * clos-class5.lisp (valid-make-instance-keywords) (valid-reinitialize-instance-keywords) (valid-update-instance-for-redefined-class-keywords) (valid-update-instance-for-different-class-keywords): Call generic-function-methods instead of std-gf-methods. * describe.lisp (describe-object@generic-function): Likewise. 2004-10-19 Sam Steingold * init.lisp (eval-loaded-form-low): do not try to inline it: when condition.lisp is compiled, this function is not necessarily already compiled due to our bootstrapping process, so it will not be inlined there (in eval-loaded-form), therefore the "test" target (self-recompilation) will fail 2004-10-19 Sam Steingold * clos-genfun3.lisp (defmethod): when the function is being TRACEd, UNTRACE it to avoid an error (defgeneric): use UNTRACE1, not UNTRACE 2004-10-14 Bruno Haible Access the structure type's keyword-constructor from the class. * io.d (structure_reader): Lookup the keyword-constructor both in the class and in the defstruct-description. (some_printable_slots): Remove function. (pr_structure_default): Lookup the keyword-constructor in the class. No need to skip slots without initargs. * foreign1.lisp (c-struct-constructor): Lookup the keyword-constructor in the class. * clos-class1.lisp (structure-class): Add slot kconstructor. (*-kconstructor-location*): New constant. (class-kconstructor, (setf class-kconstructor)): New functions. (*-instance-size*): Increment. * clos-class3.lisp (make-instance-) (shared-initialize-): Add kconstructor argument. (define-structure-class): Accept four more arguments. Don't access the defstruct-description. * clos-class4.lisp (shared-initialize@structure-class): Add kconstructor argument. * clos-class6.lisp (class-kconstructor, (setf class-kconstructor)): New functions. * defstruct.lisp (defstruct): Pass four more arguments to define-structure-class. 2004-10-10 Bruno Haible * clos-method1.lisp (initialize-instance-): Ignore fast-function if :function was specified. 2004-10-10 Bruno Haible Support for custom method classes not inheriting from STANDARD-METHOD. * clos-class3.lisp (install-class-direct-accessors): Create method in two steps. Pass fast-function instead of initfunction initarg, using method-function-initargs. * clos-method1.lisp (initialize-instance-): Drop initfunction argument. * clos-methcomb2.lisp (method-function-substitute) (method-function-initargs): New functions. (effective-method-code-bricks): Emit code to create method in two steps, and pass fast-function instead of initfunction initarg, using method-function-initargs. * clos-method2.lisp (analyze-method-description): Return the function lambda as a separate value. Don't produce an initfunction initarg. * clos-genfun3.lisp (defmethod): Pass three arguments to do-defmethod. (do-defmethod): Accept three arguments. Create method in two steps. Pass fast-function instead of initfunction initarg, using method-function-initargs. (declaim-method): Update. (analyze-defgeneric): Emit code to create method in two steps, and pass fast-function instead of initfunction initarg, using method-function-initargs. * clos-genfun4.lisp (no-next-method, add-method, remove-method): Generalize method from to . * clos-method3.lisp (initialize-instance@standard-method): Drop initfunction argument. * clos-slots2.lisp (slot-value-using-class) ((setf slot-value-using-class), slot-boundp-using-class) (slot-makunbound-using-class): Pass fast-function instead of initfunction initarg. * clos-class5.lisp (shared-initialize, reinitialize-instance) (initialize-instance, allocate-instance, make-instance): Pass fast-function instead of initfunction initarg. 2004-10-10 Bruno Haible Split method creation into separate allocation and initialization. * clos-method1.lisp (make-method-instance): Remove function. (allocate-method-instance, initialize-method-instance): New functions. * clos-methcomb2.lisp (effective-method-code-bricks): Emit code to use allocate-method-instance, initialize-method-instance instead of make-method-instance. * clos-genfun3.lisp (do-defmethod, analyze-defgeneric): Use allocate-method-instance, initialize-method-instance instead of make-method-instance. * clos-method4.lisp (make-method-instance): Remove function. (allocate-method-instance, initialize-method-instance): New functions. 2004-10-18 Sam Steingold * io.d (pr_system): permit readable output for # * constobj.d (printstring_unbound_readably): add 2004-10-18 Sam Steingold * clos-genfun3.lisp (defgeneric): when the function is being TRACEd, UNTRACE it to avoid an error 2004-10-18 Sam Steingold * clos-print.lisp (compute-effective-method@(eql #'print-object)): avoid a compiler warning 2004-10-18 Sam Steingold * fill-out.lisp (right-margin, fill-stream-text-indent): new functions (fill-stream, fill-stream-flush-buffer): use them (fill-stream-line-position): rename from LINE-POS 2004-10-16 Bruno Haible * clos-class3.lisp (defclass): Remove a level of quoting for the slot initforms. 2004-10-14 Bruno Haible * describe.lisp (describe-object@t): Handle the weak-list, weak-and-relation, weak-or-relation, weak-mapping, weak-and-mapping, weak-or-mapping, weak-alist types. 2004-10-14 Bruno Haible * clos-class3.lisp (shared-initialize-): Don't make side-effects on empty-ht and on all other structure-class instances. 2004-10-10 Bruno Haible * clos-genfun2.lisp (*dynamically-modifiable-generic-function-names*): Add many MOP generic function names. (need-gf-already-called-warning-p): Test membership with equal, not eq. 2004-10-10 Bruno Haible * clos-method1.lisp (standard-method): Remove initfunction slot. (initialize-instance-): Update. * clos-genfun4.lisp (initialize-extended-method-check): Update. * disassem.lisp (disassemble@standard-method): Update. Now that methods are never copied, move the initfunction invocation to the initializer. * clos-method1.lisp (initialize-instance-): Invoke the initfunction here. * clos-genfun2.lisp (std-add-method): ... not here. (std-remove-method): Use normal identity for comparing methods. 2004-10-15 Sam Steingold LOAD can now restart when it encounters errors * init.lisp (eval-loaded-form-low): new function (eval-loaded-form): dummy definition (load): use EVAL-LOADED-FORM * condition.lisp (eval-loaded-form): redefine with two restarts: SKIP and STOP 2004-10-10 Bruno Haible New generic function (setf method-generic-function). * clos-method1.lisp ((setf method-generic-function)): New preliminary function. * clos-genfun2.lisp (std-add-method, std-remove-method) (reinitialize-instance-): Use it instead of (setf std-method-generic-function). * clos-method3.lisp ((setf method-generic-function)): New generic function. 2004-10-10 Bruno Haible Move the from-defgeneric slot from up to . * clos-method1.lisp (method): Add from-defgeneric slot. (initialize-instance-): New function. (standard-method): Remove from-defgeneric slot. (initialize-instance-): Refer to initialize-instance-. Don't initialize from-defgeneric. * clos-genfun2.lisp (std-remove-method) (reinitialize-instance-): Update. * clos-method3.lisp (initialize-instance@method): New method. 2004-10-10 Bruno Haible Prepare for non-standard methods. * clos-methcomb2.lisp (method-list-to-continuation): Use method-function instead of std-method-function. * disassem.lisp (disassemble@method): New method. Prepare for non-standard methods. * clos-genfun2.lisp (std-remove-method): Protect call to std-method-initfunction with a type check for . Prepare for non-standard methods. * clos-methcomb2.lisp (method-list-to-continuation) (effective-method-code-bricks, build-effective-method-function-form): Protect all calls to std-method-fast-function, std-method-wants-next-method-p with a type check for . * clos-genfun2.lisp (std-add-method): Likewise. 2004-10-10 Bruno Haible Optimize type checks. * clos-class3.lisp (compute-slots--around): Use typep-class instead of typep. * clos-methcomb2.lisp (check-em-duplicates-option) (callable-method-form-p, effective-method-code-bricks) (build-effective-method-function-form): Likewise. * clos-genfun3.lisp (analyze-defgeneric): Likewise. 2004-10-10 Bruno Haible Respect user-defined methods on method-generic-function. * clos-genfun2.lisp (std-add-method): Call method-generic-function instead of std-method-generic-function. * clos-genfun3.lisp (%call-next-method): Likewise. * clos-genfun4.lisp (%no-next-method): Likewise. * clos-method3.lisp (method-generic-function): Redefine without fmakunbound. Respect user-defined methods on method-lambda-list. * clos-genfun2.lisp (check-signature-congruence, std-add-method) (gf-keyword-arguments): Call method-signature instead of std-gf-signature. * clos-genfun3.lisp (defmethod): Likewise. * clos-method3.lisp (method-signature): Redefine without fmakunbound. (function-keywords): Call method-signature instead of std-gf-signature. * clos-class5.lisp (valid-initarg-keywords): Likewise. Respect user-defined methods on method-lambda-list. * clos-genfun2.lisp (std-add-method): Call method-lambda-list instead of std-method-lambda-list. * clos-genfun3.lisp (do-defmethod): Likewise. Respect user-defined methods on method-qualifiers. * clos-genfun1.lisp (|#'method-qualifiers|): New variable. (safe-method-qualifiers): New function. * clos-methcomb2.lisp (partition-method-list): Add gf argument. Call safe-method-qualifiers instead of std-method-qualifiers. (standard-method-combination-expander): Update. (standard-method-combination-check-method-qualifiers) (standard-method-combination-call-next-method-allowed) (short-form-method-combination-expander) (short-form-method-combination-check-method-qualifiers) (short-form-method-combination-call-next-method-allowed): Call method-qualifiers instead of std-method-qualifiers. * clos-genfun2.lisp (invalid-method-qualifiers-error, methods-agree-p) (std-find-method): Call method-qualifiers instead of std-method-qualifiers. * clos-genfun4.lisp (no-primary-method, no-next-method): Call method-qualifiers instead of std-method-qualifiers. * clos-method3.lisp (method-qualifiers): Redefine without fmakunbound. Initialize |#'method-qualifiers|. * describe.lisp (describe-object@generic-function): Call method-qualifiers instead of std-method-qualifiers. Respect user-defined methods on method-specializers. * clos-genfun1.lisp (|#'method-specializers|): New variable. (safe-method-specializers): New function. * clos-methcomb2.lisp (method-applicable-p, sort-applicable-methods): Add gf argument. Call safe-method-specializers instead of std-method-specializers. (long-form-method-combination-collect-duplicates): Call method-specializers instead of std-method-specializers. * clos-genfun2.lisp (methods-agree-p, std-add-method) (std-remove-method, std-find-method): Call method-specializers instead of std-method-specializers. (compute-dispatch): Call safe-method-specializers instead of std-method-specializers. (compute-applicable-methods-): Update. (compute-applicable-methods-using-classes-) (compute-applicable-methods-for-set) (check-method-only-standard-specializers): Call safe-method-specializers instead of std-method-specializers. * clos-genfun4.lisp (dispatching-arg-p, dispatching-arg-type): Call method-specializers instead of std-method-specializers. * clos-method3.lisp (method-specializers): Redefine without fmakunbound. Initialize |#'method-specializers|. * clos-class5.lisp (note-ai-change, note-ii-change, note-ri-change) (note-uirc-change, note-uidc-change, note-si-change) (valid-make-instance-keywords, valid-reinitialize-instance-keywords) (valid-update-instance-for-redefined-class-keywords) (valid-update-instance-for-different-class-keywords): Call method-specializers instead of std-method-specializers. * describe.lisp (describe-object@generic-function): Likewise. 2004-10-10 Bruno Haible * clos-method1.lisp (method-lambda-list-to-signature): New function, extracted from initialize-instance-. (initialize-instance-): Use it. (method-function, method-qualifiers, method-lambda-list) (method-signature, method-specializers, method-generic-function): New preliminary functions. * clos-method3.lisp (method-function, method-qualifiers) (method-lambda-list, method-specializers, method-generic-function): Fmakunbound before defgeneric. (method-signature): New generic function. 2004-10-10 Bruno Haible Respect user-defined methods on finalize-inheritance. * clos-class3.lisp (finalize-inheritance): New preliminary function. (subclassp, update-subclasses-for-redefined-class) (update-subclasses-for-redefined-class-nonrecursive): Use it instead of finalize-class. 2004-10-13 Bruno Haible * lispbibl.d (unwind_back_trace): Remove unneeded #ifdef. * spvw_update.d (update_back_traces): Write if (bt != NULL), not just if (bt). Needed for Solaris C++. * spvw_garcol.d (gc_markphase): Likewise. 2004-10-13 Bruno Haible * makemake.in (XCFLAGS): Don't add -fsingle when using a C++ compiler. 2004-10-10 Bruno Haible Check that user-defined methods on many MOP generic functions behave correctly. * clos-genfun4.lisp (extended-method-check): New function. (*mop-standardized-packages*): New variable. (mop-standardized-p, add-extended-method-check): New functions. (*extended-method-check-method*): New variable. (initialize-extended-method-check): New function. (generic-function-*): Enable extended method check. * clos-method3.lisp (method-*): Likewise. * clos-slotdef3.lisp (slot-definition-*): Likewise. * clos-class6.lisp (class-*, finalize-inheritance): Likewise. * clos-methcomb4.lisp (find-method-combination): Likewise. 2004-10-09 Bruno Haible Allow tracing of compute-applicable-methods et al. * clos-genfun1.lisp (|#'compute-discriminating-function|) (|#'compute-applicable-methods|) (|#'compute-applicable-methods-using-classes|) (|#'compute-effective-method|): New variables. * clos-methcomb2.lisp (compute-effective-method-as-function-form): Use them. * clos-genfun2.lisp (install-dispatch) (compute-applicable-methods-effective-method): Likewise. * clos-genfun4.lisp: Initialize |#'compute-discriminating-function|, |#'compute-applicable-methods|, |#'compute-applicable-methods-using-classes|, |#'compute-effective-method|. 2004-10-09 Bruno Haible Allow the user to override class-direct-subclasses. * clos-class3.lisp (class-direct-subclasses): New preliminary function. (checked-class-direct-subclasses): New function. (list-all-finalized-subclasses): Use it instead of list-direct-subclasses. 2004-10-09 Bruno Haible Improved bootstrapping. * clos-class3.lisp (defclass): Hardwire the CLASS-VALID-INITIALIZATION-KEYWORDS result if the metaclass is STANDARD-CLASS or FUNCALLABLE-STANDARD-CLASS. (ensure-class-using-class-): Test for subclass of , not of . * clos-genfun1.lisp (*-valid-initialization-keywords*): New constant. (funcallable-standard-object, generic-function) (standard-generic-function): Define through defclass instead of ensure-class. 2004-10-09 Bruno Haible * clos-class3.lisp (reinitialize-instance-): After restoring the backup copy, also restore the direct-subclasses pointers and the finalized-direct-subclasses pointers of any possible direct superclass. 2004-10-09 Bruno Haible Warn about invalid print-object methods. * clos-print.lisp (*print-object-method-warning*): New variable. (print-object-method-warning): New function. (compute-effective-method@(eql #'print-object)): New method. 2004-10-09 Bruno Haible * clos-print.lisp (print-object): Return the object as value of all methods, as required by ANSI CL. * condition.lisp (print-object@simple-condition, print-object@restart): Return the object after printing it. 2004-10-09 Bruno Haible * clos-slotdef1.lisp (print-object-): New function, taken from clos-print.lisp. * clos-specializer1.lisp (print-object-): Likewise. * clos-class1.lisp (print-object-): Likewise. * clos-print.lisp (print-object): Use print-object-, print-object-, print-object-. 2004-10-09 Bruno Haible Move code. * init.lisp (print-unreadable-object): Export it here. * macros2.lisp (print-unreadable-object): Moved to here. * defs2.lisp (print-unreadable-object): Remove from here. 2004-10-09 Bruno Haible Forbid change-class for , . * clos-class5.lisp (update-instance-for-different-class): Add error signaling methods for , . 2004-10-11 Sam Steingold * misc.d (MODULE-INFO): return the DLL information for :FFI argument (instead of 0); all info when VERBOSE, names only otherwise * constsym (:FFI) [DYNAMIC_FFI & (WIN32_NATIVE | HAVE_DLOPEN)]: add Suggested by Jörg Höhle 2004-10-10 Bruno Haible * control.d (parse_doc_decl): Fix GC-safety bug introduced on 2004-05-27. * hashtabl.d (warn_forced_gc_rehash): Fix GC-safety bug introduced on 2004-05-15. (warn_key_forces_gc_rehash): Fix GC-safety bug introduced on 2004-05-12. 2004-10-10 Bruno Haible * .gdbinit: Don't always execute the "base" command. It made it impossible to attach to an already running lisp.run process. 2004-10-10 Bruno Haible Fix GC crash after a GC was triggered while a break loop was active. * lispbibl.d (bt_beyond_stack_p, with_saved_back_trace): Correctly parenthesize argument expressions. * debug.d (driver, break_driver): Initialize bt_next to back_trace, not NULL. Otherwise the bt_caller fields are not updated during GCs, and after the function is left the next GC crashes. Fixes bug introduced on 2002-11-15. 2004-10-09 Bruno Haible * clos-class3.lisp (reinitialize-instance-): Don't force a class to be unfinalized if finalization already succeeded. 2004-10-09 Bruno Haible * clos-slots2.lisp (slot-unbound): Restore the error message that was thrown away on 2003-05-01. 2004-10-08 Jörg Höhle Usable control of sharing of FFI pointer validity (aka extent) * foreign.d (set_foreign_pointer): fix GC-safety bug; allow both entities to be foreign objects other than just foreign-pointer; return initial (modified) entity, which is incompatible with SETF requirements, but very handy. * foreign1.lisp (SETF FOREIGN-POINTER): remove (SET-FOREIGN-POINTER): export 2004-10-07 Bruno Haible * clos-class1.lisp (shared-initialize-): A clos::direct-slots argument overrides the :direct-slots argument. 2004-10-07 Bruno Haible * debug.d (read_form): Don't use ls_avail_p to test whether the input stream is interactive, since the clear_input call has been remove on 2003-01-21. 2004-10-07 Bruno Haible Fix crash after check_array() is used, introduced on 2004-05-12. * array.d (test_subscripts): Fix invocations of fehler_subscript_type, fehler_subscript_range. (fehler_index_type, fehler_index_range, test_index): Pass the array as argument, not on the STACK. (subscripts_to_index): Fix invalid STACK accesses. (SYS::STORE): Store the checked array in the STACK, for storagevector_store. (SVREF, SYS::SVSTORE, SYS::%SVSTORE, ROW-MAJOR-AREF) (SYS::ROW-MAJOR-STORE): Update. (ARRAY-IN-BOUNDS-P): Update. Fix invocation of fehler_subscript_type. (ARRAY-ROW-MAJOR-INDEX): Fix invalid STACK accesses. (fehler_bit_array): Pass the array as argument, not on the STACK. (BIT, SBIT, SYS::SET-FILL-POINTER): Update. * lispbibl.d (fehler_index_range): Pass the array as argument, not on the STACK. * stream.d (FILE-POSITION): Update. * sequence.d (fehler_vector_index_range, seq_check_index): Update. 2004-10-06 Bruno Haible * time.d (SYS::DELTA4): Fix error message's argument. Signal an error if the shift is >= 32. Fix 64-bit computations. * defs1.lisp (%time): Use more verbose variable names. 2004-10-06 Bruno Haible * control.d (MULTIPLE-VALUE-SETQ): Rewritten, to fix three bugs introduced since 2003-05-20: GC-safety bug when assigning Car(STACK_0), side effect on variable list given in the original form, GC-safety bug on return value. 2004-10-06 Sam Steingold * modules/rawsock/sock.lisp (open-unix-socket-stream): add &ALLOW-OTHER-KEYS to the lambda list; REMOVE-PLIST is non-destructive Reported by Jörg Höhle 2004-10-06 Jörg Höhle * foreign1.lisp (parse-c-type compiler-macro): leave (parse-c-type `(c-array ,foo ,len)) unchanged 2004-10-05 Sam Steingold The user commands can now be extended using CUSTOM:*USER-COMMANDS* * reploop.lisp (*user-commands*): new user variable (wrap-user-commands): new function (commands0, commands): activate user commands 2004-10-05 Sam Steingold * constobj.d (type_foreign_variable, type_foreign_function): new constants * foreign.d (FOREIGN-VARIABLE, FOREIGN-FUNCTION): use them instead of the illegal form pushSTACK(listof(3)) (FOREIGN-FUNCTION): made argument type check restartable 2004-10-05 Jörg Höhle * foreign.d (FOREIGN-VARIABLE, FOREIGN-FUNCTION): new constructor functions. * subr.d, subrkw.d: add them 2004-10-05 Sam Steingold * lispbibl.d (unused): do not redefine (win32.d already defines it) 2004-10-05 Sam Steingold * pathname.d (LAUNCH): exit_code is unsigned, so use fixnum() instead of sfixnum() and avoid a GCC warning 2004-10-05 Sam Steingold * init.lisp: export ABSOLUTE-PATHNAME 2004-10-05 Sam Steingold * pathname.d (ABSOLUTE-PATHNAME, physical_namestring): do not call check_no_wildcards() (use_default_dir) [PATHNAME_WIN32]: check that the :DEVICE is not :WILD 2004-10-05 Sam Steingold * encoding.d (CONVERT-STRING-FROM-BYTES, CONVERT-STRING-TO-BYTES): check_encoding() can trigger GC Reported by Jörg Höhle 2004-10-05 Jörg Höhle * foreign.d (fehler_foreign_variable, fehler_foreign_function): raise error of type type-error 2004-10-04 Sam Steingold * modules/rawsock/sock.lisp (open-unix-socket): use ABSOLUTE-PATHNAME (open-unix-socket-stream): new function, returns a STREAM 2004-10-04 Sam Steingold * modules/syscalls/calls.c (POSIX::CONFSTR): use my_malloc() instead of malloc() because of error handling 2004-10-03 Bruno Haible * pathname.d (ABSOLUTE-PATHNAME): New function. (physical_namestring): Call check_no_wildcards. * edit.lisp (edit-file): Use absolute-pathname instead of translate-pathname. * cfgwin32.lisp (edit-file): Likewise. * runprog.lisp (xstring): Likewise. 2004-10-03 Bruno Haible * modules/syscalls/calls.c (POSIX::MKNOD): Don't use two popSTACK()s in the same expression, as it has undefined behaviour. 2004-10-03 Bruno Haible * modules/syscalls/calls.c (POSIX::SET-LIMITS): Give a meaningful error message. 2004-10-03 Bruno Haible * modules/syscalls/calls.c (POSIX::CONFSTR): Don't use alloca. 2004-10-03 Bruno Haible * modules/syscalls/calls.c: Include sys/resource.h early enough, so that getrlimit_arg can use it. Also include sys/types.h before sys/stat.h, not after it. 2004-10-03 Bruno Haible * syscalls/calls.c: Don't set Solaris specific flags just temporarily for a few includes. We don't control their effect. * syscalls/Makefile.in (CPPFLAGS): Add Solaris specific flags here. 2004-10-03 Bruno Haible * utils/modprep.lisp: Don't print modprep's timings. (modprep): Print a filename using ~A, not ~S. 2004-10-03 Bruno Haible * utils/modprep.lisp (print-tables-1): Don't export the ..._table_size variables. 2004-10-03 Bruno Haible * utils/modprep.lisp (print-tables-1): Declare 'index' as 'unsigned int', not 'int'. Avoids gcc warnings. * modules/syscalls/calls.c (POSIX::LIMITS): Declare pos as 'unsigned int', not 'int'. 2004-09-30 Bruno Haible * type.lisp (subtype-integer): Signal an error if the argument is a circular or dotted list. 2004-09-30 Bruno Haible * sequence.d (valid_type1): Call SYS::SUBTYPE-SEQUENCE as a last chance to determine the sequence type. * type.lisp (subtype-sequence, type-of-sequence, sequence-type-union) (sequence-type-intersection): New functions. 2004-09-30 Bruno Haible * sequence.d (valid_type1, get_seq_type): Use sequence type 1 instead of BIT-VECTOR. (delete_help): Simplify accordingly. * defseq.lisp (BIT-VECTOR): Remove. Replaced by sequence type 1. 2004-09-29 Bruno Haible * defmacro.lisp (macro-nonnull-element-error): New function. (empty-pattern): Use it in the macroexpansion. 2004-09-29 Bruno Haible * fill-out.lisp (stream-start-s-expression, stream-end-s-expression): No need for EVAL-WHEN (COMPILE). * format.lisp (formatter-main-1): Don't call STREAM-START-S-EXPRESSION and STREAM-END-S-EXPRESSION twice when the ~S code dispatches to DO-FORMAT-S-EXPRESSION. 2004-09-20 Bruno Haible * documentation.lisp (documentation, (setf documentation)): Define with reversed argument-precedence-order. 2004-09-28 Sam Steingold * format.lisp (formatter-main-1): call STREAM-START-S-EXPRESSION and STREAM-END-S-EXPRESSION for ~S 2004-09-28 Sam Steingold package locking should not interfere with SETQ return value * control.d (SETQ): restore value1 after setq() * eval.d (setq): return value * lispbibl.d (setq): update the declaration Reported by Jörg Höhle 2004-09-28 Bruno Haible * utils/clispload.lsp (*expected-failures*): Remove DIRECTORY.[67], which are fix. Remove NAMESTRING.[34], which is commented out. 2004-09-28 Sam Steingold * fill-out.lisp (fill-stream-flush-buffer): even when BUFFER is empty, NEWLINE-P still has to be respected 2004-09-28 Sam Steingold * loop.lisp (loop): as per 6.1.1.1.1 and 6.1.1.1.2, LOOP is extended when it contains ATOMs, not just loop keywords Reported by Kalle Olavi Niemitalo * compiler.lisp (simplify): use TAGBODY instead of simple LOOP * subtypep.lisp (intervals-union): ditto 2004-09-28 Bruno Haible Make (MAKE-SEQUENCE (FIND-CLASS 'LIST) n) work. * sequence.d (valid_type1): Recognize also built-in class objects. * clos-class3.lisp: Pass to %defclos as well. 2004-09-28 Jörg Höhle * modules/bindings/glibc/linux.lisp: (seed48): provide exact definition now that prototyes are not written to the C output file anymore (see *output-c-functions*). The limitation in ffi::to-c-typedecl still exists: it produces uint16 (* (seed48) (uint16 (* arg2163)[3]))[3] as prototype... (execl,execlp): use DEFUN-based interface, call execv/p. 2004-09-19 Bruno Haible Support for user-defined DEFGENERIC options. * clos-genfun3.lisp (make-generic-function): Add caller, whole-form, user-defined-args arguments. Perform checking of generic-function options. (analyze-defgeneric): Accept generic-function options that depend on the generic-function class. Remove the generic-function option checking from here. Return an additional value user-defined-args. (defgeneric): Perform checking of generic-function options at execution time. (make-generic-function-form): Update. * clos-genfun4.lisp (initialize-instance@generic-function): Remove &allow-other-keys. 2004-09-19 Bruno Haible Support for user-defined DEFCLASS slot options. * clos-slotdef1.lisp (initialize-instance-): Call %initialize-instance, to initialize user-defined slots. (initialize-instance-): Accept defclass-form argument. (convert-direct-slots): Do slot option checking here. * clos-slotdef2.lisp (initialize-instance@direct-slot-definition): Accept defclass-form argument. * clos-slotdef3.lisp (slot-equal-using-class): Don't constrain the direct-slot-definition subclass. * clos-class3.lisp (defclass): Accept slot options that depend on the direct-slot-definition class. Remove the slot option checking from here. 2004-09-27 Jörg Höhle * foreign.d (%deref): may be useful with (c-pointer ) (foreign_allocate): bind *print-circle* iff fvd shown. 2004-09-26 Sam Steingold * modules/bindings/win32/win32.lisp, modules/bindings/glibc/linux.lisp: * modules/postgresql/postgresql.lisp, modules/netica/netica.lisp: reverted the broken 2004-09-09 patch 2004-09-26 Sam Steingold FILL-STREAM no longer flattens all space inside S-expressions * fill-out.lisp (fill-stream): new slot INSIDE-SEXP (fill-stream-flush-buffer, stream-write-char): when INSIDE-SEXP, do not indent (stream-start-s-expression, stream-end-s-expression): new generic functions with methods for FILL-STREAM * format.lisp (format-s-expression): call them 2004-09-23 Sam Steingold * pathname.d (DEFAULT_VERSION): since all pathnames returned by DIRECTORY must be truenames, DEFAULT_VERSION must be :NEWEST 2004-09-23 Sam Steingold * describe.lisp (describe-object): fix bignum/fixnum classification Reported by Jörg Höhle 2004-09-23 Bruno Haible * sequence.d (REVERSE): Fix wrong index check when the argument is a displaced vector. Fixes bug introduced on 1999-11-08. 2004-09-18 Bruno Haible * pathname.d (signal_type_error): New function. (LOGICAL-PATHNAME): Signal an error of type TYPE-ERROR if the parsing leads to a PARSE-ERROR. * condition.lisp (valid-logical-pathname-string-p): New function. 2004-09-20 Bruno Haible Treat the DEFCLASS :fixed-slot-locations option like user-defined options. * clos-class1.lisp (semi-standard-class): Provide an initarg and a default-initarg for the fixed-slot-locations slot. (*-valid-initialization-keywords*) (*-default-initargs*): New constants. * clos-class3.lisp (defclass): Don't special-case :fixed-slot-locations option. Use *-valid-initialization-keywords*, *-default-initargs*. 2004-09-20 Bruno Haible Change syntax of DEFCLASS :fixed-slot-locations option. * clos-slotdef1.lisp (slot-definition, direct-slot-definition) (effective-slot-definition, standard-slot-definition) (standard-direct-slot-definition, standard-effective-slot-definition) (structure-direct-slot-definition, structure-effective-slot-definition): Provide a boolean argument to the :fixed-slot-locations option. * clos-stablehash1.lisp (standard-stablehash): Likewise. * clos-specializer1.lisp (specializer, eql-specializer): Likewise. * clos-class1.lisp (class, built-in-class, slotted-class) (structure-class, semi-standard-class, standard-class): Likewise. * clos-class3.lisp (reinitialize-instance-) (shared-initialize-): Convert the option, a list, to a boolean. * clos-method1.lisp (standard-method, standard-accessor-method) (standard-reader-method, standard-writer-method): Provide a boolean argument to the :fixed-slot-locations option. * clos-methcomb1.lisp (method-combination): Likewise. * clos-genfun1.lisp (funcallable-standard-class) (funcallable-standard-object, generic-function) (standard-generic-function): Likewise. 2004-09-22 Sam Steingold * fill-out.lisp (stream-write-char-sequence): use COUNT-IF to support all sequences, not just lists and vectors, avoid consing and quadraticity; return the sequence as prescribed by the ANSI 2004-09-18 Bruno Haible Support for user-defined DEFCLASS options. * clos-class5.lisp (class-valid-initialization-keywords): New function. * clos-class3.lisp (defclass): Accept class options that depend on the metaclass. Move the verification of the class option checking from macroexpansion time to execution time. 2004-09-18 Bruno Haible * clos-genfun4.lisp (shared-initialize@generic-function) (shared-initialize@standard-generic-function): Remove &allow-other-keys. * clos-specializer2.lisp (shared-initialize@eql-specializer): Likewise. * clos-class4.lisp (shared-initialize@class) (shared-initialize@built-in-class, shared-initialize@structure-class) (shared-initialize@standard-class) (shared-initialize@funcallable-standard-class): Likewise. 2004-09-18 Bruno Haible * pathname.d (parse_as_logical): Fix incorrect comments. (LOGICAL-PATHNAME): Signal an error if the argument refers to a stream opened with a physical pathname. 2004-09-18 Bruno Haible Avoid floating-point overflow in comparison of floats with rational numbers. * sfloat.d (I_to_SF, RA_to_SF): Add signal_overflow argument. * ffloat.d (I_to_FF, RA_to_FF): Add signal_overflow argument. * dfloat.d (I_to_DF, RA_to_DF): Add signal_overflow argument. * lfloat.d (I_to_LF, RA_to_LF): Add signal_overflow argument. * realelem.d (I_F_float_F): Update. (RA_F_float_F): Add signal_overflow argument. (R_F_float_F, R_to_SF, R_to_FF, R_to_DF, R_to_LF) (RA_F_exact_contagion_R, I_float_F, RA_float_F, RA_R_float_F) (GEN_R_op21): Update. (R_R_comp): Avoid floating-point overflow when comparing float with rational number. * realtran.d (pi_F_float_F, ln2_F_float_F, R_R_log_R): Update. * compelem.d (N_durch_N, R_R_hypot_R): Update. * comptran.d (N_N_log_N, R_R_atanh_R_R): Update. * lisparit.d (read_float, to_double, log_digits): Update. 2004-09-21 Jörg Höhle * foreign.d, foreign1.lisp, ffi.tst: Implement c-type '(c-pointer ) which does not convert data structures to/from Lisp and manipulates FOREIGN-VARIABLE objects instead. * modules/bindings/glibc/linux.lisp (errno): Use it. 2004-09-18 Bruno Haible * lispbibl.d (Class): Rename field valid_initargs to valid_initargs_from_slots. * clos-class1.lisp (class): Rename slot valid-initargs to valid-initargs-from-slots. (*-valid-initargs-from-slots-location*): Rename from *-valid-initargs-location*. (class-valid-initargs-from-slots): Rename from class-valid-initargs. * clos-class3.lisp (shared-initialize-) (finalize-instance-semi-standard-class): Update. * clos-class5.lisp (valid-initarg-keywords): Update. * clos-class6.lisp (class-valid-initargs-from-slots): Rename from class-valid-initargs. 2004-09-18 Bruno Haible * format.lisp (format-character): Don't string-capitalize the character name. 2004-09-18 Bruno Haible * io.d (SYS::WRITE-UNREADABLE): Emit leading or trailing space if *PRINT-UNREADABLE-ANSI* is true. * misc.d (SYS::SET-ANSI): Set *PRINT-UNREADABLE-ANSI* too. * spvw.d (init_symbol_values): Initialize *PRINT-UNREADABLE-ANSI*. * places.lisp (*ansi*): Mention *PRINT-UNREADABLE-ANSI*. 2004-09-18 Bruno Haible * io.d (pr_array): If *PRINT-READABLY* is true, ignore *PRINT-EMPTY-ARRAYS-ANSI*. 2004-09-18 Bruno Haible * pathname.d (LOGICAL-PATHNAME): Signal an error if the argument is a string without host specification. 2004-09-18 Bruno Haible * aridecl.d (SF_exp_mid, SF_exp_high): Use the IEEE single-float values. Fixes problem introduced on 1999-08-07. 2004-09-17 Bruno Haible * clos-genfun4.lisp (shared-initialize@generic-function): New method. (shared-initialize@standard-generic-function): Accept :declare too. 2004-09-17 Bruno Haible * clos-class3.lisp (define-structure-class): No need to fmakunbound. 2004-09-17 Bruno Haible Treat (FUNCTION NIL) correctly. * cmacros.lisp (function-form-funform): Remove function. (function-form-p): New function. (simple-function-form-p): Update. * compiler.lisp (inline-callable-function-lambda-p) (inline-callable-function-p): Update. * loop.lisp (expand-loop): Update. Optimize #'(setf foo) the same way as #'foo. 2004-09-20 Sam Steingold * pathname.d (PARSE-NAMESTRING): fix second return value for displaced arguments 2004-09-20 Sam Steingold * describe.lisp (describe-object): print pathname components as is, not as pathnames with only this component, because :VERSION is never printed for non-logical pathnames and :NEWEST is thus printed as an empty string, which is confusing 2004-09-18 Bruno Haible * utils/clispload.lsp (*expected-failures*): Revisit many failures. 2004-09-17 Bruno Haible * clx/mit-clx/dependent.lisp (get-host-name): Implement correctly for clisp. * clx/mit-clx/dependent.lisp (conditional-store): Rewrite to avoid multiple evaluation of subforms. * clx/mit-clx/depdefs.lisp: Ensure that :CLX-LITTLE-ENDIAN is declared in *features* on little-endian platforms. 2004-09-18 Bruno Haible * clos-class3.lisp (compute-slots--around) (create-shared-slots-vector): Fix bug in 2004-09-12 patch. 2004-09-17 Bruno Haible * condition.lisp (print-object@condition): Fix typo in 2004-09-14 patch. 2004-09-17 Bruno Haible * condition.lisp (define-condition, handler-case, restart-bind): Pass both :FORM and :DETAIL when signaling a source-program-error. 2004-09-17 Bruno Haible * constsym.d (CUSTOM:*DEFUN-ACCEPT-SPECIALIZED-LAMBDA-LIST*) (SYS::SPECIALIZED-LAMBDA-LIST-TO-ORDINARY): Align C names. * spvw.d (init_symbol_values): Update. * eval.d (get_closure): Update. * misc.d (SYS::SET-ANSI): Update. 2004-09-17 Bruno Haible * init.lisp (remove-old-definitions, open-for-load) (specialized-lambda-list-to-ordinary, defun): Fix indentation. Use 'when' instead of 'if' without else-branch. 2004-09-16 Bruno Haible * init.lisp: Export metaobject, specializer, eql-specializer, compute-effective-method. * clos-package.lisp: Likewise. 2004-09-16 Bruno Haible * utils/clispload.lsp (*expected-failures*): Many new failures to be revisited. 2004-09-16 Bruno Haible * clos-slotdef1.lisp (structure-effective-slot-definition): Provide different initforms for efm-svuc etc. (initialize-instance-): Initialize the slots efm-svuc etc. * clos-class3.lisp (compute-slot-location-table-entry): Make it work for STRUCTURE-CLASS classes. 2004-09-15 Sam Steingold * modules/bindings/win32/win32.lisp (SE_ERROR, SHOW_COMMAND): new enums (ShellExecuteA): new function 2004-09-15 Bruno Haible Fix "make distclean". * makemake.in (OBSOLETE): Add Makefile~, clisp-test.c. (clean4): Also remove cflags.h, localcharset.h. (clean5): Also remove spvw_calendar.c, w32shell.c, exporting.lisp, modprep.lisp. (clean7): Also remove version.h. 2004-09-15 Sam Steingold * genclisph.d (main): define NULL differently for C & C++ depending on include environment, not file generation environment Reported by Goffioul Michael 2004-08-01 Bruno Haible * record.d (check_initialization_argument_list): Internationalize error message. 2004-09-15 Bruno Haible * constobj.d (version): Bump because of changes to CLOS macro expansions. 2004-09-12 Bruno Haible Implement SLOT-VALUE-USING-CLASS and friends. * lispbibl.d (SlotDefinition): Add fields slotdef_efm_svuc, slotdef_efm_ssvuc, slotdef_efm_sbuc, slotdef_efm_smuc. * record.d (slot_using_class_up): New function. (CLOS::%SLOT-VALUE-USING-CLASS, CLOS::%SET-SLOT-VALUE-USING-CLASS) (CLOS::%SLOT-BOUNDP-USING-CLASS, CLOS::%SLOT-MAKUNBOUND-USING-CLASS): New functions. (slot_up): Remove function. (CLOS:SLOT-VALUE): Inline slot_up. Handle the general case slotinfo: call CLOS:SLOT-VALUE-USING-CLASS effective method if necessary. ((SETF CLOS:SLOT-VALUE)): Handle the general case slotinfo: call (SETF CLOS:SLOT-VALUE-USING-CLASS) effective method if necessary. (CLOS:SLOT-BOUNDP): Inline slot_up. Handle the general case slotinfo. (CLOS:SLOT-MAKUNBOUND): Likewise. (CLOS::%SHARED-INITIALIZE): Handle the general case slotinfo. (CLOS::%REINITIALIZE-INSTANCE, do_initialize_instance): Likewise. * init.lisp: Export slot-value-using-class, slot-boundp-using-class, slot-makunbound-using-class. * clos-package.lisp: Likewise. * clos-slotdef1.lisp (effective-slot-definition): Add slots efm-svuc, efm-ssvuc, efm-sbuc, efm-smuc. (*-efm-...-location*): New constants. (slot-definition-efm-svuc, slot-definition-efm-ssvuc) (slot-definition-efm-sbuc, slot-definition-efm-smuc): New accessors. (make-instance-) (structure-effective-slot-definition-initff) (structure-effective-slot-definition-readonly) (make-instance-): Update. * clos-slotdef3.lisp (slot-definition-efm-svuc) (slot-definition-efm-ssvuc, slot-definition-efm-sbuc) (slot-definition-efm-smuc): New accessors. * clos-class3.lisp (compute-slots--around): Properly extract the location from the slot-location-table entry. (create-shared-slots-vector): Likewise. (compute-slot-location-table-entry): New function. (compute-slot-location-table): Use it. (list-all-finalized-subclasses): Make it work also for class . * clos-genfun2.lisp (|#'slot-value-using-class|) (|#'(setf slot-value-using-class)|, |#'slot-boundp-using-class|) (|#'slot-makunbound-using-class|): New variables. (std-add-method, std-remove-method): Notify when one of these generic functions changes. * clos-slots2.lisp (invalidate-slot-value-info, note-svuc-change) (note-ssvuc-change, note-sbuc-change, note-smuc-change): New functions. (slot-value-using-class, (setf slot-value-using-class), slot-boundp-using-class, slot-makunbound-using-class): New generic functions. 2004-09-12 Bruno Haible * clos-genfun2.lisp (compute-applicable-methods-for-set) (compute-applicable-methods-effective-method-for-set): New functions. 2004-09-14 Sam Steingold * foreign.d (object_handle): check that the new name is a string 2004-09-14 Sam Steingold support libsigsegv-2.1 on cygwin, which includes from * lispbibl.d [UNIX_CYGWIN32]: undefine WIN32 and INVALID_HANDLE_VALUE after including define unused after including because it is used by woe32 * pathname.d [UNIX_CYGWIN32]: do not redefine *_PRIORITY_CLASS * spvw_sigsegv.d (stackoverflow_handler) [UNIX_CYGWIN32]: use Ebx 2004-09-14 Bruno Haible * compiler.lisp (c-report-problems): When reporting unknown functions, compare function names with EQUAL, not EQL. 2004-09-14 Bruno Haible * condition.lisp (print-condition): Change from generic function to plain function. Call print-object. (print-object@condition): Don't call print-condition. Instead inline its earlier definition. (define-condition): Change the macroexpansion to define a method on print-object, not on print-condition. (print-condition@simple-condition): Remove. (print-object@simple-condition): New method. 2004-08-01 Bruno Haible Make it possible to call class-precedence-list during compute-slots and compute-default-initargs. * record.d (do_allocate_instance, update_instance) (CLOS::%MAKE-INSTANCE): Test for finalized class by using the 'initialized' field, not the 'precedence_list' field. * clos-class1.lisp (class): Change type of initialized slot to integer. (%class-precedence-list): Remove function. (shared-initialize-): Set the initialized flag to 0 or 2, instead of nil and t. * clos-class3.lisp (subclassp): Test for finalized class by using the 'initialized' slot, not the 'precedence-list' slot. (reinitialize-instance-): Likewise. (std-compute-subclass-of-stablehash-p, compute-slots--primary) (compute-slots--around) (compute-default-initargs-): Use class-precedence-list instead of %class-precedence-list. (shared-initialize-) (shared-initialize-): Likewise. Set the initialized flag to 6. (shared-initialize-): Set initialized flag to 2. (finalize-class): Test for finalized class by using the 'initialized' slot, not the 'precedence-list' slot. (finalize-instance-semi-standard-class): Use class-precedence-list instead of %class-precedence-list. Set the initialized flag to 6. (make-instances-obsolete-) (make-instances-obsolete--nonrecursive): Test for finalized class by using the 'initialized' slot, not the 'precedence-list' slot. (update-subclasses-for-redefined-class): Set initialized flag to 2. (update-subclasses-for-redefined-class-nonrecursive): Likewise. Test for finalized class by using the 'initialized' slot, not the 'precedence-list' slot. * clos-class6.lisp (check-class-initialized): Add a level argument. (check-class-finalized): Add a level argument. Test for finalized class by using the 'initialized' slot, not the 'precedence-list' slot. (%class-precedence-list): Remove function. (class-precedence-list, class-slots, class-default-initargs) (class-prototype): Update. (class-finalized-p@class): Test for finalized class by using the 'initialized' slot, not the 'precedence-list' slot. * clos-print.lisp (print-object@class): Likewise. 2004-09-13 Sam Steingold comply with : If verbose is true, compile-file prints a message in the form of a comment (i.e., with a leading semicolon) to standard output indicating what file is being compiled and other useful information. If verbose is false, compile-file does not print this information. * compiler.lisp (compile-file): prefix verbose output with ";; " and send it to *STANDARD-OUTPUT* 2004-09-13 Sam Steingold * runprog.lisp (run-shell-command) [win32]: :INDIRECTP defaults to T Reported by Jörg Höhle 2004-09-13 Sam Steingold * makemake.in (cross/LPARS, full-check): make sure that ${someflags} is expanded Reported by Jörg Höhle 2004-09-13 Bruno Haible * clos-class3.lisp (defclass): Pass the metaclass' default-initargs to ensure-class. * clos-genfun3.lisp (defgeneric): Pass the generic-function class' default-initargs to ensure-generic-function. Reported by Pascal Costanza. 2004-08-01 Bruno Haible * clos-slotdef1.lisp (): New variable. (effective-slot-definition-p): New function. * clos-class3.lisp (compute-slots--primary): Check the return value of compute-effective-slot-definition. 2004-07-30 Bruno Haible * clos-genfun2.lisp (compute-applicable-methods-effective-method): Check the return value from compute-applicable-methods-using-classes or compute-applicable-methods. 2004-07-30 Bruno Haible * clos-genfun2.lisp (shared-initialize-): Clear the cache also when unknown user-defined arguments are passed. (install-dispatch): Check the return value from compute-discriminating-function. 2004-07-29 Bruno Haible Implement the dependents protocol. * lispbibl.d (Class): Add field 'listeners'. * init.lisp: Export add-dependent, remove-dependent, map-dependents, update-dependent. * clos-package.lisp: Export add-dependent, remove-dependent, map-dependents, update-dependent. * clos-class1.lisp (class): Add slot 'listeners'. (*<...class>-...-location*): Update. (*<...class>-instance-size*): Increment. (class-listeners, (setf class-listeners)): New functions. (shared-initialize-): Initialize the listeners. * clos-class3.lisp (reinitialize-instance-): Invoke map-dependents. (map-dependents-): New function. * clos-class6.lisp (class-listeners, (setf class-listeners)): New functions. * clos-genfun1.lisp (*-instance-size*): Increment. (generic-function): Add slot 'listeners'. (shared-initialize-): Initialize the listeners. * clos-genfun2.lisp (map-dependents-): New function. (std-add-method, std-remove-method) (reinitialize-instance-): Invoke map-dependents. * clos-dependent.lisp: New file. * clos.lisp: Load it. * makemake.in (LPARTS): Add clos-dependent. * po/Makefile.devel (LISPSOURCES): Add clos-dependent. 2004-09-09 Sam Steingold * modules/bindings/win32/win32.lisp, modules/bindings/glibc/linux.lisp: * modules/postgresql/postgresql.lisp, modules/netica/netica.lisp: no need to wrap defconstant in eval-when: this prevents the symbols from being exported 2004-09-09 Bruno Haible * makemake.in: Accept msvc6 and handle it like msvc5. * Makefile.devel (win32msvc/makefile.msvc6, win32msvc/makefile.msvc6d): New targets. (makefiles): Depend on them. Suggested by Jörg Höhle. 2004-07-12 Bruno Haible * lispbibl.d (Class): Remove direct_generic_functions field. * clos-specializer1.lisp (specializer): Remove direct-generic-functions slot. (*-direct-generic-functions-location*): Remove constant. (*-direct-methods-location*): Update. (specializer-direct-generic-functions-table): Remove accessor. (shared-initialize-): Update. (*-...-location*): Decrement by 1. (*-instance-size*): New constant. (make-instance-): Use it. (specializer-direct-generic-functions-table): Remove accessor. * clos-class1.lisp (*-...-location*): Decrement by 1. (*-instance-size*): Likewise. (*-...-location*): Likewise. (*-...-location*): Likewise. (*-instance-size*): Likewise. (*-...-location*): Likewise. (*-instance-size*): Likewise. * clos-genfun1.lisp (*-instance-size*): Likewise. 2004-09-08 Sam Steingold * foreign.d (open_library): since name may be modified by check_string(), it must be passed by reference (update_library, FOREIGN-LIBRARY): pass name to open_library() by reference Reported by Jörg Höhle 2004-09-08 Sam Steingold * modules/exporting.lisp: PROVIDE "exporting" * modules/bindings/glibc/linux.lisp, modules/bindings/win32/win32.lisp: * modules/matlab/matlab.lisp, modules/netica/netica.lisp: * modules/postgresql/postgresql.lisp: REQUIRE "exporting" instead of an explicit LOAD to permit stand-alone loading 2004-09-08 Sam Steingold fix bug#1024332: file system traversing problems * makemake.in (someflags): new variable: encflags + -norc use it uniformly everywhere 2004-09-08 Sam Steingold * init.lisp (load): use the input-stream as the unique EOF object 2004-07-12 Bruno Haible * clos-specializer1.lisp (add-direct-generic-function-internal) (remove-direct-generic-function-internal) (list-direct-generic-functions): Remove functions. (forget-direct-generic-functions, add-direct-generic-function): Remove functions. (compute-direct-generic-functions): Return just a plain list. (update-list-direct-generic-functions): Remove function. (specializer-direct-generic-functions): Use compute-direct-generic-functions. (add-direct-method-generic-function): Remove function. (add-direct-method, remove-direct-method): Undo last change. * clos-specializer3.lisp (specializer-direct-generic-functions): Use compute-direct-generic-functions. (add-direct-method, remove-direct-method): Undo last change. * clos-method1.lisp (method-generic-function): Remove function. * clos-method3.lisp (method-generic-function): Undo last change. 2004-07-12 Bruno Haible Implement specializer-direct-generic-functions. * clos-specializer1.lisp (add-direct-generic-function-internal): Rename from add-direct-generic-function. (remove-direct-generic-function-internal): Rename from remove-direct-generic-function. (forget-direct-generic-functions, add-direct-generic-function) (compute-direct-generic-functions) (update-list-direct-generic-functions): New functions. (specializer-direct-generic-functions): Use update-list-direct-generic-functions. (add-direct-method-generic-function): New function. (add-direct-method, remove-direct-method): Also update the direct-generic-functions set. * clos-specializer3.lisp (specializer-direct-generic-functions): Use update-list-direct-generic-functions. (add-direct-method, remove-direct-method): Also update the direct-generic-functions set. * clos-method1.lisp (method-generic-function): New function. * clos-method3.lisp (method-generic-function): Use allow-making-generic. 2004-07-11 Bruno Haible * init.lisp: Export add-direct-method, remove-direct-method. * clos-package.lisp: Likewise. * clos-specializer1.lisp (add-direct-method-internal): Rename from add-direct-method. (remove-direct-method-internal): Rename from remove-direct-method. (add-direct-method, remove-direct-method): New functions. * clos-specializer3.lisp (add-direct-method, remove-direct-method): New generic functions. * clos-method1.lisp (method): Inherit from standard-stablehash. (initialize-instance-): Invoke shared-initialize-. * clos-genfun2.lisp (std-add-method): Use remove-method, as specified by the MOP. Call add-direct-method for each specializer. (std-remove-method): Call remove-direct-method for each specializer. 2004-09-06 Jörg Höhle * win32.d, win32aux.d (abort) [WIN32_NATIVE]: use nonreturning function declaration. BTW, win32aux.d redefines abort() 2004-09-06 Jörg Höhle * foreign.d (find_name) [WIN32_NATIVE]: ensure end_system_call() takes place in all execution paths. 2004-08-31 Bruno Haible * spvw.d (parse_options): Don't do destructive side effects on argv[]. (main_actions): Update. 2004-08-31 Bruno Haible * spvw.d (struct argv_actions): Remove argv_selection_array, add argv_init_files and argv_exprs. (parse_options, free_argv_actions): Update. (main_actions): New function, extracted from main(). (main): Call main_actions. 2004-08-31 Bruno Haible * spvw.d (init_memory): New function, extracted from main(). (main): Call init_memory. 2004-08-31 Bruno Haible * spvw_sigsegv.d (install_stackoverflow_handler): Define as a no-op when NOCOST_SP_CHECK is not defined. * spvw.d (main): Call install_stackoverflow_handler a little later. 2004-08-31 Bruno Haible Assume the OS manages the C stack sufficiently well. * lispbibl.d (NO_SP_MALLOC): Remove macro. * spvw.d (usage): Remove documentation of option -s. (struct argv_initparams): Remove argv_stackneed. (parse_options): Drop support for option -s. (main): Don't reserve space for SP. Don't call setSP. 2004-08-31 Bruno Haible Remove support for MiNT. * lispbibl.d (UNIX_MINT): Remove macro. * pathname.d (realpath): Remove MiNT support. * stream.d (clear_tty_input): Assume FREAD is defined when TIOCFLUSH is defined. (clear_tty_output): Assume FWRITE is defined when TIOCFLUSH is defined. 2004-08-30 Bruno Haible * spvw.d (program_name): Change type to 'const char *'. (usage): Remove quit_sofort() call at the end. (init_lowest_level, fini_lowest_level): New functions. (struct argv_init_c): New type. (struct argv_initparams): New type. (struct argv_actions): New type. (argv_verbose, argv_wait_keypress, argv_license): Remove variables. (parse_options): New function, extracted from main(). Signal an error when an invalid option beginning with "-r" is seen. (free_argv_initparams, free_argv_actions): New functions. (argv1, argv2): New variables. (main): Use parse_options. 2004-07-11 Bruno Haible * clos.lisp: Set *allow-making-generic* to t while bootstrapping. * clos-slotdef3.lisp: No need to use fmakunbound here. * clos-specializer3.lisp: Likewise. * clos-class6.lisp: No need to bind *allow-making-generic* or use fmakunbound here. * clos-methcomb4.lisp: No need to bind *allow-making-generic* here. * clos-genfun5.lisp: Likewise. * clos-print.lisp: No need to use fmakunbound here. 2004-07-11 Bruno Haible * clos-genfun2.lisp (|#'allocate-instance|, |#'initialize-instance|) (|#'reinitialize-instance|, |#'update-instance-for-redefined-class|) (|#'update-instance-for-different-class|, |#'shared-initialize|) (*gf-warn-on-replacing-method*): New variables, moved here from clos-genfun3.lisp. (methods-agree-p, gf-lambdalist-from-first-method, std-add-method) (std-remove-method, std-find-method): New functions, moved here from clos-genfun3.lisp. (initialize-instance-): Remove function. (initialize-instance-): New function, extracted from ensure-generic-function-using-class-. (reinitialize-instance-): New function, extracted from ensure-generic-function-using-class-. (make-instance-): Update. * clos-genfun3.lisp (|#'allocate-instance|, |#'initialize-instance|) (|#'reinitialize-instance|, |#'update-instance-for-redefined-class|) (|#'update-instance-for-different-class|, |#'shared-initialize|) (*gf-warn-on-replacing-method*): Move to clos-genfun2.lisp. (methods-agree-p, gf-lambdalist-from-first-method, std-add-method) (std-remove-method, std-find-method): Move to clos-genfun2.lisp. (ensure-generic-function-using-class-): For redefinition, use reinitialize-instance. For first definition, rely on initialize-instance to install the initial methods. * clos-genfun4.lisp (initialize-instance@generic-function) (reinitialize-instance@generic-function): New methods. * clos-genfun5.lisp (initialize-instance-): Remove function. 2004-09-03 Sam Steingold restored support for older versions of woe32 * foreign.d (find_name): find EnumProcessModules dynamically (fEnumProcessModules): new global static * makemake.in (LIBS) [win32]: do NOT link against psapi Reported by Jörg Höhle. 2004-09-02 Bruno Haible * lispbibl.d (StablehashStructure): Rename field structure_types to _structure_types. Reported by Jörg Höhle. 2004-09-03 Jörg Höhle * lispbibl.d (if_classp): varbrace does not work inside macros, so must surround { var declarations with braces } by hand. 2004-09-02 Sam Steingold new module for interface to ZLIB http://www.zlib.org * modules/zlib: new directory 2004-07-10 Bruno Haible * clos-methcomb2.lisp (method-combination-with-options): New function. (find-method-combination--): Use it. (coerce-to-method-combination): Remove function. * clos-genfun3.lisp (make-generic-function): Accept a method-combination object instead of a method-combination designator. (analyze-defgeneric): Return a lambda expression for producing the method-combination, instead of the method-combination designator. Improve checking of :method-combination option. (defgeneric, make-generic-function-form): Emit code to convert the method-combination designator to a method-combination object. * clos-methcomb4.lisp (find-method-combination): Define using allow-making-generic. 2004-09-01 Sam Steingold * foreign1.lisp (DEF-CALL-OUT, DEF-C-VAR): evaluate the :LIBRARY argument 2004-09-01 Sam Steingold * init.lisp (search-file): pathname.d:simplify_directory() replaces ".." in pathname-directory with :up, so we need to check for :up instead of ".." Reported by Jörg Höhle 2004-09-01 Sam Steingold * foreign.d (find_name) [WIN32_NATIVE]: check the return values of both EnumProcessModules() calls 2004-07-10 Bruno Haible * clos-genfun2.lisp (make-fast-gf): Remove function. * clos-genfun3.lisp (make-generic-function, do-defmethod): Use make-generic-function-instance instead of make-fast-gf. 2004-07-10 Bruno Haible * clos-genfun2.lisp (%make-gf): Remove function. (make-fast-gf): Inline its previous definition. 2004-07-10 Bruno Haible * clos-genfun3.lisp (do-defgeneric): Remove function. (defgeneric): Expand into a call to ensure-generic-function instead of do-defgeneric. * clos-genfun5.lisp (ensure-generic-function-using-class): Define using allow-making-generic. 2004-09-02 Jörg Höhle * foreign1.lisp (parse-c-type, with-c-var, with-foreign-object): Perform both optimizations in parse-c-type, so that all forms, e.g. cast and offset, benefit. 2004-09-01 Jörg Höhle * foreign1.lisp (parse-c-type): add define-compiler-macro to inline primitive types. * foreign1.lisp (with-c-var, with-foreign-object): optimize c-type `(c-array[-max] type ,foo) (typical variable-length array) 2004-08-31 Sam Steingold * describe.lisp (describe-object@integer): do not use TYPE-OF to print representation (fixnum vs bignum) because TYPE-OF returns a range like (INTEGER 0 16777215) 2004-08-31 Sam Steingold support (:library :default) on win32 * foreign.d [WIN32_NATIVE]: include (open_library) [WIN32_NATIVE]: accept :DEFAULT (find_name) [WIN32_NATIVE]: when handle is NULL, use EnumProcessModules() to search all loaded libraries * makemake.in (LIBS) [win32]: link against psapi (makevars): depend on Makefile 2004-06-24 Bruno Haible * init.lisp: Export ensure-generic-function-using-class. * clos-package.lisp: Likewise. * clos-genfun2.lisp (check-signature-congruence) (check-method-qualifiers, invalid-method-qualifiers-error): New functions, moved here from clos-genfun3.lisp. (shared-initialize-): During redefinition, check the new signature and the new method-combination against the existing methods. At the end, call finalize-fast-gf. (make-fast-gf): Don't call finalize-fast-gf here. * clos-genfun3.lisp (check-signature-congruence) (check-method-qualifiers, invalid-method-qualifiers-error): Moved to clos-genfun2.lisp. (ensure-generic-function-using-class-): New function. (ensure-generic-function-using-class): New function. (ensure-generic-function): Completely rewritten. * clos-genfun5.lisp (ensure-generic-function-using-class): New generic function. 2004-08-30 Stefan Kain * debug.d: translate all comments 2004-08-30 Sam Steingold * modules/bindings/amigaos: remove 2004-08-30 Sam Steingold * modules/rawsock/configure.in: check for only when is not found to avoid confusion on cygwin * modules/rawsock/test.tst [win32]: do not test socketpair() 2004-08-30 Sam Steingold * foreign.d (open_library): accept :DEFAULT and :NEXT when RTLD_DEFAULT and RTLD_NEXT are defined (FOREIGN-LIBRARY): do not check that the library name is a string: this is done in open_library() anyway (exit_ffi): do not try to close RTLD_DEFAULT and RTLD_NEXT * constsym.d (:NEXT): add 2004-08-30 Bruno Haible * makemake.in: Tweak for portability: make it work with Solaris sed. Reported by Michael Livshin . 2004-08-30 Sam Steingold * foreign.d (dlerror_string): fix a segfault: dlerror() may return NULL 2004-08-30 Sam Steingold check array dimensions at compile time * type.lisp (ensure-dim, ensure-rank): new macros (ARRAY, SIMPLE-ARRAY, VECTOR, SIMPLE-VECTOR, STRING, SIMPLE-STRING) (BASE-STRING, SIMPLE-BASE-STRING, BIT-VECTOR, SIMPLE-BIT-VECTOR): add CHECK-FORM using ENSURE-DIM and ENSURE-RANK 2004-08-24 Bruno Haible * Makefile.devel (build-linux-x86-[1-10]): New targets. (multibuild-linux-x86): Depend on them. (multibuild-darwin-powerpc, build-darwin-powerpc-[1-10]): New targets. 2004-08-28 Bruno Haible * stream.d (rd_by_aux_icx_buffered): Fill exactly the required number of bytes in the bitbuffer; don't clobber the header word of the next object in memory. Fixes a bug introduced on 2001-06-27. Also introduce a more efficient loop for the case that doesn't require shifting. Found by the ansi-tests on MacOS X. 2004-08-24 Bruno Haible * stream.d (finish_tty_output, clear_tty_output) [UNIX_DARWIN]: Treat EOPNOTSUPP like EINVAL. Needed on Darwin 7.5.0 (MacOS X 10.3.5). 2004-08-27 Bruno Haible * spvw.d (main): Change the SIZE_ARG macro such that too high values generate a warning, not an error. 2004-08-26 Bruno Haible * lispbibl.d: Support TYPECODES_1 on Darwin/PowerPC. 2004-08-26 Bruno Haible * init.lisp (format): Allow the control-string to be a function. Needed for bootstrapping halfcompiled.mem: when the .fas files are loaded, the compiler has already transformed control-strings to functions. 2004-08-26 Bruno Haible Avoid a crash when using a hash-table as hash-table key in TYPECODES mode. * hashtabl.d (hashcode4_atom): Handle case_machine, case_subr, case_system. Found by the sacla-tests on MacOS X. 2004-08-26 Bruno Haible Avoid link error when compiling without optimization. * makemake.in (clisp.h): Define COMPILE_STANDALONE also when using . * genclisph.d (main): Wrap check_list and posfixnum_default2 in #ifndef COMPILE_STANDALONE. 2004-08-25 Bruno Haible * clos-class6.lisp (initialize-instance@class): Avoid compiler warning. * clos-methcomb2.lisp (make-method): Avoid compiler warning. 2004-08-26 Bruno Haible Make instance_of_stablehash_p work during bootstrapping. * clos-class0.lisp (*dummy-class*): New variable. (make-class-version): Use it as default. 2004-08-24 Bruno Haible Update ISO-8859-7 converter to version 2003. * nls_iso8859_7.c (charset2uni, page03, page20): Add new mappings for 0xA4, 0xA5, 0xAA. 2004-06-24 Bruno Haible * clos-genfun2.lisp (finalize-fast-gf, gf-never-called-p) (compute-dispatch, compute-applicable-methods-effective-method) (compute-applicable-methods-) (compute-applicable-methods-using-classes-): Handle the case that the generic-function's lambda-list is not yet initialized. * clos-genfun3.lisp (gf-lambdalist-from-first-method): New function. (std-add-method, std-find-method): Handle the case that the generic-function's lambda-list is not yet initialized. (do-defmethod): Use gf-lambdalist-from-first-method. * clos-genfun4.lisp (no-applicable-method, missing-required-method) (no-primary-method): Handle the case that the generic-function's lambda-list is not yet initialized. * clos-method2.lisp (analyze-method-description): Likewise. * describe.lisp (describe-object@generic-function): Likewise. 2004-06-20 Bruno Haible * clos-genfun2.lisp (finalize-fast-gf, gf-never-called-p): Use a prototype-factory-table instead of just a prototype-table. Use set-funcallable-instance-function. 2004-08-27 Sam Steingold * makemake.in (full-check): pass "-E utf-8" to clisp; find tests.lisp in ${TESTSDIR} 2004-06-24 Bruno Haible * clos-class3.lisp (defclass): Check that the :READER and :ACCESSOR argument is a really a non-nil symbol. 2004-06-23 Bruno Haible * clos-genfun3.lisp: Add the contents of clos-genfun4.lisp. * clos-genfun4.lisp: Move into clos-genfun3.lisp. * clos-genfun4.lisp: Rename from clos-genfun5.lisp. * clos-genfun5.lisp: Rename from clos-genfun6.lisp. * clos.lisp: Update. * makemake.in (LPARTS): Remove clos-genfun6. * po/Makefile.devel (LISPSOURCES): Likewise. 2004-06-23 Bruno Haible Simplify handling of generic-function docstring. * clos-genfun2.lisp (%make-gf): Add documentation argument. (make-fast-gf): Likewise. * clos-genfun3.lisp (do-defmethod): Update. (defgeneric): Pass documentation string to do-defgeneric, instead of calling SYSTEM::%SET-DOCUMENTATION. (ensure-generic): Update. * clos-genfun4.lisp (make-generic-function, do-defgeneric): Accept documentation argument. (make-generic-function-form): Pass the docstring to make-generic-function. 2004-06-23 Bruno Haible Implement the :declarations, :declare option. * clos-genfun2.lisp (check-gf-declspecs): New function. (shared-initialize-): Accept option :declare as well. (initialize-instance-): Likewise. (make-instance-): Likewise. (%make-gf, make-fast-gf): Add declspecs argument. (compute-discriminating-function-): Use the generic-function's declspecs for optimizing the dispatch code. * clos-genfun3.lisp (do-defmethod): Update. (analyze-defgeneric): Check the DECLARE option using check-gf-declspecs and return the declspecs as an additional value. (defgeneric): Pass the declspecs to do-defgeneric. (ensure-generic-function): Superficially fix completely broken code. * clos-genfun4.lisp (make-generic-function, do-defgeneric): Accept additional declspecs argument. (make-generic-function-form): Update. * clos-genfun5.lisp (shared-initialize@standard-generic-function): Accept option :declare as well. 2004-08-25 Bruno Haible * m4/libtool.m4: Upgrade to libtool-1.5.6. 2004-06-20 Bruno Haible * spvw_garcol.d (gc_sweep1_varobject_page): Reallocate also funcallable-standard-object instances. * spvw_update.d (do_update_sxrecord): Clear the forward-pointers bits also of funcallable-standard-object instances. 2004-06-20 Bruno Haible * init.lisp: Export compute-discriminating-function. * clos-package.lisp: Likewise. * clos-genfun2.lisp (compute-discriminating-function) (compute-discriminating-function-): New functions. (install-dispatch): Call compute-discriminating-function. * clos-genfun5.lisp (compute-discriminating-function): New generic function. * clos-methcomb2.lisp (compute-effective-method-as-function-form): Make an exception for #'compute-discriminating-function. 2004-06-20 Bruno Haible * clos-genfun2.lisp (install-dispatch): Use set-funcallable-instance-function. 2004-08-24 Bruno Haible * utils/clispload.lsp (*expected-failures*): Many new failures to be revisited. 2004-08-24 Bruno Haible * constobj.d (printstring_closure, printstring_compiled_closure): Use the term FUNCTION instead of CLOSURE. 2004-06-20 Bruno Haible Implement the :generic-function-class option. * clos-genfun2.lisp (make-generic-function-instance): New function. (%make-gf, make-fast-gf): Accept a generic-function-class argument. * clos-genfun3.lisp (do-defmethod): Update. (analyze-defgeneric): Return also a generic-function-class-form value. (defgeneric): Pass the generic-function-class to do-defgeneric. (ensure-generic-function): Likewise. * clos-genfun4.lisp (make-generic-function): Accept a generic-function-class argument. (do-defgeneric): Likewise. Call change-class if the old generic function's class is different. (make-generic-function-form): Update. * clos-genfun6.lisp (make-generic-function-instance): Replace with make-instance. 2004-08-23 Sam Steingold * modules/pcre/cpcre.c (PCRE-EXEC): allocate ovector of proper size 2004-06-20 Bruno Haible * record.d (CLOS:STANDARD-INSTANCE-ACCESS) ((SETF CLOS:STANDARD-INSTANCE-ACCESS)): New functions. * init.lisp: Export standard-instance-access. * clos-package.lisp: Likewise. * places.lisp (clos:standard-instance-access): Define setf function. * clos-stablehash1.lisp (shared-initialize-): Use standard-instance-access instead of sys::%record-ref. * clos-class3.lisp (install-class-direct-accessors): Likewise. * clos-slots1.lisp (funcallable-standard-instance-access): New function. 2004-06-20 Bruno Haible * clos-method1.lisp (make-method-instance): New function. * clos-method4.lisp (make-method-instance): Replace with make-instance. * clos-methcomb2.lisp (effective-method-code-bricks): Use make-method-instance instead of make-instance-. * clos-genfun3.lisp (do-defmethod, analyze-defgeneric): Likewise. 2004-08-22 Bruno Haible * constobj.d: Make O(terminal_encoding) also available if !UNICODE. * encoding.d (init_dependent_encodings): Initialize it. * stream.d (make_keyboard_stream, make_terminal_stream_) (SCREEN:MAKE-WINDOW): Install O(terminal_encoding) as the stream's encoding also if !UNICODE. Fixes a bug introduced on 2004-05-21. Reported by Michael Livshin . 2004-08-22 Bruno Haible * makemake.in: Change the handling of --with and --without options to be like in GNU autoconf. Put the default of each with_* flag in one place, not at each use of the variable. * clisp-link.in: Update. 2004-08-21 Bruno Haible Add a slot to the SOURCE-PROGRAM-ERROR condition. * control.d (MACROLET, SYSTEM::FUNCTION-MACRO-LET): Pass one more argument to sys::make-macro-expander. * error.d (end_error): Pass :DETAIL instead of :FORM. * init.lisp: Export ext:source-program-error-detail. (%uncompilable): Pass both :FORM and :DETAIL when signaling a source-program-error. (%whole-form): Proclaim special. (%expand-form): Bind %whole-form. Pass both :FORM and :DETAIL when signaling a source-program-error. (%expand-list, %expand-lambda, %expand-lambdalist, %expand-varspez) (%expand-varspez*, %expand-fundefs-1, %expand-funmacdefs-1): Pass both :FORM and :DETAIL when signaling a source-program-error. (defun, do): Likewise. (defmacro): Pass whole form to sys::make-macro-expansion. * defmacro.lisp (macro-call-error): Pass both :FORM and :DETAIL when signaling a source-program-error. (%whole-form): Proclaim special. (analyze-aux, get-supplied-p, analyze-rest): Pass both :FORM and :DETAIL when signaling a source-program-error. (empty-pattern): Add 'wholevar' argument. Pass both :FORM and :DETAIL when signaling a source-program-error. (analyze1, remove-env-arg): Expect %whole-var to be bound. Pass both :FORM and :DETAIL when signaling a source-program-error. (make-macro-expansion): Add 'whole' argument. Pass both :FORM and :DETAIL when signaling a source-program-error. (make-macro-expander): Add 'whole' argument. * macros1.lisp (defmacro-special): Pass whole form to make-macro-expansion. (defvar, defparameter, defconstant): Pass both :FORM and :DETAIL when signaling a source-program-error. (do/do*-expand): Add 'whole' argument. Pass both :FORM and :DETAIL when signaling a source-program-error. (do, do*): Update. (psetq): Pass both :FORM and :DETAIL when signaling a source-program-error. (case-expand): Add 'whole' argument. Pass both :FORM and :DETAIL when signaling a source-program-error. (fcase, case): Update. (cond): Pass whole form to ifify. (ifify): Add 'whole' argument. Pass both :FORM and :DETAIL when signaling a source-program-error. * macros2.lisp (typecase): Pass both :FORM and :DETAIL when signaling a source-program-error. (deftype): Likewise. Bind %whole-form for analyze1. (define-symbol-macro): Pass both :FORM and :DETAIL when signaling a source-program-error. * defs1.lisp (with-package-iterator): Pass both :FORM and :DETAIL when signaling a source-program-error. * places.lisp (get-setf-expansion, get-setf-method): Pass both :FORM and :DETAIL when signaling a source-program-error. (check-accessor-name): Add 'whole' argument. Pass both :FORM and :DETAIL when signaling a source-program-error. (define-setf-expander): Pass whole form to check-accessor-name. Bind %whole-form, for remove-env-arg. (defsetf): Pass whole form to check-accessor-name. Pass both :FORM and :DETAIL when signaling a source-program-error. (psetf, define-modify-macro, setf, shiftf, apply, funcall, if): Pass both :FORM and :DETAIL when signaling a source-program-error. * defpackage.lisp (defpackage): Pass both :FORM and :DETAIL when signaling a source-program-error. * clos-class3.lisp (defclass): Likewise. (finalize-class): Signal a program-error, not a source-program-error. * defstruct.lisp (ds-make-boa-constructor): Add 'whole' argument. Pass both :FORM and :DETAIL when signaling a source-program-error. (defstruct): Pass both :FORM and :DETAIL when signaling a source-program-error. * cmacros.lisp (define-compiler-macro): Pass whole form to sys::make-macro-expansion. * compiler.lisp (c-FUNCTION-MACRO-LET): Pass whole form to make-macro-expander. (c-GENERIC-FLET, c-GENERIC-LABELS): Pass whole form to defgeneric-lambdalist-callinfo and make-generic-function-form. (c-MACROLET): Pass whole form to make-macro-expander. (compile-lambda-helper): Pass both :FORM and :DETAIL when signaling a source-program-error. * defs2.lisp (destructuring-bind): Bind %whole-var for analyze1. * loop.lisp (loop-syntax-error, expand-loop): Pass both :FORM and :DETAIL when signaling a source-program-error. * clos-slots1.lisp (with-slots, with-accessors): Pass both :FORM and :DETAIL when signaling a source-program-error. * clos-method1.lisp (initialize-instance-): Update. * clos-method2.lisp (program-error-reporter): Signal a program-error, not a source-program-error. (analyze-method-description): Add 'whole' argument. Pass both :FORM and :DETAIL when signaling a source-program-error. * clos-methcomb2.lisp (invalid-sort-order-error): Signal a program-error, not a source-program-error. (any-method-combination-check-options): Likewise. (check-em-arguments-option, check-em-generic-function-option): Add 'whole' argument. Pass both :FORM and :DETAIL when signaling a source-program-error. (call-method, make-method, make-method-error,): Pass both :FORM and :DETAIL when signaling a source-program-error. (call-method-arg1-error, call-method-arg2-error) (call-method-arg2elements-error): Likewise. (build-effective-method-function-form): Update for changed errfunc signature. (compute-effective-method-as-function-form): Update. (standard-method-combination-check-options): Signal a program-error, not a source-program-error. (standard-method-combination-check-method-qualifiers): Likewise. (short-form-method-combination-check-method-qualifiers): Likewise. (parse-method-groups): Add 'whole' argument. Pass both :FORM and :DETAIL when signaling a source-program-error. (define-method-combination): Pass both :FORM and :DETAIL when signaling a source-program-error. * clos-genfun3.lisp (invalid-method-qualifiers-error): Likewise. (defmethod, declaim-method): Pass the whole form to analyze-method-description. (analyze-defgeneric): Add 'whole' argument. Pass both :FORM and :DETAIL when signaling a source-program-error. (analyze-defgeneric-lambdalist): Likewise. (defgeneric-lambdalist-callinfo): Likewise. (defgeneric): Pass the whole form to analyze-defgeneric. (ensure-generic-function): Update. * clos-genfun4.lisp (make-generic-function-form): Add 'whole' argument. (analyze-generic-fundefs): Likewise. Pass both :FORM and :DETAIL when signaling a source-program-error. (generic-flet): Pass the whole form to analyze-generic-fundefs. (generic-labels): Likewise. * condition.lisp: Export ext:source-program-error-detail. (source-program-error): Slot $detail replaces $form. New slot $form. (expand-restart-case): Add 'whole' argument. Pass both :FORM and :DETAIL when signaling a source-program-error. (restart-case, with-restarts): Update. * foreign1.lisp (DEF-C-VAR): Pass both :FORM and :DETAIL when signaling a source-program-error. (element, deref, slot, cast, offset, c-var-object, c-var-address) (typeof): Likewise. * affi1.lisp (mlibcall): Pass both :FORM and :DETAIL when signaling a source-program-error. * macros3.lisp (LETF*): Pass whole form to expand-LETF*. (expand-LETF*): Add 'whole' argument. Pass both :FORM and :DETAIL when signaling a source-program-error. (LETF): Pass whole form to expand-LETF. (expand-LETF): Add 'whole' argument. Pass both :FORM and :DETAIL when signaling a source-program-error. 2004-08-21 Bruno Haible * constsym.d (sys::check-symbol): Rename from sys::%check-symbol. (sys::check-function-name): Rename from sys::%check-function-name. * control.d: Likewise. * init.lisp (check-symbol, check-function-name): Remove macros. (defun): Use an explicit assignment instead of a macro with implicit side-effect. * defstruct.lisp (defstruct): Likewise. * compiler.lisp (compile): Likewise. * cmacros.lisp (compiler-macro-function, (setf compiler-macro-function)): Likewise. * trace.lisp (check-traceable): Likewise. * clos-genfun3.lisp (defmethod, declaim-method, analyze-defgeneric): Likewise. * documentation.lisp (documentation, (setf documentation)): Likewise. * foreign1.lisp (DEF-C-TYPE, DEF-C-VAR, DEF-CALL-OUT, DEF-LIB-CALL-OUT) (DEF-CALL-IN, def-c-enum): Likewise. 2004-08-21 Bruno Haible * compiler.lisp (insert-combined-LAPs): Use assert instead of check-type. 2004-06-20 Bruno Haible Implement the :method-class option. * clos-methcomb2.lisp (effective-method-code-bricks): Create auxiliary methods of the class given by the generic function. * clos-genfun2.lisp (%make-gf): Accept a method-class argument. (make-fast-gf): Likewise. * clos-genfun3.lisp (do-defmethod): Update. (analyze-defgeneric): As 4th value, return a form producing the method-class. Create methods of the class given by the :method-class option. (defgeneric): Pass the method-class to do-defgeneric. (ensure-generic-function): Likewise. * clos-genfun4.lisp (make-generic-function): Accept a method-class argument. (do-defgeneric): Likewise. (make-generic-function-form): Update. 2004-08-21 Bruno Haible * m4/connect.m4 (CL_CONNECT): Bail out if the connect() declaration could not be found. * m4/ioctl.m4 (CL_IOCTL): Bail out if the ioctl() declaration could not be found. Undo last patch. * m4/select.m4 (CL_SELECT): Bail out if the select() declaration could not be found. * m4/tcpconn.m4 (CL_TCPCONN): Bail out if the inet_addr() or setsockopt() declaration could not be found. 2004-08-20 Sam Steingold * control.d (%CHECK-FUNCTION-NAME, %CHECK-SYMBOL): change the order of arguments to match that of CHECK-TYPE * init.lisp (CHECK-FUNCTION-NAME, CHECK-SYMBOL): ditto * clos-genfun3.lisp, cmacros.lisp, compiler.lisp, defstruct.lisp: * documentation.lisp, foreign1.lisp, trace.lisp: update callers 2004-08-20 Sam Steingold * configure.in: add "sysre" option to optionally disable the use of system-wide regexp library 2004-08-20 Sam Steingold ported RAWSOCK to win32 * modules/rawsock/configure.in: check for , and ws2_32 * modules/rawsock/rawsock.c (rawsock_t): new typedef (socketpair, recvmsg, sendmsg, ifreq): not present on win32 2004-08-20 Sam Steingold * m4/ioctl.m4 (IOCTL_REQUEST_T): quote shell variable to avoid a bash warning 2004-08-20 Sam Steingold * control.d (make_variable_frame): clarified and unified messages 2004-08-19 Sam Steingold * init.lisp (source-program-error, source-program-error-form): export (%uncompilable, %expand-form, %expand-list, %expand-lambda) (%expand-lambdalist, %expand-varspez, %expand-varspez*) (%expand-fundefs-1, %expand-funmacdefs-1, defun, do): pass :FORM to ERROR-OF-TYPE SOURCE-PROGRAM-ERROR * affi.lisp (mlibcall): ditto * clos-class3.lisp (defclass, finalize-class): ditto * clos-genfun2.lisp (check-gf-lambdalist+argorder) (shared-initialize-): errfunc accepts FORM as the first argument * clos-genfun3.lisp (invalid-method-qualifiers-error) (analyze-defgeneric, analyze-defgeneric-lambdalist): pass :FORM to ERROR-OF-TYPE SOURCE-PROGRAM-ERROR; errfunc accepts FORM as the first argument * clos-genfun4.lisp (analyze-generic-fundefs): pass :FORM to ERROR-OF-TYPE SOURCE-PROGRAM-ERROR * clos-methcomb2.lisp (invalid-sort-order-error) (any-method-combination-check-options, check-em-arguments-option) (check-em-generic-function-option, call-method, make-method) (make-method-error, call-method-arg1-error, call-method-arg2-error) (call-method-arg2elements-error, parse-method-groups) (standard-method-combination-check-options) (standard-method-combination-check-method-qualifiers) (short-form-method-combination-check-method-qualifiers) (define-method-combination): pass :FORM to ERROR-OF-TYPE SOURCE-PROGRAM-ERROR; errfunc accepts FORM as the first argument * clos-method1.lisp (initialize-instance-): errfunc accepts FORM as the first argument * clos-method2.lisp (decompose-specialized-lambda-list) (program-error-reporter, analyze-method-description): pass :FORM to ERROR-OF-TYPE SOURCE-PROGRAM-ERROR; errfunc accepts FORM as the first argument * clos-slots1.lisp (with-slots, with-accessors): pass :FORM to ERROR-OF-TYPE SOURCE-PROGRAM-ERROR * compiler.lisp (c-analyze-lambdalist): errfunc accepts FORM as the first argument (compile-lambda-helper): pass :FORM to ERROR-OF-TYPE SOURCE-PROGRAM-ERROR * condition.lisp (define-condition, handler-case, restart-bind) (expand-restart-case): pass :FORM to ERROR-OF-TYPE SOURCE-PROGRAM-ERROR (source-program-error): add $FORM slot * constsym.d (:FORM): MAKE-CONDITION argument for SOURCE-PROGRAM-ERROR * control.d (FUNCTION, check_setq_body, check_varspec) (make_variable_frame, fehler_funspec, MACROLET, FUNCTION-MACRO-LET) (CASE, RETURN-FROM, TAGBODY, GO, DECLARE, %CHECK-SYMBOL): pass :FORM to ERROR-OF-TYPE SOURCE-PROGRAM-ERROR * defmacro.lisp (macro-call-error, analyze-aux, get-supplied-p) (analyze-rest, empty-pattern, analyze1, remove-env-arg) (make-macro-expansion): ditto * defpackage.lisp (defpackage): ditto * defs1.lisp (with-package-iterator): ditto * defstruct.lisp (ds-make-boa-constructor, defstruct): pass :FORM to ERROR-OF-TYPE SOURCE-PROGRAM-ERROR; errfunc accepts FORM as the first argument * error.d (end_error, check_symbol_non_constant_replacement) (check_symbol_special, check_funname_replacement): pass :FORM to ERROR-OF-TYPE SOURCE-PROGRAM-ERROR * eval.d (parse_dd, get_closure, eval1, fehler_eval_zuwenig) (fehler_eval_dotted, fehler_eval_zuviel): ditto * foreign1.lisp (DEF-C-VAR, flet/err): ditto * lambdalist.lisp (err-misplaced, err-invalid, analyze-lambdalist) (analyze-generic-function-lambdalist, analyze-defsetf-lambdalist) (analyze-modify-macro-lambdalist) (analyze-method-combination-lambdalist): errfunc accepts FORM as the first argument; pass :FORM to ERROR-OF-TYPE SOURCE-PROGRAM-ERROR * loop.lisp (loop-syntax-error, expand-loop): pass :FORM to ERROR-OF-TYPE SOURCE-PROGRAM-ERROR * macros1.lisp (defvar, defparameter, defconstant, do/do*-expand) (psetq, case-expand, ifify, cond): ditto * macros2.lisp (typecase, deftype, define-symbol-macro): ditto * macros3.lisp (expand-LETF*, expand-LETF): ditto * places.lisp (get-setf-expansion, get-setf-method, defsetf) (check-accessor-name, psetf, define-modify-macro, setf, shiftf) (apply, funcall, if): pass :FORM to ERROR-OF-TYPE SOURCE-PROGRAM-ERROR; errfunc accepts FORM as the first argument 2004-08-20 Bruno Haible * error.d (check_funname_replacement): Improve error message. 2004-06-19 Bruno Haible * clos-genfun1.lisp (standard-generic-function): New slot effective-method-cache. * clos-genfun2.lisp (shared-initialize-): Initialize it. (compute-applicable-methods-effective-method): Cache the effective method in the effective-method-cache alist. * clos-genfun3.lisp (std-add-method, std-remove-method): Clear the effective-method-cache. 2004-08-19 Sam Steingold recoverable FUNCTION-NAME and SYMBOL source checks * constsym.d, subr.d (check_function_name, check_symbol): add * control.d (%CHECK-FUNCTION-NAME, %CHECK-SYMBOL): implement * init.lisp (check-symbol, check-function-name): new macros * clos-genfun3.lisp (defmethod, declaim-method, analyze-defgeneric): use CHECK-FUNCTION-NAME * compiler.lisp (compile): ditto * cmacros.lisp (compiler-macro-function) ((setf compiler-macro-function)): CHECK-FUNCTION-NAME is now a macro * documentation.lisp (documentation): ditto * trace.lisp (check-traceable): ditto * functions.lisp (check-function-name): remove 2004-08-19 Sam Steingold * clos-class5.lisp (change-class): avoid a compilation warning 2004-08-19 Sam Steingold * clos-genfun3.lisp (analyze-defgeneric): fix a typo in error message: DEFSTRUCT -> DEFGENERIC 2004-08-19 Bruno Haible * configure.in: Test for sys/inttypes.h, not sys/int_types.h. * stdint.h.in: Fix the reversed SKIP_LOCAL_DEFINITIONS logic. Rename SKIP_LOCAL_DEFINITIONS to HAVE_SYSTEM_INTTYPES. On Solaris, use , not . 2004-08-19 Bruno Haible * sequence.d (get_seq_type): Update the code for user-defined sequence types. Reported by Jörg Höhle. 2004-06-19 Bruno Haible * init.lisp: Export compute-applicable-methods-using-classes. * clos-package.lisp: Likewise. * clos-methcomb2.lisp (sort-applicable-methods): Accept the classes of the required arguments, not the required arguments themselves. (compute-effective-method-as-function-form): Bootstrapping hack for compute-applicable-methods-using-classes. * clos-genfun2.lisp (compute-applicable-methods-using-classes) (compute-applicable-methods-using-classes-): New functions. (check-method-only-standard-specializers): Add caller argument. (compute-applicable-methods-effective-method): Call compute-applicable-methods-using-classes before calling compute-applicable-methods. (compute-applicable-methods-): Update. * clos-genfun5.lisp (compute-applicable-methods-using-classes): New generic function. 2004-08-18 Bruno Haible * lispbibl.d (PC386): Define also on Cygwin. 2004-08-18 Sam Steingold * Makefile.devel (SSHUP): replaced gnudist and cons with podval (src/autoconf/aclocal.m4): use egrep instead of grep and filter out also _CANONICAL_ and AC_PREREQ; also pass full path to aclocal to create a stand-alone aclocal.m4 instead of the one full of include statements 2004-06-19 Bruno Haible * init.lisp: Export compute-applicable-methods. * clos-package.lisp: Likewise. * clos-genfun2.lisp (compute-applicable-methods) (compute-applicable-methods-) (check-method-only-standard-specializers): New functions. (compute-applicable-methods-effective-method): Use compute-applicable-methods. * clos-genfun5.lisp (compute-applicable-methods@standard-generic-function): Use compute-applicable-methods-. 2004-08-18 Bruno Haible Make it work with automake-1.9. * Makefile.devel (src/autoconf/aclocal.m4): Also filter out the AC_CONFIG_HEADER and AC_CONFIG_FILES lines. ($(CONFIGURES)): Pass a second --include option to autoconf. 2004-08-16 Sam Steingold * eval.d (eval1): do not ignore the return value of check_fdefinition() Reported by Владимир Слепнев (Vladimir Slepnev) 2004-08-16 Sam Steingold * install.lisp (*clisp-runtime*): always enclose pathname in quotes (*clisp-args*): fix slashes Reported by Владимир Слепнев (Vladimir Slepnev) 2004-08-16 Sam Steingold * modules/postgresql/postgresql.lisp: update for PostgreSQL 7.4 2004-08-13 Sam Steingold * configure.in: check for * stdint.h.in [__sun]: include only when present Reported by Michael Livshin 2004-08-12 Sam Steingold standard I/O streams are handle streams in batch mode * stream.d (init_standard_input, init_standard_output): accept second argument batch_p which ensures that the result is not a terminal stream and therefore can be made binary (init_streamvars): pass batch_p to init_standard_i/o * lispbibl.d (init_streamvars): update comments 2004-08-12 Sam Steingold * modules/bindings/glibc/Makefile, modules/bindings/win32/Makefile: * modules/fastcgi/Makefile.in, modules/matlab/Makefile: * modules/netica/Makefile, modules/oracle/Makefile.in: * modules/postgresql/Makefile.in: init CLISP and other make variables Reported by Steve Eichblatt 2004-08-11 Sam Steingold * reploop.lisp (make-xterm-io-stream): use :DIRECTION :IO instead of a TWO-WAY-STREAM 2004-08-11 Sam Steingold finished the *DEFUN-ACCEPT-SPECIALIZED-LAMBDA-LIST* patch * init.lisp (specialized-lambda-list-to-ordinary): new function (*defun-accept-specialized-lambda-list*): enable just before the end (defun): use it when *DEFUN-ACCEPT-SPECIALIZED-LAMBDA-LIST* is non-NIL * compiler.lisp (c-LAMBDABODY, c-LABELS, c-FUNCALL-INLINE): ditto * eval.d (get_closure): ditto * constsym.d (spelalist_to_ordinary): add * clos-method2.lisp (program-error-reporter): new helper macro (extract-lambda-list, extract-specializer-names): use it 2004-08-11 Sam Steingold ANSI compliance : "for functions that manipulate or inquire about files in the file system, the pathname argument to such a function is merged with *DEFAULT-PATHNAME-DEFAULTS* before accessing the file system" * pathname.d (merge_defaults): new function (TRUENAME, PROBE-FILE, PROBE-DIRECTORY, DELETE-FILE, RENAME-FILE) (OPEN, DIRECTORY, CD, shorter_directory, ENSURE-DIRECTORIES-EXIST) (FILE-WRITE-DATE, FILE-AUTHOR): call it 2004-08-11 Sam Steingold * record.d (SET-FUNCALLABLE-INSTANCE-FUNCTION): fix G++ compilation 2004-08-11 Sam Steingold * makemake.in: fix and completely unified -with-* processing * configure (with-debug): pass "--verbose=yes" to makemake 2004-06-20 Bruno Haible * init.lisp: Export extract-lambda-list, extract-specializer-names. * clos-package.lisp: Likewise. * clos-method2.lisp (lambda-list-keyword-p): Remove function. (decompose-specialized-lambda-list): New function. (extract-lambda-list, extract-specializer-names): New functions. (analyze-method-description): Return a list of initargs forms instead of a method-producing form. Use decompose-specialized-lambda-list. Pass on the documentation string instead of dropping it. * clos-genfun3.lisp (defmethod): Update. (do-defmethod): Accept either a method or a list of initargs. In the latter case, create the method here. (declaim-method): Update. (analyze-defgeneric): Update. 2004-08-11 Bruno Haible * makemake.in (*.fas): Grant more memory: 800KW instead of 750KW. 2004-08-10 Sam Steingold * stream.d (MAKE-STREAM): use an intelligent DIRECTION default 2004-08-10 Sam Steingold * configure.in: avoid identical repeated messages 2004-08-09 Sam Steingold * pathname.d (fehler_delete_open, fehler_rename_open): fix messages 2004-08-09 Sam Steingold * constsym.d (*loop-ansi*): new variable * spvw.d (init_symbol_values): initialize *LOOP-ANSI* to NIL * misc.d (SYS::SET-ANSI): reset *LOOP-ANSI* * loop.lisp (expand-loop): given CLtL2 syntax remove by ANSI, either warn or signal an error, depending on *LOOP-ANSI* 2004-08-09 Sam Steingold * init.lisp (*suppress-check-redefinition*): initialize to T 2004-08-09 Sam Steingold * modules/clx/new-clx/clx.f (get_event_mask): use fehler_proper_list_dotted() instead of fehler_proper_list() 2004-08-07 Bruno Haible * lispbibl.d (list_length): New declarations. (fehler_proper_list_dotted): Rename from fehler_proper_list. (fehler_proper_list_circular): New declaration. (list_to_mv): Update. * genclisph.d (main): Emit fehler_proper_list_dotted instead of fehler_proper_list. * error.d (fehler_proper_list_dotted): Rename from fehler_proper_list. (fehler_proper_list_circular): New function. * list.d (endp, LIST-LENGTH, memq): Update. (list_length): Export. (SYS::LIST-LLENGTH): Instead of llength1, use list_length. Signal an error when the argument is a circular list. * sequence.d (LENGTH): Likewise. 2004-08-07 Bruno Haible * clos-genfun2.lisp (gf-keyword-arguments): Enable keyword checking also when the generic function mentions &key but no method mentions it. 2004-08-07 Bruno Haible * debug.d (GC): Use UL_to_I for representing the result. 2004-08-08 Bruno Haible * utils/clispload.lsp (*expected-failures*): Many new failures to be revisited. 2004-08-08 Bruno Haible * spvw.d (init_symbol_values): Initialize *DEFUN-ACCEPT-SPECIALIZED-LAMBDA-LIST* to NIL. 2004-08-07 Bruno Haible * io.d (pr_array_recursion): Check *PRINT-LEVEL* before calling pr_array_recursion recursively. 2004-08-07 Bruno Haible * io.d (read_delimited_list): If *read-suppress* is true, return NIL. 2004-08-08 Bruno Haible * io.d (read_token_1, read_macro, read_internal, make_references) (read_delimited_list_recursive, rpar_reader, fehler_dispatch_zahl) (char_reader, radix_2, radix_reader, complex_reader, uninterned_reader) (vector_reader, array_reader, lookup_label, label_definition_reader) (label_reference_reader, interpret_feature, structure_reader) (fehler_closure_badchar, closure_reader, ansi_pathname_reader): Signal READER-ERROR instead of STREAM-ERROR in all cases. 2004-08-07 Bruno Haible * io.d (read_macro, read_internal, fehler_dot, bit_vector_reader) (fehler_read_eval_forbidden, not_readable_reader, syntax_error_reader): Signal READER-ERROR instead of STREAM-ERROR in some cases. 2004-08-07 Bruno Haible Fix crash of (COPY-READTABLE NIL some-readtable). * io.d (COPY-READTABLE): Store from_readtable in the STACK. Fixes bug introduced on 2003-06-08. 2004-08-07 Bruno Haible For invalid condition designators, signal a TYPE-ERROR. * condition.lisp (try-coerce-to-condition): Rename from coerce-to-condition. (valid-condition-designator-p): New function. (coerce-to-condition): New function. 2004-08-07 Bruno Haible * package.d (apply_symbols): Interpret an argument of nil as an empty list, not as a single symbol. * defpackage.lisp (shadowing-import-cerror, import-cerror): Handle the NIL symbol accordingly. 2004-08-07 Bruno Haible * places.lisp (setf-VALUES-aux): Use only the first store variable for each subform. Bind the others to nil. 2004-08-07 Bruno Haible * sacla-tests: New directory. * makemake.in (SACLATESTSDIR): New variable. (check-sacla-tests, ${SACLATESTSDIR}): New targets. (check): Depend on sacla-tests. (clean1): Remove also the sacla-tests files. 2004-08-06 Bruno Haible * compiler.lisp (make-trampoline): Make it work with #+CLISP-DEBUG too. 2004-06-16 Bruno Haible * init.lisp: Export the generic-function-* accessors. * clos-package.lisp: Likewise. 2004-06-16 Bruno Haible * documentation.lisp (documentation): For generic functions, take the doc string from the generic function object, not its name. ((setf documentation)): For generic functions, store the doc string in the generic function object, not in *documentation*. 2004-06-16 Bruno Haible * clos-genfun5.lisp ((setf generic-function-name)): New function. 2004-07-29 Bruno Haible * lispbibl.d (genericlambda_function_p): Rename from genericfunctionp. * record.d (check_genericlambda_function_replacement): Rename from check_generic_function_replacement. (check_genericlambda_function): Rename from check_generic_function. (SYS::%COPY-GENERIC-FUNCTION) (SYS::GENERIC-FUNCTION-EFFECTIVE-METHOD-FUNCTION): Update. * predtype.d (GENERIC-FUNCTION-P): Remove function. * eval.d (FUNTAB): Remove generic-function-p. * savemem.lisp (%saveinitmem): Use typep instead of generic-function-p. * type.lisp (GENERIC-FUNCTION, STANDARD-GENERIC-FUNCTION): No longer atomic types. * clos-genfun2.lisp (compute-dispatch): Don't declare GENERIC-FUNCTION-P inline. * clos-method2.lisp (analyze-method-description): Use typep-class instead of generic-function-p. * clos-genfun3.lisp (do-defmethod): Likewise. * clos-genfun4.lisp (do-defgeneric): Likewise. 2004-06-16 Bruno Haible * clos-genfun1.lisp (print-object-): New function. (print-object): New preliminary function. * clos-print.lisp (print-object@funcallable-standard-object): New method. 2004-06-19 Bruno Haible * record.d (SYS::CLOSURE-CODEVEC): Return the code vector itself, don't convert it to a list. * compiler.lisp (signature): Convert the code vector to a list here. 2004-08-05 Sam Steingold * modules/syscalls/configure.in: check for with CL_UTSNAME, for getrusage() with CL_RUSAGE, and for lstat() with CL_LSTAT this avoids compile warnings by defining the corresponding constants identically in syscalls/config.h and unixconf.h 2004-08-05 Sam Steingold * modules/berkeley-db/bdb.c: use DB.dbenv when practical (close_errfile, reset_errfile): functions, not macros (close_errpfx): new function (BDB:DBE-CLOSE, BDB:DB-CLOSE): call it (dbe_get_errfile, dbe_get_errpfx): new functions (BDB:DBE-SET-OPTIONS, BDB:DBE-GET-OPTIONS, BDB:DB-SET-OPTIONS) (BDB:DB-GET-OPTIONS): accept :ERRPFX 2004-06-13 Bruno Haible Make GENERIC-FUNCTION a subclass of FUNCALLABLE-STANDARD-OBJECT. * spvw_debug.d (nobject_out1): Print FUNCALLABLE-STANDARD-OBJECTs specially, instead of the old GENERIC-FUNCTIONs. * io.d (pr_cclosure): Remove special case of old generic-functions. * predtype.d (COMPILED-FUNCTION-P): Exclude all FUNCALLABLE-STANDARD-OBJECTs instead of the old GENERIC-FUNCTIONs. (TYPE-OF, CLOS:CLASS-OF): Remove special case of old generic-functions. (enum_hs_standard_generic_function): Remove enumeration item. (heap_statistics_mapper): Remove special case of old generic-functions. * subtypep.lisp (STANDARD-OBJECT, type-category): Remove special casing of GENERIC-FUNCTION and STANDARD-GENERIC-FUNCTION. (canonicalize-type): Convert FUNCTION to a class. * clos-class3.lisp: Don't pass to %defclos. (, ): Don't initialize as built-in classes. * clos-genfun1.lisp (generic-function): New class. (): New variable. (shared-initialize-): New function. (standard-generic-function): New class. (): New variable. (std-gf-signature): Rename from gf-signature. (std-gf-argorder): Rename from gf-argorder. (std-gf-methods): Rename from gf-methods. (std-gf-method-combination): Rename from gf-method-combination. (std-gf-default-method-class, std-gf-lambda-list, std-gf-documentation) (std-gf-declspecs, std-gf-initialized): New accessors. * clos-methcomb2.lisp (call-method-duplicates-error) (effective-method-code-bricks, build-effective-method-function-form): Update. * clos-genfun2.lisp (countup): New function, moved here from clos-genfun3.lisp. (check-gf-lambdalist+argorder): New function, partially extracted from analyze-defgeneric. (shared-initialize-): New function. (initialize-instance-): New function. (make-instance-): New function. (%make-gf): Use make-instance-. (make-fast-gf): Take a lambda-list and argument-precedence-order as arguments. (finalize-fast-gf, gf-never-called-p, compute-dispatch) (compute-applicable-methods-effective-method): Update. * clos-method2.lisp (analyze-method-description): Update. * clos-genfun3.lisp (check-signature-congruence) (check-method-qualifiers, std-add-method, std-remove-method) (std-find-method): Update. (do-defmethod): Create a GF lambda-list, not just a GF signature, from the initial method. (countup): Moved to clos-genfun2.lisp. (analyze-defgeneric): Change the second return value from argorder to an argument-precendence-order list. Use check-gf-lambdalist+argorder. (defgeneric): Update. Pass the argument-precendence-order and also the lambda-list to do-defgeneric. (ensure-generic-function): Likewise. * clos-genfun4.lisp (make-generic-function): Take a lambda-list and argument-precedence-order as arguments. (do-defgeneric): Likewise. Use shared-initialize- to change an existing generic function. (make-generic-function-form): Update. Pass a lambda-list and argument-precedence-order to make-generic-function. * clos-genfun5.lisp (shared-initialize@generic-function) (shared-initialize@standard-generic-function): New functions. (no-applicable-method, missing-required-method, no-primary-method) (no-next-method): Update. (check-generic-function-initialized): New function. (generic-function-name, generic-function-methods) (generic-function-method-class, generic-function-lambda-list) (generic-function-method-combination) (generic-function-argument-precedence-order) (generic-function-declarations): New generic functions. (compute-applicable-methods): Update. * clos-class5.lisp (valid-make-instance-keywords) (valid-reinitialize-instance-keywords) (valid-update-instance-for-redefined-class-keywords) (valid-update-instance-for-different-class-keywords): Update. * clos-genfun6.lisp: New file. * clos.lisp: Load it. * describe.lisp (describe-object@generic-function): Update. * makemake.in (LPARTS): Add clos-genfun6. * po/Makefile.devel (LISPSOURCES): Likewise. 2004-08-04 Sam Steingold * modules/berkeley-db/bdb.c: include and/or (time_stamp): new function (CLOSE_ERRFILE): call time_stamp() before fclose() (my_fopen): call time_stamp() after fopen() (BDB:DB-CLOSE): do not close errfile when DB has a parent * modules/berkeley-db/test.tst (finish-file): always return NIL * modules/berkeley-db/configure.in: check for gettimeofday(), localtime() and strftime(); also check for and 2004-08-04 Sam Steingold * modules/rawsock/rawsock.c (parse_buffer_arg): new function (RECV, SOCK-READ, SEND, SOCK-WRITE): use it to correct STACK handling * modules/rawsock/test.tst: new file 2004-08-04 Sam Steingold * utils/modprep.lisp (print-tables-1): fix _table_size 2004-08-04 Bruno Haible * lispbibl.d (built_in_class_length): New macro. * predtype.d (typep_class, typep_classname): Handle the case of built-in-class correctly. Reported by Sam Steingold. 2004-06-12 Bruno Haible Implement funcallable instances. * lispbibl.d (Class): New field funcallablep. (closure_flags): Rename from cclosure_flags. (Closure_flags): Rename from Cclosure_flags. (Cclosure_seclass): Shift by 4 bits. (Cclosure_set_seclass): Likewise. Don't replace the entire record_flags. (closflags_instance_B, closure_instancep, Closure_instancep): New macros. (Closure_name): Add a conditional for the case of funcallable instances. (TheInstance): Can be closure_type as well. (regular_instance_p): Rename from instancep. (instancep, funcallable_instance_p): New macros. (allocate_cclosure_copy): Update. * genclisph.d (main): Emit definitions for closure_flags, closure_instancep, Closure_instancep, TheClosure. Update TheInstance, instancep. * eval.d (get_closure): Update. (init_cclosures): Construct O(endless_loop_code). * io.d (pr_closure): Treat the case of funcallable instances. * predtype.d (TYPE-OF, CLOS:CLASS-OF): Treat the case of funcallable instances. (heap_statistics_mapper): Likewise. * hashtabl.d (sxhash_atom): Likewise. * record.d (SYS::%MAKE-CLOSURE): Update. (CLOS:SET-FUNCALLABLE-INSTANCE-FUNCTION): New function. (CLOS::FUNCALLABLE-INSTANCE-P): New function. (CLOS::ALLOCATE-FUNCALLABLE-INSTANCE): New function. (do_allocate_instance, update_instance): Use ALLOCATE-FUNCALLABLE-INSTANCE if the instances have to be funcallable. * init.lisp: Export funcallable-standard-class, funcallable-standard-object, set-funcallable-instance-function. * clos-package.lisp: Likewise. * clos-class1.lisp (semi-standard-class): New class. (, *-defclass*): New variables. (standard-class): Inherit from semi-standard-class. (class-current-version, class-fixed-slot-locations, class-instantiated) (class-finalized-direct-subclasses-table, class-prototype): Generalize to work on semi-standard-class. (class-funcallablep): New accessor. (*-instance-size*): Update. () (*-class-version*) (): New variables. (semi-standard-class-p): New function. * clos-class2.lisp () (): New variables. * clos-class3.lisp (ensure-class-using-class-): Add a special case for . (default-direct-superclasses): Special case for . (validate-superclass): Add special support for . (compute-effective-slot-definition-): Use semi-standard-class-p instead of standard-class-p. (compute-slots--around): Likewise. (install-class-direct-accessors): Likewise. (shared-initialize-): Rename from shared-initialize-. (shared-initialize-): New function. (finalize-instance-semi-standard-class): Rename from finalize-instance-standard-class. Use semi-standard-class-p instead of standard-class-p. Initialize the funcallablep slot. Initialize the instance-size differently for funcallable objects. (make-instances-obsolete-): Rename from make-instances-obsolete-standard-class. (make-instances-obsolete--nonrecursive): Rename from make-instances-obsolete-standard-class-nonrecursive. (update-subclasses-for-redefined-class): Use semi-standard-class-p instead of standard-class-p. (update-subclasses-for-redefined-class-nonrecursive): Likewise. Initialize . * clos-class4.lisp (shared-initialize@funcallable-standard-class): New method. * clos-class5.lisp (allocate-instance, make-instance): Generalize the fallback method to class semi-standard-class. (do-change-class): New function. (change-class): Add more methods. (make-instances-obsolete): Update. * clos-class6.lisp (initialize-instance-) (make-instance-): Replace. (class-funcallablep, (setf class-funcallablep)): New functions. (class-current-version, class-fixed-slot-locations, class-instantiated) (class-finalized-direct-subclasses-table, class-prototype): Generalize to class semi-standard-class. (finalize-inheritance, compute-slots): Likewise. (validate-superclass): Add special support for . * compiler.lisp (make-trampoline): New function. * clos-genfun1.lisp (funcallable-standard-class): New class. () (*-class-version*) (*-instance-size*): New variables. (make-instance-) (initialize-instance-) (shared-initialize-): New functions. (funcallable-standard-object): New class. (): New variable. * clos-slotdef1.lisp (convert-direct-slots): Use semi-standard-class-p instead of standard-class-p. * clos-slotdef3.lisp (direct-slot-definition-class) (effective-slot-definition-class): Generalize to class semi-standard-class. * clos-print.lisp (print-object@class): Use semi-standard-class-p instead of standard-class-p. 2004-08-03 Sam Steingold * modules/berkeley-db/bdb.c (CLOSE_ERRFILE): new macro (RESET_ERRFILE): use it (BDB:DBE-CLOSE, BDB:DB-CLOSE): close errfile 2004-08-03 Sam Steingold * genclisph.d (number_immediatep): export (positivep): use it 2004-06-12 Bruno Haible * lispbibl.d (Closure, Cclosure): Rename field clos_name to clos_name_or_class_version. (Closure_name): New macro. * spvw_circ.d (get_circ_mark, get_circ_unmark): Use it. * spvw_debug.d (nobject_out1): Likewise. * eval.d (trace_call, match_cclosure_key, eval_closure): Likewise. (interpret_bytecode_): Likewise. * io.d (pr_cclosure, pr_cclosure_lang): Likewise. * record.d (SYS::CLOSURE-NAME): Likewise. (SYS::%MAKE-CLOSURE, SYS::CONSTANT-INITFUNCTION-P) (CLOS::%SHARED-INITIALIZE, do_initialize_instance) (CLOS::%MAKE-INSTANCE): Likewise. * control.d (FUNCTION-SIDE-EFFECT): Likewise. Check that Cdr(fdef) is a cons before accessing its Car. * functions.lisp (function-lambda-expression, function-name): Use sys::closure-name. * clos-genfun2.lisp (need-gf-already-called-warning-p): Likewise. * disassem.lisp (disassemble): Likewise. * edit.lisp (ed, uncompile): Likewise. 2004-08-02 Sam Steingold * modules/berkeley-db/bdb.c (object_handle): rename to ... (bdb_handle): ... to avoid a non-existent conflict with foreign.d 2004-06-10 Bruno Haible * clos.lisp: Load clos-methcomb3, clos-methcomb4. * clos-methcomb1.lisp (method-combination): Define using defclass, as subclass of metaobject. (): New variable. (initialize-instance-) (make-instance-, copy-method-combination): New functions. * clos-methcomb2.lisp: Use make-instance- instead of make-method-combination. * clos-methcomb3.lisp: New file. * clos-methcomb4.lisp: New file. * clos-genfun3.lisp (analyze-defgeneric): Use typep instead of method-combination-p. * clos-genfun5.lisp (find-method-combination): Moved to clos-methcomb4.lisp. * makemake.in (LPARTS): Add clos-methcomb3, clos-methcomb4. * po/Makefile.devel (LISPSOURCES): Likewise. 2004-07-31 Sam Steingold * modules/berkeley-db/bdb.c (BDB:LOG-FILE): use BUFSIZ instead of non-existent MAX_PATH (BDB:DB-PUT): do not discard db->put() return value 2004-07-30 Sam Steingold * modules/syscalls/calls.c (POSIX:SYSCONF, POSIX:CONFSTR) (POSIX:LIMITS): accept an optional `what' argument (POSIX:MEMORY-STATUS) [win32]: new function * modules/syscalls/posix.lisp (physical-memory): new function (sysconf, confstr, limits) [unix]: remove structures (memory-status) [win32]: new structure * modules/syscalls/configure.in: check for GlobalMemoryStatusEx() and setrlimit() 2004-07-30 Sam Steingold * utils/modprep.lisp (print-tables-1): print the definition of "struct c_lisp_pair" outside of WITH-CONDITIONAL 2004-06-10 Bruno Haible * init.lisp: Export method, standard-method, method-function, method-generic-function, method-lambda-list, method-specializers, method-qualifiers, accessor-method-slot-definition. * clos-package.lisp: Likewise. 2004-06-10 Bruno Haible * clos-method1.lisp (standard-method): Rename function slot to fast-function. Add function slot. (initialize-instance-): Accept either :function or fast-function argument. Rename :wants-next-method-p keyword to clos::wants-next-method-p. * clos-methcomb2.lisp (method-list-to-continuation) (std-method-function-or-substitute): New functions. (callable-method-form-p, call-method-arg2elements-error): New functions. (effective-method-code-bricks): Use callable-method-form-p. Generate different code for CALL-METHOD on methods with slow calling convention. (build-effective-method-function-form): Don't optimize CALL-METHOD on methods with slow calling convention. * clos-genfun3.lisp (std-add-method): Store the initfunction's result in the fast-function. Don't use the initfunction if there is a slow function. * clos-class3.lisp (install-class-direct-accessors): Update. * clos-class5.lisp (shared-initialize, reinitialize-instance) (initialize-instance, allocate-instance, make-instance): Update. * clos-method2.lisp (analyze-method-description): Update. * clos-method3.lisp (initialize-instance@standard-method): Update. (method-function): New generic function. * disassem.lisp (disassemble@standard-method): Show the fast-function if available. 2004-07-29 Sam Steingold * modules/syscalls/calls.c (POSIX::USAGE): return all 16 slots of struct rusage (POSIX::LIMITS): return 11 slots * modules/syscalls/posix.lisp (POSIX::USAGE): slots SHARED-MEMORY, DATA-MEMORY, and STACK-MEMORY replace slot INT-RSS (POSIX::LIMITS): fix slots to comply with SUS 2004-07-29 Bruno Haible * clos-slotdef1.lisp (slot-definition, direct-slot-definition) (effective-slot-definition, structure-direct-slot-definition) (structure-effective-slot-definition): Prefix all slot names with $. * clos-stablehash1.lisp (standard-stablehash): Likewise. * clos-specializer1.lisp (specializer, eql-specializer): Likewise. * clos-class1.lisp (class, slotted-class, structure-class) (standard-class): Likewise. * clos-method1.lisp (standard-method): Likewise. * clos-slotdef2.lisp (structure-effective-slot-definition-initff) (structure-effective-slot-definition-readonly): Update. * clos-slotdef3.lisp (equal-direct-slot): Update. * clos-print.lisp (print-object@class): Update. 2004-06-05 Bruno Haible * clos-method1.lisp (standard-method): Rename slot origin to from-defgeneric. (std-method-from-defgeneric): Rename from std-method-origin. (initialize-instance-): Accept keyword clos::from-defgeneric instead of :origin. * clos-method2.lisp (analyze-method-description): Update. * clos-genfun3.lisp (std-remove-method): Set the from-generic flag of the old method to nil. * clos-genfun4.lisp (do-defgeneric): Update. 2004-06-05 Bruno Haible * clos-method1.lisp (std-method-generic-function): Rename from std-method-gf. (initialize-instance-): Accept keyword clos::gf instead of :gf. * clos-method3.lisp (method-generic-function): New function. * clos-genfun3.lisp (%call-next-method, std-add-method) (std-remove-method): Update. * clos-genfun4.lisp (do-defgeneric): Update. * clos-genfun5.lisp (%no-next-method): Update. 2004-06-05 Bruno Haible * clos-method1.lisp (initialize-instance-): Check the slot-definition argument. 2004-06-05 Bruno Haible * clos-method1.lisp (standard-method): Add documentation slot. (initialize-instance-): Accept :documentation argument. * documentation.lisp (documentation@@t): Access the doc string in the standard-method object, not in the hash table. 2004-06-05 Bruno Haible * clos-method1.lisp (print-object-): Don't signal an error if the method is not yet initialized. 2004-07-28 Sam Steingold composite streams operate on their constituent streams, not themselves * stream.d (unread_char): recursively unread for composite streams (read_char): recursively clear unread_B for composite streams This fixes the REPL bug whereby "1 ," signals an error while "1," does not. Reported by Pascal J.Bourguignon 2004-07-28 Bruno Haible * clos-method1.lisp (standard-method): Rename slot 'function' to $function. (standard-accessor-method): Rename slot 'slot-definition' to $slot-definition. * clos-slotdef1.lisp (slot-definition): Rename slot 'type' to $type. Reported by Christophe Rhodes. 2004-07-28 Bruno Haible * clos-method2.lisp (analyze-method-description): Complete the test whether a lambda-list entry is invalid. 2004-06-04 Bruno Haible Use specializers in methods. * clos-specializer1.lisp (eql-specializer-p, specializer-pretty): New functions. * clos-method1.lisp (standard-method): Rename slot parameter-specializers to specializers. (std-method-specializers): Rename from std-method-parameter-specializers. (initialize-instance-): Accept :specializers argument, instead of :parameter-specializers argument. (print-object-): Update. * clos-method2.lisp (analyze-method-description): Generate calls to INTERN-EQL-SPECIALIZER. Pass :specializers argument, instead of :parameter-specializers argument. * clos-method3.lisp (method-specializers): New function. * clos-class3.lisp (install-class-direct-accessors): Pass :specializers argument, instead of :parameter-specializers argument. * clos-class5.lisp (note-ai-change, note-ii-change, note-ri-change) (note-uirc-change, note-uidc-change, note-si-change): Update. (valid-make-instance-keywords) (valid-update-instance-for-redefined-class-keywords) (valid-update-instance-for-different-class-keywords): Update. (shared-initialize, reinitialize-instance, initialize-instance) (allocate-instance, make-instance): Pass :specializers argument, instead of :parameter-specializers argument. * clos-class6.lisp (class-name): Don't undefine temporarily. * clos-methcomb2.lisp (method-applicable-p, sort-applicable-methods): Update. (same-specializers-p): Just compare with EQ. * clos-genfun2.lisp (compute-dispatch): Update. Use eql-specializer-p, eql-specializer-object. * clos-genfun3.lisp (methods-agree-p): Update. (std-find-method): Update. Convert (EQL object) lists to specializers. * clos-genfun4.lisp (*allow-making-generic*): New variable. (do-defgeneric): Don't signal an error if *allow-making-generic* is true. * clos-genfun5.lisp (dispatching-arg-p): Update. (dispatching-arg-type): Update. * describe.lisp (describe-object@generic-function): Update. Show a name instead of a class only if the class has a proper name. 2004-07-27 Sam Steingold * control.d (FUNCTION-SIDE-EFFECT): fix G++ compilation * record.d (update_instance): avoid a G++ warning 2004-07-26 Sam Steingold interface to the LOG subsystem * modules/berkeley-db/bdb.c (BDB:DBE-SET-OPTIONS, BDB:DBE-GET-OPTIONS): handle log options (dbe_get_tmp_dir, dbe_get_tx_max, dbe_get_tx_timestamp): define with DEFINE_DBE_GETTER1 (dbe_get_lg_bsize, dbe_get_lg_dir, dbe_get_lg_max) (dbe_get_lg_regionmax, check_lsn, make_lsn): new functions (BDB:DB-STAT, BDB:LOCK-STAT, BDB:TXN-STAT): guard free() with begin_system_call()/end_system_call() (BDB:LOG-ARCHIVE, BDB:LOG-FILE, BDB:LOG-FLUSH, BDB:LOG-PUT) (BDB:LOG-STAT, BDB:LOG-CURSOR, BDB:LOGC-CLOSE, BDB:LOGC-GET) (BDB:LOG-COMPARE): implement (BDB:TXN-STAT): use make_lsn() and uint32_to_I() * modules/berkeley-db/dbi.lisp: export LOG symbols (db-lock-stat): remove the prefixes from slot names (db-log-stat): new struct (close): add a method for LOGC 2004-07-27 Sam Steingold * clos-method2.lisp (analyze-method-description): signal an error when a lambda-list entry is invalid 2004-06-04 Bruno Haible * clos-method1.lisp (standard-method): Add lambda-list slot. (initialize-instance-): Accept :lambda-list argument. Check it. Compute the signature from it. * clos-method2.lisp (analyze-method-description): Add a :LAMBDA-LIST initializer to the generated form. * clos-method3.lisp (method-lambda-list): New function. * clos-class3.lisp (install-class-direct-accessors): Provide :lambda-list arguments for all methods. * clos-class5.lisp (shared-initialize, reinitialize-instance) (initialize-instance, allocate-instance, make-instance): Likewise. 2004-06-03 Bruno Haible * clos-method1.lisp (initialize-instance-): Check the qualifiers argument. 2004-07-26 Sam Steingold * modules/berkeley-db/bdb.c (BDB:DBE-SET-OPTIONS): finish the set_lk_conflicts() interface * genclisph.d (main): export array_atype() * array.d (array_atype): global, not local * genclisph.d (main): export array_rank() and get_array_dimensions() 2004-07-26 Bruno Haible * lispbibl.d (array_rank, get_array_dimensions): New declarations. * array.d (array_rank, get_array_dimensions): New functions. 2004-06-02 Bruno Haible Make METHOD objects CLOS STANDARD-OBJECT instances. * clos.lisp: Include clos-method4. * clos-method1.lisp (method): Define through defclass. (): New variable. (standard-method): Define through defclass. (): New variable. (initialize-instance-): New function. (make-instance-): New function. (print-object-): Rename from print-std-method. (standard-accessor-method): Define through defclass. (): New variable. (initialize-instance-): New function. (standard-reader-method): Define through defclass. (): New variable. (make-instance-): New function. (standard-writer-method): Define through defclass. (): New variable. (make-instance-): New function. * clos-methcomb2.lisp (compute-effective-method-function): Use make-instance- instead of make-standard-method. * clos-method2.lisp (analyze-method-description): Likewise. * clos-method3.lisp (initialize-instance@standard-method): New method. (initialize-instance@standard-accessor-method): New method. (reinitialize-instance@method): New method. * clos-class5.lisp (shared-initialize, reinitialize-instance) (initialize-instance, allocate-instance, make-instance): Use make-instance- instead of make-standard-method. * clos-method4.lisp: New file. * clos-print.lisp (print-object): Update. * makemake.in (LPARTS): Add clos-method4. * po/Makefile.devel (LISPSOURCES): Add clos-method4. * utils/clispload.lsp (*expected-failures*): Remove TYPES.3, STANDARD-METHOD-CPL. 2004-07-23 Sam Steingold interface to the LOCK subsystem * modules/berkeley-db/bdb.c (OH_INVALID_IS_NULL): new object_handle_t (object_handle): handle it (BDB:DBE-SET-OPTIONS, BDB:DBE-GET-OPTIONS): handle lock options (fill_dbt): use return instead of pointers to return type (BDB:LOCK-DETECT, BDB:LOCK-GET, BDB:LOCK-ID, BDB:LOCK-ID-FREE) (BDB:LOCK-PUT, BDB:LOCK-CLOSE, BDB:LOCK-STAT): implement * modules/berkeley-db/dbi.lisp (dblock, db-lock-stat): new structs (close): define a method for dblock 2004-07-23 Sam Steingold * utils/modprep.lisp: DEFCHECKER can now handle constants that come from "enum" and therefore not available to CPP 2004-07-22 Sam Steingold * genclisph.d (main): export CLSTEXT 2004-06-05 Bruno Haible * clos-class3.lisp: Define and its subclasses and here. * clos-slotdef2.lisp: Move the class definition forms to clos-class3.lisp. * clos-specializer2.lisp: Likewise. 2004-06-05 Bruno Haible All specializers must be types. * type.lisp (typep, subtype-integer): Treat EQL-specializers like EQL forms. * subtypep.lisp (canonicalize-type): Likewise. * compiler.lisp (c-TYPEP): Likewise. 2004-06-04 Bruno Haible * defs1.lisp (memoized): New macro. * clos-class3.lisp (install-class-direct-accessors): Use it. 2004-06-01 Bruno Haible * clos-class3.lisp (install-class-direct-accessors): For slots at fixed slot locations, generate more efficient accessors that use SYS::%RECORD-REF instead of SLOT-VALUE. 2004-07-22 Sam Steingold * stream.d (bitbuff_ixs_sub): fix bitbufferptr initialization Reported by Randolph Udodenko 2004-06-01 Bruno Haible Thinner type checks. * clos-macros.lisp (accessor-typecheck): New macro. (error-accessor-typecheck): New function, moved here from clos-class3.lisp. * clos-class3.lisp (error-accessor-typecheck): Move function away. * clos-slotdef3.lisp: Use error-accessor-typecheck instead of assert. * clos-specializer3.lisp: Likewise. * clos-class6.lisp: Likewise. 2004-05-31 Bruno Haible * init.lisp: Export standard-slot-definition. * clos-package.lisp: Likewise. * clos-slotdef1.lisp (*-defclass*): New variable. (standard-direct-slot-definition, standard-effective-slot-definition): Inherit from standard-slot-definition. * clos-slotdef2.lisp: Define class . 2004-07-21 Sam Steingold CLOSE recursively closes all dependents * modules/berkeley-db/bdb.c (wrap_finalize): call MKHANDLE * modules/berkeley-db/dbi.lisp (dbe, db, dbc, txn, logc, mpoolfile): inherit from BDB-HANDLE * genclisph.d (main): export copy_list() 2004-07-21 John Hinsdale * modules/oracle/oracle.lisp: Handle FLOAT type properly 2004-05-31 Bruno Haible Implement (SETF CLASS-NAME) as the MOP says. * clos-class3.lisp (ensure-class-using-class-): Don't pass :name initializer to reinitialize-instance. (reinitialize-instance-): Accept :name argument. Don't call install-class-direct-accessors when not needed. * clos-class6.lisp ((setf class-name)): Call reinitialize-instance. 2004-05-31 Bruno Haible Let class redefinition go through REINITIALIZE-INSTANCE. * clos-class3.lisp (ensure-class-using-class-): Call reinitialize-instance. (reinitialize-instance-): New function, extracted from ensure-class-using-class-. * clos-class4.lisp (reinitialize-instance@class): New method. 2004-07-20 Sam Steingold * modules/rawsock/rawsock.c (configdev): fix STACK references 2004-05-31 Bruno Haible Move install-class-direct-accessors call to initialize-instance. * clos-class3.lisp (ensure-class-using-class-): Don't call install-class-direct-accessors after making a new class. (initialize-instance-) (initialize-instance-) (initialize-instance-): Call install-class-direct-accessors here. * clos-class6.lisp (initialize-instance@class): New method. 2004-05-31 Bruno Haible Make it possible to choose between methods and functions as accessors. * lispbibl.d (Class): Add generic_accessors field. * clos-class1.lisp (slotted-class): Add generic-accessors slot. (class-generic-accessors, (setf class-generic-accessors)): New functions. (shared-initialize-): Initialize generic-accessors slot. * clos-class3.lisp (DEFCLASS): Accept :GENERIC-ACCESSORS option. If nil, generate function declarations instead of method declarations. (*compile-accessor-functions*): New variable. (install-class-direct-accessors): If generic-accessors is nil, create normal functions instead of methods. (error-accessor-typecheck): New function. (shared-initialize-): Accept :generic-accessors argument. (define-structure-class): Pass :generic-accessors nil. (shared-initialize-): Accept :generic-accessors argument. * clos-class4.lisp (shared-initialize@structure-class): Accept :generic-accessors argument. (shared-initialize@standard-class): Likewise. * clos-class6.lisp (class-generic-accessors) ((setf class-generic-accessors)): New generic functions. * compiler.lisp: Set *compile-accessor-functions* to nil temporarily. 2004-05-31 Bruno Haible * lispbibl.d (Class): Move the direct_accessors field. * clos-class1.lisp (slotted-class): Add direct-accessors slot. (standard-class): Remove direct-accessors slot. (class-direct-accessors): Now belongs to slotted-class. (shared-initialize-): Initialize direct-accessors slot. * clos-class3.lisp (shared-initialize-): Don't initialize direct-accessors slot here. * clos-class6.lisp (class-direct-accessors): Now belongs to slotted-class. 2004-07-19 Sam Steingold * spvw_language.d (init_language): save the whales, free the mallocs! 2004-07-19 Sam Steingold * modules/berkeley-db/bdb.c (fill_dbt): do not allocate data on stack when DBT size is divisible by sizeof(uintD) (BDB:CURSOR-GET, BDB:CURSOR-PUT): pass DBC->dbp to record_length() (BDB:DB-SET-OPTIONS, BDB:DB-GET-OPTIONS): handle BT_MINKEY, H_FFACTOR, H_NELEM and Q_EXTENTSIZE 2004-05-30 Bruno Haible * clos-class3.lisp (install-class-direct-accessors) (remove-accessor-methods, add-accessor-methods): New functions, extracted from ensure-class-using-class-. (ensure-class-using-class-): Use them. 2004-06-13 Bruno Haible * lambdalist.lisp (analyze-generic-function-lambdalist): New function. * clos-genfun3.lisp (analyze-defgeneric-lambdalist): Use it. 2004-05-30 Bruno Haible Use SHARED-INITIALIZE instead of INITIALIZE-INSTANCE for the class initialization behaviour. * clos-stablehash1.lisp (shared-initialize-): Replaces initialize-instance-. * clos-stablehash2.lisp (shared-initialize@standard-stablehash): Replaces initialize-instance@standard-stablehash. * clos-specializer1.lisp (shared-initialize-): Replaces initialize-instance-. (shared-initialize-): Replaces initialize-instance-. (initialize-instance-): New function. * clos-specializer2.lisp (shared-initialize@specializer): Replaces initialize-instance@specializer. (shared-initialize@eql-specializer): Replaces initialize-instance@eql-specializer. * clos-specializer3.lisp (initialize-instance-): Set to #'initialize-instance. * clos-class1.lisp (shared-initialize-): Replaces initialize-instance-. (shared-initialize-): Replaces initialize-instance-. * clos-class3.lisp (DEFCLASS): Always pass :DEFAULT-INITARGS, :DOCUMENTATION, :FIXED-SLOT-LOCATIONS arguments. (ensure-class-using-class-): In the redefinition case, call shared-initialize instead of initialize-instance. (shared-initialize-): Replaces initialize-instance-. (initialize-instance-): New function. (shared-initialize-): Replaces initialize-instance-. (initialize-instance-): New function. (shared-initialize-): Replaces initialize-instance-. (initialize-instance-): New function. * clos-class4.lisp (shared-initialize@class): Replaces initialize-instance@class. (shared-initialize@built-in-class): Replaces initialize-instance@built-in-class. (shared-initialize@structure-class): Replaces initialize-instance@structure-class. (shared-initialize@standard-class): Replaces initialize-instance@standard-class. * clos-class6.lisp (initialize-instance-) (initialize-instance-) (initialize-instance-): Set to #'initialize-instance. 2004-07-18 Sam Steingold invalidate Fpointer instead of making it NULL on close * modules/berkeley-db/bdb.c(object_handle_t): rename OH_ADDRESS to OH_INVALIDATE (object_handle): invalidate Fpointer on OH_INVALIDATE; (BDB:DB-CLOSE, BDB:CURSOR-CLOSE, BDB:TXN-ABORT, BDB:TXN-COMMIT) (BDB:TXN-DISCARD): use OH_INVALIDATE instead of OH_ADDRESS 2004-06-10 Bruno Haible * clos-methcomb2.lisp (build-effective-method-function-form): Add generic-function-variable argument. (compute-effective-method-as-function-form): Handle :GENERIC-FUNCTION effective-method option. 2004-05-30 Bruno Haible Make class definition and redefinition customizable. * init.lisp: Export ensure-class, ensure-class-using-class. * clos-package.lisp: Likewise. * clos-class3.lisp (ensure-class-using-class-): New function, extracted from ensure-class. (ensure-class-using-class): New function. (ensure-class): Just call ensure-class-using-class. * clos-class6.lisp (ensure-class-using-class): New generic function. 2004-05-30 Bruno Haible * clos-class5.lisp (finalize-inheritance): Move to ... * clos-class6.lisp (finalize-inheritance): ... here. Add method for CLASS. 2004-07-16 Sam Steingold * modules/berkeley-db/bdb.c (BDB:DB-SET-OPTIONS, BDB:DB-GET-OPTIONS): accept :RE_SOURCE 2004-06-13 Bruno Haible * lambdalist.lisp (analyze-method-combination-lambdalist): New function. * clos-methcomb2.lisp (check-em-arguments-option): Use it instead of analyze-lambdalist. (build-effective-method-function-form): Likewise. 2004-06-10 Bruno Haible Add error checking for effective-method options. * clos-methcomb2.lisp (check-em-arguments-option) (check-em-generic-function-option): New functions, extracted from define-method-combination. (check-em-duplicates-option): New function. (compute-effective-method-as-function-form): Call check-em-arguments-option and check-em-duplicates-option. (define-method-combination): Use check-em-arguments-option and check-em-generic-function-option. 2004-05-30 Bruno Haible * clos-print.lisp (print-object): Add methods for slot-definition and eql-specializer. 2004-05-29 Bruno Haible Make the reader/writer method classes customizable. * init.lisp: Export standard-reader-method, standard-writer-method, reader-method-class, writer-method-class. * clos-package.lisp: Likewise. * clos-class2.lisp (, ): New variables. * clos-class3.lisp (ensure-class): Call reader-method-class to determine the class of reader methods, and writer-method-class to determine the class of writer methods. Add :slot-definition to the accessor method's initargs. (reader-method-class, writer-method-class): New functions. * clos-method1.lisp: Initialize , . * clos-class6.lisp (reader-method-class, writer-method-class): New generic functions. 2004-07-15 Sam Steingold support binary i/o for fixed-record-length databases * modules/berkeley-db/bdb.c (fill_dbt): accept r_len argument for writing numbers to fixed record length databases (record_length): new function (BDB:DB-PUT): fix for :QUEUE and :RECNO databases (gb_size): remove (giga_byte): new DEFVAR (size_to_giga_bytes): new function (BDB:DB-SET-OPTIONS): accept :CACHE for compatibility with BDB:DB-GET-OPTIONS and :RE_DELIM + :RE_PAD (DEFINE_DB_GETTER): rename to DEFINE_DB_GETTER1 (DEFINE_DB_GETTER2): new macro (get_re_delim, get_re_len, get_re_pad): define with it (BDB:DB-GET-OPTIONS): accept :RE_DELIM + :RE_PAD 2004-07-15 Sam Steingold * makemake.in (distrib) [win32gcc]: distribute linkkit because the user may have mingw installed 2004-06-10 Bruno Haible More DEFINE-METHOD-COMBINATION error checking. * clos-methcomb2.lisp (specializers-agree-p, same-specializers-p): New functions, from clos-genfun3.lisp. (call-method-duplicates-error): New function. (effective-method-code-bricks): Add a duplicates argument. (build-effective-method-function-form): Likewise. (compute-effective-method-as-function-form): Support a :DUPLICATES effective-method option. (long-form-method-combination-expander): Convert the long-expander's second value into a :DUPLICATES effective-method option. (long-form-method-combination-collect-duplicates): New function. (compute-method-partition-lambdas): Generate code to check for duplicates. * clos-genfun3.lisp (specializers-agree-p, same-specializers-p): Moved to clos-methcomb2.lisp. 2004-05-29 Bruno Haible Move the definition of accessor methods from DEFCLASS to ENSURE-CLASS. * clos-class3.lisp (defclass): Don't generate accessor-def-forms. (ensure-class): Generate accessors here, for all direct slots. 2004-07-14 John Hinsdale * modules/oracle/orafns.c: On SQL error, truncate echoed bind parameters for readability and to avoid buffer overflows. Also grab parse error offset into a ub2, not ub4 (misread docs). 2004-07-14 Sam Steingold * genclisph.d (main): export mark_fp_invalid() & record_flags_set() * modules/pcre/cpcre.c (PCRE:PCRE-FREE): use it 2004-07-14 John Hinsdale * modules/oracle/orafns.c: Handle obscure Oracle requirement that implicit describes fetch column precision in two-byte destination. Allows Oracle module to work under Solaris (Oracle 8.1.7). 2004-07-13 Sam Steingold * genclisph.d (main): rename floor() to ifloor() to avoid conflict with POSIX floor() Reported by John Hinsdale 2004-07-13 John Hinsdale * modules/oracle/orafns.c: Fix bugs in error reporting; use better supported calls in OCI to initialize; report initialization errors better 2004-06-10 Bruno Haible * defs2.lisp (simple-destructuring-bind): New macro. * clos-methcomb2.lisp (short-form-method-combination-expander): Inline compute-short-form-effective-method-form. Remove redundant qualifiers check. Use simple-destructuring-bind. (compute-short-form-effective-method-form): Remove function. 2004-05-29 Bruno Haible Make the class-default-initargs computation customizable. * init.lisp: Export compute-default-initargs. * clos-package.lisp: Likewise. * clos-class3.lisp (compute-default-initargs-): New function. (compute-default-initargs): New function. (checked-compute-default-initargs): New function. (initialize-instance-) (finalize-instance-standard-class): Call it. * clos-class6.lisp (compute-default-initargs): New generic function. 2004-07-13 Bruno Haible * intelem.d (UDS_to_I, DS_to_I): Make global. * lispbibl.d (UDS_to_I, DS_to_I): New declarations, * genclisph.d (main): Declare UDS_to_I, DS_to_I. Don't declare allocate_bignum. 2004-07-12 Sam Steingold * modules/berkeley-db/bdb.c (wrap_finalize): third argument is an object, not gcv_object_t, because "&``" does not work with -O (BDB:ENV-SET-OPTIONS): accept :TIMEOUT for compatibility with BDB:ENV-GET-OPTIONS * genclisph.d (check_list): export 2004-07-12 Sam Steingold * init.lisp (defun): when *DEFUN-ACCEPT-SPECIALIZED-LAMBDA-LIST* is non-nil, convert specialized lambda lists to type declarations * misc.d (SYS::SET-ANSI): set *DEFUN-ACCEPT-SPECIALIZED-LAMBDA-LIST* * spvw.d (init_symbol_values): initialize it * constsym.d (defun_accept_spelalist): add 2004-06-10 Bruno Haible * clos-methcomb1.lisp (method-combination): New slot long-expander. * clos-methcomb2.lisp (long-form-method-combination-expander): Remove last argument. Fetch it from the method-combination instead. (define-method-combination): Simplify long-form expansion. 2004-05-30 Bruno Haible Make the class-slots computation customizable. * init.lisp: Export compute-slots. * clos-package.lisp: Likewise. * clos-slotdef1.lisp (slot-definition): Restrict type of allocation slot. (initialize-instance-): Check the allocation argument here. (initialize-instance-) (initialize-instance-): ... not here. (standard-effective-slot-definition-p): New function. * clos-class3.lisp (compute-slots--primary): New function, extracted from std-compute-slots. (compute-slots--around): New function, based on std-compute-slots and std-layout-slots. (compute-slots, checked-compute-slots): New functions. (std-compute-slots, std-layout-slots): Remove functions. (compute-instance-size, compute-shared-size) (create-shared-slots-vector, compute-slot-location-table): New functions. (initialize-instance-) (finalize-instance-standard-class): Use the compute-slots functions instead of std-compute-slots, std-layout-slots. * clos-class6.lisp (compute-slots): New generic function. 2004-06-09 Bruno Haible * clos-methcomb2.lisp (compute-effective-method-): New function, extracted from compute-effective-method-as-function-form. (compute-effective-method): New function. (compute-effective-method-as-function-form): Call compute-effective-method. * clos-genfun5.lisp (compute-effective-method): New generic function. 2004-06-09 Bruno Haible * clos-genfun2.lisp (compute-effective-method-as-function): Small optimization. 2004-05-29 Bruno Haible * init.lisp: Export compute-effective-slot-definition. * clos-package.lisp: Likewise. * clos-class3.lisp (compute-effective-slot-definition-): New function, extracted from std-compute-slots. (compute-effective-slot-definition): New function. (std-compute-slots): Use it. * clos-class6.lisp (compute-effective-slot-definition): New generic function. 2004-07-01 Sam Steingold keys and values can also be STRING and (INTEGER 0) * modules/berkeley-db/bdb.c (SYSCALL1): new macro (with clean-up) (BDB:ENV-CLOSE, BDB:DB-CLOSE, BDB:DB-DEL, BDB:DB-PUT) (BDB:DB-KEY-RANGE, BDB:CURSOR-CLOSE, BDB:CURSOR-PUT): use it (BDB:ENV-SET-OPTIONS): DATA_DIR can be a list (BDB:ENV-GET-OPTIONS, BDB:DB-GET-OPTIONS): return all as a plist, not as multiple values (dbt_o_t): new typedef (check_dbt_type, check_dbt_object, free_dbt): new functions (fill_dbt): also return the type of the object (dbt_to_object): accept the object type as the second argument (BDB:DB-GET): accept :TYPE keyword argument (BDB:DB-OPEN): do not call physical_namestring() on strings because then it is resolved by Berkeley-DB relative to data_dirs (BDB:DB-SET-OPTIONS, BDB:DB-GET-OPTIONS): accept :RE_LEN (DEFINE_DB_GETTER): new macro (db_get_lorder, db_get_pagesize): use it (db_get_re_len): new function (BDB:CURSOR-GET): return KEY and VAL with specified type (BDB:TXN-BEGIN): finalize TXN with BDB::TXN-DISCARD (BDB:TXN-COMMIT, BDB:TXN-DISCARD, BDB:TXN-ABORT): invalidate TXN * modules/berkeley-db/dbi.lisp (with-cursor): new macro (with-open-db): must use BDB:DB-CREATE and then BDB:DB-OPEN (close): add a TXN method * genclisph.d (ceiling, wbit): enabled (allocate_bignum): add 2004-06-30 Sam Steingold * spvw.d (main): reset `argv_for' to `for_exec' after processing the non-option argument so that "-i" will not disable scripting Reported by VAUCHER L Ext SIRES * clisp-link.in: properly intersperse "-i" in TO_LOAD and TO_PRELOAD 2004-06-28 Sam Steingold * modules/berkeley-db/bdb.c (object_handle_t): new typedef (object_handle): third argument is an object_handle_t, not bool (object_handle_): remove update all calls to object_handle_() and object_handle() (env_get_home_dir, env_get_open_flags, db_get_cache): accept second argument errorp (BDB:DB-STAT): add missing slot bt_over_pg (BDB:CURSOR-CLOSE): fix STACK handling (BDB:CURSOR-GET): fix keyword list * modules/berkeley-db/test.tst: new file * modules/berkeley-db/dbi.lisp (db-stat-btree): fix slot names 2004-06-27 Sam Steingold * modules/berkeley-db/dbi.lisp (bdb-error): new condition * modules/berkeley-db/bdb.c (error_message): new static variable (error_callback, error_message_reset): new functions (error_bdb): signal BDB-ERROR, not ERROR; use error_message (BDB:ENV-CREATE, BDB:DB-CREATE): set error callback to error_callback() (BDB:ENV-SET-OPTIONS): fix STACK access (env_get_home_dir, env_get_open_flags, BDB:DB-GET, BDB:CURSOR-GET): call error_message_reset() 2004-06-26 Arseny Slobodjuk Fix handling of relative shortcuts on mingw. * w32shell.c (augment_relative_pathname): new function. (resolve_shell_shortcut_more): recurrent resolution of shortcuts to symbolic names. Handling of relative shortcuts. (real_path): fix sharename handling (not tested). * pathname.d (FullName): rewritten to process ".." and ".". 2004-06-09 Bruno Haible * clos-methcomb1.lisp (method-combination): Change calling convention of expander. * clos-methcomb2.lisp (build-effective-method-function-form): Rename from compute-effective-method-function. Take arguments-lambda-list as additional argument. (compute-effective-method-as-function-form): After calling the expander, call build-effective-method-function-form. (standard-method-combination-expander): Return two values now, instead of the entire function-form. (compute-short-form-effective-method-form): Likewise. Simplify. (short-form-method-combination-expander): Don't call compute-effective-method-function on the result. (long-form-method-combination-expander): Likewise. (define-method-combination): Update. 2004-05-29 Bruno Haible Make the class-precedence-list computation customizable. * init.lisp: Export compute-class-precedence-list. * clos-package.lisp: Likewise. * clos-class3.lisp (compute-class-precedence-list-) (compute-class-precedence-list, checked-compute-class-precedence-list): New functions. (initialize-instance-) (initialize-instance-) (finalize-instance-standard-class): Use checked-compute-class-precedence-list instead of std-compute-cpl. * clos-class6.lisp (compute-class-precedence-list): New generic function. 2004-06-25 Sam Steingold * lispbibl.d, spvw.d, xthread.d, zthread.d (thread_t): rename to clisp_thread_t to avoid conflict with Darwin Reported by Denis Bueno 2004-06-09 Bruno Haible * clos-methcomb2.lisp (compute-effective-method-as-function-form): New function. * clos-genfun2.lisp (compute-effective-method-as-function): Use it. 2004-06-08 Bruno Haible * init.lisp: Export find-method-combination. * clos-package.lisp: Likewise. * clos-methcomb2.lisp (find-method-combination--): New function. (find-method-combination): New function. * clos-genfun5.lisp (find-method-combination): New generic function. 2004-05-29 Bruno Haible * init.lisp: Export add-direct-subclass, remove-direct-subclass. * clos-package.lisp: Likewise. * clos-class3.lisp (add-direct-superclass-internal): Rename from add-direct-superclass. (remove-direct-superclass-internal): Rename from remove-direct-superclass. (add-direct-superclass, remove-direct-superclass): New functions. * clos-class6.lisp (add-direct-superclass, remove-direct-superclass): New generic functions. 2004-06-24 Sam Steingold * modules/berkeley-db/bdb.c (DB-GET-OPTIONS, DB-SET-OPTIONS): add * modules/berkeley-db/dbi.lisp: export them 2004-06-24 Sam Steingold * utils/modprep.lisp (parse-signature): check that END is non-NIL 2004-06-24 Sam Steingold * modules/berkeley-db/bdb.c (BDB:DB-GET, BDB:CURSOR-GET): separate options and actions 2004-06-24 Sam Steingold * pathname.d (physical_namestring): new function, for modules * genclisph.d (physical_namestring): export it * modules/berkeley-db/bdb.c, modules/syscalls/calls.c: use it 2004-06-24 Sam Steingold * modules/berkeley-db/bdb.c (ENV-GET-OPTIONS, ENV-SET-OPTIONS): get and set tas_spins, shm_key, timeouts and encryption (BDB:DB-JOIN, BDB:DB-KEY-RANGE, BDB:DB-VERIFY): new functions 2004-06-08 Bruno Haible * clos-methcomb1.lisp (get-method-combination): Rename from find-method-combination. Make argument required. i18n. ((setf get-method-combination)): Rename from (setf find-method-combination). * clos-methcomb2.lisp (define-method-combination) (coerce-to-method-combination): Update. * clos-genfun2.lisp (%make-gf): Update. * documentation.lisp (documentation, (setf documentation)): Update. 2004-06-08 Bruno Haible * clos-methcomb1.lisp (print-object-): Rename from print-method-combination. * clos-print.lisp (print-object): Update. 2004-06-08 Bruno Haible * clos-methcomb1.lisp (method-combination): Reorder slots. * clos-methcomb2.lisp (define-method-combination): Don't set :identity-with-one-argument with long-form method-combination. 2004-06-08 Bruno Haible * clos-methcomb2.lisp (short-form-method-combination-expander): Remove useless typecase. (long-form-method-combination-expander): Likewise. The user-defined DEFINE-METHOD-COMBINATION body must return a form. 2004-05-29 Bruno Haible Change the metaclass of CLASS from STRUCTURE-CLASS to STANDARD-CLASS. * lispbibl.d (Class): Change to an extension of Instance. Remove metaclass field. Add direct_generic_functions, direct_methods, initialized fields. (TheClass): Define using TheInstance. (if_classp): Use instancep and test for the three most frequent metaclasses directly. * predtype.d (CLOS::%DEFCLOS): Accept 3 class-versions and . * hashtabl.d (sxhash_atom): For CLOS instances, use the class name, not the class itself. * init.lisp: Export the symbols CLASS, BUILT-IN-CLASS, STRUCTURE-CLASS, STANDARD-CLASS, CLASS-NAME, CLASS-DIRECT-SUPERCLASSES, CLASS-PRECEDENCE-LIST, CLASS-DIRECT-SUBCLASSES, CLASS-DIRECT-SLOTS, CLASS-SLOTS, CLASS-DIRECT-DEFAULT-INITARGS, CLASS-DEFAULT-INITARGS, VALIDATE-SUPERCLASS. Load clos-metaobject1, clos-class1, clos-class2, clos-class3. * type.lisp (def-atomic-type): Don't remove the macro after use. * clos-package.lisp: Export the symbols CLASS, BUILT-IN-CLASS, STRUCTURE-CLASS, STANDARD-CLASS, CLASS-NAME, CLASS-DIRECT-SUPERCLASSES, CLASS-PRECEDENCE-LIST, CLASS-DIRECT-SUBCLASSES, CLASS-DIRECT-SLOTS, CLASS-SLOTS, CLASS-DIRECT-DEFAULT-INITARGS, CLASS-DEFAULT-INITARGS, VALIDATE-SUPERCLASS. * clos-metaobject1.lisp: New file. * clos-slotdef1.lisp (slot-definition): Inherit from metaobject. * clos-specializer1.lisp (specializer): Inherit from metaobject. * clos-class1.lisp: New file. * clos-class2.lisp: Update comments. * clos-class3.lisp (empty-ht): Moved to clos-class1.lisp. (structure-stablehash): Moved to clos-stablehash2.lisp. (class, built-in-class, slotted-class, structure-class, standard-class): Moved to clos-class1.lisp. (%defclos): Pass 3 class-versions and . (ensure-class): Tweaks for bootstrapping. When redefining a metaobject class, warn but don't obsolete the instances. Before changing a member of the class-precedence-list from symbol to class, call check-allowed-superclass. Update defaulting of direct-superclasses. (add-default-superclass): Remove function. (class-name, default-direct-superclasses): New functions. (validate-superclass, check-allowed-superclass): New functions. (std-compute-slots): Remove second argument. Use class-direct-slots for all kinds of superclasses. (make-instance-): Rename from make-instance-built-in-class. Don't call check-metaclass-mix here. Use allocate-metaobject-instance. (initialize-instance-): Rename from initialize-instance-built-in-class. Call check-metaclass-mix here. Call superclass initializer. (make-instance-): Rename from make-instance-structure-class. Use allocate-metaobject-instance. (initialize-instance-): Rename from initialize-instance-structure-class. Call superclass initializer. Lots of changes. (define-structure-class): Update. (make-instance-): Rename from make-instance-standard-class. Use allocate-metaobject-instance. (initialize-instance-): Rename from initialize-instance-standard-class. Call superclass initializer. Lots of changes. (finalize-class): Before changing a member of the class-precedence-list from symbol to class, call check-allowed-superclass. (def-unbound): Remove function. (finalize-inheritance-standard-class): Use sys::%unbound. (make-instances-obsolete-standard-class-nonrecursive): For metaobject classes, just warn. (update-subclasses-for-redefined-class): Don't call add-default-superclass. (update-subclasses-for-redefined-class-nonrecursive): Likewise. (list-all-finalized-subclasses): Likewise. Completely revamped bootstrapping. (%defclos): Pass 3 class-versions and . * defstruct.lisp (clos::define-structure-class) (clos::undefine-structure-class): Remove preliminary functions. (structure-object): Remove definition, now done in clos-class3.lisp. * clos.lisp: Load clos-class[456] instead of clos-class[235]. * clos-slotdef2.lisp: Don't use #'make-instance here. * clos-stablehash2.lisp (): Move definition to clos-class3.lisp. (structure-stablehash): Moved to here. * clos-specializer2.lisp: Don't use #'make-instance here. * clos-class4.lisp: New file. * clos-class5.lisp (class-name, (setf class-name)): Move to clos-class6.lisp. (initialize-instance@standard-class) (initialize-instance@structure-class): Move to clos-class3.lisp. (class-prototype, class-finalized-p): Move to clos-class6.lisp. * clos-genfun2.lisp (*dynamically-modifiable-generic-function-names*): Add validate-superclass. * clos-slotdef3.lisp: Use #'make-instance here. * clos-specializer3.lisp: Likewise. * clos-class6.lisp: New file. * clos-print.lisp: Update. * compiler.lisp (block, tagbody): Remove the corresponding classes. * gray.lisp: Customize validate-superclasses. * condition.lisp (define-condition): Update handling of default direct-superclasses. * makemake.in (LPARTS): Add clos-metaobject1, clos-class[123] and clos-class[456]. * po/Makefile.devel (LISPSOURCES): Likewise. * utils/clispload.lisp (*expected-failures*): Remove BUILT-IN-CLASS-CPL and STANDARD-CLASS-CPL. 2004-06-23 Sam Steingold * modules/berkeley-db/dbi.lisp: export TXN functions (lsn, db-txn-active, db-txn-stat): new structures * modules/berkeley-db/bdb.c (BDB:ENV-CLOSE): clean-up the STACK (set_verbose): new function (BDB:ENV-SET-OPTIONS): use it to fix verbosity handling (env_get_verbose): rename from env_verbose() (env_get_tmp_dir): rename from env_tmp_dir() (env_get_data_dirs): rename from env_data_dirs() (env_get_tx_max): rename from env_tx_max() (env_get_tx_timestamp): rename from env_tx_timestamp() (env_get_home_dir, env_get_open_flags, env_get_flags): add (BDB:ENV-GET-OPTIONS): also return home dir and open flags (BDB:DB-OPEN): use posfixnum_default2() (check_gid): new function (BDB:TXN-PREPARE): use it (gid_to_vector): new function (BDB:TXN-RECOVER): use it (BDB:TXN-STAT): new function (BDB:DB-STAT): fix memory management 2004-06-23 Sam Steingold * genclisph.d (posfixnum_default2): new function (posfixnum_default): defined in terms of posfixnum_default2() 2004-06-23 Sam Steingold * modules/berkeley-db/bdb.c (ENV-GET-OPTIONS): accept :DB_XIDDATASIZE (check_byte_vector): new function (fill_dbt): use it (TXN-CHECKPOINT, TXN-PREPARE, TXN-RECOVER, TXN-SET-TIMEOUT): new functions 2004-06-23 Sam Steingold * modules/pcre/cpcre.c (PCRE:PCRE-EXEC): signal an error instead of crashing on a pcre library bug 2004-06-23 Sam Steingold * time.d (convert_time_from_universal): new function * genclisph.d (main): export it * modules/berkeley-db/bdb.c (ENV-SET-OPTIONS, ENV-GET-OPTIONS): accept :TX_TIMESTAMP and :TX_MAX (BDB:TXN-ID): new function 2004-06-23 Sam Steingold * genclisph.d (main): undef PACKAGE_* to avoid some warnings * modules/rawsock/rawsock.c: include "config.h" after "clisp.h" to avoid some warnings * modules/syscalls/calls.c: ditto * modules/pcre/cpcre.c: ditto 2004-06-06 Bruno Haible * clos-method2.lisp (compute-effective-method-as-function): Convert result from a form to a function. * clos-methcomb2.lisp (compute-effective-method-function) (standard-method-combination-expander): Don't do the conversion here. 2004-06-08 Bruno Haible * clos-methcomb2.lisp (define-method-combination): Provide bindings also for the supplied-p variables of optional and keyword arguments in the :arguments lambda-list. 2004-05-27 Bruno Haible * clos-class3.lisp: Reorder. (plist-to-alist, alist-to-plist): Remove functions. 2004-05-26 Bruno Haible Let accessors belong to specific classes. * init.lisp: Export accessor-method-slot-definition. * clos-package.lisp: Likewise. * clos-method1.lisp (standard-accessor-method): New class. (standard-reader-method, standard-writer-method): New classes. * clos-method3.lisp (accessor-method-slot-definition): New generic function. * clos-genfun3.lisp (declaim-method): New macro. * clos-class3.lisp (defclass): Generate explicit calls to make-standard-reader-method and make-standard-writer-method. 2004-05-25 Bruno Haible Move the direct-default-initargs and default-initargs slots up to class CLASS. * lispbibl.d (Class): Move direct_default_initargs, default_initargs fields. * clos-class3.lisp (class): Add direct-default-initargs, default-initargs slots. (slotted-class): Remove default-initargs slot. (standard-class): Remove direct-default-initargs slot. (finalize-instance-standard-class, initialize-instance-structure-class): Use the default-initargs of all superclasses, regardless of the metaclass. 2004-06-23 Bruno Haible * hashtabl.d ((SETF HASH-TABLE-WEAK-P)): Fix GC-safety bug introduced in last patch. Check the hash table argument before the new-value argument. 2004-06-23 Bruno Haible * places.lisp (def-setf-alias): New macro. 2004-06-23 Bruno Haible * defpackage.lisp (defpackage): Use (SETF PACKAGE-DOCUMENTATION). 2004-06-22 Sam Steingold * constsym.d (set_hash_table_weak_p, set_package_lock, setelt) (set_hash_table_warn_if_needs_rehash_after_gc, set_long_float_digits): use "(SETF FOO)" instead of "%SET-FOO" * hashtabl.d ((SETF HASH-TABLE-WARN-IF-NEEDS-REHASH-AFTER-GC)) ((SETF HASH-TABLE-WEAK-P)): update calling conventions * package.d ((SETF EXT:PACKAGE-LOCK)): ditto * sequence.d ((SETF ELT)): ditto * places.lisp (package-lock, hash-table-weak-p, elt, long-float-digits) (hash-table-warn-if-needs-rehash-after-gc): use SETF-FUNCTION instead of DEFSETF 2004-06-22 Sam Steingold * defpackage.lisp (defpackage): use (SETF PACKAGE-DOCUMENTATION) * documentation.lisp (documentation): use PACKAGE-DOCUMENTATION ((setf documentation)): use (SETF PACKAGE-DOCUMENTATION) * clos-package.lisp, screen.lisp: use the :DOCUMENTATION option in DEFPACKAGE 2004-06-22 Sam Steingold * lispbibl.d (fehler_string): remove again * error.d (fehler_string): ditto * package.d ((SETF PACKAGE-DOCUMENTATION)): use check_string() 2004-06-22 Bruno Haible * lispbibl.d (Package): Add pack_docstring field. * genclisph.d (main): Update. * package.d (make_package): Initialize pack_docstring to NIL. (SYS::PACKAGE-DOCUMENTATION, (SETF PACKAGE-DOCUMENTATION)): New functions. * error.d (fehler_string): Revived function. * places.lisp (PACKAGE-DOCUMENTATION): New setter definition. 2004-06-22 Bruno Haible * clos-method1.lisp (): New variable. 2004-06-06 Bruno Haible * clos-methcomb2.lisp (add-next-method-local-functions): New function, extracted from analyze-method-description. (call-method, make-method): New macros. (make-method-error, call-method-arg1-error, call-method-arg2-error): New functions. (effective-method-code-bricks): New function. (compute-effective-method-function): Simplify a lot through the use of effective-method-code-bricks. Use an inline lambda to handle the :arguments lambda list, instead of clobbering the effective method's lambda list. Correctly handle the cases when the section lengths in the two lambda lists differ. (standard-method-combination-expander): Simplify a lot through the use of effective-method-code-bricks. * clos-method2.lisp (analyze-method-description): Use add-next-method-local-functions. 2004-05-25 Bruno Haible * clos-class5.lisp: Include contents of clos-class3.lisp. * clos-class3.lisp: Rename from clos-class2.lisp. Old contents moved to clos-class5.lisp. * clos-class2.lisp: Rename from clos-class1.lisp. Old contents moved to clos-class3.lisp. * clos.lisp: Update. 2004-06-21 Sam Steingold * clisp.spec (debug_package): set to %{nil} to prevent CLISP binaries from being stripped (modules): add rawsock 2004-06-21 Sam Steingold * makemake.in (unixconf.h): make sure that it is indeed changed 2004-06-21 Sam Steingold * modules/berkeley-db/dbi.lisp (CLOSE): define methods for ENV, DB and CURSOR * modules/berkeley-db/bdb.c (BDB:ENV-CLOSE, BDB:CURSOR-CLOSE) (BDB:DB-CLOSE): reset the Fpointer value and return a value, do not crash on repeated calls (wrap_finalize): new function (BDB:ENV-CREATE, BDB:DB-CREATE, BDB:MAKE-CURSOR, BDB:CURSOR-DUP): use it to close ENV, DB & CURSOR objects on GC 2004-06-21 Sam Steingold * modules/berkeley-db/bdb.c (BDB:MAKE-CURSOR, BDB:CURSOR-CLOSE) (BDB:CURSOR-COUNT, BDB:CURSOR-DEL, BDB:CURSOR-DUP) (BDB:CURSOR-GET, BDB:CURSOR-PUT): implement the "Database Cursor" subsystem * modules/berkeley-db/dbi.lisp: export the above 2004-06-21 Sam Steingold * modules/berkeley-db/bdb.c (BDB:ENV-GET-OPTIONS): new Lisp DEFUN (env_verbose, env_tmp_dir, env_data_dirs): new functions (BDB:DB-CREATE): permit NIL environment, call MKDB correctly (BDB:DB-FD): fix STACK handling (BDB:DB-OPEN): default mode to 0644 (BDB:DB-PUT): fix flag handling 2004-06-06 Bruno Haible * clos-genfun2.lisp (compute-applicable-methods-effective-method): Do the method selection here. (compute-effective-method-as-function): New function. * clos-methcomb2.lisp (standard-method-combination-expander) (short-form-method-combination-expander) (long-form-method-combination-expander): Add methods argument, remove args argument. Don't do the method selection here. (define-method-combination): Update. 2004-05-16 Bruno Haible * lispbibl.d (Class): Add direct_subclasses field. * clos-class2.lisp (class): Add slot direct-subclasses-table. (ensure-class): Call add-direct-subclass when a member of the direct-subclasses list changes from symbol to class. (add-direct-subclass, remove-direct-subclass, list-direct-subclasses): New functions. (update-subclasses-sets): New function. (initialize-instance-standard-class): Initialize direct-subclasses-table. Call update-subclasses-sets. (finalize-class): Call add-direct-subclass when a member of the direct-subclasses list changes from symbol to class. (initialize-instance-built-in-class): Initialize direct-subclasses-table. Call update-subclasses-sets. (initialize-instance-structure-class): Initialize direct-subclasses-table. Call update-subclasses-sets. 2004-06-19 Sam Steingold * hashtabl.d (HASH-TABLE-WARN-IF-NEEDS-REHASH-AFTER-GC): new accessor (%SET-HASH-TABLE-WARN-IF-NEEDS-REHASH-AFTER-GC): new setter * places.lisp (hash-table-warn-if-needs-rehash-after-gc): defsetf * init.lisp (hash-table-warn-if-needs-rehash-after-gc): export * constsym.d, subr.d (hash_table_warn_if_needs_rehash_after_gc) (set_hash_table_warn_if_needs_rehash_after_gc): add 2004-06-19 Sam Steingold * modules/berkeley-db/dbi.lisp (with-open-db): simplified 2004-06-19 Sam Steingold * genclisph.d (symbol_): fix the definition 2004-06-18 Sam Steingold * macros1.lisp (do/do*-expand): do not bind DOC: it is ignored anyway 2004-06-06 Bruno Haible * clos-genfun2.lisp (compute-applicable-methods-effective-method): Rename from compute-effective-method. (compute-dispatch): Update. * clos-class5.lisp (make-instance-table-entry1) (make-instance-table-entry2, initial-reinitialize-instance): Update. 2004-06-06 Bruno Haible * clos-methcomb2.lisp (coerce-to-method-combination): Don't need to clone the method-combination if there are no options. 2004-06-06 Bruno Haible Check the method-combination options at defgeneric execution time. * clos-methcomb1.lisp (method-combination): New slot check-options. * clos-methcomb2.lisp (invalid-sort-order-error) (any-method-combination-check-options): New functions. (standard-method-combination-check-options): New function. (standard-method-combination-expander): Remove options check from here. (standard): Update. (short-form-method-combination-check-options): New function. (+, and, append, list, max, min, nconc, or, progn): Update. (compute-method-partition-lambdas): Return also a lambda for check-options. (define-method-combination): Emit :check-options initargs. (coerce-to-method-combination): Add gf-name argument. Call the check-options function. * clos-genfun4.lisp (make-generic-function, do-defgeneric): Update. 2004-05-16 Bruno Haible * lispbibl.d (Class): Rename field direct_subclasses to finalized_direct_subclasses. * clos-class2.lisp (standard-class): Rename slot direct-subclasses to finalized-direct-subclasses-table. (add-finalized-direct-subclass): Rename from add-direct-subclass. (remove-finalized-direct-subclass): Rename from remove-direct-subclass. (list-finalized-direct-subclasses): Rename from list-direct-subclasses. (list-all-finalized-subclasses): Rename from list-all-subclasses. Update all callers. 2004-06-13 Bruno Haible * lambdalist.lisp (analyze-modify-macro-lambdalist): New function. * places.lisp (define-modify-macro): Use it. 2004-06-06 Bruno Haible * clos-methcomb2.lisp (define-method-combination): Check the :arguments lambda-list. 2004-06-06 Bruno Haible * clos-methcomb1.lisp (method-combination): Remove order slot. * clos-methcomb2.lisp (compute-short-form-effective-method-form): Take the order from the options, not from the method-combination. Improve error checking. 2004-06-06 Bruno Haible * clos-methcomb2.lisp (qualifiers-match-p): Remove function. (compute-method-partition-lambdas): Use LDIFF and EQUAL to match the qualifiers list against the pattern. 2004-05-16 Bruno Haible Move slots, direct-slots up to CLASS. * lispbibl.d (Class): Move the slots and direct_slots fields. * clos-class2.lisp (class): Add slots, direct-slots. (slotted-class): Remove slots. (standard-class): Remove direct-slots. (initialize-instance-built-in-class): Initialize direct-slots and slots to empty. (make-instance-structure-class, initialize-instance-structure-class): Accept a direct-slots-as-metaobjects argument. (define-structure-class): Pass the already computed direct-slots to make-instance-structure-class. * clos-class5.lisp (initialize-instance@structure-class): Accept precomputed direct-slots argument. 2004-05-15 Bruno Haible * clos-specializer1.lisp: New file. * clos-specializer2.lisp: New file. * clos-specializer3.lisp: New file. * clos-package.lisp: Export specializer related symbols from CLOS package. * init.lisp: Likewise. Load clos-specializer1. * clos.lisp: Load clos-specializer2, clos-specializer3. * makemake.in (LPARTS): Add clos-specializer{1,2,3}. * po/Makefile.devel (LISPSOURCES): Add clos-specializer{1,2,3}. 2004-06-13 Bruno Haible * lambdalist.lisp (analyze-lambdalist, analyze-defsetf-lambdalist): Improved error messages. 2004-06-05 Bruno Haible * clos-genfun5.lisp (missing-required-method): New function. * clos-methcomb1.lisp (method-combination): Reorder the slots. * clos-methcomb2.lisp (invalid-method-error, method-combination-error): Signal an error of type ERROR, not SOURCE-PROGRAM-ERROR. Tweak error message. (invalid-method-sort-order-error): New function. (compute-effective-method-function, qualifiers-match-p): Internationalize. (parse-method-groups): New function, extracted from compute-method-partition-lambdas. Improved syntax checking. Improved error messages. (compute-method-partition-lambdas): Accept a body argument. Remove *-group-variable and its associated unjustified error. Remove code that can never be executed. Generate code that operates directly on variables instead of on a property list. Emit code to call MISSING-REQUIRED-METHOD and INVALID-METHOD-SORT-ORDER-ERROR. (define-method-combination): Improved syntax checking. Improved error messages. Use sys::parse-body. In the long-form combination, don't pass :qualifiers. Keep gf-variable and user-gf-variable distinct, so that the user cannot accidentally change the value of the gf-variable. (do-define-method-combination): Rename from %define-method-combination. Remove dynamic-extent declaration. * format.lisp (format-quote): New function. 2004-05-15 Bruno Haible * clos-macros.lisp: New file. * clos-class2.lisp (add-direct-subclass, remove-direct-subclass) (list-direct-subclasses): Define through def-weak-set-accessors. * init.lisp: Load clos-macros. * makemake.in (LPARTS): Add clos-macros. * po/Makefile.devel (LISPSOURCES): Add clos-macros. 2004-05-15 Bruno Haible * init.lisp: Load clos-stablehash1. * clos.lisp: Load clos-stablehash2. * clos-stablehash1.lisp: New file. * clos-stablehash2.lisp: New file. * clos-class5.lisp (standard-stablehash): Moved to clos-stablehash1. * makemake.in (LPARTS): Add clos-stablehash1, clos-stablehash2. * po/Makefile.devel (LISPSOURCES): Add clos-stablehash1, clos-stablehash2. 2004-06-13 Bruno Haible Fix DEFSETF lambda-list handling. * init.lisp: Load lambdalist.lisp before places.lisp. * lambdalist.lisp: Define PUSH locally. (analyze-defsetf-lambdalist): New function. * places.lisp (get-setf-expansion): Pass environment to defsetf long expander. (defsetf): Use analyze-defsetf-lambdalist and handle &environment. 2004-06-05 Bruno Haible * clos-methcomb2.lisp: Reorder. 2004-05-15 Bruno Haible * init.lisp (*documentation*): Change the hash table test to STABLEHASH-EQUAL, since some of the keys are lists, not symbols. 2004-05-15 Bruno Haible Use STABLEHASH-EQ as test for hash tables indexed by symbols. * init.lisp (*documentation*): Use hash table test STABLEHASH-EQ. * type.lisp (encoding-zeroes): Use hash table test STABLEHASH-EQUAL. * subtypep.lisp (get-charset-range): Likewise. * compiler.lisp (instruction-codes, function-codes, c-form-table): Use hash table test STABLEHASH-EQ. (c-CASE): More accurate determination of the hash table test depending on the keys. (EQL=EQ): Return true for short-floats also. (one-value-ops, for-value-table): Use hash table test STABLEHASH-EQ. * clos-class2.lisp (finalize-instance-standard-class): For the slot location table, use test STABLEHASH-EQ. (std-compute-slots): Use test STABLEHASH-EQL instead of EQL. (initialize-instance-structure-class): For the slot location table use test STABLEHASH-EQ. * clos-genfun2.lisp (prototype-table): Use hash table test STABLEHASH-EQUAL. * foreign1.lisp (*c-type-table*): Use hash table test STABLEHASH-EQ. (*object-table*): Use hash table test STABLEHASH-EQUAL. (*type-table*): Use hash table test STABLEHASH-EQ. * affi1.lisp (*library-functions*): Use hash table test STABLEHASH-EQ. 2004-06-04 Bruno Haible Fix LOAD-TIME-VALUE. * compiler.lisp (const): Add ltv-form slot. (fnode): Add consts-ltv-forms slot. (c-LOAD-TIME-VALUE): Store the entire *form* in the const. (value-form-index): Add a ltv-form argument. (constvalue-index): Update. (kvalue-form-index): Add a ltv-form argument. (const-index): Update. 2004-06-03 Bruno Haible Improved lambda list checking in DEFSTRUCT and DEFMETHOD. * lambdalist.lisp: New file, extracted from compiler.lisp. * init.lisp: Load it. * compiler.lisp (analyze-lambdalist, lambdalist-error): Moved to lambdalist.lisp. (c-analyze-lambdalist): New function. (lambda-list-to-signature, c-LAMBDABODY, c-LABELS, c-FUNCALL-INLINE): Use it instead of analyze-lambdalist. * defstruct.lisp (ds-make-boa-constructor): Use analyze-lambdalist. * clos-method2.lisp (analyze-method-description): Likewise. * clos-methcomb2.lisp (compute-effective-method-function): Update. * clos-package.lisp: Update. * makemake.in (LPARTS): Add lambdalist. * po/Makefile.devel (LISPSOURCES): Add lambdalist. 2004-05-15 Bruno Haible * spvw.d (init_symbol_values): Initialize *WARN-ON-HASHTABLE-NEEDING-REHASH-AFTER-GC* to NIL. * hashtabl.d (warn_forced_gc_rehash): New function. (hash_lookup_builtin, hash_lookup_builtin_with_rehash): Call it when *WARN-ON-HASHTABLE-NEEDING-REHASH-AFTER-GC* is true. 2004-05-15 Bruno Haible * hashtabl.d (clrhash): Reorganize the hash table immediately, instead of delaying the reorganization. 2004-05-15 Bruno Haible * io.d (structure_reader): Accept both the new syntax with :TEST and the old syntax. (pr_orecord): For hash tables, make the output in the three possible cases more consistent. 2004-05-15 Bruno Haible Add a hash code to symbols. * lispbibl.d (symbol_): Add hashcode field. Disable filler for LINUX_NOEXEC_HEAPCODES. * spvw.d (init_symbol_tab_1): Pre-initialize the symbol's hash code. * spvw_update.d (update_symbol_tab): Update the hashcode as well. * spvw_garcol.d (gc_markphase): Mark the hashcode as well. * spvw_typealloc.d (make_symbol): Pre-initialize the hash code. * constsym.d (LISPSYM_B): Pre-initialize the symbol's hash code. Disable filler for LINUX_NOEXEC_HEAPCODES. * hashtabl.d (hashcode1stable): Handle symbols specially. (gcinvariant_hashcode1stable_p): Return true also for symbols. (gcinvariant_hashcode2stable_p): Likewise. (gcinvariant_hashcode3stable_atom_p): Likewise. * genclisph.d (main): Update symbol_ definition. 2004-05-31 Bruno Haible * clos-method1.lisp (lambda-list-keyword-p): Move to clos-method2.lisp. * clos-method2.lisp (lambda-list-keyword-p): New function, from clos-method1.lisp. 2004-05-31 Bruno Haible * clos-genfun2.lisp (callinfo, gf-signature, gf-argorder, gf-methods) (gf-method-combination): Move to clos-genfun1.lisp. * clos-genfun1.lisp (callinfo, gf-signature, gf-argorder, gf-methods) (gf-method-combination): New functions, from clos-genfun2.lisp. 2004-05-31 Bruno Haible * clos-methcomb2.lisp: Merge all of clos-genfun1, clos-methcomb2, clos-methcomb3, clos-methcomb4, clos-methcomb5. * clos-genfun1.lisp (method-applicable-p, sort-applicable-methods): Moved to clos-methcomb2.lisp. * clos-methcomb3.lisp: Remove file. * clos-methcomb4.lisp: Remove file. * clos-methcomb5.lisp: Remove file. * clos.lisp: Don't load them any more. * makemake.in (LPARTS): Remove clos-methcomb3, clos-methcomb4, clos-methcomb5. * po/Makefile.devel (LISPSOURCES): Likewise. 2004-05-31 Bruno Haible * clos-genfun1.lisp (methods-agree-p, specializers-agree-p) (same-specializers-p): Move to clos-genfun3.lisp. * clos-genfun3.lisp (methods-agree-p, specializers-agree-p) (same-specializers-p): New functions, from clos-genfun1.lisp. 2004-05-31 Bruno Haible * clos.lisp: Reorder method and method combination includes. 2004-06-10 Bruno Haible * trace.lisp (tracer): Add max-depth slot. (trace1): Implement :max-depth option. 2004-05-13 Bruno Haible * clos-class2.lisp (empty-ht): Warn if this hash table ever gets used nontrivially. 2004-05-13 Bruno Haible * sequence.d (seq_duplicates): Use a hash table test FASTHASH-EQ instead of EQ, FASTHASH-EQL instead of EQL, FASTHASH-EQUAL instead of EQUAL. * compiler.lisp (c-CASE): Likewise. * room.lisp (%space): Likewise. 2004-05-14 Bruno Haible * hashtabl.d (hashcode_tuple): Use inlined hashcode3stable_atom. * clos-genfun2.lisp (compute-dispatch): When the number of dispatching arguments is > 1, use a hash table with test STABLEHASH-EQUAL. * clos-class5.lisp (*update-instance-for-different-class-table*): Use hash table test FASTHASH-EQUAL. * loop.lisp (loop-keywordp): Use hash table test FASTHASH-EQUAL. 2004-05-13 Bruno Haible Make the hashcode of classes GC-invariant. * lispbibl.d (Class): New field 'hashcode'. * hashtabl.d (CLOS::CLASS-GETHASH): Inline hash_lookup and hashcode1stable. Use the class' hashcode directly. * clos-class2.lisp (class): Inherit from structure-stablehash. (std-compute-superclasses, add-direct-subclass, list-all-subclasses): Use a hash table with test STABLEHASH-EQ. * clos-class5.lisp (*make-instance-table*) (*reinitialize-instance-table*) (*update-instance-for-redefined-class-table*): Likewise. * clos-genfun2.lisp (compute-dispatch): When the number of dispatching arguments is 1, use a hash table with test STABLEHASH-EQ. 2004-05-13 Bruno Haible Use FASTHASH-EQ as test for hash tables indexed by characters. * io.d (allocate_perchar_table, copy_perchar_table) (allocate_syntax_table, copy_readtable_contents): Use FASTHASH-EQ as test for MAKE-HASH-TABLE. 2004-05-14 Bruno Haible New hash-table tests FASTHASH-EQL/EQUAL and STABLEHASH-EQL/EQUAL. * lispbibl.d (Hashtable): Add ht_gcinvariantfn field. * spvw.d (init_symbol_values): Initialize *EQL-HASHFUNCTION*, *EQUAL-HASHFUNCTION*. * hashtabl.d (gcinvariant_hashcode1_p): New function. (gcinvariant_hashcode1stable_p): New function. (gcinvariant_hashcode2_p): New function. (hashcode2stable): New function. (gcinvariant_hashcode2stable_p): New function. (hashcode3_cons0, hashcode3_cons1, hashcode3_cons2, hashcode3_cons3): Mark as inline. (gcinvariant_hashcode3_cons0_p, gcinvariant_hashcode3_cons1_p) (gcinvariant_hashcode3_cons2_p, gcinvariant_hashcode3_cons3_p) (gcinvariant_hashcode3_p): New functions. (hashcode3stable_atom, hashcode3stable_cons0, hashcode3stable_cons1) (hashcode3stable_cons2, hashcode3stable_cons3, hashcode3stable): New functions. (gcinvariant_hashcode3stable_atom_p) (gcinvariant_hashcode3stable_cons0_p) (gcinvariant_hashcode3stable_cons1_p) (gcinvariant_hashcode3stable_cons2_p) (gcinvariant_hashcode3stable_cons3_p, gcinvariant_hashcode3stable_p): New functions. (gcinvariant_hashcode4_cons0_p, gcinvariant_hashcode4_cons1_p) (gcinvariant_hashcode4_cons2_p, gcinvariant_hashcode4_cons3_p) (gcinvariant_hashcode4_p): New functions. (gcinvariant_Pseudofun): New type. (gcinvariantfn): New macro. (hashcode_gc_invariant_p): Use an indirection through gcinvariantfn. (get_eql_hashfunction, get_equal_hashfunction): New functions. (MAKE-HASH-TABLE): Recognize the tests {FAST,STABLE}HASH-{EQL,EQUAL}. Store the gcinvariant pseudofunction in the hash table. (hash_table_test): Return FASTHASH-EQL or STABLEHASH-EQL instead of EQL, FASTHASH-EQUAL or STABLEHASH-EQUAL instead of EQUAL. (SYSTEM::FASTHASH-STABLE-P, SYSTEM::STABLEHASH-STABLE-P): Use gcinvariant_hashcode1_p and gcinvariant_hashcode1stable_p, resp. * pseudofun.d: Add hashcode2stable, hashcode3stable, and all gcinvariant_hashcode* functions. * init.lisp: Export fasthash-eql, stablehash-eql, fasthash-equal, stablehash-equal from EXT. * defs1.lisp (ext:fasthash-eql, ext:stablehash-eql, ext:fasthash-equal) (ext:stablehash-equal): New function aliases. 2004-05-12 Bruno Haible New hash-table tests FASTHASH-EQ and STABLEHASH-EQ. * lispbibl.d (htflags_invalid_B, htflags_gc_rehash_B): New macros. (mark_ht_invalid, mark_ht_valid, ht_validp): No need to rehash a table if all its objects have a GC-invariant hash code. (set_ht_invalid_if_needed): New macro. (htflags_warn_gc_rehash_B): New macro. (ht_test_code): Update. (Class): Add field subclass_of_stablehash_p. (StablehashStructure, StablehashInstance): New types. * spvw.d (init_symbol_values): Initialize *EQ-HASHFUNCTION*. * spvw_update.d: Provide customization through update_hashtable_invalid. * spvw_garcol.d (gar_col_normal, gar_col_compact, move_conses) [GENERATIONAL_GC]: Set update_hashtable_invalid to false. * spvw_memfile.d: Update. * hashtabl.d (hashcode1stable): New function. (htflags_test_eq_B, htflags_test_eql_B, htflags_test_equal_B) (htflags_test_equalp_B, htflags_stablehash_B): New macros. (hashcode_raw): Use hashcode1 only for FASTHASH-EQ. (hashcode_builtin): Likewise. (hash_lookup_builtin): Update. (instance_of_stablehash_p, hashcode_gc_invariant_p): New functions. (warn_key_forces_gc_rehash): New function. (hash_store): Update the htflags_gc_rehash_B bit. Optionally warn when it is being set. (hash_prepare_store): Update. (clrhash): Update the htflags_gc_rehash_B bit. (get_eq_hashfunction): New function. (MAKE-HASH-TABLE): Add :warn-if-needs-rehash-after-gc argument. Accept the tests FASTHASH-EQ and STABLEHASH-EQ. (hash_table_test): Return FASTHASH-EQ or STABLEHASH-EQ instead of EQ. (SYSTEM::FASTHASH-STABLE-P, SYSTEM::STABLEHASH-STABLE-P): New functions. * io.d (pr_orecord): Improve printing of hash tables. * init.lisp: Export fasthash-eq, stablehash-eq from EXT. Export standard-stablehash, structure-stablehash from CLOS and EXT. * clos-package.lisp: Export standard-stablehash, structure-stablehash. * defs1.lisp (ext:fasthash-eq, ext:stablehash-eq): New function aliases. * clos-class2.lisp (structure-stablehash): New class. (slotted-class): Add slot subclass-of-stablehash-p. (finalize-instance-standard-class): Initialize it. (std-compute-subclass-of-stablehash-p): New function. (initialize-instance-structure-class): Initialize it here too. * clos-class5.lisp (standard-stablehash): New class. * utils/clispload.lsp (*expected-failures*): Add HASH-TABLE-TEST.[1-4]. 2004-06-08 Sam Steingold * modules/regexp/regexi.c (REGEXP-EXEC): check that the pattern is not NULL 2004-05-15 Bruno Haible * lisparit.d (SYS::RANDOM-POSFIXNUM): New function. 2004-05-15 Bruno Haible * init.lisp, type.lisp, subtypep.lisp, compiler.lisp, loop.lisp: * clos-class2.lisp, clos-closs5.lisp, clos-genfun2.lisp, room.lisp: * foreign1.lisp, affi1.lisp: Annotate all make-hash-table calls with :key-type and :value-type. 2004-05-15 Bruno Haible * hashtabl.d (MAKE-HASH-TABLE): Add arguments :KEY-TYPE, :VALUE-TYPE. 2004-05-10 Bruno Haible * hashtabl.d (hashcode_raw_user): Rename from hashcode5. (hashcode_raw, hashcode_raw_user): Update. 2004-05-09 Bruno Haible * hashtabl.d (hashcode_builtin, hashcode_user): New functions. (hash_lookup_builtin): Use hashcode_builtin instead of hashcode. (hash_lookup_user): Use hashcode_user instead of hashcode. 2004-06-08 Arseny Slobodjuk * makemake.in (ARGQ): new variable, shell command argument separator apostrophes. Is empty for command.com. (cflags.h): use it to fix MSVC build. (stdbool.h, stdint.h): use it to shorten the code. (all): make lisp.bsc (source code browser database) when msvc & debug. (lisp.bsc): new target when msvc & debug. (clisp.html): apostrophe problem again. 2004-06-07 Sam Steingold * .gdbinit (full): do not load NCLX demos 2004-06-07 Sam Steingold * modules/regexp/test.tst: commented out non-POSIX regexps 2004-06-07 Bruno Haible * init.lisp (open-for-load): Use uppercase ~S in format strings so that the warnings can be shown during bootstrap. Use ~A, not ~S, to display pathnames. 2004-05-09 Bruno Haible * hashtabl.d (hash_prepare_store): Fix bug introduced on 2003-05-13: EQUAL and EQUALP hash codes must not be cached across a GC. 2004-05-09 Bruno Haible Unify the two hash table counts. * lispbibl.d (Hashtable): Remove ht_count field. (hashtable_length): Decrement. * hashtabl.d (HT_GOOD_P): Remove check of ht_count. (rehash): Store the count in the kvtable. (hash_store): Increment the count in the kvtable. (resize, clrhash): Store the count in the kvtable. (REMHASH): Decrement the count in the kvtable. (HASH-TABLE-COUNT): Return the count in the kvtable. (SYS::%SET-HASH-TABLE-WEAK-P): Copy also the count, in all cases. * io.d (pr_orecord): Update. * predtype.d (hash_table_equalp): Update. (typep_class, typep_classname): Use ht_size instead of ht_count. * spvw_debug.d (nobject_out1): Update. 2004-05-09 Bruno Haible Let the GC clean up weak hash tables. * spvw_weak.d (weak_hashed_alist_update_one, weak_hashed_alist_update): New functions. (weak_clean_dead): Call weak_hashed_alist_update when appropriate. * hashtabl.d (hash_lookup_builtin, hash_lookup_user): Don't test whether the key/value pair has been garbage-collected. 2004-06-06 Sam Steingold * pathname.d (TRANSLATE-LOGICAL-PATHNAME): accept :ABSOLUTE * subr.d, subrkw.d (translate_logical_pathname): update 2004-06-06 Arseny Slobodjuk * lispbibl.d (offsetofa): Define without brackets for MSVC to make subr_xlength a constant. 2004-06-03 Sam Steingold fix bug#956755: NAMESTRING's second arg is non-compliant * pathname.d (TRANSLATE-PATHNAME): accept :ABSOLUTE argument to merge in the OS default pathname (NAMESTRING): do not accept a second optional argument, as per ANSI (DYNLOAD-MODULES): do not call NAMESTRING with 2 arguments * cfgwin32.lisp, edit.lisp (edit-file): call TRANSLATE-PATHNAME :ABSOLUTE T instead of NAMESTRING with 2 arguments * runprog.lisp (xstring): ditto * constobj.d (version): bump because of NAMESTRING signature change * subr.d, subrkw.d (namestring, translate_pathname): update 2004-05-30 Bruno Haible * record.d (do_allocate_instance): Call FINALIZE-INHERITANCE instead of FINALIZE-CLASS. Fix GC-safety bug. (CLOS::%MAKE-INSTANCE): Call FINALIZE-INHERITANCE instead of FINALIZE-CLASS. 2004-05-30 Bruno Haible * clos-slotdef1.lisp (convert-direct-slots): Check the return value from direct-slot-definition-class. 2004-05-09 Bruno Haible Move the ht_itable and ht_freelist into ht_kvtable. * lispbibl.d (Hashtable): Remove ht_itable, ht_freelist fields. (hashtable_length): Decrement by 2. (HashedAlist): New type. (TheHashedAlist): New macro. (kvtable_data, ht_kvt_data): Remove macros. (map_hashtable, map_hashtable_nogc): Update. * hashtabl.d (HT_GOOD_P): Remove ht_itable check. (rehash, hash_lookup_builtin, hash_lookup_user, hash_store): Update. (allocate_kvt): Update the allocation size. Initialize the freelist field. (resize): Store the new itable in the kvtable. No need to initialize the freelist here. (hash_prepare_store, clrhash): Update. (MAKE-HASH-TABLE): Store the new itable in the kvtable. No need to initialize the freelist here. Fix GC-safety bug before an error message. (REMHASH, MAPHASH, SYS::HASH-TABLE-ITERATE): Update. (SYS::%SET-HASH-TABLE-WEAK-P): Copy also the itable and freelist from the old to the new kvtable. (CLOS::CLASS-TUPLE-GETHASH): Update. * io.d (pr_kvtable): Update. Optimize a loop invariant. * predtype.d (hash_table_equalp): Update. Don't pass nullobj to equalp. * spvw_debug.d (nobject_out1): Update. * spvw_weak.d (weak_clean_dead): For WeakHashedAlist, return true. 2004-06-03 Sam Steingold * comptran.d (R_R_atanh_R_R): fix ATANH on complex numbers 2004-06-03 Sam Steingold * list.d (replace_circular_list): new function (LAST): check the list argument for circularity, do not accept ATOMs (check_list_length): use replace_circular_list() 2004-06-03 Sam Steingold * clos-class2.lisp (list-direct-subclasses): avoid a compiler warning 2004-06-03 Sam Steingold * condition.lisp (retry-function-call): new function * clos-genfun5.lisp (no-applicable-method, no-primary-method): use RETRY-FUNCTION-CALL to make recoverable (no-next-method): use CERROR to make recoverable 2004-06-03 Sam Steingold * condition.lisp (check-value): use RETRY restart instead of CONTINUE (retry): new function, invokes RETRY restart (similar to CONTINUE, but is not triggered by EOF/Ctr-D) (check-value, correctable-error): associate the new restarts with the condition 2004-05-29 Bruno Haible * clos-package.lisp: Import ext:proper-list-p. * clos-slotdef1.lisp (initialize-instance-): Use it. Improve error messages. (initialize-instance-): Likewise. (initialize-instance-): Likewise. 2004-05-23 Bruno Haible Many improvements to BACKQUOTE. * backquote.lisp (BQ-NCONCABLE): Remove macro. Now cleaned up by the macroexpander. (bq-expand): Don't test *backquote-optimize* any more. Call bq-append-multiple. (bq-transform): Call bq-list. (*backquote-optimize-cons*, *backquote-optimize-list*) (*backquote-optimize-append*, *backquote-optimize-nconc*) (*backquote-optimize-vector*): New variables replace *BACKQUOTE-OPTIMIZE*. (bq-splicing-p, bq-non-splicing): New functions. (bq-cons, bq-list, bq-append, bq-nconc): New functions. (bq-append-multiple): New function. (bq-optimize-for-list): Remove function. (bq-optimize-for-vector): Take the optimized list as arguments. Several fixes. (bq-optimize-append, bq-optimize-list*, bq-optimize-list, bq-eval) (bq-constant-p, eval-self-p, maybe-quote, maybe-unquote) (quoted-bq-operator-p, bq-reduce-nesting): Remove functions. (backquote-cons): Call bq-cons. (backquote-append): Call bq-append. 2004-05-09 Bruno Haible * lispbibl.d (hash_lookup_builtin, hash_lookup_builtin_with_rehash): Remove Nptr_ argument. * hashtabl.d (lookup_Pseudofun): Remove Nptr_ argument. (hash_lookup_builtin, hash_lookup_builtin_with_rehash) (hash_lookup_user, hash_lookup): Likewise. (MAKE-HASH-TABLE, gethash, GETHASH, SYSTEM::PUTHASH, REMHASH) (CLOS::CLASS-GETHASH): Update. * pseudofun.d: Update. 2004-06-02 Sam Steingold more consistent macro/function naming, more error recovery * stream.d (check_stream, check_streamtype, check_wr_int): remove (get_streamtype_replacement): new function (CHECK_streamtype, CHECK_builtin_stream, ASSERT_wr_int): new macros (test_stream_args): remove, replace with ... (check_stream_args): new function (SYNONYM-STREAM-SYMBOL, BROADCAST-STREAM-STREAMS) (CONCATENATED-STREAM-STREAMS, GENERIC-STREAM-CONTROLLER) (TWO-WAY-STREAM-INPUT-STREAM, TWO-WAY-STREAM-OUTPUT-STREAM) (ECHO-STREAM-INPUT-STREAM, ECHO-STREAM-OUTPUT-STREAM) (test_n_bytes_args): use CHECK_streamtype (stream_handles): fix a bug: missing `return' in fixnum case (MAKE-TWO-WAY-STREAM, MAKE-ECHO-STREAM): use check_stream_args() (GENERIC-STREAM-P, TERMINAL-RAW, INPUT-STREAM-P, OUTPUT-STREAM-P) (STREAM-EXTERNAL-FORMAT, INTERACTIVE-STREAM-P, READ-BYTE-LOOKAHEAD) (READ-BYTE-WILL-HANG-P, WRITE-BYTE, LINE-NUMBER, ALLOW-READ-EVAL): update for the check_stream() changes (BUILT-IN-STREAM-ELEMENT-TYPE): use CHECK_builtin_stream() (bitbuff_ixu_sub, bitbuff_ixs_sub, wr_by_iau8_unbuffered) (wr_by_iau8_buffered, WRITE-BYTE, WRITE-INTEGER): use CHECK_wr_int() * io.d (test_disp_sub_char): completely recoverable, shift STACK args (SET-DISPATCH-MACRO-CHARACTER, GET-DISPATCH-MACRO-CHARACTER): update (test_stream_arg): remove, replace with ... (check_stream_arg): new function (RPAR-READER, STRING-READER, QUOTE-READER, LINE-COMMENT-READER) (test_no_infix, CHAR-READER, radix_1, RADIX-READER, UNINTERNED-READER) (BIT-VECTOR-READER, VECTOR-READER, ARRAY-READER, READ-EVAL-READER) (LOAD-EVAL-READER, LABEL-DEFINITION-READER, NOT-READABLE-READER) (SYNTAX-ERROR-READER, CLOSURE-READER, PPRINT-NEWLINE, %CIRCLEP) (%PPRINT-LOGICAL-BLOCK, FORMAT-TABULATE, WRITE, PRIN1, PRINT, PPRINT) (PRINC, WRITE-CHAR, write_string_up, TERPRI, FRESH-LINE, FINISH-OUTPUT) (FORCE-OUTPUT, CLEAR-OUTPUT, WRITE-UNREADABLE, LINE-POSITION): use it (test_istream, test_ostream): remove, replace with .. (check_istream, check_ostream): new functions (read_w, READ-DELIMITED-LIST, READ-LINE, READ-CHAR, UNREAD-CHAR) (PEEK-CHAR, LISTEN, READ-CHAR-WILL-HANG-P, READ-CHAR-NO-HANG) (CLEAR-INPUT): use check_istream() (PARSE-INTEGER): recover from bad radix (PRINT-STRUCTURE): use check_stream() (WRITE-SPACES, PPRINT-INDENT, ): use check_ostream() * error.d, lispbibl.d (check_stream_replacement): add (fehler_stream, fehler_streamtype): remove * debug.d (DESCRIBE-FRAME): use check_stream() instead of fehler_stream() * sequence.d (READ-CHAR-SEQUENCE, WRITE-CHAR-SEQUENCE) (READ-BYTE-SEQUENCE, WRITE-BYTE-SEQUENCE): ditto * constsym.d (x11_socket_stream, generic_stream): add 2004-06-02 Sam Steingold * list.d (up2_test, up2_test_not, up_test, up_test_not, up_if) (up_if_not): simplify return statement 2004-06-02 Bruno Haible * list.d (check_cons): Remove macro. (check_cons): New function. (RPLACA, SYS::%RPLACA, RPLACD, SYS::%RPLACD): Use it. (SYS::LIST-ACCESS, SYS::LIST-ACCESS-SET): Likewise. 2004-05-23 Bruno Haible * backquote.lisp (bq-expand-list): Use iteration instead of recursion. 2004-05-16 Bruno Haible Generate direct slots for DEFSTRUCT. * clos-slotdef1.lisp (*-defclass*): Add an initff slot. (structure-direct-slot-definition-initff): New accessor. (initialize-instance-): Accept initff argument. (make-instance-): Update. (make-load-form-): New function. * defstruct.lisp (defstruct): Generate a list of direct slots as part of the defstruct-description. * io.d (structure_reader, pr_structure_default): Update. 2004-05-09 Bruno Haible Merge ht_kvtable and ht_ntable. For weak hash tables, use WeakHashedAlist instead of WeakAlist. * lispbibl.d (Rectype_WeakHashedAlist_Key) (Rectype_WeakHashedAlist_Value, Rectype_WeakHashedAlist_Either) (Rectype_WeakHashedAlist_Both): New enum items. (Hashtable): Remove ht_ntable field. (hashtable_length): Decrement. (kvtable_data): Update. (WeakHashedAlist): New type. (TheWeakHashedAlist): New macro. (Lrecord_nonweak_length): Update. (map_hashtable, map_hashtable_nogc): Update. * spvw_gcmark.d (gc_mark): Handle Rectype_WeakHashedAlist_*. * spvw_weak.d (max_watchset_count, get_watchset) (propagate_through_weak, weak_clean_dead, weak_must_activate): Handle Rectype_WeakHashedAlist_*. * spvw_circ.d (get_circ_mark, get_circ_unmark): Handle Rectype_WeakHashedAlist_*. * spvw_debug.d (nobject_out1): Update. * hashtabl.d (HT_GOOD_P): Remove ht_ntable check. (rehash, hash_lookup_builtin, hash_lookup_user): Use KVptr+2 instead of Nptr. (hash_store): Likewise. (hash_table_weak_type): ht_kvtable is now a Rectype_WeakHashedAlist_*. (allocate_kvt): Allocate a vector with 3*maxcount entries, or a WeakHashedAlist. (prepare_resize): Don't allocate an ntable any more. (resize): Fill extended kvtable instead of ntable. (clrhash, MAPHASH, HASH-TABLE-COUNT): Update. (SYS::HASH-TABLE-ITERATE): Update. (SYS::%SET-HASH-TABLE-WEAK-P): Update. (CLASS-TUPLE-GETHASH): Use KVptr+2 instead of the ntable. * io.d (pr_kvtable): Update. (pr_orecord): Update hashtable handling. Add Rectype_WeakHashedAlist_* handling. * predtype.d (hash_table_equalp): Update. (TYPE-OF, CLASS-OF): Handle Rectype_WeakHashedAlist_*. (enum_hs_internal_weak_hashed_alist): New enum item. (heap_statistics_mapper): Handle Rectype_WeakHashedAlist_*. 2004-06-01 Sam Steingold more errors are recoverable * list.d (COPY-LIST, NRECONC): use check_list() instead of fehler_list() (fehler_cons): replaced with check_cons_replacement() and check_cons() (RPLACA, %RPLACA, RPLACD, %RPLACD, LIST-ACCESS, LIST-ACCESS-SET): use check_cons() 2004-06-01 Sam Steingold * list.d (check_list_length): check that the argument is a non-circular list and compute its length (BUTLAST, NBUTLAST): use it 2004-06-01 Sam Steingold * hashtabl.d (hashcode4) [PATHNAME_WIN32]: declare global 2004-05-31 Bruno Haible * compiler.lisp (c-TYPEP): Generate CLOS::TYPEP-CLASS call also when the class has no proper name. 2004-05-29 Bruno Haible * record.d (SYS::%UNBOUND): New function. 2004-05-27 Bruno Haible * lispbibl.d (proper_list_p): New declaration. * list.d (proper_list_p): New function. * predtype.d (EXT:PROPER-LIST-P): New function. * error.d (fehler_proper_list): Tweak error message. * init.lisp: Export ext:proper-list-p. 2004-05-23 Bruno Haible * backquote.lisp (bq-nconcable): Rename from bq-nconc. 2004-05-10 Bruno Haible * clos-class2.lisp (add-direct-subclass): Use a weak hash-table when the list has more than 10 elements. (remove-direct-subclass, list-direct-subclasses): Recognize the possibility that direct-subclasses is a hash-table. 2004-05-09 Bruno Haible * lispbibl.d (hash_lookup_builtin, hash_lookup_builtin_with_rehash): New declarations. (set_ht_invalid, set_ht_valid): New macros. * spvw_garcol.d (gar_col_normal, gar_col_compact, move_conses): Use set_ht_invalid instead of mark_ht_invalid. * spvw_memfile.d (loadmem_from_handle): Likewise. * spvw_circ.d (subst_circ_mark): Likewise. * hashtabl.d (rehash): Use set_ht_valid instead of mark_ht_valid. (hash_lookup_builtin): Assume table is valid. (hash_lookup_builtin_with_rehash): New function. (resize, clrhash): Use set_ht_invalid instead of mark_ht_invalid. * pseudofun.d: Add hash_lookup_builtin_with_rehash. 2004-05-30 Sam Steingold * _distmakefile (clisp) [UNIX_BINARY_DISTRIB]: do not depend on src/clisp.c, use '"' for quoting 2004-05-28 Bruno Haible * lispbibl.d (symbol_): Check the size only if LINUX_NOEXEC_HEAPCODES. 2004-05-28 Bruno Haible * makemake.in: Treat GCC 4 like GCC 3.4. 2004-05-28 Sam Steingold * init.lisp (open-for-load) [compiler]: recompile the bad file when *LOAD-OBSOLETE-ACTION* is :COMPILE 2004-05-21 Bruno Haible Remove SELFMADE_MMAP. * lispbibl.d: Remove SELFMADE_MMAP functionality. * spvw.d: Likewise. * spvw_heap.d: Likewise. * spvw_global.d: Likewise. * spvw_fault.d: Likewise. * spvw_sigsegv.d: Likewise. * spvw_garcol.d: Likewise. * spvw_genera1.d: Likewise. * spvw_memfile.d: Likewise. * unixaux.d: Likewise. * win32aux.d: Likewise. * pathname.d: Likewise. 2004-05-23 Bruno Haible * backquote.lisp (bq-expand): Use APPEND, not NCONC, to concatenate the parts of a vector. (Think of `#(,@(f1) ,@(f2)).) 2004-05-09 Bruno Haible * lispbibl.d (Hashtable): New field ht_lookupfn. (hashtable_length): Increment. * hashtabl.d (lookup_Pseudofun): New type. (lookupfn): New macro. (hash_lookup_builtin, hash_lookup_user): New functions. (hash_lookup): Turn into a macro. (MAKE-HASH-TABLE): Initialize ht_lookupfn. * pseudofun.d: Add hash_lookup_builtin, hash_lookup_user. 2004-05-09 Bruno Haible * lispbibl.d (Hashtable): Add fields ht_hashcodefn, ht_testfn. (hashtable_length): Increment by 2. * hashtabl.d (hashcode2, hashcode3, hashcode4): Make global. (hashcode_Pseudofun, test_Pseudofun): New types. (hashcodefn, testfn): New macros. (hashcode_raw, hash_lookup): Use the pseudofuns. (MAKE-HASH-TABLE): Initialize ht_hashcodefn and ht_testfn. * pseudofun.d: Declare pseudofuns eql, equal, equalp, hashcode[234]. 2004-05-27 Sam Steingold an improper docstring does not warrant an error * control.d (parse_doc_decl): replaces fehler_docstring() (fehler_docstring): Remove function. (LET, LET*, LOCALLY, SYMBOL-MACROLET, MULTIPLE-VALUE-BIND, PARSE-BODY): use it instead of fehler_docstring() 2004-05-25 Bruno Haible Make DEBUG_GCSAFETY test sharper. * lispbibl.d (gcinvariant_oint_p, nonimmprobe): New macros. (gcv_object_t::operator object, gcv_object_t::gcv_object_t) (pgci_pointable, ngci_pointable): Use nonimmprobe. 2004-05-23 Bruno Haible * backquote.lisp (backquote-reader, bq-expand): Treat vectors of element types other than T like strings and bit-vectors. 2004-05-21 Bruno Haible * Makefile.devel (multibuild-linux-x86): Add builds with both HEAPCODES variants, and build with spvw_mixed_blocks-staggered and -fixedmemsize. 2004-05-21 Bruno Haible Make it possible to combine GENERATIONAL_GC, HEAPCODES, NO_MORRIS_GC. * spvw_garcol.d (update): Provide a definition for the case GENERATIONAL_GC && HEAPCODES && !MORRIS_GC. 2004-05-21 Bruno Haible Make it possible to test both SPVW_MIXED_BLOCKS_OPPOSITE and SPVW_MIXED_BLOCKS_STAGGERED. * spvw.d (SPVW_MIXED_BLOCKS_OPPOSITE): Define if CONS_HEAP_GROWS_DOWN. (SPVW_MIXED_BLOCKS_STAGGERED): Define if CONS_HEAP_GROWS_UP. 2004-05-21 Bruno Haible Make it possible to simulate microcomputer memory management on Unix. * lispbibl.d (VIRTUAL_MEMORY): Don't define if NO_VIRTUAL_MEMORY is defined. 2004-05-21 Bruno Haible * lispbibl.d (BT_CHECK, unwind_back_trace): Depend on DEBUG_BACKTRACE, not DEBUG_SPVW. 2004-05-15 Bruno Haible Let DEFSTRUCT generate regular (SETF FOO-BAR) functions instead of DEFSETF expanders. * defstruct.lisp (ds-make-readers): Rename from ds-make-accessors. (ds-make-writers): Rename from ds-make-defsetfs. Generate a DEFUN instead of a DEFSETF. Remove EVAL-WHEN hack. (defstruct): Update. 2004-05-15 Bruno Haible * clos-slotdef3.lisp: Redefine the accessor functions with add type-checking. 2004-05-09 Bruno Haible * lispbibl.d (Hashtable): Change type of ht_size to uintL. (hashtable_length): Update. (hashtable_xlength): New macro. (allocate_hash_table): Use hashtable_xlength. * hashtabl.d (HT_GOOD_P, hashcode_cook, hashcode, rehash, hash_lookup) (CLASS-TUPLE-GETHASH): Use an unboxed ht_size. (resize, MAKE-HASH-TABLE): Update. * spvw_debug.d (nobject_out1): Update. 2004-05-26 Bruno Haible * spvw.d (main): Change effect of varobjects_misaligned on heap_limit. * spvw_garcol.d (gar_col_normal): Likewise. 2004-05-20 Bruno Haible Increase memory sizes for builds with fixed memory size. * makemake.in (interpreted.mem, halfcompiled.mem): Grant 1400 KW. (*.fas): Grant 1800 KW. (stage/*.fas): Grant 750 KW. (check-ansi-tests, check-ansi-tests-debug): Grant 30000 KW. 2004-05-26 Sam Steingold * pathname.d (MAKE-LOGICAL-PATHNAME): accept :DEVICE :UNSPECIFIC because PATHNAME-DEVICE for LOGICAL-PATHNAME returns :UNSPECIFIC 2004-05-26 Sam Steingold * Makefile.devel (src--distrib): touch src/VERSION to avoid the common problem of autoconf calls on user machine 2004-05-26 Sam Steingold * makemake.in (distrib) [win32]: remove quotes that confuse find(1) 2004-05-26 Bruno Haible * lispbibl.d (oint_type_mask, oint_data_shift, oint_data_mask) [LINUX_NOEXEC_HEAPCODES]: Move down by one bit, so we need only 1/8th of the address space for the immediate objects. (immediate_object_p, machinep): Update. * spvw.d (main) [LINUX_NOEXEC_HEAPCODES]: Attempt to reserve the range 0xC0000000..0xDFFFFFFF. 2004-05-25 Bruno Haible * eval.d (nest_var): Use fake_gcv_object. Needed for DEBUG_GCSAFETY. 2004-05-23 Bruno Haible * backquote.lisp (bq-expand): Inline bq-expand-cons, bq-expand-vector. (bq-expand-cons, bq-expand-vector): Remove functions. (bq-expand-list): Simplify. 2004-05-20 Bruno Haible Speed up the FILL-STREAMs. * fill-out.lisp (stream-write-char-sequence@fill-stream): New method. 2004-05-15 Bruno Haible * defstruct.lisp (ds-accessor-name): New function. (ds-make-accessors, ds-make-defsetfs): Use it. 2004-04-15 Bruno Haible * clos-slotdef1.lisp (*-...-location*): New constants. (slot-definition-...): Use them. * clos-slotdef3.lisp (slot-definition-...): Likewise. 2004-05-08 Bruno Haible * lispbibl.d (Rectype_WeakKVT): Remove enum value. (weakkvt_t, WeakKVT): Remove types. (weakkvt_length, Weakkvt_length, TheWeakKVT): Remove macros. (Lrecord_nonweak_length): Update. (if_recordp): Remove handling of Rectype_WeakKVT. (weakkvtp): Remove macro. (allocate_weakkvt): Remove declaration. * spvw.d (main): Don't initialize O(all_weakkvtables). * spvw_garcol.d (gar_col_normal): Remove obsolete and broken handling of weakkvt objects. * spvw_gcmark.d (gc_mark): Remove handling of Rectype_WeakKVT. * spvw_typealloc.d (allocate_weakkvt_low, allocate_weakkvt): Remove functions. * io.d (pr_weakkvt): Remove function. (pr_orecord): Remove handling of Rectype_WeakKVT. * predtype.d (TYPE-OF, CLASS-OF): Remove handling of Rectype_WeakKVT. (enum_hs_weakkvt): Remove enum value. (heap_statistics_mapper): Remove handling of Rectype_WeakKVT. 2004-05-08 Bruno Haible * clos-class2.lisp (map-direct-subclasses): Remove function. (add-direct-subclass, remove-direct-subclass, list-direct-subclasses): Use a weak-list instead of a list of weak-pointers. 2004-05-26 Bruno Haible * functions.lisp (function-lambda-expression): Moved to here from defs2.lisp. (function-name): Likewise. Make more efficient. * defs2.lisp (function-lambda-expression, function-name): Move to functions.lisp. 2004-05-25 Sam Steingold fix bug#959549: Win32 bug: LISTEN eats the first character * stream.d (listen_handle): always place the byte read() into *byte (low_fill_buffered_handle): do not lose the byte read by listen_handle() 2004-05-25 Sam Steingold * clos-class2.lisp (make-instance-structure-class) (define-structure-class): avoid some compilation warnings * clos-class5.lisp (update-instance-for-redefined-class): ditto 2004-05-25 Sam Steingold do not use the side-effect class of functions that might change, as per * control.d (FUNCTION-SIDE-EFFECT): also return FDEFINITION and NAME * eval.d (FUNTAB): also inline FUNCTION-SIDE-EFFECT and FUNCTION-NAME-P * constobj.d (version): bump * compiler.lisp (proclaimed-inline-p): new function (f-side-effect): use the side-effect class only for functions in the same compilation unit, proclaimed INLINE, residing in locked packages, or anonymous 2004-05-25 Sam Steingold * defs2.lisp (function-name): new inline function * compiler.lisp (function-signature): use it * documentation.lisp (documentation): ditto 2004-05-24 Bruno Haible * built.d: New file. * lispbibl.d (built_flags): New declaration. * spvw.d (init_object_tab): Call it. * makemake.in (CPARTS): Add built. Let built.o, not spvw.o, depend on cflags.h. * po/Makefile.devel (DSOURCES): Add built. 2004-05-23 Bruno Haible * backquote.lisp: Reorder. (backquote, bq-nconc): Moved to here from init.lisp. (*unquote-occurred*): Rename from *unquote-occured*. (bq-expand-vector): Rename from bq-vec-expand. (bq-optimize-for-list): Rename from bq-optimize. (bq-optimize-for-vector): Rename from bq-optimize-vec. * init.lisp (backquote, bq-nconc): Moved to backquote.lisp. 2004-05-23 Bruno Haible Make SPVW_MIXED_BLOCKS_STAGGERED work with LINUX_NOEXEC_HEAPCODES. * lispbibl.d (nonimmediate_heapnr) [HEAPCODES]: New macro. * spvw_genera1.d (rebuild_old_generation_cache): Use it. 2004-05-22 Bruno Haible Make DEBUG_GCSAFETY work with LINUX_NOEXEC_HEAPCODES. * lispbibl.d (nonimmsubrp): New function/macro. (gcv_object_t::gcv_object_t, pgci_pointable, ngci_pointable): Use it. 2004-05-23 Bruno Haible * spvw_allocate.d (make_space_gc) [SPVW_BLOCKS]: Take varobjects_misaligned into account. * spvw_memfile.d (loadmem_from_handle): Take varobjects_misaligned into account. 2004-05-08 Bruno Haible Make weak hash tables work. * lispbibl.d (ht_weak_p): Simplify. (ht_weak): Remove macro. (kvtable_data): Simplify. Use WeakAlist. (hash_table_weak_type): New declaration. * hashtabl.d (hash_lookup): When the key is unbound, no need to test the value for unbound as well. (hash_store): Increment the count in the weak-alist vector as well. (hash_table_weak_type, allocate_kvt): New functions. (prepare_resize): Use allocate_kvt. (resize): Update. Initialize the count in the weak-alist vector too. (HASH-TABLE-COUNT): Take the count from the weak-alist vector. (EXT:HASH-TABLE-WEAK-P): Update. (SYS::%SET-HASH-TABLE-WEAK-P): Mostly rewritten. * io.d (pr_orecord): Use hash_table_weak_type instead of ht_weak. * predtype.d (hash_table_equalp): Likewise. 2004-04-26 Bruno Haible * clos-class2.lisp (std-compute-cpl): Use "the list" declaration, to enable compiler optimization. * clos-class5.lisp (valid-make-instance-keywords) (valid-reinitialize-instance-keywords) (valid-update-instance-for-redefined-class-keywords) (valid-update-instance-for-different-class-keywords): Likewise. * clos-genfun2.lisp (compute-dispatch): Likewise. * clos-genfun5.lisp (compute-applicable-methods): Likewise. * clos-methcomb3.lisp (standard-method-combination-expander): Likewise. 2004-05-23 Sam Steingold allow () to match NIL in destructuring lambda lists * utils/clispload.lsp (regression-test::*expected-failures*): remove MACROLET.39 * defmacro.lisp (%null-tests): proclaim SPECIAL (empty-pattern): new function (analyze1): treat () as an empty pattern, not symbol NIL (make-macro-expansion): bind %NULL-TESTS and call them * places.lisp (define-setf-expander, defsetf): ditto * macros2.lisp (deftype): ditto 2004-05-23 Sam Steingold * clos-class0.lisp (print-object): avoid a compilation warning 2004-05-22 Sam Steingold * spvw.d (init_object_tab): init O(system_type) here... * constobj.d (system_type): ...not here * makemake.in: only spvw.d depends on cflags.h, not everything 2004-05-22 Sam Steingold * defstruct.lisp (defstruct): avoid a compiler warning 2004-05-22 Sam Steingold * spvw.d (init_object_tab): fix a typo in features_initstring 2004-05-22 Bruno Haible * utils/clispload.lsp (regression-test::*expected-failures*): Add PRINT.ARRAY.2.12, PRINT.ARRAY.2.14, PRINT.ARRAY.2.16, PRINT.ARRAY.2.18, PRINT.ARRAY.2.19. 2004-05-22 Bruno Haible * utils/clispload.lsp (regression-test::*expected-failures*): Remove MAKE-INSTANCES-OBSOLETE.2, PRINT.SYMBOL.PREFIX.3. Paul fixed them. 2004-05-22 Bruno Haible * lispbibl.d (symbol_): Add a filler for LINUX_NOEXEC_HEAPCODES. Check that the size is a multiple of varobject_alignment. * genclisph.d (main): Update. * constsym.d (LISPSYM_B): Add initializer for filler. 2004-05-22 Bruno Haible * spvw_weak.d (MARK): Use canon() instead of canonaddr(). 2004-05-21 Bruno Haible New heapcodes scheme for Linux/x86 systems. * lispbibl.d: Recognize CFLAGS macros STANDARD_HEAPCODES, LINUX_NOEXEC_HEAPCODES. (STANDARD_HEAPCODES, LINUX_NOEXEC_HEAPCODES): New macros. (LINUX_NOEXEC_HEAPCODES): Use garcol_bit_o = 0. (machine_bias, varobject_bias, cons_bias, immediate_bias, subr_bias) (imm_type_shift, fixnum_type, sfloat_type, char_type, read_label_type) (system_type, sign_bit_t, sign_bit_o, bignum_bit_o, number_immediatep) (varobjects_misaligned, nonimmediate_bias_mask) (nonimmediate_heapcode_mask, type_data_object, type_zero_oint) (immediate_object_p, gcinvariant_object_p, gcinvariant_bias_p) [LINUX_NOEXEC_HEAPCODES]: New definitions for LINUX_NOEXEC_HEAPCODES. (varobject_alignment): Define to 8 for LINUX_NOEXEC_HEAPCODES. (consp, varobjectp): Generalize for LINUX_NOEXEC_HEAPCODES. (subrp) [LINUX_NOEXEC_HEAPCODES]: New definition for LINUX_NOEXEC_HEAPCODES. (immsubrp) [HEAPCODES]: New macro. (machinep) [LINUX_NOEXEC_HEAPCODES]: New definition for LINUX_NOEXEC_HEAPCODES. (case_Rectype_Subr_above): New macro. (FB5, FB4, FB3, FB2, FB1): New definitions for LINUX_NOEXEC_HEAPCODES. (makebottomword, framesize): New macros. (framecode) [LINUX_NOEXEC_HEAPCODES]: New definition for LINUX_NOEXEC_HEAPCODES. (topofframe, framebottomword): Simplify by using framesize, makebottomword. * genclisph.d (main): Update. Emit definitions of HEAPCODES, makebottomword. * spvw.d (main): If TRIVIALMAP_MEMORY & SPVW_MIXED_BLOCKS_STAGGERED & LINUX_NOEXEC_HEAPCODES, use 0xBF000000 as upper bound for all heaps. * spvw_garcol.d (alive) [HEAPCODES]: Make it work for LINUX_NOEXEC_HEAPCODES too. * spvw_gcmark.d (gc_mark) [HEAPCODES]: Make it work for LINUX_NOEXEC_HEAPCODES too. * spvw_memfile.d (loadmem_update) [HEAPCODES]: Make it work for LINUX_NOEXEC_HEAPCODES too; SUBRs are indistiguishable from Records here. * eval.d (eval1) [HEAPCODES]: Update for changed representation of subrs. * io.d (prin_object_dispatch) [HEAPCODES]: Update for changed representation of subrs. * hashtabl.d (sxhash_atom) [HEAPCODES]: Update for changed representation of subrs. * predtype.d (TYPE-OF, CLOS:CLASS-OF, heap_statistics_mapper) [HEAPCODES]: Update for changed representation of subrs. 2004-05-21 Bruno Haible * lispbibl.d (char_int): Make it work when some heapcode bits are in the high bits, not only in the low bits. * genclisph.d (main): Update. 2004-05-21 Bruno Haible Make it possible to enforce an alignment == 4 mod 8 of all varobjects in HEAPCODES mode. * lispbibl.d (varobjects_misaligned, VAROBJECTS_ALIGNMENT_DUMMY_DECL): New macros. (conses_misaligned): New macro. (subr_t): Check that the size is a multiple of varobject_alignment. (DYNAMIC_8BIT_VECTOR, DYNAMIC_STRING): Enforce varobjects_misaligned. (subr_tab_, symbol_tab_): Add a varobjects_misaligned dummy decl. * genclisph.d (main): Emit varobjects_misaligned, VAROBJECTS_ALIGNMENT_DUMMY_DECL, varobject_alignment definitions. Update subr_tab_, symbol_tab_ definitions. * spvw.d (subr_anz, symbol_anz): Take varobjects_misaligned into account. (for_all_subrs, for_all_constsyms): Likewise. (init_subr_tab_1, init_symbol_tab_1, init_symbol_tab_2): Likewise. (init_symbol_functions): Likewise. (main): Likewise. Let heap_start point past the misaligned bytes. If SINGLEMAP_MEMORY || TRIVIALMAP_MEMORY, preallocate the first heap page. If SPVW_PAGES, initialize heap->misaligned. (dynload_modules): Take varobjects_misaligned into account. * spvw_heap.d (Heap) [SPVW_PAGES]: Add misaligned field. * spvw_global.d (check_gc_consistency): Take varobjects_misaligned into account. * spvw_garcol.d (gar_col_normal): If GENERATIONAL_GC, let generation 1 respect varobjects_misaligned. (gc_compact_heap): Don't set a page's page_start and page_end before it is moved to the free_pages pool. * spvw_genera1.d (build_old_generation_cache): Allow for the possibility that heap_gen0_start has varobjects_misaligned. * spvw_allocate.d (make_space_gc_true): Take varobjects_misaligned into account. (make_space_gc_false): Assume map_pagesize is a power of 2. (make_space_gc) [SPVW_PAGES]: Take a Heap* as argument, not a Pages*. Take varobjects_misaligned into account. Set a page's page_start and page_end when taking it from the free_pages pool. (make_space) [SPVW_PAGES]: Update. * spvw_memfile.d (WRITE_page_alignment, READ_page_alignment): Add parens where needed. (savemem): Write out zero-bytes to enforce the varobjects_misaligned. (loadmem_from_handle): Take varobjects_misaligned into account. If SINGLEMAP_MEMORY || TRIVIALMAP_MEMORY, mmap also the zero-bytes that enforce the varobjects_misaligned. * spvwtabf.d (subr_tab_data): Enforce varobject_alignment. Add varobjects_misaligned dummy bytes at the beginning. (subr_tab_data_size): Take varobjects_misaligned into account. * spvwtabs.d (symbol_tab_data): Enforce varobject_alignment. Add varobjects_misaligned dummy bytes at the beginning. * modules.d (MODULE, modules): Add the varobjects_misaligned bytes at the beginning of the module's subr_tab. * affi.d (module__affi__subr_tab): Likewise. * utils/modprep.lisp (print-tables-1, print-tables-2): Likewise. * utils/modpreptest.out: Update. 2004-05-18 Bruno Haible * lispbibl.d (number_immediatep): New macro. (positivep, _R_sign) [!TYPECODES]: Use it. * flo_rest.d (floatcase): Likewise. 2004-05-18 Bruno Haible Make the Subr objects look like XRecords, to simplify gc_mark. * lispbibl.d (Rectype_Subr): New enumeration item. (subr_t): Add XRECORD_HEADER and move the lispfunction after the GC-visible fields. (subr_const_offset, subr_const_anz): Remove macros. (subr_length, subr_xlength): New macros. * genclisph.d (main): Update definitions of subr_t and LISPFUN_F. * subr.d (LISPFUN_D, LISPFUN_F, LISPFUN_G): Also initialize the subrs' GCself and type, flags and length. * spvw.d (init_subr_tab_1, init_other_modules_1, init_module_2) (dynload_modules): Also initialize the subrs' GCself. * spvw_update.d (update_subr_tab): Don't use subr_const_offset. * spvw_garcol.d (gc_markphase): Treat subrs like constsyms. (alive): The mark bit is now at the beginning of the Subr. (unmark_fixed_varobjects): Unmark the constsyms and subrs, even if GENERATIONAL_GC. * spvw_gcmark.d (down_subr, up_subr): Only needed if HEAPCODES. (gc_mark): Treat subrs like other SXRecords. * lispbibl.d (subr_tab_ptr_as_object): Make more portable. * genclisph.d (main): Update. 2004-05-18 Bruno Haible * lispbibl.d: Rename NO_TYPECODES to HEAPCODES. * spvw.d: Likewise. * encoding.d: Likewise. * genclisph.d: Likewise. * makemake.in: Likewise. 2004-05-21 Sam Steingold * io.d (pr_array): respect CUSTOM:*PRINT-EMPTY-ARRAYS-ANSI* * constsym.d (print_empty_arrays_ansi): add * misc.d (SYS::SET-ANSI): set CUSTOM:*PRINT-EMPTY-ARRAYS-ANSI* * spvw.d (init_symbol_values): defvar CUSTOM:*PRINT-EMPTY-ARRAYS-ANSI* * places.lisp (*ansi*): mention in documentation 2004-05-21 Sam Steingold * stream.d (SOCKET-STREAM-SHUTDOWN): avoid a GCC warning 2004-05-21 Sam Steingold * stream.d (wr_ch_terminal3, wr_ch_array_terminal3): respect the terminal stream encoding EOL slot 2004-05-21 Sam Steingold * spvw.d (init_object_tab): add memory model information to *FEATURES* * constobj.d (software_type): use "cflags.h" * makemake.in (cflags.h): new target 2004-05-08 Bruno Haible New data types containing weak references. * lispbibl.d (Rectype_MutableWeakList, Rectype_MutableWeakAlist) (Rectype_Weakmapping, Rectype_WeakList, Rectype_WeakAnd, Rectype_WeakOr) (Rectype_WeakAndMapping, Rectype_WeakOrMapping, Rectype_WeakAlist_Key) (Rectype_WeakAlist_Value, Rectype_WeakAlist_Either) (Rectype_WeakAlist_Both): New enum values. (WeakList, MutableWeakList, WeakAnd, WeakOr, Weakmapping) (WeakAndMapping, WeakOrMapping, WeakAlist, MutableWeakAlist): New types. (mutableweaklist_length, weakmapping_length, mutableweakalist_length): New macros. (TheMutableWeakList, TheWeakList, TheWeakAnd, TheWeakOr) (TheWeakmapping, TheWeakAndMapping, TheWeakOrMapping) (TheMutableWeakAlist, TheWeakAlist): New macros. (SXrecord_nonweak_length, Lrecord_nonweak_length): Return 0 also for the new weak data types. (activate_weak): New declaration. * spvw_gcmark.d: New file, extracted from spvw_garcol.d. (gc_mark): Handle Rectype_WeakList, Rectype_WeakAnd, Rectype_WeakOr, Rectype_WeakAndMapping, Rectype_WeakOrMapping, Rectype_WeakAlist_* as Lrecords. * spvw_weak.d: New file. * spvw_garcol.d (gc_mark): Move away to spvw_gcmark.d. Include spvw_gcmark.c, spvw_weak.c. (gar_col_normal): Invoke gc_mark_weakpointers and clean_weakpointers. Remove old handling of O(all_weakpointers). * spvw_circ.d (get_circ_mark, get_circ_unmark): Handle Rectype_MutableWeakList, Rectype_MutableWeakAlist, Rectype_Weakmapping, Rectype_WeakList, Rectype_WeakAnd, Rectype_WeakOr, Rectype_WeakAndMapping, Rectype_WeakOrMapping, Rectype_WeakAlist_*. * spvw.d (main): Initialize markwatchset. * spvw_memfile.d (loadmem_from_handle): Likewise. * weak.d: New file. * record.d (mk_weakpointer, MAKE-WEAK-POINTER, WEAK-POINTER-P) (check_weakpointer_replacement, check_weakpointer, WEAK-POINTER-VALUE) (SETF WEAK-POINTER-VALUE): Move to weak.d. * io.d (pr_orecord): Handle Rectype_MutableWeakList, Rectype_MutableWeakAlist, Rectype_Weakmapping, Rectype_WeakList, Rectype_WeakAnd, Rectype_WeakOr, Rectype_WeakAndMapping, Rectype_WeakOrMapping, Rectype_WeakAlist_*. * predtype.d (TYPE-OF, CLASS-OF): Handle Rectype_MutableWeakList, Rectype_MutableWeakAlist, Rectype_Weakmapping, Rectype_WeakList, Rectype_WeakAnd, Rectype_WeakOr, Rectype_WeakAndMapping, Rectype_WeakOrMapping, Rectype_WeakAlist_*. (enum_hs_weak_list, enum_hs_weak_alist, enum_hs_weakmapping) (enum_hs_internal_weak_list, enum_hs_weak_and_relation) (enum_hs_weak_or_relation, enum_hs_weak_and_mapping) (enum_hs_weak_or_mapping, enum_hs_internal_weak_alist): New enum values. (heap_statistics_mapper): Handle Rectype_MutableWeakList, Rectype_MutableWeakAlist, Rectype_Weakmapping, Rectype_WeakList, Rectype_WeakAnd, Rectype_WeakOr, Rectype_WeakAndMapping, Rectype_WeakOrMapping, Rectype_WeakAlist_*. * init.lisp: Export symbols relating to weak-list, weak-and-relation, weak-or-relation, weak-mapping, weak-and-mapping, weak-or-mapping, weak-alist from EXT. * places.lisp (setf weak-pointer-value): Define as a function alias. (setf weak-list-list, setf weak-mapping-value) (setf weak-and-mapping-value, setf weak-or-mapping-value) (setf weak-alist-contents, setf weak-alist-value): New aliases. * makemake.in (CPARTS): Add weak. (SPVW_INCLUDES): Add spvw_gcmark, spvw_weak. * po/Makefile.devel (DSOURCES): Add spvw_gcmark, spvw_weak, weak. 2004-04-25 Bruno Haible Make it possible to attach a documentation string to classes without a proper name. * lispbibl.d (Class): Add documentation field. * clos-class2.lisp (class): Add documentation slot. (ensure-class): Don't call sys::%set-documentation. (initialize-instance-standard-class, initialize-instance-built-in-class) (initialize-instance-structure-class): Initialize the documentation slot. * documentation.lisp (documentation, (setf documentation)): For classes, use the documentation string in the class. For symbols and 'type, look in the class first. 2004-05-15 Bruno Haible Fix bug that prevents functions named (SETF FOO) from being inlined (bug introduced in clisp-2.26). * compiler.lisp (c-GLOBAL-FUNCTION-CALL, c-APPLY): Compare function names with EQUAL, not EQ. 2004-05-05 Bruno Haible * type.lisp (upgraded-complex-part-type): Change result to be as precise as possible. Add environment argument. * subtypep.lisp (COMPLEX): Call upgraded-complex-part-type where appropriate. 2004-05-05 Bruno Haible * io.d (pr_pair): New function. (pr_kvtable): Use it. 2004-04-25 Bruno Haible Change the default-initargs representation to match the MOP. * record.d (CLOS::%MAKE-INSTANCE): Assume each default initarg is in the form (symbol form func) instead of (symbol . initer). * clos-class2.lisp (defclass): Produce :DIRECT-DEFAULT-INITARGS as a list of (symbol form func). (ensure-class, equal-default-initargs) (finalize-instance-standard-class, initialize-instance-structure-class): Update. 2004-05-17 Bruno Haible * lispbibl.d: Rewrite a preprocessor expression, to avoid a gcc warning. 2004-05-17 Sam Steingold * condition.lisp: add package prefix in the WITHOUT-PACKAGE-LOCK form 2004-05-17 Sam Steingold * spvw.d (main): do not print memory model information here * misc.d (SOFTWARE-TYPE): return O(software_type) instead of "ANSI C program" * constobj.d (software_type): memory model information 2004-05-16 Bruno Haible Fix (SIGNUM negative-single-float) on 64-bit machines. * aridecl.d (make_FF) [IMMEDIATE_FFLOAT]: Cast the data to 32 bits, otherwise a negative sign overflows into the type bits. 2004-04-25 Bruno Haible * clos-class5.lisp (change-class): Don't copy the values of slots that are shared in the new class. 2004-04-25 Bruno Haible * record.d (check_initialization_argument_list): Change error type to PROGRAM-ERROR. * clos-class5.lisp (check-initialization-argument-list): Likewise. 2004-05-16 Sam Steingold * modules/berkeley-db/bdb.c (BDB:ENV-CREATE): 4.2 uses DB_RPCCLIENT while 4.1 used DB_CLIENT 2004-05-16 Bruno Haible * genclisph.d (main) [TYPECODES && HAVE_SMALL_SSTRING]: Fix the definition of TheS8string, TheS16string, TheS32string. 2004-05-16 Bruno Haible * lispbibl.d (NO_ARI_ASM): Define if SAFETY==3. (begin_arith_call, end_arith_call): Don't test SAFETY any more. * arilev1.d (LOOP_INLINE_ASM, LOOP_EXTERN_ASM): Likewise. 2004-05-16 Sam Steingold * unix/malloc.c (printf_address): align output (test_malloc): new function (main): when no arguments give, try the whole range 2004-05-16 Bruno Haible * spvw_garcol.d (gc_mark) [TYPECODES]: Fix bug in handling of reallocated simple-string (2004-02-18 patch). 2004-05-15 Sam Steingold * defs1.lisp (with-no-package-lock-internal): new macro: evaluates the package list (without-package-lock): use WITH-NO-PACKAGE-LOCK-INTERNAL * compiler.lisp (c-WITHOUT-PACKAGE-LOCK): wrap c-FORM call in WITH-NO-PACKAGE-LOCK-INTERNAL so that it works during macroexpansion too (e.g., with DEFMETHOD) 2004-05-15 Sam Steingold * modules/rawsock/sock.lisp (open-unix-socket): pass second argument to NAMESTRING (CLISP extension, to be removed) (close): define a method which calls SOCK-CLOSE 2004-05-15 Sam Steingold * modules/clx/mit-clx/defsystem.lisp (compile-clx, load-clx): compile and load "shape" 2004-05-14 Sam Steingold * init.lisp (*documentation*): still non-weak: although works on cygwin, might still break on other platforms 2004-05-14 Sam Steingold new macro DEFCHECKER for modules * utils/modprep.lisp: OBJDEF-INIT can now be a list (write-string-c-style): new function (init-to-tag): use it (string-upcase-verbose): new function (new-objdef): use it (cpp-helper): new defstruct (flag-set): include it (checker): new defstruct for DEFCHECKER (*checkers*, new-checker): add (def-something-p): replaces DEF-FLAG-SET-P (parse): call it for both DEFFLAGSET and DEFCHECKER (print-tables-1): print OBJDEF-INIT with possible conditions, print *CHECKERS* * modules/rawsock/rawsock.c (check_socket_domain, check_socket_type) (check_socket_protocol): use DEFCHECKER * modules/syscalls/calls.c (mknod_type_check): ditto 2004-05-14 Sam Steingold * init.lisp (*documentation*): weak hash table now 2004-05-13 Sam Steingold new macro DEFFLAGSET for modules * utils/modprep.lisp (parse-name): new function (defun-p): use it (flag-set, *flag-sets*, new-flag-set, def-flag-set-p): add (parse): call DEF-FLAG-SET-P (print-tables-1): output flag sets * modules/berkeley-db/bdb.c, modules/pcre/cpcre.c: * modules/rawsock/rawsock.c, modules/regexp/regexi.c: use DEFFLAGSET * genclisph.d (posfixnum_default): new inline function 2004-05-13 Sam Steingold * modules/rawsock/rawsock.c (my_check_argument): pushSTACK(NIL) for PLACE 2004-05-13 Sam Steingold * modules/syscalls/calls.c [__sun__]: make sure that we do get prototypes for confstr() and lgamma_r() 2004-05-13 Sam Steingold * dribble.lisp (dribble-toggle): FRESH-LINE before the final message 2004-05-13 Bruno Haible * error.d (check_array_replacement): Use a more factual, less arrogant error message. 2004-05-13 Sam Steingold * utils/clispload.lsp (regression-test::*expected-failures*): Paul fixed ENSURE-DIRECTORIES-EXIST.8 2004-05-02 Bruno Haible New type of records, LRECORD: no flags but max. 2^24 elements. * lispbibl.d (weakkvt_type): Remove macro. (mdarray_type): Choose highest values less than the other array type codes. (lrecord_type): New macro. (case_weakkvt): Remove macro. (case_lrecord): New macro. (case_array): Remove weakkvt_type. (case_sxrecord): New macro. (case_record): Add lrecord_type. (lrecord_tfl): New macro. (record_): Move the rectype to be the first field after GCself. (LRECORD_HEADER): New macro. (lrecord_, Lrecord): New types. (lrecord_length, Lrecord_length): New macros. (SRECORD_HEADER, XRECORD_HEADER): Update. (rectype_longlimit): New enumeration value. (Rectype_WeakKVT): Change so it is >= rectype_longlimit. (Stream): Move the strmtype to be the first field here as well. (TheSarray): Remove weakkvt_type. (TheWeakKVT, TheRecord): Update. (TheLrecord): New macro. (TheVarobject, ThePointer): Add instance_type, lrecord_type. (SXrecord_length): Rename from Record_length. (SXrecord_nonweak_length): Rename from Record_nonweak_length. (Lrecord_nonweak_length, Record_length, Record_nonweak_length): New macros. (lrecordp): New macro. (weakkvtp): Use lrecordp. (case_Rectype_WeakKVT_above): Remove macro. (case_Rectype_array_above): Remove Rectype_WeakKVT. (allocate_lrecord): New declaration. (allocate_srecord, allocate_xrecord): Update. * spvw_multimap.d (MM_TYPECASES): Handle lrecords as well. * spvw_global.d (init_mem_heaptypes): Don't handle weakkvt specially. * spvw_objsize.d (size_lrecord): New macro. (objsize): Handle lrecords as well. Don't handle weakkvt specially. (objsize_sxrecord): Rename from objsize_record. (objsize_lrecord): New function. (init_objsize_table): Handle lrecords as well. Don't handle weakkvt specially. * spvw_update.d (do_update_sxrecord): Rename from do_update_record. (do_update_lrecord): New macro. (update_sxrecord): Rename from update_record. (update_lrecord): New macro. (update_varobject): Treat sxrecords and lrecords separately. * spvw_garcol.d (down_weakkvt, up_weakkvt): Remove macros. (down_lrecord, up_lrecord): New macros. (down_sxrecord): Rename from down_record. (up_sxrecord): Rename from up_record. (gc_mark): Handle lrecords as well. Don't handle weakkvt specially. * spvw_genera1.d (walk_area_record): Handle lrecords as well. (walk_area): Don't handle weakkvt specially. (build_old_generation_cache): Likewise. Handle lrecords as well. * spvw_typealloc.d (allocate_weakkvt_low): Use lrecord_type instead of lrecord_type. (allocate_lrecord, allocate_lrecord_): New functions. (allocate_srecord_, allocate_xrecord_, make_ratio, make_complex): Update. * spvw_circ.d (get_circ_mark, get_circ_unmark, subst_circ_mark, subst) (subst_circ_unmark): Handle lrecords as well. * io.d (prin_object_dispatch): Handle lrecords as well. * predtype.d (equalp): Compare lrecords like with EQ. (TYPE-OF): Handle lrecords as well. For weakkvt, return a symbol, not a list. (CLOS:CLASS-OF): Handle lrecords as well. (heap_statistics_mapper): Handle lrecords as well. * hashtabl.d (hashcode4_atom, sxhash_atom): Handle lrecords as well. 2004-04-25 Bruno Haible * utils/clispload.lsp (*expected-failures*): Add IMAGPART.4, MAKE-INSTANCES-OBSOLETE.2, TYPES.7B, TYPES.7C, USER-CLASS-DISJOINTNESS, USER-CLASS-DISJOINTNESS-2, TAC-3.16. Remove SHARED-INITIALIZE.ERROR.4. 2004-04-25 Bruno Haible Add keyword argument checking to UPDATE-INSTANCE-FOR-REDEFINED-CLASS and UPDATE-INSTANCE-FOR-DIFFERENT-CLASS. * clos-class5.lisp (*update-instance-for-redefined-class-table*) (*update-instance-for-different-class-table*): New variables. (note-uirc-change, note-uidc-change): New functions. (defun note-si-change): Update also *update-instance-for-redefined-class-table* and *update-instance-for-different-class-table*. (valid-reinitialize-instance-keywords): New function, extracted from initial-reinitialize-instance. (valid-update-instance-for-redefined-class-keywords) (valid-update-instance-for-different-class-keywords) (check-initialization-argument-list): New functions. (initial-reinitialize-instance): Call valid-reinitialize-instance-keywords. (update-instance-for-different-class): Call valid-update-instance-for-different-class-keywords and check the initargs. (update-instance-for-redefined-class): Call valid-update-instance-for-redefined-class-keywords and check the initargs. * clos-genfun3.lisp (|#'update-instance-for-redefined-class|) (|#'update-instance-for-different-class|): New variables. (std-add-method, std-remove-method): Conditionally call note-uirc-change, note-uidc-change. 2004-05-12 Sam Steingold * array.d (fehler_array, test_array): remove (subscripts_to_index): do not call test_array() (AREF, SYS::STORE, SBIT, BIT): use check_array() instead of relying on subscripts_to_index() (ROW-MAJOR-AREF, SYS::ROW-MAJOR-STORE, ARRAY-RANK) (ARRAY-DIMENSION, ARRAY-DIMENSIONS, ARRAY-TOTAL-SIZE) (ARRAY-IN-BOUNDS-P, ARRAY-ROW-MAJOR-INDEX, ADJUSTABLE-ARRAY-P) (ARRAY-HAS-FILL-POINTER-P, ADJUST-ARRAY): use check_array() instead of test_array() * error.d (check_array_replacement): implement * lispbibl.d (check_array) [!COMPILE_STANDALONE]: implement (check_array_replacement): declare * genclisph.d: ditto 2004-05-12 Bruno Haible * makemake.in (XCFLAGS) [SPARC64]: Use only -O, not -O2. 2004-05-01 Bruno Haible Rename LRECORD to VRECORD. * lispbibl.d (vrecord_tfl): Rename from lrecord_tfl. (VRECORD_HEADER): Rename from LRECORD_HEADER. (vrecord_): Rename from lrecord_. (Vrecord): Rename from Lrecord. (vrecord_length): Rename from lrecord_length. (sarray_, sarray_length, sbvector_, svector_, weakkvt_t, ClassVersion) (Codevec, DYNAMIC_8BIT_VECTOR): Update. * spvw_typealloc.d (allocate_vector, allocate_weakkvt_low) (allocate_bit_vector): Update. * genclisph.d (main): Update. 2004-05-11 Bruno Haible * arilev0.d (divu_3232_3232_) [SPARC64]: Define also for SPARC64. 2004-05-11 Bruno Haible * lfloat.d (LF_shorten_LF, LF_LF_plus_LF, LF_square_LF, LF_LF_mal_LF) (LF_LF_durch_LF, I_to_LF): Cast LF_exp_high+1 down to 32 bits. Needed for 64-bit platforms. 2004-05-11 Bruno Haible * lispbibl.d (bit_test): Make it work on SPARC64. * genclisph.d (main): Update accordingly. 2004-05-11 Bruno Haible * arisparc64.d: Add register declaration for %g2. (copy_loop_down): Fix wrong register. 2004-05-11 Bruno Haible * arilev0.d (mulu32) [SPARC64]: Fix asm syntax. 2004-05-11 Sam Steingold * lispbibl.d [SPARC64]: use Bits 63..48 for type code, bits 47..0 for address always, not just when defined(NO_SINGLEMAP). Needed for Solaris. 2004-05-11 Bruno Haible Optimize constants a little better. * compiler.lisp (c-NIL): Use *seclass-foldable* instead of *seclass-pure*. (c-CONST): Use *seclass-foldable* instead of *seclass-pure*, if appropriate. (c-PROGN, c-AND, c-OR, c-QUOTE, c-SETQ, c-PSETQ, c-MULTIPLE-VALUE-SETQ) (c-TAGBODY): Use *seclass-foldable* instead of *seclass-pure*. 2004-05-11 Bruno Haible * arilev0.d (divu_3216_1616) [SPARC64]: Add missing newline in asm statement. (divu_3216_3216, divu_3232_3232, divu_6432_3232) [SPARC64]: Likewise. 2004-05-11 Sam Steingold * compiler.lisp (c-form-table): treat =,/=,>,>=,<,<= specially (c-COMPARE-NUMBERS): try to convert = and other numeric comparisons to ZEROP &c 2004-05-08 Bruno Haible * control.d (check_setq_body): Fix GC-safety bug introduced on 2003-05-20. * eval.d (progv): Likewise. * i18n.d (SYS::SET-CURRENT-LANGUAGE): Fix GC-safety bug introduced on 2003-05-01. * misc.d (push_envar): Fix GC-safety bug introduced on 2003-07-28. * pathname.d (PARSE-NAMESTRING): Fix GC-safety bug introduced on 2002-08-01. 2004-05-03 Bruno Haible * subrkw.d: Reorder, to match the order in subr.d. 2004-04-30 Bruno Haible * Makefile.devel (MULTIBUILD_OPTIONS): New variable. (multibuild-linux-x86): New target. 2004-04-30 Bruno Haible Fixes for the TYPECODES model on 32-bit platforms. * intlog.d (I_I_logand_I, I_I_lognand_I, I_I_logandc2_I): Fix bug when combining a fixnum with a bignum. * utils/clispload.lsp: Skip memory intensive test on 32-bit SPVW_PURE_BLOCKS platforms. 2004-04-25 Bruno Haible * condition.lisp (check-value): Fix bug in the CONTINUE restart. 2004-04-25 Bruno Haible * record.d (CLOS::%CHANGE-CLASS): Remove third argument. Simplify. * clos-class5.lisp (change-class): Nop. 2004-04-24 Bruno Haible * defstruct.lisp (ds-slot-name, ds-slot-initargs, ds-slot-offset) (ds-slot-initer, ds-slot-initfunctionform, ds-slot-type) (ds-slot-readonly): Remove macros. Use clos::slot-definition-* accessors everywhere. (copy-): Rename from copy-ds-slot. * clos-class2.lisp: Update callers here as well. 2004-05-10 Sam Steingold * subr.d, hashtabl.d (GETHASH): seclass_default because user-defined HASH-TABLE-TEST can do anything 2004-04-24 Bruno Haible Metaobject protocol for slot definitions. * lispbibl.d (classversion_length): New macro. (SlotDefinition): New type. (TheSlotDefinition): New macro. * record.d (SYS::%STRUCTURE-REF): Use new slot-definition-* accessors. (CLOS::ALLOCATE-METAOBJECT-INSTANCE): New function. (slot_in_arglist): Use new SlotDefinition accessors. (CLOS::%SHARED-INITIALIZE): Use new slot-definition-* accessors. Update for new initer layout: Avoid funcalling the initfunction by looking whether it's a constant_initfunction. (CLOS::%REINITIALIZE-INSTANCE): Use new SlotDefinition accessors. (do_initialize_instance): Use new slot-definition-* accessors. Update for new initer layout: Avoid funcalling the initfunction by looking whether it's a constant_initfunction. (CLOS::%MAKE-INSTANCE): Update for new initer layout: Avoid funcalling the initfunction by looking whether it's a constant_initfunction. * io.d (some_printable_slots, pr_structure_default): Use new SlotDefinition accessors. * clos-slotdef1.lisp: New file. * clos-slotdef2.lisp: New file. * clos-slotdef3.lisp: New file. * init.lisp: Export symbols of the slot-definition MOP. Load clos-slotdef1. * clos-package.lisp: Export symbols of the slot-definition MOP. * clos.lisp: Load clos-slotdef2 and clos-slotdef3. * defstruct.lisp (make-ds-slot, ds-slot-name, ds-slot-initargs) (ds-slot-offset, ds-slot-initer, ds-slot-default, ds-slot-type) (ds-slot-readonly, copy-ds-slot): Rewrite using slot-definition. (ds-slot-initfunctionform, ds-pseudo-slot-default): New macros. (ds-typep, ds-typep-expansion, ds-canonicalize-type): Use ds-pseudo-slot-default. (ds-arg-default): Rewritten using new initer semantics. (ds-make-pred, ds-make-constructor-body): Use ds-pseudo-slot-default. (defstruct): New initer semantics. Old initer semantics was completely unintelligible. Avoid add-backquote and add-unquote. Use new slot-definition-* accessors. * clos-class2.lisp (replace-class-version): New function. (defclass): Don't put :ACCESSORS into the slot specifiers for ensure-class. Use make-initfunction-form and put :INITFORM instead of :INITER into the slot-specifiers. Use make-initfunction-form also for the :DIRECT-DEFAULT-INITARGS argument. (make-initer): Remove function. (slot-definition, standard-slot-definition): Remove. Replaced by clos-slotdef1.lisp. (make-slotdef): Remove function. (ensure-class): Invoke convert-direct-slots. Invoke equal-direct-slots instead of equal-slots. In case of class redefinition, update slot-definition instances instead of lists. (equal-direct-slots): Rename from equal-slots. (equal-slot): Remove function. Moved to clos-slotdef1.lisp. (initialize-instance-standard-class): Accept te direct-slots list in two different forms. (finalize-instance-standard-class): Use new slot-definition-* accessors. Use only the initfunction instead of the initer. (std-compute-slots): Works on direct-slot-definition instances now, instead of plists. Create effective-slot-definition instances, instead of slotdef instances. Don't lose the type and documentation of each slot. Rework the initform/initfunction handling. Call the MOP function effective-slot-definition-class. (std-layout-slots): Use new slot-definition-* accessors. (class-version-compute-slotlists): Likewise. (initialize-instance-structure-class): Likewise. Invoke convert-direct-slots. (define-structure-class): Use new slot-definition-* accessors. * clos-class5.lisp (change-class, update-instance-for-different-class): Use new slot-definition-* accessors. (slot-names): Likewise. * loadform.lisp (make-load-form-saving-slots): Use new slot-definition-* accessors. * documentation.lisp (documentation, (setf documentation)): Add a method for slot-definition. * makemake.in (LPARTS): Add clos-slotdef1, clos-slotdef2, clos-slotdef3. * po/Makefile.devel (LISPSOURCES): Add clos-slotdef1, clos-slotdef2, clos-slotdef3. 2004-05-07 Sam Steingold * lispbibl.d (unix) [__OpenBSD__]: define 2004-05-07 Sam Steingold * modules/rawsock/configure.in: requires to be included before it, which, in turn, requires to be included before it (on Solaris) 2004-05-07 Sam Steingold * modules/syscalls/configure.in: check for the library where erf() is implemented * modules/syscalls/link.sh.in (NEW_LIBS): "-m" will be in @LIBS@ becausd of the above check 2004-05-07 Bruno Haible * makemake.in (CC_CPLUSPLUS): New variable. (XCFLAGS): When using g++ >= 3.4, add -Wno-invalid-offsetof. 2004-05-07 Bruno Haible * clos-package.lisp: Trivially import a few symbols not yet defined. 2004-04-24 Bruno Haible Add ability to fix slot locations for all subclasses. * lispbibl.d (Class): Add fixed_slot_locations field. * clos-class2.lisp (standard-class): Add fixed-slot-locations field. (defclass): Pass the :fixed-slot-locations option to ensure-class. (ensure-class): Compare also the fixed-slot-locations value. (initialize-instance-standard-class): Handle a fixed-slot-locations argument. (std-compute-slots): Create a slotdef with location, if the slot is inherited from a superclass with fixed-slot-locations. (std-layout-slots): Respect constraints for slot locations already specified by a superclass. 2004-05-06 Sam Steingold * modules/rawsock/rawsock.c: Solaris compilation fixes: include for memcpy() &Co include before declare check_socket_domain() before it is first used 2004-05-06 Sam Steingold fix bug#948784: crash in pcre_free * modules/pcre/cpcre.c (module__pcre__init_function_2): reset pcre_malloc to malloc() and pcre_free to free() to avoid the FINALIZE crash 2004-04-24 Bruno Haible Fix problematic initialization protocol of standard-class and structure-class. * clos-class2.lisp (initialize-instance-standard-class): Call %initialize-instance. Initialize a few slots to nil. (initialize-instance-structure-class): Call %initialize-instance. * clos-class5.lisp (initialize-instance@standard-class) (initialize-instance@structure-class): Remove (call-next-method) that doesn't belong here. 2004-04-24 Bruno Haible * clos-print.lisp: Rename from clos-class4.lisp. * clos.lisp: Update. * makemake.in (LPARTS): Add clos-print, remove clos-class4. * po/Makefile.devel (LISPSOURCES): Add clos-print, remove clos-class4. 2004-05-05 Sam Steingold * hashtabl.d (hashcode_string): use all string elements 2004-05-05 Sam Steingold * modules/syscalls/calls.c (SET-FILE-STAT, CONVERT-MODE, UMASK, MKNOD): implement * modules/syscalls/posix.lisp: export them 2004-05-05 Sam Steingold * modules/pcre/cpcre.c (PCRE-FREE): set fp_pointer to NULL * modules/regexp/regexi.c (REGEXP-FREE): ditto 2004-05-05 Bruno Haible * makemake.in: Use "sed -n -e '$p'" instead of "tail -n 1". Needed for Solaris. 2004-04-24 Bruno Haible Make very early CLOS available before DEFSTRUCT. * clos-class0.lisp: New file. * init.lisp: Load it. * clos-class2.lisp (class-version): Move away to clos-class0.lisp. * clos-class4.lisp (print-object): Undefine first. Don't use TYPEP on class-version. * clos.lisp: After clos-class5.lisp, set *classes-finished* and then only load clos-class4.lisp. * makemake.in (LPARTS): Add clos-class0. * po/Makefile.devel (LISPSOURCES): Add clos-class0. 2004-04-24 Bruno Haible * clos-package.lisp: Tweak. 2004-04-24 Bruno Haible * clos-package.lisp: New file, extracted from clos.lisp. * clos.lisp: Move the package setup away. * init.lisp: Load clos-package before defstruct.lisp. * makemake.in (LPARTS): Add clos-package. * po/Makefile.devel (LISPSOURCES): Add clos-package. 2004-04-24 Bruno Haible * places.lisp: Add defsetf for %record-ref and %structure-ref here. * compiler.lisp: Remove defsetf for %record-ref. * defstruct.lisp: Remove defsetf for %structure-ref. 2004-04-18 Bruno Haible * clos-class5.lisp (class-prototype): Don't mark the class as being instantiated. 2004-05-03 Sam Steingold * disassem.lisp (disassemble): return when cannot disassemble 2004-05-03 Sam Steingold * package.d (in_make_package): fix a GC-safety bug which DEBUG_GCSAFETY cannot detect: object slots addresses, even though they are declared gcv_object_t, are _NOT_ valid gcv_object_t*!! 2004-04-28 Bruno Haible * lispbibl.d (SstringCase) [!UNICODE]: Add 5th argument. * subtypep.lisp (subtypep-CHARACTER-pre-simplify): Make it work when #-UNICODE. 2004-04-25 Bruno Haible * record.d (check_generic_function_replacement): New function, extracted from check_generic_function. (check_generic_function): Turn into an inline function. 2004-04-25 Bruno Haible Appendix to 2004-03-15 patch. * record.d (check_initialization_argument_list): ~ -> ~S. * sequence.d (remove_op, delete_op, substitute_op): Likewise. 2004-04-24 Bruno Haible * init.lisp: Remove vestiges of syscalls. 2004-04-18 Bruno Haible * clos-class2.lisp (ensure-class): Handle errors that might occur during class redefinition. (update-subclasses-for-redefined-class): Take a 4th argument. 2004-05-02 Sam Steingold fix bug#946645: rename-package does not accept package-designators * package.d (RENAME-PACKAGE): second argument can be a package designator 2004-05-02 Bruno Haible * makemake.in: Use "tail -n 1" instead of "tail -1". Suggested by SuSE. 2004-04-18 Bruno Haible * lispbibl.d (Class): Add direct_accessors field. * clos-class2.lisp (standard-class): Add direct-accessors field. (defclass): Store DEFMETHOD results in the class' direct-accessors. (ensure-class): Remove accessor methods installed by previous version of the class. 2004-04-22 Bruno Haible Special representation of slot initfunctions for constants. * lispbibl.d (init_cclosures): New declaration. * eval.d (bytecode_enum_t): Define unconditionally. (init_cclosures): New function. * spvw.d (init_object_tab): Call it. * record.d (SYS::MAKE-CONSTANT-INITFUNCTION) (SYS::CONSTANT-INITFUNCTION-P): New functions. 2004-04-28 Bruno Haible * record.d (check_weakpointer_replacement, check_weakpointer): New functions. (check_weak_pointer): Remove function. (WEAK-POINTER-VALUE, SET-WEAK-POINTER-VALUE): Update. 2004-04-24 Bruno Haible * functions.lisp: New file, extracted from trace.lisp, compiler.lisp. * init.lisp: Load it. * trace.lisp (check-function-name): Moved to functions.lisp. * compiler.lisp (signature): Moved to functions.lisp. * clos.lisp: Update. * makemake.in (LPARTS): Add functions. * po/Makefile.devel (LISPSOURCES): Add functions. 2004-04-15 Bruno Haible * clos-class2.lisp (ensure-class): Pass the old finalized and direct-superclasses status to update-subclasses-for-redefined-class. (update-subclasses-for-redefined-class) (update-subclasses-for-redefined-class-nonrecursive): Update the direct-subclasses lists of the superclasses correctly. 2004-04-29 Bruno Haible * disassem.lisp (*disassemble-use-live-process*): New variable. (disassemble-machine-code): Use it. * .gdbinit (ansi_tests): Set it to nil. 2004-04-25 Bruno Haible * reploop.lisp (main-loop, break-loop, step-hook-fn): Install a ABORT restart. 2004-04-23 Bruno Haible Make DEFPACKAGE available earlier during bootstrap. * defpackage.lisp: New file, extracted from defs2.lisp. * defs2.lisp (defpackage): Remove macro. * init.lisp: Load defpackage. * makemake.in (LPARTS): Add defpackage. * po/Makefile.devel (LISPSOURCES): Add defpackage. 2004-04-28 Bruno Haible * genclisph.d (main) [TYPECODES]: Emit consp, atomp, mconsp, matomp correctly. 2004-04-13 Bruno Haible Make the pointers to the direct subclasses weak. * clos-class2.lisp (finalize-instance-standard-class): Use add-direct-subclass. (map-direct-subclasses, add-direct-subclass, remove-direct-subclass): New functions. (list-direct-subclasses): Use map-direct-subclasses. 2004-04-28 Bruno Haible Simplify handling of weak pointers. * lispbibl.d (weakpointer_length): Set to the total length. (weakpointer_xlength): Remove macro. (weakkvt_non_data): Remove macro. (weakkvt_length): New macro. (Weakkvt_length): Use it. (Record_nonweak_length): New macro. * spvw_update.d (do_update_record): Don't use update_weak_pointers any more. (update_weakpointer, update_weakpointers, update_weakpointers_mod): Remove macros. (update_weakkvtable, update_weakkvtables, update_weakkvtables_mod): Remove macros. * spvw_garcol.d (down_record): Use Record_nonweak_length. (gar_col_normal): Remove calls to update_weakpointers_mod, update_weakkvtables_mod. (move_conses): Likewise. * spvw_memfile.d: Update. * spvw_typealloc.d (allocate_weakkvt_low): Update. * spvw_circ.d (subst_circ_mark, subst, subst_circ_unmark): Likewise. * record.d (mk_weakpointer): Declare inline. Use 0 instead of weakpointer_xlength. * hashtabl.d (hashcode4_atom): Use Record_nonweak_length. 2004-04-28 Bruno Haible Make weak-pointers work also on SPVW_PAGES platforms. * spvw_update.d (do_update_record): Depending on update_weak_pointers, update also the hidden pointers of Weakpointer and WeakKVT objects. * spvw_garcol.d (gar_col_normal): Define update_weak_pointers to false. (gar_col_compact): Don't call update_weakpointers_mod, update_weakkvtables_mod. Instead, define update_weak_pointers to true. (move_conses): Call update_weakpointers instead of update_weakpointers_mod, update_weakkvtables instead of update_weakkvtables_mod. Define update_weak_pointers to false. * spvw_memfile.d (savemem): Don't call update_weakpointers, update_weakkvtables. Instead, define update_weak_pointers to true. (loadmem_from_handle): Likewise. 2004-04-29 Sam Steingold * pathname.d (PARSE-NAMESTRING): Fix a GC-safety bug. 2004-04-28 Sam Steingold * comptran.d (N_cosh_N): Fix a GC-safety bug. 2004-04-28 Bruno Haible * charstrg.d (stringof): Fix a GC-safety bug. 2004-04-28 Bruno Haible Make DEBUG_GCSAFETY work with g++ 3.4.0. * lispbibl.d (INIT_SUBR_TAB, INIT_SYMBOL_TAB, INIT_OBJECT_TAB): Treat g++ 3.4 like g++ 3.3. * spvw_garcol.d (gc_sweep1_sstring_target, gc_sweep1_instance_target): Use assignment instead of initialization. Works around GCC bug #15180, that will be fixed in GCC 3.5. 2004-04-24 Bruno Haible * loadform.lisp (mlf-init-function): Return a FUNCTION form with a suitable name. Add (DECLARE (COMPILE)) when appropriate. (make-init-form): Use EVAL instead of COMPILE. 2004-04-24 Bruno Haible * describe.lisp (write-to-short-string): Move to ... * defs1.lisp (write-to-short-string): ... here. 2004-04-23 Bruno Haible Restore debuggability during loading of init.lisp. * debug.d (ext_show_stack): New function. 2004-04-22 Bruno Haible Restore debuggability during loading of init.lisp. * debug.d (SYS::INITIAL-BREAK-DRIVER): New function. * init.lisp (cerror): Invoke INITIAL-BREAK-DRIVER instead of *BREAK-DRIVER*. 2004-04-22 Bruno Haible * macros2.lisp (assert): Fix macro broken on 2003-05-01. 2004-04-13 Bruno Haible Fix MAKE-INSTANCES-OBSOLETE's warning message. * clos-class2.lisp (*make-instances-obsolete-caller*): New variable. (ensure-class): Bind it. (make-instances-obsolete-standard-class-nonrecursive): Use it in the warning message. 2004-04-27 Sam Steingold * modules/syscalls/calls.c (CRYPT, ENCRYPT, SETKEY): implement (get_block, set_block): helpers for ENCRYPT and SETKEY * modules/syscalls/posix.lisp (crypt, encrypt, setkey) [UNIX]: export 2004-04-27 Sam Steingold * loop.lisp (expand-loop): fix last patch: pattern may be NIL 2004-04-27 Kaz Kylheku * backquote.lisp (quoted-bq-operator-p, bq-constant-p, bq-eval): New functions. (bq-optimize-list): Use special rules to determine what is a constant expression, and how to evaluate it. E.g instance (LIST 1 (QUOTE (UNQUOTE (+ 2 2)))) is reduced to (QUOTE (1 4)) because (QUOTE (UNQUOTE (+ 2 2))) is considered a BQ-CONSTANT-P expression, with the rule that it evaluates to 4 under BQ-EVAL. (bq-optimize-list*): If the last element is (QUOTE ...), do not break it up into individual elements if it is a quoted backquote operator. E.g. (LIST* 1 (QUOTE (UNQUOTE X))) must not turn into (LIST 1 'UNQUOTE 'X). 2004-04-13 Bruno Haible * clos-class2.lisp (finalize-instance-standard-class): Register this class also as subclass of , even if is not explicitly listed among the direct subclasses. Needed so that (make-instances-obsolete 'standard-object) works. 2004-04-26 Sam Steingold * loop.lisp (expand-loop): use FUNCTION-FORM-FUNFORM instead of ad hoc inline code; avoid creating an unnecessary auxiliary variable (shortens the byte code) 2004-04-26 Sam Steingold * makemake.in (init): do not treat "bindings" modules subdirectory specially 2004-04-26 Sam Steingold * error.d (check_classname): new function for modules * genclisph.d (main): declare check_classname() * rawsock/rawsock.c, pcre/cpcre.c, berkeley-db/bdb.c, dirkey/dirkey.c: use check_classname() and typep_classname() instead of ad hoc checks 2004-04-25 Bruno Haible * lispbibl.d (fehler_class): New declaration. (typep_class, typep_classname): New declarations. * error.d (fehler_class): New function, moved here from record.d. * record.d (fehler_keine_klasse): Remove function. (CLOS::ALLOCATE-STD-INSTANCE): Use fehler_class instead. * predtype.d (typep_class, CLOS::TYPEP-CLASS, typep_classname): New functions. * genclisph.d (main): Emit typep_class, typep_classname declarations. * type.lisp (clos::subclassp): Remove preliminary definition. (typep): Use clos::typep-class instead of clos::subclassp. (c-TYPEP): Emit call to clos::typep-class instead of clos::subclassp. * clos-class5.lisp (note-i-meta-change, valid-make-instance-keywords): Use clos::typep-class instead of clos::subclassp. * modules/clx/new-clx/clx.f (isa_instance_of_p, isa_struct_p): Remove functions. Use typep_classname instead. 2004-04-13 Bruno Haible Let make-instances-obsolete recurse into each subclass only once, even in case of multiple inheritance. * clos-class2.lisp (make-instances-obsolete-standard-class): Apply make-instances-obsolete-standard-class-nonrecursive to all subclasses. (make-instances-obsolete-standard-class-nonrecursive): New function. (update-subclasses-for-redefined-class): Apply update-subclasses-for-redefined-class-nonrecursive to all subclasses. (update-subclasses-for-redefined-class-nonrecursive): New function. (list-direct-subclasses, list-all-subclasses): New functions. 2004-04-25 Sam Steingold * describe.lisp (describe-object): since 2004-02-19, PATHNAME-DEVICE of a LOGICAL-PATHNAME can be :UNSPECIFIC 2004-04-23 Sam Steingold * rawsock/rawsock.c, rawsock/sock.lisp: rename CLOSESOCK to SOCK-CLOSE for consistency with SOCK-READ and SOCK-WRITE (sockaddr-family-size, sockaddr-data): add 2004-04-23 Sam Steingold * clx/mit-clx/dependent.lisp (make-process-lock, process-wakeup): do not signal an error (holding-lock): no warning 2004-04-13 Bruno Haible * lispbibl.d (Class): Move the direct_subclasses slot. * clos-class2.lisp (class): Remove the direct-subclasses slot. (standard-class): Add it here instead. (finalize-instance-standard-class): Access class-direct-subclasses only if the superclass is a standard-class. (initialize-instance-built-in-class): Don't add this class to the class-direct-subclasses of the superclaass. (initialize-instance-structure-class): Likewise. 2004-04-22 Sam Steingold * rawsock/sock.lisp (open-unix-socket): new function (cmsghdr, linger): remove * rawsock/rawsock.c (MAKE-SOCKADDR, SOCKETPAIR, ACCEPT, BIND) (CONNECT, GETPEERNAME, GETSOCKNAME, LISTEN, RECV, RECVMSG) (SOCK-READ, SEND, SENDMSG, SOCK-WRITE): add * rawsock/link.sh.in: fix TO_PRELOAD * rawsock/configure.in: check for stropts.h, poll.h and sys/un.h 2004-04-22 Sam Steingold SOCKET-OPTIONS now handles all 16 POSIX options * stream.d (SOCKET-OPTIONS): accept SO_DEBUG, SO_ACCEPTCONN, SO_BROADCAST, SO_REUSEADDR, SO_DONTROUTE * constobj.d (type_socket_option): add the above 5 options * constsym.d: ditto 2004-04-22 Sam Steingold * stream.d (stream_handles): accept fixnums as pointing to themselves as FDs, this allows RAWSOCK sockets to be used with SOCKET-STATUS and SOCKET-OPTIONS 2004-04-22 Bruno Haible * lispbibl.d (direction_t): Work around a g++ 3.4.0 bug. 2004-04-22 Sam Steingold * pathname.d (namestring_correctly_parseable_p): fix the last patch 2004-04-22 Sam Steingold * utils/clispload.lsp: _really_ set custom:*warn-on-floating-point...contagion* to nil 2004-04-22 Sam Steingold Rely on FILL-STREAM to format warnings and error messages. * realelem.d (warn_floating_point_rational_contagion): remove manual newlines from the message * flo_rest.d (warn_floating_point_contagion): ditto 2004-04-22 Sam Steingold * pathname.d (pathname_version_maybe): define (file_namestring_parts, namestring_correctly_parseable_p): use it 2004-04-22 Bruno Haible * lispbibl.d: Enable the use of global register variables for gcc >= 3.4. 2004-04-22 Bruno Haible Make it compile with g++ 3.4. * lispbibl.d (offsetofa): Define differently for C++. (restartf_t): Define without nonreturning for C++. 2004-04-22 Sam Steingold rawsock now compiles on cygwin * rawsock/rawsock.c (my_check_type): replaces my_type_error() (my_check_argument, check_struct, check_struct_data): new function (check_buffer_arg): return object (RESIZE-BUFFER, SOCKADDR-FAMILY): new lisp functions (SOCKET, RECVFROM, SENDTO): accept all POSIX arguments * rawsock/sock.lisp (sockaddr, msghdr, cmsghdr, linger): new structs 2004-04-22 Sam Steingold * genclisph.d (check_fpointer, check_fpointer_replacement): moved to a later place so that clisp.h will be compilable 2004-04-22 Bruno Haible * genclisph.d (main): Emit definitions for check_fpointer, check_posfixnum, check_string. 2004-04-22 Bruno Haible * genclisph.d (main): Use "#if notused" instead of C comments to mark definitions not yet used. 2004-04-12 Bruno Haible ANSI CL compliance: Handle class redefinition as specified. * lispbibl.d (Class): Remove class_id field. Remove shared_slots, previous_definition slots. Add current_version, instantiated slot. Rename prototype slot. (ClassVersion): New type. (Instance): Remove class and cl_id fields. Add class_version field. (instflags_beingupdated_B): New macro. (TheClassVersion): New macro. (instance_un_realloc): Use a single test instead of a loop. (update_instance): Take a second argument. (instance_valid_p): Look at class-version instead of id field. (instance_update): Take a second argument. (instanceof): Don't call instance_update. Update. * spvw_garcol.d (gc_sweep1_instance_forward): Use the class_version field for the forward pointer. * record.d (class_of): Don't call instance_update if the instance is already being update. (CLOS::ALLOCATE-STD-INSTANCE): Set the class-version field instead of class and id fields. (do_allocate_instance): Update. (ptr_to_slot): Update shared slot access: The location's CAR is now a class-version. (slot_up): Invoke the local class_of instead of CLASS-OF. (CLOS::SET-SLOT-VALUE, CLOS:SLOT-EXISTS-P): Likewise. (CLOS::%CHANGE-CLASS): Turn the user visible object into a forward pointer, instead of creating a chain of forward pointers. (update_instance): Take a second argument. Completely rewritten. (CLOS::%MAKE-INSTANCE): Invoke the local class_of instead of CLASS-OF. * hashtabl.d (sxhash_atom): Don't call instance_update. Update. * predtype.d (TYPE-OF, CLOS:CLASS-OF): Likewise. (heap_statistics_mapper): Update. * stream.d (stream_get_read_eval, stream_set_read_eval): Call instance_update. Update. * genclisph.d (main): Update definition of Instance. * clos-class2.lisp (class): Remove id slot. (standard-class): Remove shared-slots, previous-definition slots. Add current-version, instantiated slots. (class-version): New structure. (slot-difference): Remove function. (ensure-class): Call make-instances-obsolete before re-initializing the class. Move the versioning stuff to make-instances-obsolete. Remove the computation of added/discarded slot lists. Update the subclasses after redefining a class. (initialize-instance-standard-class): Initialize the current-version slot. When clearing the precedence-list, clear the all-superclasses table as well. (finalize-instance-standard-class): Default instance-size is now 1, not 2. The shared-slots are now stored in the class-version. Don't erase the values of shared slots that remain shared. (std-layout-slots): Let the cons point to the class-version, not to the class. (make-instances-obsolete): New preliminary function. (make-instances-obsolete-standard-class): New function. (update-subclasses-for-redefined-class): New function. (class-version-compute-slotlists): New function. (): Update instance-size. Install a class-version. (unbound): Update. * clos-class4.lisp (PRINT-OBJECT on CLASS): When the class is not properly initialized, print UNINITIALIZED instead of giving an error. * clos-class5.lisp (update-instance-for-different-class): Compute list of added slots as specified in ANSI CL. (make-instances-obsolete on STANDARD-CLASS): Just invoke make-instances-obsolete-standard-class. 2004-04-21 Bruno Haible * pathname.d (file_namestring_parts, namestring_correctly_parseable_p): Don't lose support for platforms which have versions in the filesystem. * stream.d (handle_to_stream): Fix begin/end_system_call() calls. 2004-04-21 Don & Fred Cohens Sam Steingold new module for low-level socket access * modules/rawsock: new directory 2004-04-21 Sam Steingold * disassem.lisp (disassemble): do not signal an error when cannot disassemble a built-in C function * utils/clispload.lsp [WIN32]: do not mark DISASSEMBLE.* as expected failures 2004-04-21 Bruno Haible * stream.d (STREAM-EXTERNAL-FORMAT): For terminal_stream, return the terminal stream's strm_encoding on those platforms where it is used. 2004-04-21 Bruno Haible * disassem.lisp (disassemble-machine-code): Add the function object as argument. Give a nice message when gdb is not found. 2004-04-21 Bruno Haible * utils/clispload.lsp: Set *warn-on-floating-point...contagion* to nil. 2004-04-21 Bruno Haible * makemake.in (XCC_GCC_VERSION): Invoke gcc -v in the C locale. 2004-04-12 Bruno Haible * lispbibl.d (restartf_t): Define as nonreturning. Avoids gcc warnings. 2004-04-12 Bruno Haible * lispbibl.d (popSP, finish_entry_frame): Rename macro parameter. 2004-04-12 Bruno Haible Make the WIDE_SOFT model work again. * genclisph.d (main): Emit definition for one_o. 2004-04-12 Bruno Haible * condition.lisp (check-value): Fix typo. Avoid compiler warning. 2004-04-12 Bruno Haible * intlog.d (I_I_ash_I): Fix bug when y = most-negative-fixnum = -2^32. 2004-04-11 Bruno Haible ANSI CL compliance: Optionally return floating-point results when ANSI CL says so. * realelem.d (warn_floating_point_rational_contagion): New function. (RA_F_exact_contagion_R): New function. (R_R_mal_R, R_R_durch_R, R_I_expt_R): Use RA_F_exact_contagion_R. * realtran.d (R_R_atan_R, R_R_log_R): Likewise. * comptran.d (N_phase_R): Add argument want_exact. Use RA_F_exact_contagion_R. (N_log_N, N_N_log_N): Update. (N_I_expt_N, N_N_expt_N): Use R_R_contagion_R and RA_F_exact_contagion_R. * lisparit.d (PHASE): Pass want_exact=false. (init_arith): Initialize *FLOATING-POINT-RATIONAL-CONTAGION-ANSI* and *PHASE-ANSI* to NIL, and *WARN-ON-FLOATING-POINT-RATIONAL-CONTAGION* to T. * misc.d (SYS::SET-ANSI): Set *FLOATING-POINT-RATIONAL-CONTAGION-ANSI* and *PHASE-ANSI* as well. * places.lisp (*ansi*): Update documentation. * utils/clispload.lsp (*expected-failures*): Remove ATAN.4, EXPT.{3,4,5,6}, EXPT.{8,9,10,11}, PHASE.{1,2,3,4,5,6,7}. 2004-04-11 Bruno Haible * package.d (correct_packname): Fix typo in restart description. 2004-04-20 Sam Steingold * utils/clispload.lsp (disassemble-machine-code) [win32, cygwin]: do not redefine 2004-04-20 Bruno Haible * io.d (pr_symbol): Follow CLHS also in the "pathological case that the symbol has no home package but is nevertheless somehow accessible in the current package". 2004-04-20 Bruno Haible * io.d (pr_symbol): Print keywords that are accessible in the current package with a colon. Required by CLHS 22.1.3.3.1. 2004-04-20 Bruno Haible * io.d (pr_string): When *print-readably* = NIL, print nil-vectors of length 0 like strings. Required by CLHS 22.1.3.4. 2004-04-20 Sam Steingold * utils/clispload.lsp (*expected-failures*): update 2004-04-19 Sam Steingold pathnames always have VERSION slot, even though it is not printed * lispbibl.d (HAS_VERSION): remove (Pathname): always has the version slot * spvw_debug.d (nobject_out1): ditto * constobj.d (type_version): always full-blown (semicolon_string): always present (zero_string): remove * pathname.d (pathname_version_maybe, test_optional_version_): remove (xpathname_version): update for that (PATHNAME-VERSION, has_version_wildcards): just use xpathname_version() (nametype_namestring_parts_): remove (file_namestring_parts): pass NIL as the version argument to nametype_namestring_parts() because physical pathname version are not printed (MERGE-PATHNAMES): fix version defaulting logic (namestring_correctly_parseable_p): non-NIL version means unprintable readably (DEFAULT_VERSION): new CPP macro for DIRECTORY (directory_search_scandir, directory_search): set pathname_version to DEFAULT_VERSION to ensure that DIRECTORY does not return wild pathnames 2004-04-20 Bruno Haible * po/de.po: Update translations. 2004-04-11 Bruno Haible Nicer bootstrapping. * init.lisp (format, cerror, warn): Provide some more capable preliminary definitions. (sys::check-redefinition): Change the format string so that it works with the preliminary FORMAT. (load): Use FORMAT instead of emulating it. * savemem.lisp (saveinitmem): Likewise. 2004-04-11 Bruno Haible Speed up the argument type checks. * lispbibl.d (check_fpointer): Turn into an inline function. (check_fpointer_replacement): New declaration. (check_list): Turn into an inline function. (check_list_replacement): New declaration. (check_symbol): Turn into an inline function. (check_symbol_replacement): New declaration. (check_symbol_non_constant): Turn into an inline function. (check_symbol_non_constant_replacement): New declaration. (check_posfixnum): Turn into an inline function. (check_posfixnum_replacement): New declaration. (check_integer): Turn into an inline function. (check_integer_replacement): New declaration. (check_pos_integer): Turn into an inline function. (check_pos_integer_replacement): New declaration. (check_char): Turn into an inline function. (check_char_replacement): New declaration. (check_string): Turn into an inline function. (check_string_replacement): New declaration. (check_function): Turn into an inline function. (check_function_replacement): New declaration. (check_funname): Turn into an inline function. (check_funname_replacement): New declaration. (check_uint8): Turn into an inline function. (check_uint8_replacement): New declaration. (check_sint8): Turn into an inline function. (check_sint8_replacement): New declaration. (check_uint16): Turn into an inline function. (check_uint16_replacement): New declaration. (check_sint16): Turn into an inline function. (check_sint16_replacement): New declaration. (check_uint32): Turn into an inline function. (check_uint32_replacement): New declaration. (check_sint32): Turn into an inline function. (check_sint32_replacement): New declaration. (check_uint64): Turn into an inline function. (check_uint64_replacement): New declaration. (check_sint64): Turn into an inline function. (check_sint64_replacement): New declaration. (check_uint): Turn into an inline function. (check_uint_replacement): New declaration. (check_sint): Turn into an inline function. (check_sint_replacement): New declaration. (check_ulong): Turn into an inline function. (check_ulong_replacement): New declaration. (check_slong): Turn into an inline function. (check_slong_replacement): New declaration. (check_ffloat): Turn into an inline function. (check_ffloat_replacement): New declaration. (check_dfloat): Turn into an inline function. (check_dfloat_replacement): New declaration. (check_structure): Turn into an inline function. (check_structure_replacement): New declaration. (check_real): Turn into an inline function. (check_real_replacement): New declaration. * error.d (check_fpointer_replacement): Rename from check_fpointer. (check_list_replacement): Rename from check_list. Assume the argument already failed the type check. (check_symbol_replacement): Rename from check_symbol. Assume the argument already failed the type check. (check_symbol_non_constant_replacement): Rename from check_symbol_non_constant. (check_posfixnum_replacement): Rename from check_posfixnum. Assume the argument already failed the type check. (check_integer_replacement): Rename from check_integer. Assume the argument already failed the type check. (check_pos_integer_replacement): Rename from check_pos_integer. Assume the argument already failed the type check. (check_char_replacement): Rename from check_char. Assume the argument already failed the type check. (check_string_replacement): Rename from check_string. Assume the argument already failed the type check. (check_function_replacement): Rename from check_function. Assume the argument already failed the type check. (check_funname_replacement): Rename from check_funname. Assume the argument already failed the type check. (check_uint8_replacement): Rename from check_uint8. Assume the argument already failed the type check. (check_sint8_replacement): Rename from check_sint8. Assume the argument already failed the type check. (check_uint16_replacement): Rename from check_uint16. Assume the argument already failed the type check. (check_sint16_replacement): Rename from check_sint16. Assume the argument already failed the type check. (check_uint32_replacement): Rename from check_uint32. Assume the argument already failed the type check. (check_sint32_replacement): Rename from check_sint32. Assume the argument already failed the type check. (check_uint64_replacement): Rename from check_uint64. Assume the argument already failed the type check. (check_sint64_replacement): Rename from check_sint64. Assume the argument already failed the type check. (check_uint_replacement): Rename from check_uint. Assume the argument already failed the type check. (check_sint_replacement): Rename from check_sint. Assume the argument already failed the type check. (check_ulong_replacement): Rename from check_ulong. Assume the argument already failed the type check. (check_slong_replacement): Rename from check_slong. Assume the argument already failed the type check. (check_ffloat_replacement): Rename from check_ffloat. Assume the argument already failed the type check. (check_dfloat_replacement): Rename from check_dfloat. Assume the argument already failed the type check. * record.d (check_structure_replacement): Rename from check_structure. Assume the argument already failed the type check. * lisparit.d (check_number): Turn into an inline function. (check_number_replacement): New function. (check_real_replacement): Rename from check_real. Assume the argument already failed the type check. (check_float): Turn into an inline function. (check_float_replacement): New function. (check_rational): Turn into an inline function. (check_rational_replacement): New function. * eval.d (eval1, apply, funcall): Use check_funname_replacement instead of check_funname. * control.d (funname_to_symbol, FLET, LABELS): Likewise. * genclisph.d (main): Update. Emit definitions for inline, single_float_p, double_float_p, uint_p, sint_p, ulong_p, slong_p. 2004-04-19 Sam Steingold * pathname.d (simplify_directory): signal an error on (:ABSOLUTE :UP) as per 2004-04-19 Sam Steingold * spvw.d (quit): do (FRESH-LINE *ERROR-OUTPUT*) before (WRITE-LINE "Bye") because in batch mode *ERROR-OUTPUT* and *STANDARD-OUTPUT* are separate 2004-04-19 Sam Steingold * eval.d (CHECK_FDEF): use the return value of check_fdefinition() instead of Symbol_function(symbol) 2004-04-11 Bruno Haible * stream.d (lisp_completion): Ensure that local variables are not clobbered through longjmp. 2004-04-11 Bruno Haible * lispbibl.d (correctable_error): Document. * error.d (correctable_error): Expand and correct documentation. 2004-04-11 Bruno Haible * lispbibl.d: Disable the use of global register variables for gcc >= 3.0. 2004-04-19 Bruno Haible Fix the return value of NSTRING-UPCASE/DOWNCASE/CAPITALIZE, WRITE-STRING, WRITE-LINE, when the argument is a displaced string. * lispbibl.d (test_vector_limits): Clarify specification. * charstrg.d (test_vector_limits): Likewise. Return the original string, not the data vector. (EXT:STRING-WIDTH): Use the data vector instead of the original string. * encoding.d (CONVERT-STRING-FROM-BYTES): Likewise. (CONVERT-STRING-TO-BYTES): Likewise. * foreign.d (FFI::CALL-WITH-FOREIGN-STRING): Likewise. * stream.d (MAKE-STRING-INPUT-STREAM, FILE-POSITION): Ignore arg.offset. * io.d (write_string_up): Undo last patch. 2004-04-10 Bruno Haible * type.lisp (BASE-STRING, SIMPLE-BASE-STRING): Change the type test so that it excludes vectors of element type NIL. 2004-04-10 Bruno Haible * condition.lisp (warn): Let the indentation depend on the width of the translation of "WARNING: ". * fill-out.lisp (line-pos): Use EXT:STRING-WIDTH instead of LENGTH. 2004-04-10 Bruno Haible * describe.lisp (describe-object of GENERIC-FUNCTION): Move newline out of TEXT. 2004-04-16 Sam Steingold * makemake.in (check-ansi-tests): call do-tests here. (check-ansi-tests-debug): new target * utils/clispload.lsp: do not call DO-TESTS, leave this to the command line 2004-04-16 Bruno Haible * disassem.lisp (disassemble-machine-code): On Cygwin, don't use the live process. 2004-04-16 Sam Steingold * io.d (write_string_up): (WRITE-STRING #A(nil (0))) must return its argument, not NIL 2004-04-16 Sam Steingold * io.d (test_ostream): accept a gcv_object_t* argument instead of using STACK_0; update all callers, including... (FORMAT-TABULATE): do not juggle STACK to ensure that the stream is in STACK_0 2004-04-16 Sam Steingold * utils/clispload.lsp (disassemble-machine-code) [CYGWIN, WIN32]: redefine because debugging kills the process on woe32 2004-04-16 Sam Steingold * comptran.d (R_R_asinh_R_R): fix the floating point type of the return value * utils/clispload.lsp: ASINH.5 is now fixed 2004-04-09 Bruno Haible * compiler.lisp (c-constant-number, c-FORMAT): Use c-warn instead of c-error. 2004-04-09 Bruno Haible Make REMOVE-DUPLICATES, DELETE-DUPLICATES cons less. * sequence.d (remove_duplicates_list_from_start) (delete_duplicates_list_from_start, delete_duplicates_list_from_end): New functions. (seq_duplicates): Use these functions instead of the bit-vector approach when not using a hash-table and the sequence is a list. 2004-04-04 Bruno Haible Reduce the amount of consing of SUBTYPEP. * subtypep.lisp (intervals-mapto): Make the local functions autonomous. (intervals-intersection, intervals-union, intervals-subtypep): Use macrolet instead of flet. (intervals-remove-one): Use a combination of an autonomous local function and macrolet. (canonicalize-type): Make the local function autonomous. (*subtypep-type1parts*, *subtypep-type2parts*) (*subtypep-type2eqlparts*): New variables. (subtypep-flatten-AND, subtypep-flatten-OR): New functions. (subtypep-logic): Use them. Use declarations to convince the compiler to expand EVERY, REMOVE-IF, REMOVE-IF-NOT calls inline. 2004-03-28 Bruno Haible Integrate the ansi-tests from Paul Dietz. * utils/clispload.lsp: New file. * makemake.in (RECOMPILEDIR): Rename from TESTDIR. (TESTSDIR): Change to 'tests'. (ANSITESTSDIR): New variable. (check-recompile): Rename from test. (check-tests): Rename from testsuite. (check-ansi-tests): New target. (check): Depend on it. (clean1): Remove also ANSITESTSDIR. 2004-04-15 Sam Steingold new module for interface to MATLAB http://www.mathworks.com/products/matlab/ * modules/matlab: new directory 2004-04-15 Sam Steingold * clos-methcomb5.lisp (compute-method-partition-lambdas): remove unused variable (compute-effective-method-function): do not call GF-KEYWORD-ARGUMENTS since the values are not used 2004-04-15 Sam Steingold * Makefile.devel (update-ansi-tests): do not pass "-d" to "cvs update" becase "ansi-tests" could be a symlink to a writable sandbox 2004-04-15 Sam Steingold make EXT:FILL-STREAM a user-visible extension * fill-out.lisp (fill-stream, with-fill-stream): export symbol from EXT (fill-stream): new slot PENDING-SPACE to avoid trailing spaces and compress multiple blanks into one (line-pos): new helper (stream-line-column, stream-start-line-p): use it (fill-stream-flush-buffer): write a #\Space when PENDING-SPACE is non-NIL and we are not at the beginning of a line; do not multiply indent by *PRINT-INDENT-LISTS* (stream-write-char): set PENDING-SPACE instead of writing #\Space (stream-clear-output): reset PENDING-SPACE 2004-04-08 Bruno Haible Make REMOVE[-IF[-NOT]], DELETE[-IF[-NOT]], SUBSTITUTE[-IF[-NOT]] on lists cons less. * sequence.d (seq_prepare_filterop): New function, extracted from seq_filterop. (seq_filterop): Remove the argument checking. (remove_op, delete_op): New functions. (REMOVE, REMOVE-IF, REMOVE-IF-NOT): Use remove_op instead of seq_filterop. (DELETE, DELETE-IF, DELETE-IF-NOT): Use delete_op instead of seq_filterop. (substitute_op): New function. (SUBSTITUTE, SUBSTITUTE-IF, SUBSTITUTE-IF-NOT): Use substitute_op instead of seq_filterop. (nsubstitute_op): Update. 2004-04-03 Bruno Haible New SUBTYPEP implementation. * subtypep.lisp: New file. * type.lisp (type-class): Remove function. (valid-interval-designator-p): Move to subtypep.lisp. (with-interval-designators): Remove macro. (interval-mix, interval-mix-not, simplify-and-or): Remove functions. (*canonicalize-type-prefer-clos*): Remove variable. (canonicalize-type): Simplify. Add error checking. Remove optional argument. Move to subtypep.lisp. (subtypep): Mostly rewritten. Move to subtypep.lisp. (get-charset-range, charset-subtypep): Move to subtypep.lisp. (subtype-integer): Small fixes. Handle the INTERVALS typespec that canonicalize-type now produces. * defstruct.lisp (ds-canonicalize-type): New function. * clos-class2.lisp (class-and): Remove function. * makemake.in (LPARTS): Add subtypep. * po/Makefile.devel (LISPSOURCES): Add subtypep. 2004-04-14 Bruno Haible * Makefile.devel (ANSITESTS_CVS_ROOT, ANSITESTS_CVS_REPOSITORY): New variables. (update-ansi-tests): New target. (all): Invoke it. 2004-04-09 Bruno Haible Make REMOVE[-IF[-NOT]], REMOVE-DUPLICATES on lists cons less. * sequence.d (remove_help): For lists, share the tail of the result list with the input list. 2004-03-28 Bruno Haible * lispbibl.d (expand_deftype): Mark as GC-trigger. 2004-04-04 Bruno Haible Make TYPEP work on structure types with user-defined :TYPE. * defstruct.lisp (ds-typep, ds-typep-expansion): New functions. * type.lisp (typep): Implement test for structure types with user-defined :TYPE by calling ds-typep. * compiler.lisp (c-TYPEP): Implement test for structure types with user-defined :TYPE by calling ds-typep-expansion. 2004-04-13 Sam Steingold sync modules/clx/mit-clx/ with CLOCC/GUI/CLX * modules/clx/mit-clx/link.sh (TO_LOAD): add shape and split-sequence * modules/clx/mit-clx/Makefile (ALLLISP, ALLFAS): ditto * modules/clx/mit-clx/Makefile.clisp, modules/clx/mit-clx/Makefile.gcl: * modules/clx/mit-clx/README.GCL, modules/clx/mit-clx/akcl_dep.lisp: * modules/clx/mit-clx/build-clx.lisp, modules/clx/mit-clx/exclcmac.lisp: * modules/clx/mit-clx/excldefsys.lisp, modules/clx/mit-clx/excldep.c: * modules/clx/mit-clx/excldep.lisp, modules/clx/mit-clx/exclMakefile: * modules/clx/mit-clx/exclREADME, modules/clx/mit-clx/fix-socket.c: * modules/clx/mit-clx/generalock.lisp, modules/clx/mit-clx/sysdef.lisp: * modules/clx/mit-clx/kcl-compiler-patches.lisp: * modules/clx/mit-clx/kcl-patches.lisp: * modules/clx/mit-clx/kcl-system-patches.lisp: * modules/clx/mit-clx/makefile.akcl: * modules/clx/mit-clx/ms-patch.uu, modules/clx/mit-clx/provide.lisp: * modules/clx/mit-clx/sockcl.lisp, modules/clx/mit-clx/socket.c: * modules/clx/mit-clx/sys-package.lisp: * modules/clx/mit-clx/sys-proclaim.lisp: Remove files. * modules/clx/mit-clx/doc.lisp: Rename from doc.lisp-doc. * modules/clx/mit-clx/shape.lisp: * modules/clx/mit-clx/split-sequence.lisp: New files. * modules/clx/mit-clx/attributes.lisp, modules/clx/mit-clx/buffer.lisp: * modules/clx/mit-clx/bufmac.lisp, modules/clx/mit-clx/clx.lisp: * modules/clx/mit-clx/defsystem.lisp, modules/clx/mit-clx/depdefs.lisp: * modules/clx/mit-clx/dependent.lisp, modules/clx/mit-clx/describe.lisp: * modules/clx/mit-clx/display.lisp, modules/clx/mit-clx/fonts.lisp: * modules/clx/mit-clx/gcontext.lisp, modules/clx/mit-clx/graphics.lisp: * modules/clx/mit-clx/image.lisp, modules/clx/mit-clx/input.lisp: * modules/clx/mit-clx/keysyms.lisp, modules/clx/mit-clx/macros.lisp: * modules/clx/mit-clx/manager.lisp, modules/clx/mit-clx/package.lisp: * modules/clx/mit-clx/requests.lisp, modules/clx/mit-clx/resource.lisp: * modules/clx/mit-clx/text.lisp, modules/clx/mit-clx/trace.lisp: * modules/clx/mit-clx/translate.lisp: sync with CLOCC 2004-04-13 Sam Steingold * Makefile.devel (view-man, view-html): man pages are in doc 2004-04-04 Bruno Haible Compile things like (remove-if #'(lambda ...) (the list ...)) inline. * compiler.lisp (c-form-table): Add entries for MAP, MAP-INTO, SOME, EVERY, NOTANY, NOTEVERY. (c-MAP-on-CARs-inner): Add endp-value argument. (c-MAP-on-CARs, c-MAPC): Update. (c-NTH, c-SETNTH): Use c-GLOBAL-FUNCTION-CALL-form instead of c-GLOBAL-FUNCTION-CALL, to reuse the already macroexpanded subforms. (declared-list-form-p, c-MAP, c-MAP-INTO, c-SOME, c-EVERY, c-NOTANY) (c-NOTEVERY): New functions. (c-REMOVE-IF, c-DELETE-IF, c-SUBSTITUTE-IF, c-NSUBSTITUTE-IF) (c-FIND-IF, c-POSITION-IF, c-COUNT-IF): Expand inline if the sequence argument is declared as list. Handle the inverted case as well. (c-REMOVE-IF-NOT, c-DELETE-IF-NOT, c-SUBSTITUTE-IF-NOT) (c-NSUBSTITUTE-IF-NOT, c-FIND-IF-NOT, c-POSITION-IF-NOT) (c-COUNT-IF-NOT): Invoke the corresponding -IF function. (c-seqop, c-LDB, c-LDB-TEST, c-MASK-FIELD, c-DPB, c-DEPOSIT-FIELD): Use c-GLOBAL-FUNCTION-CALL-form instead of c-GLOBAL-FUNCTION-CALL, to reuse the already macroexpanded subforms. 2004-04-04 Bruno Haible Make DEFSTRUCT :INITIAL-OFFSET option work correctly even in structure types with no slots. * defstruct.lisp (ds-make-constructor-body): Don't use the optimized simple case if there are trailing NILs, due to :initial-offset. (ds-make-pred): Replace name-offset argument with slotlist and size arguments. Check the names of the :INCLUDEd structures as well. Use SYS::CONSES-P, so that the test can cope with dotted lists and circular lists. 2004-04-04 Bruno Haible * list.d (SYS::CONSES-P): New function. 2004-04-03 Bruno Haible * sequence.d (valid_type1): Call eltype_code only if the element-type is not *. 2004-04-03 Bruno Haible * defstruct.lisp (defstruct): When defining a structure with :TYPE option, remove any previously defined class of the same name. * clos-class2.lisp (undefine-structure-class): New function. 2004-04-03 Bruno Haible Store a structure's size in the DEFSTRUCT-DESCRIPTION. * defstruct.lisp (defstruct): Add the instance size as third slot of the DEFSTRUCT-DESCRIPTION. * io.d (structure_reader, pr_structure_default): Update. * clos-class2.lisp (define-structure-class): Update. * foreign1.lisp (c-struct-constructor): Update. 2004-04-08 Sam Steingold * init.lisp: export ABORT here to avoid conflict with gray.lisp 2004-04-07 Sam Steingold fill/indent warnings and error messages * fill-out.lisp: extracted from describe.lisp * describe.lisp (describe-stream): moved to fill-out.lisp (describe): DESCRIBE-STREAM is now called FILL-STREAM * condition.lisp (pretty-print-condition): new function (warn, maybe-continue): use it * reploop.lisp (print-error, break-loop): ditto * makemake.in (LPARTS): add fill-out * po/Makefile.devel (LISPSOURCES): ditto 2004-04-07 Sam Steingold * spvw.d (main): use UNIXy i/o (*ERROR-OUTPUT* = stderr) in batch mode under the same conditions as *DEBUG-IO* being non-interactive 2004-04-07 Sam Steingold * Makefile.devel (src/autoconf/aclocal.m4): aclocal 1.8 forbids duplicate AC_CONFIG_HEADERS 2004-04-07 Sam Steingold * modules/pcre/cpcre.c: better support for older PCRE versions 2004-04-05 Sam Steingold * defstruct.lisp (defstruct): write STRUCT DOCUMENTATION to the TYPE slot to match DOCUMENTATION in documentation.lisp 2004-03-22 Bruno Haible * clos-class2.lisp (define-structure-class): Use sys::ds-slot-initargs, not sys::ds-slot-name, to detect whether a structure slot is real. 2004-03-21 Bruno Haible * clos-class2.lisp (finalize-class): Rename from class-finalize. (initialize-instance-standard-class): Update. * clos-class5.lisp (finalize-inheritance): Update. * record.d (do_allocate_instance, CLOS::%MAKE-INSTANCE): Update. * clos-class2.lisp (ensure-class): Treat metaclasses that are subclasses of like itself. For other metaclasses, invoke FIND-CLASS with force-p = t. * clos-class2.lisp (subclassp): Finalize the class before accessing its superclasses table. 2004-03-21 Bruno Haible * clos-slots2.lisp (slot-unbound): Quote the slot-name in the place. * clos-class2.lisp (DEFCLASS): Don't emit code to FIND-CLASS the direct superclasses. (ensure-class): Call FIND-CLASS on the direct superclasses here. Call FIND-CLASS also on the old direct superclasses. Don't create a new class object if the class exists but has not yet been finalized. * clos-class2.lisp (*finalizing-now*): Remove variable. (class-finalize): Pass the finalizing-now stack as optional argument. * clos-class5.lisp (make-instances-obsolete): Don't do anything if the class is not yet finalized. Return the argument unmodified, even if it's a symbol. * documentation.lisp (documentation, setf documentation): Add a method for (SYMBOL (EQL METHOD-COMBINATION)). 2004-03-21 Bruno Haible Remove redundant information from the DEFSTRUCT-DESCRIPTION. * defstruct.lisp (make-ds-slot): Remove 8th argument. (ds-slot-var): Remove function. (ds-slot-initargs): New function. (ds-real-slot-p): Use ds-slot-initargs. (ds-arg-default): Simplify. (ds-make-constructor-body): Take a varlist instead of a get-var argument. (ds-make-boa-constructor, ds-make-keyword-constructor): Update. (defstruct): Update. * io.d (pr_structure_default): Update. 2004-02-29 Bruno Haible Split clos.lisp. * clos.lisp: Split into pieces. * clos-class1.lisp, clos-class2.lisp, clos-class3.lisp: * clos-class4.lisp, clos-class5.lisp, clos-genfun1.lisp: * clos-genfun2.lisp, clos-genfun3.lisp, clos-genfun4.lisp: * clos-genfun5.lisp, clos-methcomb1.lisp, clos-methcomb2.lisp: * clos-methcomb3.lisp, clos-methcomb4.lisp, clos-methcomb5.lisp: * clos-method1.lisp, clos-method2.lisp, clos-method3.lisp: * clos-slots1.lisp, clos-slots2.lisp, documentation.lisp: New files, extracted from clos.lisp. * makemake.in (LPARTS): Add the new files. * po/Makefile.devel (LISPSOURCES): Likewise. 2004-03-27 Bruno Haible * floatprint.lisp (decode-float-decimal): Add argument fixed-point-adjust. (write-float): Pass fixed-point-adjust = t. 2004-03-27 Bruno Haible * io.d (pr_symbol_part): Add |...| markers also when *print-readably* is true. 2004-03-27 Bruno Haible * lispbibl.d (arraysize_limit_1): Reduce value by 1. * spvw.d (init_symbol_values): Initialize array-total-size-limit, array-dimension-limit and array-rank-limit as fixnums. 2004-03-27 Bruno Haible ANSI CL compliance. * clos.lisp (std-find-method): Check the specializers argument. (analyze-method-description): Update. 2004-03-27 Bruno Haible ANSI CL compliance: Fix the short-form method combination. * clos.lisp (standard-method-combination-check-method-qualifiers): Rename from short-form-method-combination-check-method-qualifiers. (define-method-combination): The qualifier of primary methods is the name of the method combination, not the operator. (short-form-method-combination-check-method-qualifiers): New function. 2004-03-27 Bruno Haible ANSI CL compliance: DEFGENERIC must remove methods defined in the previous DEFGENERIC form. * clos.lisp (standard-method): Add slot 'origin'. (analyze-method-description): Add value for :ORIGIN. (do-defgeneric): Remove old methods that came from a DEFGENERIC form. 2004-03-27 Bruno Haible ANSI CL compliance: Improved argument list checking. * record.d (check_keywords): Remove macro. (check_initialization_argument_list): New function. (CLOS::%ALLOCATE-INSTANCE, CLOS::%SHARED-INITIALIZE) (CLOS::%REINITIALIZE-INSTANCE, CLOS::%INITIALIZE-INSTANCE) (CLOS::%MAKE-INSTANCE): Use check_initialization_argument_list instead of check_keywords. 2004-03-27 Bruno Haible ANSI CL compliance. * clos.lisp (ensure-class): Don't modify the old class if it doesn't have a "proper name". 2004-03-27 Bruno Haible ANSI CL compliance: Remove nickname of the keyword package. * package.d (init_packages): Drop nickname "" of the KEYWORD package. * complete.lisp (complete): Map prefix "" to "KEYWORD". Handle readtable-case values different from :UPCASE correctly. 2004-03-07 Bruno Haible * list.d (get_integer_truncate): Portability tweak. 2004-03-07 Bruno Haible * macros2.lisp (with-output-to-string): Declare the variable as read-only in both cases. 2004-03-15 Bruno Haible Change the format of internal error message strings: '~' -> '~S', '$' -> '~C'. * error.d (write_errorstring): Expect ~S and ~C instead of ~ and $. Signal an error if a stray ~ is seen. (check_value): Update comments. * lispbibl.d (fehler, check_value): Update comments. * affi.d, array.d, charstrg.d, control.d, debug.d, encoding.d, error.d, * eval.d, foreign.d, hashtabl.d, i18n.d, intbyte.d, intdiv.d, * intelem.d, intlog.d, io.d, lisparit.d, list.d, misc.d, package.d, * pathname.d, predtype.d, record.d, sequence.d, spvw.d, stream.d, * symbol.d, time.d: Update all error messages. * modules/berkeley-db/bdb.c: Likewise. * modules/clx/new-clx/clx.f: Likewise. * modules/dirkey/dirkey.c: Likewise. * modules/regexp/regexi.c: Likewise. * modules/pcre/cpcre.c: Likewise. * modules/syscalls/calls.c: Likewise. * po/clisp-xgettext (main): Heuristic: Mark string as lisp-format if it contains ~S or ~C. 2004-03-15 Bruno Haible * po/clisp-xgettext (main): Remove support for scanning Lisp files. 2004-03-14 Bruno Haible Remove special casing of germanic plural in messages. * compiler.lisp (test-argument-syntax): Test the list length against 1 inside the English format string, not outside. * describe.lisp (describe-object): Likewise. 2004-03-14 Bruno Haible * control.d: Use "\n" instead of NLstring. * error.d: Likewise. * errwin32.d: Likewise. * flo_rest.d: Likewise. * io.d: Likewise. * pathname.d: Likewise. * realelem.d: Likewise. * spvw_memfile.d: Likewise. * stream.d: Likewise. * win32aux.d: Likewise. 2004-03-14 Bruno Haible Remove all leading and trailing formatting commands from internationalized strings, to make it easier for translators. * debug.d (print_stackitem): Move newline out of CLSTEXT. * encoding.d (encoding_from_name, init_dependent_encodings): Move newline out of GETTEXT. * spvw.d (SP_ueber, STACK_ueber): Move newline out of GETTEXTL. (main): Likewise, also out of CLSTEXT. * spvw_alloca.d (malloca): Move newline out of GETTEXTL. * spvw_allocate.d (error_speicher_voll, make_space_gc_true) (make_space_gc_false, make_space_gc): Likewise. * spvw_memfile.d (loadmem, loadmem_from_handle): Likewise. * spvw_mmap.d (mmap_zeromap): Likewise. * spvw_multimap.d (fdmap, open_temp_fd, initmap): Likewise. * spvw_sigsegv.d (sigsegv_handler_failed, stackoverflow_handler): Likewise. * affi1.lisp (defflibfun): Move newline and freshline out of TEXT. * compiler.lisp (c-warn, c-error, match-known-unknown-functions) (c-report-problems, compile-file, disassemble-closure): Likewise. * condition.lisp (prompt-for-new-value): Likewise. * describe.lisp (describe-slotted-object, describe-object, describe1): Likewise. * format.lisp (format-error): Likewise. * macros2.lisp (prompt-for-new-value-string): Likewise. * reploop.lisp (debug-reset-io, get-frame-limit, debug-backtrace) (print-error): Likewise. * room.lisp (room): Likewise. * trace.lisp (trace1): Likewise. 2004-03-30 Bruno Haible * po/de.po: Update translations. 2004-03-14 Bruno Haible Make use of GNU gettext >= 0.13 features. * po/Makefile.devel (GMSGFMT): Add option --check. (DSOURCES_POT, LISPSOURCES_POT): New variables. (SOURCES_POT): Apply clisp-xgettext only to *.d files. (SOURCES_POT2): Remove the *.lisp contributions. (SOURCES_EN): Remove variable and rule. (XGETTEXT, XGETTEXT_OPTIONS): New variables. (LISPSOURCES_POT): New rule. (MSGEN): New variable. (en.po): Use msgen. * clisp-xgettext (main): Don't write a *.en file. Modernize PO file header. * po/po_header.txt: Add license clause and Report-Msgid-Bugs-To field. * po/po_header: Likewise. Use the official format for the timezone in the header. Make it work with newer versions of GNU ls. 2004-03-14 Bruno Haible Internationalization fixes: - Use entire sentences instead of pieces of sentences. - Let the translator translate terms like STRING, SYMBOL, INTEGER, CHARACTER, VECTOR, PACKAGE, STREAM, CLASS. On the other hand, type names like RANDOM-STATE can remain uninternationalized. - Prefixes like "READ: " must be internationalized as well, because in French, a space is put before the colon. * charstrg.d (MAKE-STRING): Improve error message. * encoding.d (encoding_from_name): Call GETTEXT for warning message. (init_dependent_encodings): Likewise. * error.d (fehler_list, check_list): Make error message localizable. (check_symbol): Likewise. (fehler_vector): Likewise. (check_integer, check_pos_integer): Likewise. (fehler_char, check_char): Likewise. (check_string): Likewise. (fehler_stream): Likewise. (fehler_key_notkw): Likewise. (check_function): Likewise. * hashtabl.d (check_hashtable): Likewise. * lisparit.d (check_number, check_real, check_float): Likewise. (check_rational): Likewise. * record.d (fehler_record_length): Likewise. (fehler_keine_klasse): Likewise. * stream.d (MAKE-SYNONYM-STREAM): Likewise. (SYSTEM::STRING-INPUT-STREAM-INDEX): Likewise. (GET-OUTPUT-STREAM-STRING): Likewise. (lisp_completion): Likewise. (stream_handles): Likewise. (SOCKET-OPTIONS): Improve error message. (handle_to_stream): Fix order of arguments passed to error message. (MAKE-STREAM): Improve error message. (read_line): Make error message localizable. (check_open_file_stream): Likewise. * spvw.d (usage): Split message into two. * backquote.lisp (bq-non-list-splice-error, bq-dotted-splice-error): Make error message more understandable. Make the prefix localizable. * clos.lisp (make-instances-obsolete): Improve error message. (invalid-method-error): Fix error message: "~:%" is undefined. (method-combination-error): Pass the right arguments to the error message. * compiler.lisp (set-check-lock): Fix error message. (disassemble-closure): Make message localizable. Print the variable lists without surrounding parentheses. * defs1.lisp (load-lpt-many, load-lpt-one): Make the verbose message localizable. * defs2.lisp (define-hash-table-test): Make error message localizable. * describe.lisp (describe-object): Make string description localizable. (describe-signature): Assume stream argument is non-NIL. Make message localizable. * init.lisp (open-for-load): Change error message to reflect the user's point of view, not the implementor's. (load): Make the verbose message localizable. * pprint.lisp (set-pprint-dispatch, pprint-logical-block): Make error message localizable. * savemem.lisp (saveinitmem): Make the verbose message localizable. * trace.lisp (force-cclosure): Improve error message. (%local-set): Pass the right arguments to the error message. 2004-03-26 Will Newton * eval.d (interpret_bytecode_): avoid a compiler warning by declaring `byteptr' `register' 2004-03-26 Bruno Haible * init.lisp (%expand-form EVAL-WHEN): Don't look whether COMPILE is among the situations. Ignore the forms if EVAL/:EXECUTE is not among the situations. 2004-03-26 Bruno Haible * stream.d (wr_ch_array_str_out, wr_ch_array_pphelp): Use TheSnstring instead of a cast to chart*. 2004-03-25 Sam Steingold * spvw_debug.d (nobject_out1): handle PPHELP-STREAMs (TheStream, Car, Cdr): new trivial accessors * io.d: remove the debugging infrastructure, nobject_out() is now quite sufficient 2004-03-25 Sam Steingold * eval.d (DEBUG_CHECK_BYTEPTR): do not compare pointers with ints (interpret_bytecode_): fix initialization of byteptr_min & byteptr_max, fix error messages for fehler_byteptr and fehler_STACK_putt 2004-03-25 Bruno Haible * eval.d (interpret_bytecode_): Fix initialization of byteptr_min. 2004-03-15 Bruno Haible * list.d (NTHCDR): Drop out of the loop when the end of the list is reached. 2004-03-13 Bruno Haible * dribble.lisp: Use variable names 'source' and 'target' instead of 'so' and 'ta'. 2004-03-13 Bruno Haible * package.d (SYS::SYMBOL-VALUE-LOCK): Check the argument. 2004-03-14 Bruno Haible * spvw.d (init_symbol_values): Initialize *PRINT-SPACE-CHAR-ANSI*. * misc.d (SYS::SET-ANSI): Set *PRINT-SPACE-CHAR-ANSI* as well. * io.d (pr_character): Print #\Space as "#\ " if *PRINT-SPACE-CHAR-ANSI* is true. * places.lisp (*ansi*): Update documentation. 2004-03-13 Bruno Haible * lispbibl.d (back_trace_check): Change argument type to 'const char*'. * spvw_debug.d (back_trace_check): Likewise. * spvw_garcol.d (gc_markphase): Mark the backtraces here... (gar_col_normal): ... not here. * spvw_update.d (update_back_traces): Remove unneeded cast. 2004-03-24 Sam Steingold * stream.d (rd_ch_terminal2, rd_ch_terminal3, wr_ch_array_terminal3) [CHART_STRUCT]: fix compilation 2004-03-24 Sam Steingold * eval.d (GOTO_ERROR): depend on DEBUG_BYTECODE, not DEBUG_SPVW (DEBUG_CHECK_BYTEPTR) [DEBUG_BYTECODE]: new macro (interpret_bytecode_): use it before a jump * makemake.in (XCFLAGS) [DEBUGGING]: add DEBUG_BYTECODE * lispbibl.d: documented debugging options 2004-03-23 Sam Steingold * genclisph.d (Array_type_simple_bit_vector) [TYPECODES]: enabled, remove a trailing semicolon Reported by Will Newton 2004-03-23 Bruno Haible Drop *print-symbols-long*. * spvw.d (init_symbol_values): Don't initialize *print-symbols-long*. * io.d (pr_symbol): Look at *print-readably*, not *print-symbols-long*. * defs2.lisp (with-standard-io-syntax): Don't bind *print-symbols-long*. * compiler.lisp (c-write-lib, compile-toplevel-form): Likewise. 2004-03-23 Sam Steingold * clhs.lisp (read-from-file): accept :REPEAT keyword argument 2004-03-10 Bruno Haible * m4/ffcall-codeexec.m4 (CL_CODEEXEC): Don't require CL_MALLOC. Don't declare malloc(). * m4/malloc.m4: Remove file. * m4/free.m4: Remove file. * m4/shmget.m4: Remove file. * m4/shmdt.m4: Remove file. * m4/shmctl.m4: Remove file. * m4/open.m4: Remove file. * m4/setsid.m4: Remove file. * m4/sh-args.m4: Remove file. * m4/sigaltstack.m4: Remove file. 2004-03-04 Bruno Haible * io.d (pr_symbol): If *print-readably* is true, assume *print-symbols-long* to be true as well. Suggested by Paul Dietz . 2004-03-07 Bruno Haible * compiler.lisp (signed-operand-length): New function. (assemble-LAP): Instead of working around the "zero jump of length 2" bug, more generally guarantee that the jump lengths only ever grow and never need to shrink. 2004-03-07 Bruno Haible * compiler.lisp (seclass): Update comments. (c-THROW): Reduce the seclass' uses-binding value. 2004-03-22 Bruno Haible * stream.d (MAKE-STRING-OUTPUT-STREAM): For element type NIL, create an nil-vector of length 0, not 50. (get_output_stream_string): Don't use stringp to test for nil-vector. (SYS::BUILT-IN-STREAM-ELEMENT-TYPE): Likewise. 2004-03-22 Sam Steingold * clisp.spec: remove anti-RPM comments (Source): update (version): do not use absolute path (mysrc): do not hard-code `current' 2004-03-22 Bruno Haible * charstrg.d (test_2_stringsym_limits): Move the test for nil-vector to the right place. 2004-02-29 Bruno Haible * format.lisp: In error messages, talk about "format directives", not only "directives". Suggested by Jörg Höhle . 2004-02-28 Bruno Haible Due to the rule 1 in , we must have (TYPEP X Y) ==> (SUBTYPEP (TYPE-OF X) Y) for all "built-in types" Y as listed in table 4-2 in Apply this to X = #'compile and Y = COMPILED-FUNCTION or to X = #'print-object and Y = STANDARD-GENERIC-FUNCTION. * predtype.d (TYPE-OF): For compiled closures, return COMPILED-FUNCTION. For generic functions, return STANDARD-GENERIC-FUNCTION. * describe.lisp (describe-object): Add a case for GENERIC-FUNCTION. Update to match the changed behaviour of TYPE-OF. 2004-02-28 Bruno Haible Exclude generic functions from the type COMPILED-FUNCTION. So that (defgeneric foo (x) (:method ((x t)) x)) (typep #'foo 'COMPILED-FUNCTION) ==> NIL. Rationale: Due to the rule 1 in , we must have (TYPEP X Y) ==> (SUBTYPEP (TYPE-OF X) Y) for all "built-in types" Y as listed in table 4-2 in Apply this to X = #'foo and Y = COMPILED-FUNCTION. * predtype.d (COMPILED-FUNCTION-P): Exclude generic functions. (SYS::%COMPILED-FUNCTION-P): New function, with the old semantics of COMPILED-FUNCTION-P. * compiler.lisp (function-signature, compile, disassemble-closures): Use sys::%compiled-function-p instead of compiled-function-p. * defs2.lisp (function-lambda-expression): Likewise. * describe.lisp (describe-object): Likewise. * disassem.lisp (disassemble): Likewise. * edit.lisp (ed): Likewise. * trace.lisp (sys::%local-set): Likewise. 2004-02-28 Bruno Haible Due to the rule 1 in , we must have (TYPEP X Y) ==> (SUBTYPEP (TYPE-OF X) Y) for all "built-in types" Y as listed in table 4-2 in Apply this to X = #\a and Y = STANDARD-CHAR. * lispbibl.d (standard_cint_p): New macro. * charstrg.d (STANDARD-CHAR-P): Use it. * predtype.d (TYPE-OF): For standard-char elements, return STANDARD-CHAR instead of BASE-CHAR. 2004-03-21 Sam Steingold * makemake.in (installcheck): pass "-E utf-8 -norc" to CLISP Reported by Pascal J.Bourguignon 2004-03-21 Bruno Haible * error.d (check_string): Remove special handling of nil-vectors. 2004-03-07 Bruno Haible Make the vectors of element type NIL be strings. * lispbibl.d (general_vector_p): Undo last change. (simple_nilarray_p): New macro. (fehler_nilarray_retrieve): Rename from fehler_retrieve. Remove argument. (fehler_nilarray_store): New declaration. (fehler_nilarray_access): New declaration. (SstringCase): Add a fifth argument. (SstringDispatch): Signal an error when the string has element type NIL. (unpack_sstring_alloca): Handle strings of element type NIL. (schar): Likewise. (unpack_string_rw, unpack_string_ro): Can return NIL now. * genclisph.d (main): Undo last change to general_vector_p. Emit declarations of simple_nilarray_p, fehler_nilarray_retrieve. Update unpack_sstring_alloca. * array.d (iarray_displace, iarray_displace_check) (array_displace_check): Use simple_nilarray_p instead of nullp. (fehler_nilarray_retrieve): Rename from fehler_retrieve. Remove argument. (fehler_nilarray_store): New function. (fehler_nilarray_access): New function. (storagevector_aref): Update. (fehler_store): Use simple_nilarray_p instead of nullp. (array_atype): Handle strings of element type NIL. Array_type_vector now implies Atype_T again. (elt_copy_T_Char): Signal an error when dv2 has element type NIL. (elt_copy_Char_Char): Signal an error when dv1 or dv2 has element type NIL. (elt_copy): Update. (elt_move_Char): Signal an error when dv2 has element type NIL. (elt_reverse): Signal an error when dv1 or dv2 has element type NIL. (elt_nreverse): Update. (ssstring_append_extend): Update. (MAKE-ARRAY): Use simple_nilarray_p instead of nullp. Map Atype_NIL to Array_type_string instead of Array_type_vector. (ADJUST-ARRAY): Update. * charstrg.d (unpack_string_ro): Can return NIL now. (unpack_string_rw): Likewise. Signal an error when the string has element type NIL and the length is > 0. (copy_string_normal): Signal an error when the string has element type NIL and the length is > 0. (copy_string): Handle strings of element type NIL. (coerce_imm_ss): Likewise. (coerce_imm_normal_ss): Signal an error when the string has element type NIL and the length is > 0. (SYS::STRING-INFO): Handle strings of element type NIL. (SCHAR): Update the error message for strings of element type NIL. (SYSTEM::STORE-CHAR): Signal an error when the string has element type NIL. (SYSTEM::STORE-SCHAR): Update the error message for strings of element type NIL. (test_vector_limits): Signal an error when the string has element type NIL and the length is > 0. (test_string_limits_rw): Likewise. (test_2_stringsym_limits): Likewise. (string_comp, string_comp_ci): Handle strings of element type NIL. (nstring_upcase, nstring_downcase, nstring_capitalize): Signal an error when the string has element type NIL and length > 0. (subsstring, SUBSTRING, string_concat): Signal an error when a string has element type NIL and length > 0. * predtype.d (equal): Handle strings of element type NIL. (elt_compare): Update. (SIMPLE-STRING-P): Include simple strings of element type NIL. (TYPE-OF): For strings of element type NIL, return (VECTOR NIL dim0) or (SIMPLE-ARRAY NIL (dim0)). Objects of type vector_type have element type T again. (heap_statistics_mapper): Handle strings of element type NIL. Objects of type vector_type have element type T again. * sequence.d (get_seq_type): Handle strings of element type NIL. Objects of type vector_type have element type T again. (READ-CHAR-SEQUENCE): Signal an error when the string has element type NIL. (WRITE-CHAR-SEQUENCE): Likewise. * hashtabl.d (hashcode_string): Handle strings of element type NIL. (hashcode4_vector): Likewise. * io.d (string_printf): Handle strings of element type NIL. (write_string): Signal an error when the string has element type NIL. (pr_symbol_part): Don't SstringDispatch if the string's length is 0. (pr_sstring_ab): Likewise. (pr_string): Handle strings of element type NIL. (UNREADABLE_START, UNREADABLE_END): Nop. (pr_vector): Remove code for printing vectors of element type NIL. (pr_nilvector): New function. * stream.d (wr_ch_array_terminal3): Update. (read_line): Handle strings of element type NIL. * pathname.d (split_name_type): Don't SstringDispatch if the string's length is 0. (PARSE-NAMESTRING): Likewise. Update. * spvw_typealloc.d (reallocate_small_string): Update. * spvw_debug.d (string_out): Handle strings of element type NIL. * encoding.d (string_to_asciz_): Handle strings of element type NIL. * package.d (string_hashcode): Don't SstringDispatch if the string's length is 0. * type.lisp (canonicalize-type): In STRING and SIMPLE-STRING, the element-type can be CHARACTER, BASE-CHAR or NIL, not just CHARACTER. * describe.lisp (describe-object): Don't show string details for strings of element type NIL. 2004-03-19 Sam Steingold * clos.lisp (defgeneric): add (DECLARE IN-DEFUN) to avoid a compiler warning on recursive generic functions 2004-03-06 Bruno Haible * lispbibl.d (smallest_string_flavour8): New macro. (smallest_string_flavour16, smallest_string_flavour32): New declarations. (smallest_string_flavour): New function. (copy_string_normal): Rename from copy_string. (copy_string): New declaration. * charstrg.d (smallest_string_flavour16 smallest_string_flavour32): New functions. (stringof): Produce a small string if possible. (copy_string_normal): Rename from copy_string. (copy_string): New function. (coerce_normal_ss, string_upcase, string_downcase): Update. 2004-02-20 Bruno Haible * spvw_garcol.d (UNREALLOC, GC_UNREALLOC): Remove macros. (GC_MARK): Remove macro; use gc_mark instead. (update): Drop wrapper macro. Instead use the definition from update1. (update1): Remove macro; rename to update. * spvw_genera2.d (gc_mark_at, gc_mark_old_generation): Use gc_mark instead of GC_MARK. 2004-02-20 Bruno Haible Clean up simple-string forward pointers during garbage collection. * lispbibl.d (sstring_flags_clr, sstring_flags_set): New macros. (mark_sstring_clean): New macro. * spvw_update.d: Use update_unrealloc instead of update_instance_unrealloc. (update_varobject, update_sstring): Obey also update_unrealloc. * spvw_garcol.d (gc_sweep1_sstring_forward, gc_sweep1_sstring_target): New functions. (gc_sweep1_varobject_page): Use them for simple-strings. (gar_col_normal): Set update_unrealloc to true while updating. (gar_col_compact, move_conses): Set update_unrealloc to false while updating. * spvw_memfile.d (savemem, loadmem_from_handle): Use update_unrealloc instead of update_instance_unrealloc. * predtype.d (enum_hs_realloc_simple_string): New enum value. (heap_statistics_mapper): Map forwarded instances to EXT::FORWARD-POINTER-SIMPLE-STRING. 2004-02-19 Bruno Haible Make the small-sstrings more robust. * lispbibl.d (stringsize_limit_1): New macro. (DYNAMIC_STRING): Check the string size. (DBGREALLOC): New macro. (fehler_stringsize): New declaration. (check_stringsize): New macro. * spvw.d (init_symbol_values): Initialize SYS::STRING-DIMENTION-LIMIT. * constobj.d (O(type_stringsize)): New object. * error.d (fehler_stringsize): New function. * io.d (write_sstring, write_sstring_case, pr_symbol_part): Handle reallocated strings correctly. * charstrg.d (string_gleich, string_equal): Handle reallocated strings correctly. (stringof, MAKE-STRING, string_concat): Check the string size before allocating the string. * array.d (VECTOR-PUSH-EXTEND, make_ssstring, ssstring_extend_low) (make_storagevector, ADJUST-ARRAY): Likewise. * encoding.d (n_char_to_string, ascii_to_string) (CONVERT-STRING-FROM-BYTES): Likewise. * lisparit.d (decimal_string): Likewise. 2004-02-18 Bruno Haible Make HAVE_SMALL_SSTRING work also in TYPECODES mode. * lispbibl.d (HAVE_SMALL_SSTRING): Define also if TYPECODES or SPVW_PURE is defined. (if_HAVE_SMALL_SSTRING): New macro. (SSTRING_HEADER): New macro. (sstring_, Sstring): Define using SSTRING_HEADER, without 'data' field. (STRUCT_SSTRING): Use SSTRING_HEADER instead of LRECORD_HEADER. (snstring_): New type, rename from sstring_. (Snstring): New type, rename from Sstring. (sstring_length): Change definition. (sstringrecord_tfl, sstring_tfl): New macros. (sstringflags_forwarded_B, sstring_reallocatedp): New macros. (sstring_eltype): New macro. (Sstringtype_8Bit, Sstringtype_16Bit, Sstringtype_32Bit): New macros. (sstring_immutable, sstring_flags): New macros. (sstringflags_backpointer_B, sstringflags_relocated_B): New macros. (sistring_): Rename from siarray_. Use SSTRING_HEADER instead of VAROBJECT_HEADER. (Sistring): Rename from Siarray. (sistring_data_offset): New macro. (TheSnstring, TheSistring): New macros. (TheSiarray): Remove macro. (allocate_imm_s8string, allocate_imm_s32string): Also declare if TYPECODES. (DYNAMIC_STRING): Update. (allocate_imm_string): Also declare if TYPECODES. (reallocate_small_string): Change meaning of newtype argument. (with_sstring_0, with_sstring): Update. (sstring_un_realloc): Rename from simple_array_to_storage. Make it work if TYPECODES. (sstring_un_realloc1): Rename from simple_array_to_storage1. Make it work if TYPECODES. (array_total_size, SstringCase, sstring_normal_p): Update. (unpack_sstring_alloca): Update. (coerce_imm_ss): Declare also if TYPECODES. (check_sstring_mutable): Make it work if TYPECODES. * genclisph.d (main): Emit SSTRING_HEADER. Update sstring_. Emit snstring_. Update sstring_length. Emit sstring_eltype. Update with_sstring_0, STRUCT_SSTRING, unpack_sstring_alloca. * spvw_debug.d (string_out): Update. * spvw_global.d (init_mem_heaptypes): Change type of sstring_type heap. * spvw_objsize.d (size_sistring): Rename from size_siarray. Define also for TYPECODES. (objsize_s8string, objsize_s16string, objsize_s32string): New functions. (objsize_sstring, objsize): Support all simple-string variants. * spvw_update.d (do_update_sistring, update_sstring): New macros. (update_varobject, update_varobjects): Handle simple-string as well. * spvw_garcol.d (UNREALLOC): Update. (down_sistring, up_sistring): New macros. (gc_mark): Use them. * spvw_genera1.d (walk_area_sistring, walk_area_sstring): New macros. (walk_area, build_old_generation_cache): Walk through the indirect pointer of reallocated simple strings. * spvw_typealloc.d (allocate_s8string): Update. (allocate_imm_s8string): Define also if TYPECODES. Update. (allocate_s16string, allocate_imm_s16string, allocate_s32string): Update. (allocate_imm_s32string): Define also if TYPECODES. Update. (reallocate_small_string): Update. * charstrg.d (unpack_string_ro, sstring_store, sstring_store_array) (stringof, copy_string, coerce_ss): Update. (coerce_imm_ss): Define also if TYPECODES. (coerce_normal_ss, coerce_imm_normal_ss, SYS::STRING-INFO, char_name) (CHAR, SCHAR, SYSTEM::STORE-CHAR, SYSTEM::STORE-SCHAR): Update. (test_string_limits_rw): Define as a function also for TYPECODES. (test_stringsymchar_arg, MAKE-STRING, nstring_upcase, string_upcase) (STRING-UPCASE, nstring_downcase, string_downcase, STRING-DOWNCASE) (nstring_capitalize, STRING-CAPITALIZE, subsstring, SUBSTRING) (string_concat): Update. * array.d (vector_length, iarray_displace, iarray_displace_check) (array_displace_check, test_index, subscripts_to_index) (storagevector_store, ROW-MAJOR-AREF, SYS::ROW-MAJOR-STORE) (ARRAY-DIMENSION, array_dimensions, ARRAY-IN-BOUNDS-P) (ARRAY-ROW-MAJOR-INDEX, elt_copy_T_Char, elt_copy_Char_Char, elt_fill) (elt_reverse, VECTOR-PUSH-EXTEND, ssstring_push_extend) (ssstring_append_extend, make_storagevector, initial_contents_aux) (ADJUST-ARRAY): Update. * encoding.d (n_char_to_string, n_char_to_string_, string_to_asciz_) (CONVERT-STRING-FROM-BYTES): Update. * pathname.d (common_case, test_optional_host, copy_upcase, all_digits) (PARSE-NAMESTRING, MAKE-PATHNAME, wildcard_match, use_default_dir): Update. * stream.d (read_char_array, rd_ch_array_str_in, wr_ch_array_str_out) (wr_ch_array_pphelp, rd_ch_array_buffered, lisp_completion) (rd_ch_terminal2, rd_ch_terminal3, wr_ch_array_terminal3): Update. * io.d (sstring_printf, test_potential_number_syntax, upcase_token) (case_convert_token, char_reader, radix_2, bit_vector_reader) (write_string, pphelp_string_width, klammer_zu, pr_enter_1): Update. * package.d (test_package_arg, DELETE-PACKAGE): Update. * debug.d (read_form): Update. * error.d (fehler_sstring_immutable): Define also if TYPECODES. * lisparit.d (read_rational, read_float, print_integer): Update. * foreign.d (convert_from_foreign_array_fill): Update. 2004-02-16 Bruno Haible Clean up instance forward pointers during garbage collection. * lispbibl.d (instflags_backpointer_B, instflags_relocated_B) (mark_inst_clean): New macros. * spvw_update.d (do_update_record): Obey also update_instance_unrealloc and update_in_unrealloc. * spvw_garcol.d (make_GCself): New macro. (set_GCself): Use it. (gc_sweep1_instance_forward, gc_sweep1_instance_target): New functions. (gc_sweep1_varobject_page): Use them for Instance objects. (gar_col_normal): Set update_instance_unrealloc to true while updating. (gar_col_compact, move_conses): Set update_instance_unrealloc to false while updating. * spvw_memfile.d (savemem, loadmem_from_handle): Set update_instance_unrealloc to false while updating. * predtype.d (enum_hs_realloc_instance): New enum value. (heap_statistics_mapper): Map forwarded instances to EXT::FORWARD-POINTER-INSTANCE. 2004-03-18 Sam Steingold * io.d (circle_p): when SYS::*PRINT-CIRCLE-TABLE* is NIL, assume that the object has no circularities and print it normally (pr_enter_2): bind SYS::*PRINT-CIRCLE-TABLE* to NIL when there are no circularities but *PRINT-READABLY* is non-NIL 2004-02-19 Sam Steingold make package errors automatically recoverable * error.d (prepare_error): new function (fehler, check_value): use it (correctable_error): new function * lispbibl.d (correctable_error): prototype * constobj.d (query_string_*): remove * constsym.d (correctable_error, prompt_for_new_value, continue): add * package.d (query_user, prepare_query_user): remove (unintern, query_intern_conflict, export, use_package): use correctable_error() instead of query_user() (correct_packname): use correctable_error(): for NAME, CONTINUE means reuse existing package, for NICKNAME - discard the nickname (in_make_package): delete duplicate and NIL nicknames * condition.lisp (correctable-error): new function (check-value): bind *active-restarts* directly 2004-03-17 Sam Steingold * configure.in (AC_INIT): release 2.33 2004-03-17 Sam Steingold * Makefile.devel (src/autoconf/aclocal.m4): get all configure files together before running aclocal 2004-03-16 Sam Steingold * makemake.in (full-check): fix quoting 2004-03-16 Sam Steingold * m4/ldap.m4, m4/tcpconn.m4: remove extra quotes ([[]] -> []) 2004-03-16 Bruno Haible * genclisph.d (main): Treat alloca() the same way as lispbibl.d. Needed for OSF/1 5.1. 2004-03-16 Bruno Haible * stdint.h.in: Make it work with AIX 5 xlc. 2004-03-16 Bruno Haible * m4/tcpconn.m4 (CL_TCPCONN): Include before . Needed for AIX 4. 2004-03-16 Bruno Haible * m4/stdbool.m4 (gt_STDBOOL_H): Also check whether 'bool' can be used in declarations. Needed for HP-UX 11. 2004-03-16 Bruno Haible * m4/install.m4 (CL_PROG_INSTALL): Don't use installbsd at all. Needed on AIX 4 and AIX 5. 2004-03-16 Bruno Haible * utils/modprep.lisp (print-tables-2): Use sizeof, not pointer subtraction, to compute the size of the subr table. * utils/modpreptest.out: Update. Needed on AIX with xlc. 2004-03-16 Bruno Haible * genclisph.d (main): Remove trailing comma in definition of condition_t. Needed on AIX with xlc. 2004-03-16 Bruno Haible * arilev0.d (divu_3216_1616_, divu_3216_3216_): Change from K&R C to ANSI C style function definition. Needed on AIX with xlc. 2004-03-16 Bruno Haible * stream.d (strm_unbuffered_extrafields_t, strm_buffered_extrafields_t): Change type of bitfields from 'bool' to 'int', because 'bool' can now be equivalent to 'long'. Needed on AIX 4 with xlc. 2004-03-16 Bruno Haible * lispbibl.d (NULL): Don't define on AIX. Needed on AIX with xlc. 2004-03-16 Bruno Haible * intparam.c (boolean_t): Define as a macro, not a typedef. * utils/ccmp2c.c (boolean_t): Likewise. Needed for AIX with xlc. 2004-03-16 Bruno Haible * makemake.in (XCC_UNUSABLE_CPP): Don't use gcc-cccp on AIX != 4.2. 2004-01-20 Bruno Haible * spvw_sigsegv.d (stackoverflow_handler) [UNIX_LINUX ARM]: Update for Linux 2.4.x. 2004-03-15 Bruno Haible * po/Makefile.devel (MSGATTRIB): New variable. (clisplow_%.po): Use it instead of a sed command to remove the obsolete entries. 2004-03-15 Sam Steingold * makemake.in (anymodule): pass CC to configure 2004-03-15 Bruno Haible * control.d (make_variable_frame): Make 2003-05-20 change work on platforms with symbolflags too. 2004-03-15 Bruno Haible * po/de.po: Fix 3 format strings that had the wrong number of ~. * po/fr.po: Fix 1 such format string. 2004-03-14 Bruno Haible * makemake.in (LIBICONV, LIBINTL, LIBSIGSEGV, LIBTERMCAP): On OSF/1, remove any -lc options. Needed for OSF/1 4.0d. 2004-03-14 Bruno Haible * makemake.in (distmakefile): Escape commas in $libs for use on the right-hand side of a sed expression. (distrib): Likewise for $full_libs. 2004-03-14 Bruno Haible * m4/ioctl.m4 (CL_IOCTL): Set the bytes_ready variable to 0 before calling ioctl FIONREAD. * stream.d (listen_handle): Likewise. Needed for Linux/ia64. 2004-03-14 Bruno Haible * makemake.in: For ia64 with gcc, reduce the optimization flags to -O in general and -O0 for eval.d. Needed on Linux/ia64. 2004-03-14 Sam Steingold * configure.in (AC_INIT): pre-release 2.32.94 2004-03-13 Bruno Haible * po/de.po: Update translations. 2004-03-13 Arseny Slobodjuck * po/ru.po: Update translations. 2004-03-14 Bruno Haible * po/Makefile.devel (LISPSOURCES): Add loadform. 2004-03-13 Bruno Haible * spvw_memfile.d (savemem, loadmem_from_handle): Remove calls to update_back_traces(). 2004-03-13 Bruno Haible * pathname.d (DELETE-FILE): Fix stack layout when the function returns NIL. 2004-03-12 Bruno Haible * makemake.in (DRIVERFLAGS): New variable. (clisp, install-bin): Use it. Needed for HP-UX 10. 2004-03-12 Bruno Haible * makemake.in (testsuite, testsuite-all): Pass the SHELL variable to the suite/Makefile. Needed for HP-UX 10. 2004-03-12 Bruno Haible * modules/pcre/cpcre.c: Remove semicolon after DEFMODULE declaration. * modules/regexp/regexi.c: Likewise. * modules/dirkey/dirkey.c: Likewise. * modules/syscalls/calls.c: Likewise. * modules/berkeley-db/bdb.c: Likewise. 2004-03-12 Sam Steingold * configure.in (AC_INIT): pre-release 2.32.93 2004-03-12 Bruno Haible * m4/ioctl.m4 (CL_IOCTL): Define IOCTL_ARGUMENT_T through AC_DEFINE_UNQUOTED, not AC_DEFINE. Fixes bug introduced on 2003-08-03 (no ChangeLog entry). Needed on OSF/1 and AIX. 2004-03-12 Sam Steingold * po/ru.po, po/clisplow_ru.po: Update translations. 2004-03-12 Bruno Haible * lispbibl.d (, array_total_size, instanceof, schar) (seclass_object): Omit these when COMPILE_STANDALONE is defined. * makemake.in (txt, genclisph.o, clisp-test-lispbibl): Define COMPILE_STANDALONE. Needed to avoid dependencies to fehler_notreached() etc. with C compilers that don't have 'inline' (such as Solaris cc), and on NetBSD, BeOS, Woe32 with gettext >= 0.13 because can remap printf() to libintl_printf(). 2004-03-12 Bruno Haible * modules/wildcard/Makefile.in (FNMATCH_H): New variable. (wildcard.o): Depend on it. 2004-03-12 Bruno Haible * stdbool.h.in: Define bool as 'long' in the normal case. Needed on BeOS and on Solaris with cc. 2004-03-12 Bruno Haible * makemake.in (LN_HARD): New variable. (locale): Use it. Needed for BeOS 5. 2004-03-12 Bruno Haible * unix.d (sock_write): Declare with 4 arguments, not 3. * unixaux.d (read_helper, write_helper): Coding style. (sock_write): Test for EWOULDBLOCK only if no_hang is true. Needed for BeOS 5. 2004-03-12 Bruno Haible * m4/install.m4 (CL_PROG_INSTALL): Use the absolute path of "cp", not just "cp". Needed on HP-UX 10 because autoconf does special magic to INSTALL at config.status time if its value is a relative pathnames. 2004-03-11 Bruno Haible * makemake.in (SHELL): On HP-UX, use bash instead of /bin/sh. Needed for HP-UX 10. 2004-03-11 Bruno Haible * makemake.in (cpu): Set to x86_64 if appropriate. (XCFLAGS): Add -O when the CPU is x86_64. 2004-03-11 Bruno Haible * configure: Configure libcharset with --disable-shared on all platforms, not only on cygwin and mingw. Needed because libtool's support for shared libraries is broken at least on HP-UX 10 with gcc. 2004-03-11 Bruno Haible * stdint.h.in: Make it work with HP-UX 10.20 cc. 2004-03-11 Bruno Haible * modules/syscalls/configure.in: Add a test whether f_fsid in 'struct statvfs' is scalar. * modules/syscalls/calls.c (POSIX::STAT-VFS): Use HAVE_SCALAR_FSID. Needed for Linux/x86 with glibc <= 2.1. 2004-03-11 Sam Steingold Bruno Haible * configure.in: Check for and . * unix.d: Prefer over . Use when neither of the two exists (e.g. on FreeBSD 4). * spvw_multimap.d (open_temp_fd): Use fstatvfs instead of fstatfs when possible. 2004-03-10 Bruno Haible * configure: Use an if-then statement so that a "make check" failure in avcall or callback doesn't stop the configure file. Needed when using a *BSD /bin/sh. 2004-03-10 Sam Steingold * configure.in (AC_INIT): pre-release 2.32.92 2004-03-10 Sam Steingold * eval.d (interpret_bytecode) [__APPLE_CC__]: disabled FAST_DISPATCH * lispbibl.d, genclisph.d (nonreturning_function) [__APPLE_CC__]: disabled nonreturning_function() * lispbibl.d [__APPLE_CC__]: disabled STACK_register and SP_register 2004-03-10 Bruno Haible * arisparc.d: Don't use the gas syntax for labels (1b, 1f). Needed for building with Solaris cc. 2004-03-10 Bruno Haible Don't use features unique to GCC. Needed for Solaris cc, HP-UX cc and IRIX cc. * stream.d (key_ascii, key_special): Use portable initializer syntax. (add_keybinding): Rename from keybinding. Change argument type from key_event_t to 'const key_event_t *'. (keybinding): New macro. (make_keyboard_stream): Remove macros BIND_KEY, CHECK_CAP. Use macro keybinding instead. 2004-03-10 Bruno Haible * Makefile.devel (src/autoconf/aclocal.m4): Append also mbstate_t.m4 and fnmatch.m4, needed by modules/wildcard/configure.in. 2004-03-10 Sam Steingold * makemake.in (XCFLAGS): add "-I." on all platforms 2004-03-10 Bruno Haible * m4/filecharset.m4 (CL_FILECHARSET): Work around a problem with NFS on Solaris 7, where unlink()ed files reappear immediately under a different name and disappear only after 1. the process doing readdir() has exited and 2. waiting a second or two. 2004-03-10 Sam Steingold * eval.d (get_closure): remove a spurious backslash which broke the build on Mac OS X 2004-03-10 Bruno Haible * modules/bindings/glibc/linux.lisp: Add a #include . Needed for building on glibc 2.1 systems. 2004-03-10 Sam Steingold * po/Makefile.devel (LISPSOURCES): remove `threads' (mentioned twice), add `russian' * Makefile.devel (all): `check-configures', not `configures' * configure.in (AC_INIT): pre-release 2.32.91 2004-03-10 Sam Steingold * modules/syscalls/calls.c: include "clisp.h" before system includes because on BSDs and on glibc 2.1 the system includes may define (inline) functions and then we get an error "global register variable follows a function definition" 2004-03-09 Sam Steingold * spvw_mmap.d, spvw_multimap.d: add a "\n" at the end of error messages 2004-03-09 Sam Steingold * Makefile.devel (EXCLUDE): exclude all doc/.cvsignore (CLISP): set to $(CURDIR)/build/clisp (src/uninames.h): use it 2004-03-09 Bruno Haible * Makefile.devel (potfiles): Set the CLISP environment variable for po/Makefile.devel. (src--distrib): Don't create clisp-$(VERSION)-potfiles.tar.bz2. * po/Makefile.devel (DSOURCES): Remove rexx. (LISPSOURCES): Add international, threads, deprecated. Remove rexx1. 2004-03-09 Sam Steingold * format.lisp (format-logical-block, formatter): do not signal an error on unimplemented functionality 2004-03-08 Sam Steingold * makemake.in (VERSION): compute reliably * configure.in (AC_INIT): pre-release 2.32.90 (AC_COPYRIGHT): update the year * Makefile.devel (htmldoc): make man pages also 2004-03-08 Bruno Haible * makemake.in (arimips.o): Don't use the assembler explicitly on Linux. Reported by Will Newton . 2004-03-08 Will Newton * ariarm.d (C, GLABEL, LABEL): Remove useless ## that triggers gcc 3 warnings. 2004-02-28 Bruno Haible * lfloat.d (LF_sqrt_LF): Simplify the last bug fix. 2004-02-28 Bruno Haible * io.d (pr_structure_default): Change error message. 2004-02-28 Bruno Haible * lispbibl.d (namestring_correctly_parseable_p): Mark as GC-unsafe. * io.d (pr_orecord): Fix GC-safety bug. 2004-03-08 Bruno Haible * unix.d (NO_BLOCK_DECL, START_NO_BLOCK, END_NO_BLOCK): Prefer the SysV way over the old FIONBIO way. Needed for Linux/x86_64. 2004-03-08 Bruno Haible * lfloat.d (LF_LF_mal_LF): Fix the second underflow condition. 2004-02-28 Bruno Haible * clos.lisp (find-method-combination): Rename from method-combination-object. (method-combination): Add slots check-method-qualifiers, call-next-method-allowed. (method-combination STANDARD): Delay initialization until ready. Initialize the two new method-combination slots. (analyze-method-description): Return the qualifiers in the order they were given in the method description, not in reverse order. Fix bug introduced on 2004-02-09. (standard-method-combination-expander): Style improvement. Rename inner function apply-forms to forms-for-invoking-sequentially. (short-form-method-combination-check-method-qualifiers): New function. (standard-method-combination-call-next-method-allowed): New function. (check-method-qualifiers): New function. (invalid-method-qualifiers-error): New function. (std-add-method): Invoke check-method-qualifiers. (analyze-defgeneric): Return method combination as 3rd value, not as 5th value. Better error message. (defgeneric, ensure-generic-function): Update. (make-generic-function): Set the method combination before adding the methods, not after. (do-defgeneric): Likewise. When changing the method combination of an existing generic function, check its methods' qualifiers against it. (make-generic-function-form): Update. (no-next-method): Invoke call-next-method-allowed and provide a more appropriate error message. (qualifiers-match-p): Fix typo in error message. (compute-method-partition-lambdas): Rename from compute-method-partition-lambda. Provide a second lambda form as a second value. Use symbol CLOS::METHD instead of CL:METHOD. (define-method-combination): Initialize the two new method-combination slots. Don't use (COMPILE NIL ...) on code that comes partially from the user. (compute-effective-method-function): Style improvement. (compute-short-form-effective-method-form): Remove first argument. (short-form-method-combination-call-next-method-allowed): New function. (long-form-method-combination-call-next-method-allowed): New function. (method-combination AND APPEND ... PROGN +): Initialize the two new method-combination slots. 2004-03-08 Bruno Haible * lispbibl.d: Use 'extern' instead of 'global'. (check_real): Don't declare as inline. * lisparit.d (check_real): Likewise. 2004-03-06 Sam Steingold * pathname.d (use_default_dir): fix a GC-safety bug 2004-03-04 Arseny Slobodjuck Make syscalls module available on win95/98/me (dynamic DLL loading) * modules/syscalls/calls.c (CreateHardLinkFuncType) (BackupWriteFuncType) [WIN32_NATIVE]: new types. (CreateHardLinkFunc, BackupWriteFunc, kernel32) [WIN32_NATIVE]: new static variables. (OldHardLinkGuard, OldHardLink, MkHardLink) [WIN32_NATIVE]: new functions. (module__syscalls__init_function_2): new function. (POSIX:STREAM-LOCK): Use GetFileSize instead of GetFileSizeEx. 2004-03-05 Sam Steingold * makemake.in (DEVPREFIX): needed on both "win32gcc" and "cygwin" 2004-03-04 Bruno Haible Change the maximum number of hash buckets of a symbol table from 2^16-1 to 2^24-1. * package.d (string_hashcode): Return a 24-bit integer. (newinsert): Take a 24-bit size as argument. (rehash_symtab): Bump the max to 2^24-1. (symtab_lookup, symtab_find, symtab_insert, symtab_delete): Don't cast the size to uintW. 2004-03-04 Bruno Haible Sam Steingold * package.d (string_hashcode): Don't ignore the 17th and following characters. Use + instead of |, to maintain statistical equidistribution. 2004-03-03 Sam Steingold * compiler.lisp (make-anode): avoid compiler warning 2004-03-02 Sam Steingold * compiler.lisp (c-NTH, c-SETNTH): when the index is not an integer, do not signal ERROR-OF-TYPE, use C-WARN instead 2004-03-03 Bruno Haible * foreign.d (ffi_identity): Pass and return an uintP, not just an uintL. 2004-03-02 Sam Steingold * compiler.lisp (function-signature): check *KNOWN-FUNCTIONS* before the function object (c-APPLY): check the local function signature before the global one 2004-03-02 Bruno Haible * compiler.lisp (make-anode, anodes-seclass-or, seclass-or-f) (seclass-or-anode): Define them also when loading the compiler. 2004-03-01 Bruno Haible * spvw_garcol.d (move_aligned_p1_p2): Don't use the *p++ form with GCC 3 any more. Reported by Will Newton . 2004-03-01 Bruno Haible * encoding.d (CONVERT-STRING-FROM-BYTES): Avoid gcc warning "initializer element is not computable at load time". 2004-03-01 Bruno Haible * stream.d: Avoid gcc warnings "ISO C does not allow extra `;' outside of a function". 2004-03-01 Bruno Haible * lispbibl.d (HAVE_SAVED_REGISTERS, struct registers): Define only if needed. 2004-02-29 Kaz Kylheku * backquote.lisp (bq-expand-list): If the backquote form is an improper list, treat the terminating atom as if it were backquoted. (CLHS wants it to just be quoted). This allows for unquotes in the atom if it is a vector. 2004-02-29 Bruno Haible Major speedup of slot accessors generated by DEFCLASS in interpreted code. * clos.lisp (defclass): Force the accessor methods to be compiled. 2004-02-28 Bruno Haible * intdiv.d (I_I_I_mod_expt_I): Avoid endless loop when the exponent is = 0. 2004-02-27 Bruno Haible * error.d (check_pos_integer): Fix typo in error message. 2004-02-27 Bruno Haible * spvw.d (main): Combine the handling of the options -t TMPDIR and -traditional. 2004-02-27 Bruno Haible * unix.d: Include . Needed for MULTIMAP_MEMORY_VIA_FILE. 2004-02-27 Bruno Haible * lispbibl.d (_GNU_SOURCE): Define. Needed for MULTIMAP_MEMORY_VIA_SHM on Linux: glibc defines IPC_INFO in only if _GNU_SOURCE is defined. 2004-03-01 Bruno Haible * spvwtabs.d: Undefine open, truncate, ftruncate. * lisparit.d: Undefine truncate, ftruncate. Reported by Russell McManus . 2004-02-29 Sam Steingold Bruno Haible * encoding.d (encoding_from_name): Call FIND-SYMBOL and remove most of the mapping table. 2004-02-29 Arseny Slobodjuck Fix cygwin build * pathname.d (LAUNCH): declared exit_code. 2004-02-27 Peter Seibel * pprint.lisp (copy-pprint-dispatch): accept NIL argument 2004-02-27 Bruno Haible * predtype.d (TYPE-OF): For vectors, return (SIMPLE-ARRAY NIL (n)) or (VECTOR NIL n), depending on whether the vector is simple. 2004-02-27 Bruno Haible * time.d (get_real_time): Take care of the case when struct timeval is not the same thing as internal_time_t. 2004-02-27 Bruno Haible * makemake.in (XCFLAGS): Don't use -O2 with current gcc on x86_64. 2004-02-26 Bruno Haible * lispbibl.d (oint_type_*, oint_addr_*, oint_data_*) [AMD64]: Define appropriately for Linux/x86_64. (SINGLEMAP_MEMORY, MULTIMAP_MEMORY) [AMD64 Linux]: Don't define on this platform. * spvw.d (main): Limit the mmap()ed addresses to 36 bits. 2004-02-26 Bruno Haible * genclisph.d (main): Define oint and soint consistently with lispbibl.d. 2004-02-26 Bruno Haible * spvw_fault.d (xmmprotect): Fix declaration. 2004-02-26 Bruno Haible * flo_konv.d (DF_to_c_double): Use minus_bit instead of -bit. Avoids an "integer overflow" warning on 64-bit platforms. 2004-02-26 Bruno Haible * lispbibl.d (fake_gcv_object): Cast argument to oint. Avoids gcc warnings on 64-bit platforms when the argument is an uintL. * eval.d (nest_var): Cast count to oint, Avoids a gcc warning as well. 2004-02-25 Bruno Haible * i18n.d: Prefix some symbols with "i18n_". * subr.d: Update. * constsym.d: Update. 2004-02-25 Bruno Haible * stream.d: Remove syntactically invalid debugging statements. 2004-02-25 Bruno Haible * stdint.h.in: Test __sun, not __sun__, so that it also works with cc on Solaris. 2004-02-25 Bruno Haible * unix.d (msync, mmap, munmap): Comment out prototype. Needed to avoid prototype clash on Solaris 7. * spvw_mmap.d (munmap): Likewise. 2004-02-25 Bruno Haible * makemake.in (XCPPFLAGS): New variable. (XCFLAGS): Don't add the value of XCPPFLAGS here. (MODULE_CPPFLAGS_VAR): New variable. (all .c compilation rules): Use CPPFLAGS before CFLAGS. * clisp-link.in: Use CPPFLAGS variable that is read from 'makevars'. * modules/berkeley-db/link.sh.in: Pass CPPFLAGS to the Makefile. * modules/berkeley-db/Makefile.in (CPPFLAGS): New variable. * modules/bindings/glibc/link.sh: Pass CPPFLAGS to the Makefile. * modules/bindings/glibc/Makefile (CPPFLAGS): New variable. * modules/bindings/win32/link.sh: Pass CPPFLAGS to the Makefile. * modules/bindings/win32/Makefile (CPPFLAGS): New variable. * modules/clx/mit-clx/link.sh: Pass CPPFLAGS to the Makefile. * modules/clx/new-clx/link.sh.in: Pass CPPFLAGS to the Makefile. * modules/clx/new-clx/Makefile.in (CPPFLAGS): New variable. * modules/dirkey/link.sh: Pass CPPFLAGS to the Makefile. * modules/dirkey/Makefile.in (CPPFLAGS): New variable. * modules/fastcgi/link.sh: Pass CPPFLAGS to the Makefile. * modules/fastcgi/Makefile.in (CPPFLAGS): New variable. * modules/netica/link.sh: Pass CPPFLAGS to the Makefile. * modules/netica/Makefile (CPPFLAGS): New variable. * modules/oracle/link.sh: Pass CPPFLAGS to the Makefile. * modules/oracle/Makefile.in (CPPFLAGS): New variable. * modules/pcre/link.sh.in: Pass CPPFLAGS to the Makefile. * modules/pcre/Makefile.in (CPPFLAGS): New variable. * modules/postgresql/link.sh.in: Pass CPPFLAGS to the Makefile. * modules/postgresql/Makefile.in (CPPFLAGS): New variable. * modules/queens/Makefile (CPPFLAGS): New variable. * modules/regexp/link.sh.in: Pass CPPFLAGS to the Makefile. * modules/regexp/Makefile.in (CPPFLAGS): New variable. * modules/syscalls/link.sh.in: Pass CPPFLAGS to the Makefile. * modules/syscalls/Makefile.in (CPPFLAGS): New variable. * modules/wildcard/link.sh.in: Pass CPPFLAGS to the Makefile. * modules/wildcard/Makefile.in (CPPFLAGS): New variable. 2004-02-25 Sam Steingold * m4/ldap.m4 (CL_LDAP): Solaris/cc requires before * modules/dirkey/dirkey.c: ditto 2004-02-24 Sam Steingold * modules/clx/mit-clx/input.lisp (declare-event): fix a compilation error 2004-02-24 Bruno Haible * loadform.lisp (missing-load-form): Fix mistake in the last patch. 2004-02-24 Bruno Haible * m4/readline.m4 (CL_READLINE): Don't use AC_SEARCH_LIBS. Instead, use the value of LIBREADLINE, as determined by AC_LIB_LINKFLAGS_BODY. 2004-02-24 Bruno Haible * lispbibl.d (nil_vector_p): Change to match new nil-vector handling. (nil_vector_0_p): Remove macro. * charstrg.d (test_stringsymchar_arg): Use nil_vector_p. * predtype.d (elt_compare): Return false when comparing nil-vectors. (equal): Update nil-vector handling. A string and a nil-vector of the same length > 0 now compare as different. (equalp): Likewise. (TYPE-OF): For nil-vectors, return (VECTOR NIL n), not (ARRAY NIL (n)). * error.d (check_string): Update. 2004-02-24 Sam Steingold * clos.lisp (std-remove-method): reset (STD-METHOD-GF OLD-METHOD) (std-add-method): signal an error when METHOD already belongs to a generic function 2004-02-23 Sam Steingold * pathname.d (DIRECTORY): pathname argument is required * subr.d (directory): ditto * constobj.d (version): bumped 2004-02-20 Bruno Haible * time.d (encode_universal_time): Define only if TIME_RELATIVE. 2004-02-18 Bruno Haible * spvw_debug.d (find_pack, find_sym): Comment out unused and unportable functions. 2004-02-18 Bruno Haible * pathname.d (LAUNCH): Move declaration of exit_code so as to avoid gcc warning. 2004-02-18 Bruno Haible * genclisph.d (main): Fix the declarations of cslen_ff, cstombs_ff. 2004-02-16 Bruno Haible * charstrg.d (SYS::STRING-INFO): Make it work in TYPECODES mode too. * describe.lisp (describe-slotted-object for ARRAY): Describe the string element type as "UCS-4", not "32-bit". 2003-01-26 Bruno Haible Allow multibyte characters in pathnames. * pathname.d (legal_namebyte): New function. (legal_namechar): Invoke it. 2004-02-16 Bruno Haible * stream.d (stream_get_read_eval, stream_set_read_eval): Invoke instance_un_realloc. 2004-02-15 Bruno Haible Undo the 2001-11-27 patch, because it breaks in WIDE_SOFT mode with gcc-3.3. * array.d (SIMPLE_NREVERSE): Change to contain only the loop. (elt_nreverse): Handle the byte vectors correctly. 2004-02-15 Bruno Haible Make GENERATIONAL_GC work in WIDE mode again. * spvw_garcol.d (PRIoint): New macro. (gc_mark_stack): Pass to gc_mark the pointer without symbol flags. Undoes the bug introduced on 2002-08-03. 2004-02-15 Bruno Haible Enforce 8-byte alignment needed by GENERATIONAL_GC in WIDE_SOFT mode, working around a gcc-3.3 bug that is fixed in gcc-3.4. * lispbibl.d (INNARDS_OF_GCV_OBJECT): Add _attribute_aligned_object_. (_attribute_aligned_object_): Default to empty. (record_, srecord_, xrecord_, cons_, ratio_, complex_, symbol_) (svector_, siarray_, iarray_, Package, Hashtable, Readtable, Pathname) (Logpathname, Random_state, Byte, Fsubr, Loadtimeeval, Symbolmacro) (Macro, FunctionMacro, Encoding, Faddress, Fvariable, Ffunction) (Weakpointer, weakkvt_t, Finalizer, Socket_server, Yetanother, Stream) (Class, Instance, Closure, Iclosure, Cclosure, subr_t): Add _attribute_aligned_object_ to all fields of type gcv_object_t. * genclisph.d (main): Adjust accordingly. 2004-02-14 Bruno Haible * lists153.tst: Reduce the memory size, so that it needs only 80 MB, not 160 MB, when using a WIDE memory model. 2004-02-14 Bruno Haible * lispbibl.d (Rectype_realloc_Instance): Remove enum value. (instancep, case_Rectype_Instance_above): Simplify accordingly. (instflags_forwarded_B): New macro. (instance_un_realloc, instance_valid_p): Add comments. (instance_update): Rename from check_instance. * predtype.d: Update accordingly. * hashtabl.d: Likewise. * spvw_garcol.d (UNREALLOC): Test a recflags bit instead of testing for Rectype_realloc_Instance. * record.d (CLOS::%CHANGE-CLASS): Simplify. * io.d (pr_orecord): Remove handling of realloc_Instance type. 2004-02-14 Bruno Haible Make arrays with element type NIL work also in the TYPECODES config. * lispbibl.d (Rectype_nilvector, Rectype_Snilvector): Remove enum items. (Atype_NIL, Array_type_snilvector): Define also for TYPECODES. (Array_type_nilvector): Remove macro. (general_vector_p): Exclude the vectors of element type NIL. (case_Rectype_Snilvector_above): Remove macro. (case_Rectype_nilvector_above): Remove macro. (if_recordp): Remove special casing of Rectype_nilvector, Rectype_Snilvector. (allocate_nilvector): Remove declaration. (fehler_retrieve): New declaration. * spvw_circ.d (get_circ_mark, get_circ_unmark, subst_circ_mark, subst) (subst_circ_unmark): Remove handling of nilvector and snilvector types. * spvw_garcol.d (gc_mark): Likewise. * spvw_genera1.d (walk_area, build_old_generation_cache): Likewise. * spvw_objsize.d (objsize): Likewise. * spvw_update.d (update_varobject): Likewise. * spvw_typealloc.d (allocate_nilvector): Remove function. * array.d (eltype_code): Recognize also types equivalent to the NIL type, not only NIL itself. (iarray_displace, iarray_displace_check, array_displace_check): Handle the case when the storage vector is NIL. (fehler_retrieve): Change error message, ignore the storage vector. (fehler_store): Give a different error message if the storage vector is NIL. (array_atype): Recognize vectors of element type NIL. Drop Array_type_nilvector and Array_type_snilvector. (elt_reverse, elt_nreverse): Give an error for a vector of element type NIL. (make_storagevector): For eltype==Atype_NIL, just return NIL. (MAKE-ARRAY): For eltype==Atype_NIL, return a vector of type vector_type, not just the storage vector. * io.d (pr_vector): Don't call array_element_type if the array's element type is known to be NIL. (pr_array): Likewise. (pr_orecord): Remove handling of Rectype_nilvector, Rectype_Snilvector. * sequence.d (get_seq_type): Change recognition of arrays with element type NIL. * hashtabl.d (hashcode4_vector): Handle the case of a vector of element type NIL. * predtype.d (elt_compare): Handle the cases when dv1 or dv2 are storage vectors of element type NIL. (TYPE-OF): Handle vectors of element type NIL specially. (CLOS:CLASS-OF): Remove handling of nilvector and snilvector types. (heap_statistics_mapper): Likewise, but still distinguish general vectors and those of element type NIL. * type.lisp (upgraded-element-type): Recognize also types equivalent to the NIL type, not only NIL itself. * genclisph.d (general_vector_p): Exclude the vectors of element type NIL. 2004-02-14 Bruno Haible * genclisph.d (make_system, vectorp): Make consistent with lispbibl.d. (simple_vector_p, simple_string_p, simple_bit_vector_p, bit_vector_p) (TheFpointer) [TYPECODES]: Fix compilation errors. (general_vector_p, arrayp): New exports. 2004-02-14 Bruno Haible * lispbibl.d (cclosure_flags) [TYPECODES]: Fix. 2004-02-14 Bruno Haible * loadform.lisp (simple-missing-load-form): New type. (signal-missing-load-form): Show the object as well. 2004-02-20 Sam Steingold fix file renaming on UNIX * pathname.d (rename_file): check that the old name exists and use rename_existing_file() instead of rename_file_to_nonexisting() (rename_file_to_nonexisting): remove 2004-02-20 Sam Steingold * record.d (SLOT-BOUNDP): when slot is missing, return the boolean equivalent of the return value of SLOT-MISSING, per ANSI 2004-02-19 Sam Steingold fix bug#898561: LOOP compilation warnings * loop.lisp (expand-loop): bind *helpvars* first thing (for 898561) When arithmetic iteration variable is NIL, use a GENSYM 2004-02-19 Sam Steingold * pathname.d (PATHNAME-DEVICE): return :UNSPECIFIC for LOGICAL-PATHNAMEs per * constsym.d (Kunspecific): add 2004-02-19 Sam Steingold * io.d (pr_orecord): signal PRINT-NOT-READABLE when *PRINT-READABLY* and *PRINT-PATHNAMES-ANSI* are non-NIL, but the namestring will not be parsed in to a similar pathname * pathname.d (fix_parse_namestring_dot_file): extracted from split_name_type (split_name_type): use fix_parse_namestring_dot_file() (namestring_correctly_parseable_p): check whether this pathname's namestring will be parsed into a similar pathname * lispbibl.d (namestring_correctly_parseable_p): prototype 2004-02-19 Sam Steingold * hashtabl.d (MAKE-HASH-TABLE): :REHASH-THRESHOLD is a (REAL 0 1) :REHASH-SIZE is a (OR (INTEGER 1 *) (FLOAT (1.0) *)) * constobj.d (type_hashtable_rehash_threshold) (type_hashtable_rehash_size): ditto 2004-02-18 Sam Steingold * array.d (ADJUST-ARRAY): :FILL-POINTER NIL means keep it as it was; use DIMENSION, not FILL-POINTER when copying data to the new vector 2004-02-18 Sam Steingold * clhs.lisp (read-from-file): FIND-PACKAGE is idempotent 2004-02-18 Sam Steingold * pathname.d (DELETE-FILE): in ANSI mode, return T, as per ANSI spec 2004-02-17 Sam Steingold permit lists of uint32 length, the old limit was FIXNUM * sequence.d (LENGTH): llength1() can return a BIGNUM * list.d (list_length): use UL_to_I() instead of fixnum() (MAKE-LIST): use I_to_UL(check_uint32()) instead of posfixnum_to_L(check_posfixnum()) (get_integer_truncate): new function (NTH, NTHCDR, LAST, MAKE-LIST, BUTLAST, NBUTLAST): use it instead of posfixnum_to_L(check_posfixnum()) * error.d, lisparit.d (check_integer, check_pos_integer): moved from LISPARIT to ERROR * lispbibl.d (check_integer, check_pos_integer): prototype 2004-02-17 Sam Steingold * pathname.d (version_diff): use version object (OR NULL INTEGER (MEMBER :WILD :NEWEST)) without converting it to string (translate_version): expect version to be a version object 2004-02-16 Sam Steingold * defs2.lisp (write-sequence): make sure to return only one value when writing bytes - for consistency and ANSI compliance 2004-02-16 Sam Steingold * lispbibl.d (nil_vector_p, nil_vector_0_p): new macros * error.d (check_string): use them * predtype.d (equal, equalp): handle nilvector properly: since NIL is a subtype of CHARACTER, (VECTOR NIL) is a STRING 2004-02-16 Sam Steingold * stream.d (MAKE-STRING-OUTPUT-STREAM): :ELEMENT-TYPE NIL means make a stream based on (VECTOR NIL) (get_output_stream_string): check that string is not (VECTOR NIL) (BUILT-IN-STREAM-ELEMENT-TYPE): return NIL for (MAKE-STRING-OUTPUT-STREAM :ELEMENT-TYPE NIL) (fehler_write): replaces fehler_wr_char() & fehler_wr_integer() (wr_ch_forbidden, wr_ch_array_forbidden): for STREAM-ELEMENT-TYPE NIL * macros2.lisp (with-output-to-string): default :ELEMENT-TYPE to CHARACTER 2004-02-16 Sam Steingold * stream.d (combine_stream_element_types): new function (BUILT-IN-STREAM-ELEMENT-TYPE): use it to handle 2way/echo & concat 2004-02-15 Sam Steingold FILE-POSITION does not require its 1st argument to be a FILE-STREAM * stream.d (String-Input-Stream): new slot strm_str_in_begindex (MAKE-STRING-INPUT-STREAM): init it (and allocate space for it!) (logical_position_file_start, logical_position_file) (logical_position_file_end): return the new offset (FILE-POSITION): handle i/o STRING-STREAMs and STRING-PUSH-STREAM call GRAY:STREAM-POSITION for all other objects * gray.lisp (stream-position): new generic function * constsym.d (stream_position): add 2004-02-15 Sam Steingold * stream.d (GET-OUTPUT-STREAM-STRING, STRING-INPUT-STREAM-INDEX): signal TYPE-ERROR instead of ERROR 2004-02-13 Sam Steingold * defstruct.lisp (defstruct): allow slots named NIL by using DS-SLOT-VAR to check that the slot does not refer to the structure name * io.d (pr_structure_default): ditto 2004-02-13 Sam Steingold due to the rule 1 in , we must have (TYPEP X Y) ==> (SUBTYPEP (TYPE-OF X) Y) for all "built-in types" Y as listed in table 4-2 in if X is a FIXNUM or a BIGNUM and Y is UNSIGNED-BYTE, this means that TYPE-OF must distinguish between positive and negative integers * constobj.d (type_negfixnum, type_posbignum, type_negbignum): add * predtype.d (TYPE-OF): return them for FIXNUMs and BIGNUMs 2004-02-13 Sam Steingold * stream.d (check_open_file_stream): handle BROADCAST-STREAMs (FILE-POSITION, FILE-LENGTH, FILE-STRING-LENGTH): ditto 2004-02-12 Sam Steingold ensure that DEFMETHOD returns what is actually saved into GF * clos.lisp (standard-method): do not create a copier (std-add-method): do not copy the method 2004-02-12 Sam Steingold ANSI compliance issues * charstrg.d (test_stringsymchar_arg): (VECTOR NIL) is a string, so #A(NIL (0)) is acceptable instead of "" * error.d (check_string): ditto * stream.d (input_stream_p, output_stream_p): for SYNONYM-STREAMs, return the value for the underlying stream (STREAM-EXTERNAL-FORMAT): handle empty BROADCAST-STREAMs (make_buffered_stream): :PROBE streams are closed right away * macros2.lisp (with-output-to-string): wrap declarations properly 2004-02-11 Sam Steingold * makemake.in: fix cygwin package creation (VERSION, CLISP_VERSION, CLISP_RELEASE): new make variables (setup.hint): mention $(MODULES) and allow testing releases 2004-02-11 Sam Steingold * modules/pcre/cpcre.c: may be actually * modules/berkeley-db/dbi.lisp (with-open-db): do not pass environment to PARSE-BODY 2004-02-11 Sam Steingold * predtype.d (TYPE-OF): handle (VECTOR NIL) 2004-02-10 Sam Steingold * lfloat.d (LF_sqrt_LF): fix a bug with large uexp whereby SQRT of MOST-POSITIVE-LONG-FLOAT was less than 1 2004-02-09 James Anderson Sam Steingold * clos.lisp (analyze-method-description): always set :WANTS-NEXT-METHOD-P to T because here there is no way to figure out whether it will be actually needed because of METHOD-COMBINATION, and STD-ADD-METHOD will reset it if necessary anyway (standard-method-combination-expander): check for WANTS-NEXT-METHOD-P also in BEFORE-METHODS (EF-2) and AFTER-METHODS (EF-3) 2004-02-09 Sam Steingold * misc.d (ARGV): return the vector of command-line args to runtime * constsym.d, subr.d, constobj.d (argv): add * spvw.d (main): init O(argv) * init.lisp (ARGV): export 2004-02-08 Sam Steingold fix bug#890138: 0 distance jump as 2 bytes => segfault * compiler.lisp (assemble-LAP): make sure that a jump of 0 distance is not encoded with 2 bytes (otherwise 128 0 is treated as a 6 byte label) 2004-02-05 Sam Steingold allow current directory to be on a remote host * pathname.d (default_drive): return 0 when GetCurrentDirectory() returns a network (UNC) path (default_directory_of): allow drive=0 (return GetCurrentDirectory()) (use_default_dir): allow UNC default path (CD): allow network argument (init_pathnames): set O(default_drive) to NIL when running drive=0 2004-02-05 Sam Steingold * charstrg.d (string_concat): do not modify argptr when arg is not a string 2004-02-03 Bruno Haible * io.d (JUSTIFY_END_FILL): Rename from JUSTIFY_END_ENG. (JUSTIFY_END_LINEAR): Rename from JUSTIFY_END_WEIT. (justify_end_fill): Rename from justify_end_eng. (justify_end_linear): Rename from justify_end_weit. All callers changed. 2004-02-03 James Anderson * clos.lisp: some fixes for DEFINE-METHOD-COMBINATION 2004-02-02 Bruno Haible * io.d (pr_array_recursion): Add an rdepth argument. Use dense output if rdepth==1. (pr_array): Pass the rank as initial rdepth. 2004-02-02 Bruno Haible * Makefile.devel (%/configure.in, %/config.h.in): Restrict the rule to not match files in ffcall and libcharset. (ffcall/vacall/config.h.in, ffcall/trampoline/config.h.in) (ffcall/callback/vacall_r/vacall_r.h.in) (ffcall/callback/trampoline_r/config.h.in): Remove empty rules. 2004-02-02 Sam Steingold fix bug#889037: Incorrect value returned by compiled function * compiler.lisp (traverse-anode): UNWIND-PROTECT-OPEN discards *CURRENT-VALUE* and *CURRENT-VARS*, just like UNWIND-PROTECT-CLOSE 2004-02-01 James Anderson Sam Steingold implement DEFINE-METHOD-COMBINATION * clos.lisp: merge in James' patch * init.lisp: export the symbols * constobj.d (version): bump because of changed signature of DO-DEFMETHOD * record.d (parse_seclass): remove legacy code 2004-02-01 Sam Steingold * spvw.d (my_malloc): malloc() with error check * lispbibl.d, genclisph.d (my_malloc): export * foreign.d (xmalloc): remove, use my_malloc() instead * modules/clx/new-clx/clx.f, modules/regexp/regexi.c: ditto 2004-01-31 Sam Steingold * pathname.d (looks_logical_p): return true only if all the characters in the string are legal logical path elements 2004-01-29 Sam Steingold some fixes for Garnet * modules/clx/new-clx/clx.f (get_font_info_and_display): fixed arguments passed to SLOT-VALUE (general_plist_writer, SET-GCONTEXT-DASHES): fix arguments passed to SET-SLOT-VALUE (SET-GCONTEXT-DASHES): use REPLACE instead of an explicit loop (BELL): the second argument is optional 2004-01-29 Sam Steingold fix bug#874859: incorrect stack cleanup * compiler.lisp (simplify): fix a typo in SKIPSP+SKIPI=>SKIPI 2004-01-27 Sam Steingold * modules/fastcgi/fastcgi.lisp: add :FASTCGI to *FEATURES* * modules/oracle/oracle.lisp: add :ORACLE to *FEATURES* * modules/pcre/pcre.lisp: add :PCRE to *FEATURES* * modules/postgresql/postgresql.lisp: add :POSTGRESQL to *FEATURES* * modules/regexp/regexp.lisp: add :REGEXP to *FEATURES* 2004-01-25 Sam Steingold new function (MOD-EXPT x y z) = (MOD (EXPT x y) z) * lisparit.d (check_pos_integer): new function (ISQRT): use it instead of check_integer() (MOD-EXPT): call I_I_I_mod_expt_I() * intsqrt.d (I_isqrt_I): assume non-negative argument * intdiv.d (I_I_I_mod_expt_I): implement * init.lisp (MOD-EXPT): exported * constsym.d, subr.d (mod_expt): add 2004-01-25 Sam Steingold * modules/clx/new-clx/clx.f (get_ptr_object_and_display) (get_font_info_and_display, DISCARD-FONT-INFO): use check_fpointer() (OPEN-DISPLAY): use fehler_key_odd() (SCREEN-BACKING-STORES): use VALUES1 (error_required_keywords, my_malloc, error_no_such_color): new functions (CREATE-WINDOW, CREATE-CURSOR, CREATE-GLYPH-CURSOR): use error_required_keywords() (handle_image_z, PUT-IMAGE, SET-FONT-PATH): use my_malloc() (ALLOC-COLOR, LOOKUP-COLOR): use error_no_such_color() (READ-FILE-TO-PIXMAP): signal an error on failure instead of returning error code * modules/clx/new-clx/demos/clx-demos.lisp: supply pathname to REQUIRE do not SHADOW USAGE 2004-01-25 Bruno Haible * m4/mprotect.m4: Add back the getpagesize() prototype. It is determined by getpagesize.m4. 2004-01-23 Sam Steingold * modules/clx/new-clx/clx.f (get_font_info_and_display): canonicalize encoding by inserting "-" after "ISO" when necessary Suggested by Pascal J.Bourguignon 2004-01-20 Bruno Haible * po/clisp-xgettext (d-parse-string): Recognize \n as newline inside a C string. 2004-01-20 Bruno Haible Remove support for MSDOS and OS/2, using EMX. * os2: Remove directory. * msdos.d: Remove file. * cfgdos.lisp: Remove file. * lispbibl.d, constobj.d, constsym.d, subr.d, pseudofun.d: * genclisph.d, spvw.d, spvw_language.d, spvw_memfile.d: * spvw_sigint.d, io.d, stream.d, pathname.d, predtype.d: * charstrg.d, hashtabl.d, error.d, errunix.d, encoding.d, time.d: * lisparit.d, unixaux.d, init.lisp, defs1.lisp, format.lisp: * macros2.lisp, complete.lisp, xcharin.lisp, keyboard.lisp: * edit.lisp, runprog.lisp, makemake.in, Makefile.devel: * po/Makefile.devel: Remove MSDOS and OS/2 support. 2004-01-19 Sam Steingold * modules/syscalls/posix.lisp, modules/syscalls/calls.c (confstr): new exported system call 2004-01-18 Bruno Haible * loadform.lisp (missing-load-form): New type. (signal-missing-load-form): New function. (make-load-form): Add the methods that must exist according to CLHS. (make-init-form): Ignore only errors coming from make-load-form, not just any method-call-error. Don't warn for other errors, instead pass them on to the caller. 2004-01-18 Bruno Haible Remove support for Borland C compiler on Woe32. * win32bc: Remove directory. * Makefile.devel, makemake.in: Remove Borland C support. 2004-01-16 Sam Steingold * defmacro.lisp (kwd-arg-form, analyze-key): do not evaluate the key Reported by Frode Vatvedt Fjeld 2004-01-16 Sam Steingold * modules/pcre/cpcre.c (PCRE-COMPILE): do not allocate a foreign pointer for NULL study (PCRE-EXEC): pass subject_bytelen instead of subject_len 2004-01-15 Bruno Haible Remove support for Amiga running AmigaOS. * amiga: Remove directory. * amiga.d: Remove file. * amiga2.d: Remove file. * amigaaux.d: Remove file. * erramiga.d: Remove file. * rexx.d: Remove file. * rexx1.lisp: Remove file. * cfgamiga.lisp: Remove file. * lispbibl.d, genclisph.d, constobj.d, constsym.d, subr.d: * pseudofun.d, spvw.d, spvw_allocate.d, spvw_garcol.d: * spvw_language.d, spvw_memfile.d, stream.d, pathname.d, charstrg.d: * hashtabl.d, debug.d, error.d, time.d, misc.d, predtype.d: * lisparit.d, foreign.d, affi.d, init.lisp, defs1.lisp: * describe.lisp, edit.lisp, type.lisp, keyboard.lisp, xcharin.lisp: * screen.lisp, foreign1.lisp, affi1.lisp, makemake.in: * Makefile.devel, po/Makefile.devel, modules/syscalls/calls.c: * os2/delx.cmd: Remove AmigaOS support. 2004-01-15 Sam Steingold * modules/pcre/cpcre.c (PCRE-COMPILE, PCRE-EXEC): do not accept :UTF8 & :NO-UTF8-CHECK, always do Unicode 2004-01-15 Sam Steingold * encoding.d (encoding_from_name): issue a warning (using libc stdio because Lisp i/o is not yet available) if the requested encoding cannot be found default to ASCII for *FOREIGN-ENCODING* and UTF-8 for others (init_dependent_encodings): pass `context' to encoding_from_name() (canonicalize_encoding): uppercase the encoding name 2004-01-15 Bruno Haible * encoding.d (uni16_wcslen, nls_wcslen, nls_asciiext_wcslen): Signal an error when seeing an unencodable character and errors should be signalled. 2004-01-15 Bruno Haible Remove support for Convex. * lispbibl.d, eval.d, aridecl.d, unix.d, unixaux.d, genclisph.d: Remove Convex support. 2004-01-12 Bruno Haible Remove support for Acorn RISCOS. * acorn: Remove directory. * acorn.d: Remove file. * acornaux.d: Remove file. * acornsig.d: Remove file. * cfgacorn.lisp: Remove file. * lispbibl.d, constobj.d, constsym.d, subr.d, subrkw.d: * pseudofun.d, spvw.d, spvw_garcol.d, spvw_memfile.d: * spvw_sigint.d, io.d, stream.d, pathname.d, record.d, time.d: * lisparit.d, aridecl.d, error.d, unixaux.d, genclisph.d: * init.lisp, defs1.lisp, edit.lisp, keyboard.lisp, makemake.in: * po/Makefile.devel, Makefile.devel, modules/syscalls/calls.c: Remove RISCOS support. 2004-01-12 Sam Steingold * describe.lisp (*apropos-matcher*): new user variable (*apropos-do-more*): exported (apropos-list): use it * modules/wildcard/wildcard.lisp (wildcard-matcher): new function * modules/regexp/regexp.lisp (regexp-matcher): new function * modules/regexp/regexi.c (regexp-exec): new option :BOOLEAN * modules/pcre/pcre.lisp (pcre-matcher): new function * modules/pcre/cpcre.c (pcre-exec): new option :BOOLEAN 2004-01-12 Sam Steingold * eval.d (TRACE_CALL, ERROR): new debugging macros (funcall_iclosure, apply_subr, apply_closure, funcall_subr) (funcall_closure): use TRACE_CALL() instead of trace_call() (interpret_bytecode_): ditto use ERROR instead of goto to find out where the error originated from 2004-01-11 Bruno Haible * modules/wildcard/fnmatch.h: Remove file. * modules/wildcard/fnmatch_.h: New file, from gnulib. * modules/wildcard/fnmatch.c: Update from gnulib. * modules/wildcard/fnmatch_loop.c: New file, from gnulib. * modules/wildcard/configure.in: Use the macro from gnulib. * modules/wildcard/Makefile.in (REGEX_O, REGEX_H): Remove variables. (FNMATCH_O): New variable. (fnmatch.o): Update. (fnmatch.h): New rule. (clean): Update. * m4/fnmatch.m4: New file, from gnulib. * m4/mbstate_t.m4: New file, from gnulib. * eval.d (parse_dd): Simplify code. (interpret_bytecode_): Restore the protection against -fomit-frame-pointer. * _clisp.1: Remove mention of option -verbose. * _clisp.html: Resynchronize with _clisp.1. * _distmakefile (uninstall): Make it work on non-Linux systems as well. * amiga.d (read_helper, write_helper): Fix arg name. * amigaaux.d (read_helper): Likewise. * acorn.d (read_helper): Likewise. * lispbibl.d (read_byte_array, write_byte_array): Fix description of no_hang argument. * stream.d (read_byte_array, write_byte_array): Likewise. (wr_by_array_synonym, wr_by_array_broad, wr_by_array_twoway): Use uintL instead of int. * makemake.in: Remove useless trailing semicolons. * clos.lisp (analyze-method-description, analyze-defgeneric) (make-generic-function-form, analyze-generic-fundefs): Remove environment argument. (defmethod, defgeneric, generic-flet, generic-labels): Update. * compiler.lisp: Update clos::make-generic-function-form calls. 2004-01-11 Sam Steingold * record.d (parse_seclass): be backward compatible (wrt 2004-01-09 SECLASS change) * constobj.d (version): do not change now! remember to remove the backward compatibility code above when `version' changes! 2004-01-10 Sam Steingold * lispbibl.d (check_structure): add a prototype (allocate_weakpointer): remove unused function * record.d (allocate_weakpointer): ditto (check_structure): new function (COPY-STRUCTURE): use it (check_generic_function): new function (%COPY-GENERIC-FUNCTION, GENERIC-FUNCTION-EFFECTIVE-METHOD-FUNCTION): use it (MACRO-EXPANDER): recoverable type error (check_function_macro): new function (FUNCTION-MACRO-FUNCTION, FUNCTION-MACRO-EXPANDER): use it * sequence.d (fehler_sequence): new function (get_valid_seq_type, LENGTH): use it * io.d (PRINT-STRUCTURE): use check_structure() * stream.d (test_socket_server): error message unification 2004-01-09 Sam Steingold * compiler.lisp (c-form-table): NTH & SYSTEM::%SETNTH are now handled by c-NTH & c-SETNTH, respectively, for the sake of (defstruct (foo (:type list))) accessors (c-NTH, c-SETNTH): optimise NTH & (SETF NTH) to FIRST...TENTH 2004-01-09 Sam Steingold fix bug#866282: progv binding not handled properly in compiler * compiler.lisp (seclass): a structure of type LIST (*seclass-dirty*, *seclass-read*): new constant (*seclass-foldable*): rename from *FOLDABLE-SECLASS* (seclass-or, seclass-without): update for new SECLASS (anode-side-effect-free-p): new function (c-form, unmodify-unused-var, checking-movable-var-list) (c-bind-with-svars, c-UNWIND-PROTECT, c-MULTIPLE-VALUE-PROG1): use it (c-VARSET): set SECLASS-USES-BINDING for SPECIAL variables (c-PROGV, c-parallel-bind-movable-var-anode): check both USES and USES-BINDING (c-FUNCTION, c-HANDLER-BIND): use *SECLASS-READ* instead of a literal (f-side-effect, c-unlist, c-DEFUN, c-RETURN-FROM, c-GO): use *SECLASS-DIRTY* instead of a literal * clos.lisp (%make-gf): ditto * record.d (parse_seclass): update * constobj.d (seclass_no_se, seclass_read, seclass_write) (seclass_default): update 2004-01-09 Sam Steingold * list.d (fehler_nth, fehler_butlast): remove (NTH, NTHCDR, LAST, MAKE-LIST, BUTLAST, NBUTLAST): use check_posfixnum() instead 2004-01-08 Sam Steingold fix bug#873204: infinite recursion with pprint-logical-block * io.d (pretty_print_call): avoid an infinite recursion by checking *PRIN-PPRINTER* before calling PPRINT-DISPATCH 2004-01-08 Sam Steingold moved *LOAD-FORMS* to C to speed up instance output * constsym.d (*LOAD-FORMS*): add * io.d (pr_instance): check *LOAD-FORMS* before calling MAKE-INIT-FORM * spvw.d (init_symbol_values): init *LOAD-FORMS* 2004-01-08 Sam Steingold made MAKE-INIT-FORM more robust * condition.lisp (method-call-error, method-call-type-error): new conditions * clos.lisp (no-applicable-method, no-primary-method) (no-next-method): signal METHOD-CALL-ERROR or METHOD-CALL-TYPE-ERROR * init.lisp (method-call-error, method-call-type-error) (method-call-error-generic-function, method-call-error-method) (method-call-error-argument-list): export new CLOS extras * loadform.lisp (make-init-form): use METHOD-CALL-ERROR to determine that the error comes from MAKE-LOAD-FORM Reported by Kaz Kylheku 2004-01-08 Stanislav Tsekhmistroh Arseny Slobodjuck Support (run-program ... :wait nil) on win32 by means of "start" * runprog.lisp (run-shell-command) [WIN32]: support :wait. 2004-01-07 Bruno Haible * misc.d (clisp_setenv) [WIN32_NATIVE]: Call SetEnvironmentVariable. 2004-01-06 Sam Steingold * modules/regexp/regexi.c (REGEXP): use alloca() instead of calloc(); return NIL for non-existent matches (instead of an invalid MATCH) Reported by Wolfgang Jenkner 2004-01-06 Sam Steingold * defs2.lisp (with-standard-io-syntax): bind *PRINT-SYMBOLS-LONG* and COMPILER::*LOAD-FORMS* 2004-01-06 Bruno Haible Assume that declares mmap() in a POSIX compliant way. * m4/mmap.m4 (CL_MMAP): Don't define RETMMAPTYPE, MMAP_ADDR_T, MMAP_SIZE_T. * unix.d (MMAP_ADDR_T, MMAP_SIZE_T, RETMMAPTYPE): Remove macros. Use void* and size_t instead. * win32.d (MMAP_ADDR_T, MMAP_SIZE_T, RETMMAPTYPE): Remove macros. * unixaux.d (fixed_mmap, mprotect): Use void* and size_t instead of MMAP_ADDR_T and MMAP_SIZE_T. * spvw_fault.d (handle_read_fault, handle_readwrite_fault) (handle_fault, handle_fault_range, xmprotect): Likewise. * spvw_garcol.d (gar_col_normal): Likewise. * spvw_mmap.d (munmap, mprotect, mmap_zeromap, mmap_filemap): Likewise. * spvw_multimap.d (msync_mmap_intervals, fdmap): Likewise. 2004-01-04 Sam Steingold * makemake.in (full-check): new target: call RUN-SOME-TESTS in tests/tests.lisp on $(MODULES)/*.tst 2004-01-02 Sam Steingold * makemake.in (cygwin-src) [cygwin]: cygwin source package 2004-01-02 Sam Steingold fix bug#869187: change-class problems * record.d (%CHANGE-CLASS): un-realloc instance & new-class 2004-01-01 Sam Steingold * modules/berkeley-db/bdb.c: include windows.h only on windows Reported by Aurelio Bignoli 2004-01-01 Sam Steingold * install.bat: fix bug#868881: replaced `|' with `I' and `/' with `\' for the sake of Windows XP 2003-12-31 Sam Steingold * makemake.in (uninstall-bin) [CYGWIN]: remove clisp.README & clisp.exe (testsuite-all): `clean complete compare', not just `complete' 2003-12-29 Sam Steingold * version.h: 2.32 is released 2003-12-30 Bruno Haible * compiler.lisp (seclass-foldable-p, seclass-uses, seclass-modifies): New functions. (*foldable-seclass*, *pure-seclass*): New variables. (make-seclass): New function. Use them throughout the compiler instead of null, car, cdr, cons. 2003-12-27 Bruno Haible * spvw_calendar.c: New file. * spvw.d: Include spvw_calendar.c. (print_banner): Light the candles. * makemake.in: Emit rule for spvw_calendar.c. 2003-12-27 Bruno Haible * m4/mmap.m4: Treat i786 CPUs like i686. * asmi386.hh: Likewise. * makemake.in: Likewise. 2003-12-26 Sam Steingold fix bug#864479: GO from deep nesting does not work * compiler.lisp (note-far-used-tagbody): propagate tagbody+tag along the stack, just link in the 2002-05-03 patch (bug#550864), and use PUSHNEW instead of PUSH to avoid duplication (c-TAGBODY): check that the index in tagbody+tag is valid 2003-12-23 Sam Steingold fix bug#864845: pathname parsing error: "//" * pathname.d (simplify_directory): remove "", i.e., treat "//" as "/" 2003-12-22 Sam Steingold * compiler.lisp (c-MULTIPLE-VALUE-BIND): use REVAPPEND instead of APPEND+REVERSE (c-WITHOUT-PACKAGE-LOCK): use NCONC instead of APPEND on a fresh list produced by MAPCAR 2003-12-21 Sam Steingold fix bug#864220: integer tags cannot be compiled * compiler.lisp (c-TAGBODY): put integer tags into Car(tagbody_cons); replace GENSYMs with NILs so that *.FAS will not contain GENSYMs 2003-12-21 Sam Steingold * spvw.d (--version): print SOFTWARE-TYPE, SOFTWARE-VERSION, MACHINE-TYPE, MACHINE-VERSION, MACHINE-INSTANCE (print_license): remove dead link do not use NLstring 2003-12-21 Sam Steingold * genclisph.d (test): include before because the latter declares a global register variable and the former may define a function (e.g., on FreeBSD) * modules/regexp/regexi.c: ditto 2003-12-20 Sam Steingold Dropped -fomit-frame-pointer: it buys nothing on today's x86 processors, and it buys nothing anyway on processors which are not as register-starved as the x86 (Bruno) * eval.d (interpret_bytecode_) [GNU/FAST_SP]: no need for alloca() * makemake.in (XCFLAGS): never use -fomit-frame-pointer 2003-12-20 Sam Steingold the initial verbosity level is controlled by the pair of mutually cancelling options -q/-v - see manual * spvw.d (argv_quiet): replaced with argv_verbose 2003-12-19 Bruno Haible * spvw_mmap.d (mprotect): Remove declaration. Needed for FreeBSD 5. 2003-12-19 Bruno Haible * clisp-link.in: Make 2001-10-23 patch more portable: Avoid repeated backslashes inside backquotes. 2003-12-19 Sam Steingold * trace.lisp (trace1): evaluate :STEP-IF at run time, not at compile time, so that STEP is invoked when :STEP-IF evaluates to non-NIL, not just when it is present 2003-12-19 Sam Steingold repeated "-q" sets *LOAD-VERBOSE* and *COMPILE-VERBOSE* to NIL * constsym.d (*COMPILE-VERBOSE*): add * spvw.d (argv_quiet): integer, not boolean (main): repeated "-q" means argv_quiet++ 2003-12-19 Sam Steingold fix bug#842910: Compiler bug in OPTIMIZE-LABEL * compiler.lisp (optimize-label): ignore unused labels (optimize-short): do not LABEL-SUBST to unused labels (optimize-value): do not discard references to an impossible label when it is the same as the definite label 2003-12-18 Sam Steingold * spvw.d (appease_form): new function (main): use it (-repl): do not concatenate the string input stream from -x with the stdin - this causes a missing prompt problem; bind *standard-input* to the string input stream instead and run two separate REPLs for -x and for the user interaction via stdio * reploop.lisp (main-loop): exit only when EOF happened on an interactive stream; otherwise (e.g., the -x string input stream), just return for the next REPL to take over 2003-12-18 Sam Steingold fix bug#842913: Compiler bug involving optional parameters * compiler.lisp (note-references, remove-references): handle JMPIFBOUNDP properly (label is 3rd, not 2nd!) 2003-12-17 Sam Steingold * compiler.lisp (coalesce): fix bug#842912: do not coalesce unless NEW-CODE is non-NIL 2003-12-17 Sam Steingold * compiler.lisp (insert-combined-LAPs): fix bug#860052: (RET) and (RETGF) can be preceded by a SKIPI instruction instead of a SKIP 2003-12-16 Sam Steingold use system-wide wildcard(fnmatch) implementation when it is available * modules/wildcard/link.sh.in: rename from link.sh * modules/wildcard/configure.in: AC_SUBST FNMATCH_O&FNMATCH_H * modules/wildcard/Makefile.in: use FNMATCH_O&FNMATCH_H do not define _LIBC - forbidden in user (application) code 2003-12-17 Sam Steingold new module: Perl Compatible Regular Expressions * modules/pcre: new directory 2003-12-15 Bruno Haible * init.lisp (sys::%expand-form): Call %expand-form on the result of a symbol-macro expansion, instead of returning the expansion directly. Reported by Conrad Barski. 2003-12-12 Sam Steingold prompt is now fully customizable by the user * reploop.lisp (prompt-to-string): new macro (*prompt-start*, *prompt-step*, *prompt-break*, *prompt-body*) (*prompt-finish*): new custom variables (*prompt*, prompt-string1, prompt-string2, prompt-string3): remove (break-level, step-level): new exported functions (prompt-start, prompt-body, prompt-finish, prompt-step) (prompt-break): new functions (main-loop, break-loop, step-hook-fn): use them 2003-12-11 Sam Steingold fix bug#858011: RETURN-FROM not working in compiled FLET/LABELS * compiler.lisp (c-FLET, c-LABELS): fix ADD-IMPLICIT-BLOCK call * init.lisp (%expand-lambdabody): ditto * eval.lisp (ADD-IMPLICIT-BLOCK): before 2003-12-05, ADD-IMPLICIT-BLOCK and add_implicit_block() accepted different arguments and returned different values! this is now fixed and they are truly identical. 2003-12-01 Sam Steingold * compiler.lisp (c-UNWIND-PROTECT): discard side-effect free cleanup forms 2003-12-10 Sam Steingold * modules/bindings/win32/win32.lisp (word): new type (EXTENDED_NAME_FORMAT, COMPUTER_NAME_FORMAT): new enum types (UNLEN, MAX_COMPUTERNAME_LENGTH): new constants (GetSystemDirectoryA, GetWindowsDirectoryA, GetCurrentDirectoryA) (GetVersion, GetUserNameA, GetUserNameExA, GetComputerObjectNameA) (GetComputerNameExA): new functions * modules/syscalls/calls.c, modules/syscalls/posix.lisp (VERSION, SYSTEM-INFO) [WIN32, CYGWIN]: new exports 2003-12-05 Sam Steingold code re-arrangement and streamlining * init.lisp, eval.d (ADD-IMPLICIT-BLOCK, FUNCTION-BLOCK-NAME): moved to eval.d from init.lisp (already implemented in C anyway!) * constsym.d, subr.d (add_implicit_block, function_block_name): add * control.d (PARSE-BODY): do not macroexpand anything as per ANSI CL (see also patch 2003-02-14); use parse_dd() for all the work; do not accept ENV argument * subr.d (parse_body): ditto * clos.lisp, compiler.lisp, defmacro.lisp, defs1.lisp: * defs2.lisp, format.lisp, init.lisp, macros1.lisp, macros2.lisp: * macros3.lisp, places.lisp: do not pass ENV to PARSE-BODY * eval.d (parse_dd): do not accept ENV args (not used since 2003-02-14) (get_closure): do not pass ENV to parse_dd() * control.d (LET, LET*, LOCALLY, SYMBOL-MACROLET) (MULTIPLE-VALUE-BIND): ditto * lispbibl.d (parse_dd): update the prototype 2003-12-04 Sam Steingold * hashtabl.d (hash_prepare_store): fix a bug introduced in the 2003-05-13 DEFINE-HASH-TABLE-TEST patch: EQ and EQL hash codes depend on the object address, so they cannot be cached between GCs Reported by Matt Cross 2003-12-03 Sam Steingold * modules/syscalls/calls.c (STAT-VFS): interface to (f)statvfs(2) * modules/syscalls/posix.lisp (STAT-VFS): export the structure 2003-12-01 Sam Steingold * makemake.in (distrib) [win32]: depend on clisp.man and clisp.html instead of repeating the rules for them * _distmakefile (uninstall): new target 2003-11-17 Sam Steingold new module for interface to Berkeley DB * modules/berkeley-db: new directory 2003-11-14 Sam Steingold * io.d (FORMAT-TABULATE): do not lose the top empty string 2003-11-07 John Tang Boyland Sam Steingold fix bug#831387: ~<...~:> format directive not implemented for compiled code (using FORMATTER) * format.lisp (format-parse-cs): ~:> ==> FORMAT-LOGICAL-BLOCK (format-logical-block): add a stub (format-logical-block-parse, formatter-bind-block-1) (formatter-whole-args*): new functions (formatter-bind-block): new macro (formatter-main-1): handle FORMAT-LOGICAL-BLOCK (formatter-main-1): fix FORMAT-PPRINT-INDENT 2003-11-05 Sam Steingold * modules/syscalls/calls.c (FILE-STAT): compilation fix (copy_file_low): pass no_block=false to read_helper() (copy_one_file): fix :SYMLINK/:HARDLINK 2003-11-04 Sam Steingold * spvw_memfile.d: do not shadow local variables * encoding.d (java_wcstombs): do not shadow hex_table * foreign.d: do not shadow global index(3) and many local variables 2003-11-04 Bruno Haible * arilev1i.d: Use ANSI C prototypes. 2003-11-04 Sam Steingold * makemake.in: uniform --with* processing (still different from autoconf scripts, see the comment in the code) 2003-10-28 Bruno Haible * lispbibl.d (CHART_STRUCT): Don't define when using g++ 3.3.x. 2003-10-27 Bruno Haible * stdbool.h.in: Better support for BeOS. 2003-10-26 Bruno Haible * time.d (SYS::DELTA4): Avoid gcc warning. 2003-10-26 Bruno Haible * utils/ansidecl.d: Remove file. * makemake.in: Remove all uses of ansidecl and ANSIDECL. 2003-10-26 Bruno Haible * lispbibl.d: Drop &!. * spvw.d: Drop &!. * spvw_module.d (module_names_to_stack): Use 'global'. * spvw_alloca.d: Use ANSI C prototypes. * spvw_mmap.d: Use ANSI C prototypes. * spvw_multimap.d: Use ANSI C prototypes. Indentation & braces. * spvw_global.d: Use ANSI C prototypes. Indentation & braces. * spvw_gcstat.d: Whitespace changes. * spvw_update.d: Indentation & braces. * spvw_fault.d: Use ANSI C prototypes. Indentation & braces. * spvw_sigcld.d: Use ANSI C prototypes. * spvw_sigwinch.d: Drop &!. * spvw_garcol.d: Use ANSI C prototypes. Indentation & braces. * spvw_genera1.d: Use ANSI C prototypes. Indentation & braces. * spvw_allocate.d: Use ANSI C prototypes. Indentation & braces. * spvw_circ.d: Use ANSI C prototypes. Indentation & braces. * spvw_memfile.d: Indentation & braces. * sort.d: Use ANSI C prototypes. Indentation & braces. * eval.d: ANSI C prototypes. Drop &!. Indentation & braces. * control.d: Drop &!. * pathname.d: Whitespace changes. * stream.d: Use ANSI C prototypes. Indentation & braces. * socket.d: Drop &!. * io.d: Whitespace changes. * array.d: Whitespace changes. * hashtabl.d: Whitespace changes. * package.d: Whitespace changes. * sequence.d: Use ANSI C prototypes. Indentation & braces. * charstrg.d: Whitespace changes. * debug.d: Use ANSI C prototypes. Drop &!. Indentation & braces. * errunix.d: Use ANSI C prototypes. * errwin32.d: Use ANSI C prototypes. * misc.d: Drop &!. * time.d: Whitespace changes. * predtype.d: Whitespace changes. * intplus.d: Use ANSI C prototypes. * intcomp.d: Use ANSI C prototypes. * intbyte.d: Use ANSI C prototypes. * intmal.d: Use ANSI C prototypes. * intdiv.d: Use ANSI C prototypes. * intgcd.d: Use ANSI C prototypes. Indentation & braces. * int2adic.d: Use ANSI C prototypes. * intsqrt.d: Use ANSI C prototypes. * intprint.d: Use ANSI C prototypes. * intread.d: Use ANSI C prototypes. * rational.d: Use ANSI C prototypes. Indentation & braces. * sfloat.d: Use ANSI C prototypes. * ffloat.d: Use ANSI C prototypes. * flo_konv.d: Use ANSI C prototypes. * flo_rest.d: Nop. * realelem.d: Nop. * realrand.d: Use ANSI C prototypes. * realtran.d: Use ANSI C prototypes. Indentation & braces. * compelem.d: Use ANSI C prototypes. Indentation & braces. * comptran.d: Use ANSI C prototypes. Indentation & braces. * foreign.d: Drop &!. * unixaux.d: Use ANSI C prototypes. 2003-10-26 Bruno Haible Make DEBUG_GCSAFETY work with generational GC. * spvw_heap.d (old_new_pointer_t): Change type of field 'o' to gcv_object_t. 2003-10-27 Bruno Haible Make DEBUG_GCSAFETY work with g++ 3.3.x. * utils/varbrace.d (SPLIT_OBJECT_INITIALIZATIONS): New macro. (next_token): Split 'object' and 'chart' initializations inside macro definitions. (convert): Split 'object' and 'chart' initializations outside macro definitions. * lispbibl.d (INIT_SUBR_TAB, INIT_SYMBOL_TAB, INIT_OBJECT_TAB): Don't define when using g++ 3.3 with DEBUG_GCSAFETY. * intmal.d (FN_fak_I): Convert fakul_table to a table of uintL. 2003-10-25 Bruno Haible Followup to 2003-08-28 patch. * subr.d (LISPFUN_D): Pass additional argument to subr_argtype(). 2003-10-25 Bruno Haible Portability to Solaris cc. Don't assume more than ANSI C. * lispbibl.d (with_saved_back_trace): Use ANSI C syntax for initializing a 'struct backtrace_t' on the stack. * spvw.d (main): Likewise. * debug.d (driver, break_driver): Likewise. 2003-10-25 Bruno Haible Restore the behaviour of "make init" and "make allc". * makemake.in (init): Don't depend on modprep.fas. (clean3): Clean modprep.fas here... (clean5): ... not here. 2003-10-24 Bruno Haible * spvw_debug.d (nobject_out1): Make it compile when TYPECODES are used. 2003-10-24 Bruno Haible * stdbool.h.in: Update from gnulib. 2003-08-11 Bruno Haible * stdbool_.h (_Bool): Undo last change; instead use a negative enum value to ensure that _Bool promotes to int. Use #define for _Bool when using the Solaris C compiler. Adds comments suggested by Paul Eggert. 2003-08-03 Paul Eggert * stdbool_.h (_Bool): Make it signed char, instead of an enum type, so that it's guaranteed to promote to int. See: 2003-10-23 Bruno Haible BeOS portability. * configure: Gracefully recover if "ulimit -s" does not work. (On BeOS this command returns an empty string and exits with return code 2.) * stream.d (sock_opt_bool, sock_opt_int, sock_opt_time): Enclose in #ifdef. Avoids link error due to missing getsockopt() on BeOS. (SOCKET-OPTIONS): Enclose each comparison in #ifdef. 2003-10-22 Sam Steingold fix bug#826792: unbound WITH-DIR-KEY-OPEN params * install.lisp: use-package "LDAP" 2003-10-22 Christophe Rhodes Sam Steingold * defstruct.lisp (ds-make-defsetfs): put DEFSTRUCT-WRITER property whenever we do DEFSETF (i.e., COMPILE EVAL LOAD) 2003-10-19 Sam Steingold * w32shell.c (real-path): avoid gcc -Wall warnings 2003-10-18 Sam Steingold * complete.lisp (completion): when completing in a case-sensitive package, do not fold case * constsym.d, subr.d (package_case_sensitive_p): add * init.lisp (package-case-sensitive-p): export * package.d (package-case-sensitive-p): implement 2003-10-16 Sam Steingold * modules/bindings/win32/win32.lisp (MAX_PATH): new constant (GetModuleFileNameA, GetModuleHandleA): new functions (RIGHTS, PROCESS, EWX, GR_OBJECTS): new enum types (handle, dword): new types (GetCurrentProcess, GetCurrentThread, GetCurrentProcessId) (CloseHandle, OpenProcess, ExitWindowsEx, GetGuiResources) (GetConsoleTitleA, SetConsoleTitleA): new functions 2003-10-14 Sam Steingold * stream.d (buffered_nextbyte): return -1 only when no_hang (listen_char_buffered): pass no_hang=true to buffered_nextbyte() (low_fill_buffered_handle): listen_status defaults to ls_eof 2003-10-11 Sam Steingold * stream.d (low_fill_buffered_handle): set BufferedStream_have_eof_p to true when result is 0 (buffered_nextbyte): use BufferedStream_have_eof_p instead of errno to determine whether the i/o is blocked [this is better than what was before - at least it builds on both unix and win32 - but I am still not sure that it DTRT] 2003-10-11 Sam Steingold * win32aux.d, win32.d (sock_write): accept no_hang 2003-10-11 Sam Steingold fix a bug in READ-BYTE-SEQUENCE :NO-HANG T on unbuffered streams whereby the first byte is eaten and returned last * stream.d (UnbufferedStream_pop_all): new function (low_read_array_unbuffered_handle): use it after low_listen_unbuffered_handle() which can add to bytebuf Reported by Basim Al-Shaikhli 2003-10-11 Sam Steingold * makemake.in (clisp.h): check that the typedef sizes in clisp.h and lispbibl.d are the same * genclisph.d: when supplied an argument, create a test file to check that the typedef sizes in clisp.h and lispbibl.d are the same 2003-10-10 Sam Steingold * reploop.lisp (break-loop): bind *FASOUTPUT-STREAM* to NIL * compiler.lisp (c-EVAL-WHEN): bind *FASOUTPUT-STREAM* to NIL around evaluation of COMPILE-P FORM This ensures that when the compiler is called from the break loop or from the EVAL-WHEN/COMPILE, it does not assume that a LOAD will happen before the code it generates is executed. Reported by Don Cohen 2003-10-09 Sam Steingold * amiga.d, amigaaux.d, win32.d, win32aux.d (full_write): use write_helper() (write_helper): accept no-hang 2003-10-09 Sam Steingold * compiler.lisp (const-value-safe): enforce that CONST-VALUE is invalid when CONST-HORIZON is :FORM (anode-constant-value, c-FUNCTION, traverse-anode) (traverse-anode): use it instead of CONST-VALUE (const-index, make-const-code, traverse-anode): keep using CONST-VALUE where appropriate! (in-same-function-p): remove unused function 2003-10-07 Sam Steingold * genclisph.d (sarray_, sbvector_, sstring_): fix (no uintL length) 2003-10-07 Sam Steingold * modules/clx/new-clx/clx.f (funcall1): new shortcut function (get_angle, SET-DISPLAY-AFTER-FUNCTION, DISPLAY-DEFAULT-SCREEN) (VISUAL-INFO, SET-GCONTEXT-DASHES, SET-GCONTEXT-CLIP-MASK) (GCONTEXT-CLIP-MASK, DRAW-POINTS, DRAW-LINES, DRAW-SEGMENTS) (DRAW-RECTANGLES, DRAW-ARCS, PUT-IMAGE, OPEN-FONT, FONT-PATH) (SET-FONT-PATH, FREE-COLORS, QUERY-COLORS, STORE-COLORS, ATOM-NAME) (CHANGE-PROPERTY, ROTATE-PROPERTIES, PROCESS-EVENT, EVENT-LISTEN) (GLOBAL-POINTER-POSITION, INPUT-FOCUS, POINTER-MAPPING) (QUERY-KEYMAP, SET-SCREEN-SAVER, LIST-EXTENSIONS, QUERY-EXTENSION) (SHAPE-VERSION, SHAPE-COMBINE, READ-FILE-TO-PIXMAP): use it; also, try to initialize Display when declaring it 2003-10-05 Bruno Haible * utils/ccmp2c.c: Reorder. * utils/ccmp2c.c: Use GNU coding style. Emit code in GNU coding style. Assume correctly declares exit(). Enhance ccmp2c with ability to emit line numbers. * utils/ccmp2c.c (line_number): New variable. (get_line): Increment line_number. (emit_literal): Add argument lineno. Emit lineno as second argument of TEXT_addstring if the argument string represents a complete line from input source file. Otherwise use 0 as second argument. (emit_expansion): Add argument lineno. (main): Emit code to parse command line arguments, recognizing -l, -i INFILENAME, -o OUTFILENAME. Emit code to generate #line information if desired. Initialize line_number. * modules/clx/new-clx/Makefile.in (clx.e): Generate with line number information. (clx.c): Drop bogus #line 1 "clx.f". 2003-10-01 Don Cohen Sam Steingold WRITE-BYTE-SEQUENCE now accepts :NO-HANG keyword argument * genclisph.d (write_byte_array): update the prototype (write_helper): replaces full_write() * lispbibl.d (write_byte_array): ditto * gray.lisp (stream-write-byte-sequence): accept :NO-HANG * subr.d, subrkw.d (write_byte_sequence): ditto * sequence.d (WRITE-BYTE-SEQUENCE): ditto [FIXME: need write_byte_will_hang_p()!] * stream.d (wr_by_array_Pseudofun, wr_by_array_*) (strm_unbuffered_extrafields_t/low_write_array): accept no_hang * unix.d (write_helper): prototype (full_write, safe_write): define using write_helper() * unixaux.d (write_helper): implement (sock_write): accept no_hang * modules/syscalls/calls.c (copy_file_low): use write_helper() instead of full_write() * modules/bindings/glibc/linux.lisp (write-helper): new (write): macro calling write-helper, just like with read 2003-10-02 Bruno Haible * utils/comment5.c: Use '/*' instead of '/*' inside comments, to avoid gcc warning “"/*" within comment”. 2003-10-02 Bruno Haible * utils/ansidecl.d (main): Don't miss to return an error code if the last write on stdout fails. * utils/ccmp2c.c (main): Likewise. * utils/comment5.c (main): Don't miss to return an error code if the last write to outfile fails. * utils/varbrace.d (main): Likewise. 2003-10-01 Bruno Haible Assume some more POSIX functions are properly declared. * m4/gethostname.m4 (CL_GETHOSTNAME): Remove prototype check. * m4/mprotect.m4 (CL_MPROTECT): Remove prototype check. * m4/readlink.m4 (CL_READLINK): Remove prototype check. * m4/read-write.m4: Remove file. * m4/shmat.m4: Remove file. * m4/shm-rmid.m4 (CL_SHM_RMID): Use void* instead of RETSHMATTYPE. * m4/shm.m4 (CL_SHM): Don't require CL_SHMAT. * m4/signal.m4 (CL_SIGPROCMASK): Remove macro. * m4/stat.m4 (CL_FSTAT, CL_STAT): Remove macros. (CL_LSTAT): Remove prototype check. * m4/termios.m4 (CL_TERM): Remove tcsetattr prototype check. * configure.in: Remove invocations of CL_SIGPROCMASK, CL_FSTAT, CL_STAT, CL_READ_WRITE, CL_WRITE. * unix.d: Comment out declarations of mprotect(), sigprocmask(), sigemptyset(), sigaddset(), readlink(), stat(), lstat(), fstat(), read(), write(), tcgetattr(), tcsetattr(), tcdrain(), tcflush(), gethostname(). (read_helper): Use ssize_t instead of RETRWTYPE. Use void* instead of RW_BUF_T. Use size_t instead of RW_SIZE_T. (full_write): Likewise. Use const instead of WRITE_CONST. * amiga.d (RW_BUF_T): Remove definition. Use void* instead. * amigaaux.d: Use void* instead of RW_BUF_T. * acorn.d (RETRWTYPE): Remove definition. Use ssize_t instead. (RW_BUF_T): Remove definition. Use void* instead. (RW_SIZE_T): Remove definition. Use size_t instead. (WRITE_CONST): Remove definition. * msdos.d (RW_BUF_T): Remove definition. Use void* instead. (RETRWTYPE): Remove definition. Use ssize_t instead. (RW_SIZE_T): Remove definition. Use size_t instead. (WRITE_CONST): Remove definition. * win32.d (RW_BUF_T, GETHOSTNAME_SIZE_T, MPROTECT_CONST): Remove macros. * unixaux.d (read_helper): Use ssize_t instead of RETRWTYPE. Use void* instead of RW_BUF_T. Use size_t instead of RW_SIZE_T. (full_write): Likewise. Use const instead of WRITE_CONST. (sock_write): Use const instead of WRITE_CONST. * socket.d: Comment out declaration of gethostname(). * spvw_memfile.d: Use void* instead of RW_BUF_T. * spvw_mmap.d (mprotect): Drop MPROTECT_CONST. 2003-10-01 Bruno Haible Improve support for large off_t and large ino_t. * configure.in: Check size of 'ino_t'. * lispbibl.d (UQ_to_I): Declare also if sizeof(ino_t) > 4. * intelem.d (UQ_to_I): Define also if sizeof(ino_t) > 4. * pathname.d (with_stat_info): Use UQ_to_I to convert st_size to a Lisp object if sizeof(off_t) > 4. (directory_search_hashcode): Use UQ_to_I to convert st_ino to a Lisp object if sizeof(ino_t) > 4. * spvw_memfile.d (loadmem_from_handle): Don't cast down st_size to 32 bits. 2003-09-30 John Hinsdale * modules/oracle/oracle.lisp: Fix bug that leaks connections 2003-09-30 Bruno Haible Support for files larger than 2 GB or 4 GB on platforms with LFS. * configure.in: Invoke AC_SYS_LARGEFILE. Check size of 'off_t'. * lispbibl.d (UQ_to_I, I_to_UQ): Declare also if sizeof(off_t) > 4. * intelem.d (UQ_to_I, I_to_UQ): Define also if sizeof(off_t) > 4. (UQ_to_I): Fix to make it work when sizeof(oint) < sizeof(uint64). * stream.d (uoff_t): New type. (uoff_t_to_I, I_to_uoff_t, uoff_t_p): New macros. (strm_buffered_extrafields_t): Change type of buffstart and position to uoff_t. (strm_i_buffered_extrafields_t): Change type of eofposition to uoff_t. (handle_lseek): Change the result to off_t. (position_file_buffered): Change argument type to uoff_t. (sync_file_buffered): Use uoff_t where appropriate. (position_file_i_buffered): Change argument type to uoff_t. (logical_position_file): Likewise. (logical_position_file_end, make_file_stream) (buffered_flush_everything, finish_output_buffered): Use uoff_t where appropriate. (FILE-POSITION): Use uoff_t_to_I and I_to_uoff_t. (FILE-LENGTH): Use uoff_t_to_I. * spvw_memfile.d (memflags): Add a bit to denote whether file streams store a 64-bit or 32-bit file position. 2003-09-30 Bruno Haible * spvw_heap.d (Heap): Change type of memfile_offset to off_t. * spvw_memfile.d (savemem, loadmem_from_handle): Use off_t where appropriate. * spvw_fault.d (handle_mmap_fault, selfmade_mmap): Change type of 'offset' argument to off_t. 2003-09-30 Bruno Haible * stream.d (SOCKET-OPTIONS): Avoid warnings from ansidecl. 2003-09-29 Sam Steingold * foreign.d (update_library): avoid an infinite loop Reported by Roland Averkamp 2003-09-29 Sam Steingold * encoding.d (init_dependent_encodings): use ASCII for *FOREIGN-ENCODING* when argv_encoding_foreign is not 1:1 Reported by Douglas Philips 2003-09-26 Sam Steingold fix bug#813119: "Occurred in SIMPLIFY at AT-END" * compiler.lisp (simplify): handle empty codelist 2003-09-26 Sam Steingold * configure.in: add AC_COPYRIGHT and AC_REVISION (sugar) check for --with-readline and --without-readline and run CL_READLINE only if readline was not disabled by the user 2003-09-25 Sam Steingold * unix.d (NO_BLOCK_DECL): new macro (START_NO_BLOCK, END_NO_BLOCK): do not open/close block {} * stream.d (listen_handle): update Suggested by Don Cohen 2003-09-24 John Hinsdale * modules/oracle/oracle.lisp: connection retry logic * makemake.in: syntax error in variable definition 2003-09-24 Sam Steingold readline is now used on Cygwin/X11 * stream.d (stdio_same_tty_p): extracted from make_terminal_stream_() use ttyname(stdin)=ttyname(stdout) on cygwin (make_terminal_stream_): use it 2003-09-23 Sam Steingold * init.lisp (load) [:COMPILING]: bind *ERROR-COUNT* *WARNING-COUNT* *STYLE-WARNING-COUNT* like in WITH-COMPILATION-UNIT * compiler.lisp (match-known-unknown-functions): do not try to print source location when it is not available 2003-09-22 Sam Steingold * unix.d (SHUT_RD, SHUT_WR, SHUT_RDWR): define when not defined * makemake.in (encflags) [!UNICODE]: void * utils/modprep.lisp (modprep) [!UNICODE]: no :external-format Reported by Don Cohen 2003-09-19 Sam Steingold * unix.d (START_NO_BLOCK, END_NO_BLOCK): new macros * stream.d (listen_handle): use them 2003-09-17 Sam Steingold * compiler.lisp (f-side-effect): NOTINLINE ==> seclass (t . t) * clos.lisp (%make-gf): seclass is (t . t) because a generic function can always signal a NO-APPLICABLE-METHOD error (std-add-method, std-remove-method): since seclass is (t . t), disable the CLOSURE-SET-SECLASS call 2003-09-17 Sam Steingold * makemake.in: respect LDFLAGS Mac OS X (Darwin) is a BINARY_DISTRIB system 2003-09-16 Sam Steingold * genclisph.d (string_to_asciz, TheAsciz): enabled for Dan Stanger's gdi module 2003-09-15 Sam Steingold * modules/clx/new-clx/clx.f (grab_to_object): new function (GRAB-POINTER, GRAB-KEYBOARD): use it (xlib_error_handler): ise ELT for sequences, not AREF include to avoid some warnings 2003-09-15 Sam Steingold * stream.d (SOCKET-OPTIONS): old systems might not have SO_RCVLOWAT, SO_SNDLOWAT, SO_RCVTIMEO, SO_SNDTIMEO 2003-09-13 Sam Steingold * makemake.in (setup.hint, cygwin.README) [cygwin]: new targets 2003-09-13 Arseny Slobodjuck Fix msvc distrib * makemake.in: don't incude rules unexecutable by msvc nmake (makemake, unixconf.h, Makefile, config.status, VERSION) Don't create base and full directories for msvc distrib Call it differently (clisp-x.xx-msvc-win32.zip) Use find -exec for chmod to avoid problems in cygwin Call rm -rf directly (RMRF=-del, inappropriate) 2003-09-12 Sam Steingold * version.h: reinstated for the sake of non-autoconf platforms 2003-09-11 Sam Steingold * modules/bindings/glibc/linux.lisp (scalb, scalbf): commented out because they do not compile on either RedHat or Debian 2003-09-10 Sam Steingold * debug.d (print_back_trace): do not confuse backtrace with prompts 2003-09-09 Sam Steingold * genclisph.d (constobj): include at compile time (like subr & constsym), not at "run time" (clisp.h does not include constobj) Reported by Fred Cohen 2003-09-09 Bruno Haible * unix.d (nonintr_open): Add const to first argument. * unixaux.d (nonintr_open): Likewise. 2003-09-05 Sam Steingold * makemake.in (distrib) [cygwin]: create cygwin package 2003-09-05 Wolfgang Jenkner Sam Steingold * m4/address.m4, m4/closedir.m4, m4/filecharset.m4, m4/ioctl.m4: * m4/mprotect.m4, m4/shm-rmid.m4, m4/shm.m4, m4/shmat.m4: eliminated prototypes for better portability 2003-09-04 Sam Steingold * spvw.d: do not include version.h (usage, main/--version, version_string/AMIGA): use PACKAGE_NAME & PACKAGE_BUGREPORT * misc.d (LISP-IMPLEMENTATION-VERSION): use O(lisp_implementation_package_version) instead of O(lisp_implementation_version_number_string) and O(lisp_implementation_version_date_string) * makemake.in: remove version.h * constobj.d (lisp_implementation_package_version): init to PACKAGE_VERSION (lisp_implementation_version_date_string) (lisp_implementation_version_number_string): remove * configure.in (AC_INIT): the master version is now here, not in version.h * version.h: remove * FILES.1: update * Makefile.devel (src/VERSION): depend on configure, not version.h 2003-09-04 Sam Steingold * describe.lisp (describe-object) [SOCKETS]: handle SOCKET-SERVER Reported by John K. Hinsdale * genclisph.d (Atype_32Bit): export for gdi (Dan Stanger) 2003-09-03 Sam Steingold * makemake.in (distrib) [win32]: distribute both base and full (uninstall): RMRF lispdocdir & lisplibdir (linkkit): add exporting.lisp & modprep.lisp 2003-09-02 Sam Steingold * version.h: 2.31 is released 2003-09-02 Arseny Slobodjuck * pathname.d (init_launch_streamarg, make_launch_pipe): now defined on UNIX || RISCOS || WIN32_NATIVE. (interpret_launch_priority): new local helper function. (LAUNCH): UNIX and Windows versions merged. * constobj.d (type_priority): now keyword or fixnum. * constsym.d: define LAUNCH keywords on systems where it builds. 2003-09-01 Sam Steingold * error.d (check_fpointer) [FOREIGN]: moved here from foreign.d * foreign.d (check_fpointer): moved to error.d * lispbibl.d (check_fpointer) [FOREIGN]: prototype * genclisph.d (check_fpointer): conditionalize on FOREIGN * modules/regexp/regexi.c [!FOREIGN]: error (FOREIGN is required) Reported by Douglas Philips 2003-08-31 Arseny Slobodjuck * lispbibl.d (INVALID_HANDLE_VALUE) [!WIN32_NATIVE]: new macro. (HNULLP):new macro. * pathname.d (handle_dup): use new macros. (init_launch_streamarg, make_launch_pipe) [UNIX || RISCOS]: new helper functions. (LAUNCH) [UNIX || RISCOS]: use all of it, don't do HANDLE=NULL according to Sam's suggestion. 2003-08-30 John Hinsdale * intelem.d: Fix bug#726433: Floating point numbers printed incorrectly - gcc -O/-g bug? 2003-08-30 Arseny Slobodjuck * stream.d (wr_ch_window) [WIN32_NATIVE]: explicit typecast. (stream_lend_handle): allow pipe-streams. 2003-08-29 Sam Steingold * modules/syscalls/posix.lisp (make-file-stat): fix the typo in the signature * modules/syscalls/configure.in: check for * modules/syscalls/link.sh.in (NEW_LIBS): add win32-specific libraries only when needed Reported by Douglas Philips 2003-08-29 Arseny Slobodjuck * subr.d, subrkw.d (LAUNCH): add kw arguments element-type, external-format, buffered. * constsym.d (PIPE): new keyword. LAUNCH keywords moved out of HAVE_SHELL. * stream.d (mkops_from_handles, mkips_from_handles): new global functions to make pipe-streams. * pathname.d (mkpipe): new local functions. (LAUNCH) [WIN32_NATIVE, UNIX || RISCOS]: use new functions to create pipe - streams. 2003-08-28 Sam Steingold * spvw.d (subr_argtype): accept additional argument for better error reporting (init_subr_tab_1): when initializing modules, pass subr_initdata to subr_argtype() still no error reporting for FSUBRs and main CLISP SUBRs because we cannot print symbols before encodings have been initialized. 2003-08-28 Sam Steingold * time.d (get_run_time) [TIME_UNIX]: when HZ is not defined, use CLK_TCK or CLOCKS_PER_SECOND. Reported by Prut Flut (NetBSD) 2003-08-27 Sam Steingold * utils/modprep.lisp: merged in signature emulation from e2d.c * Makefile.devel (CONFIG_H_IN): add clx/new-clx/config.h.in * modules/clx/new-clx/config.h.in: new file * modules/clx/new-clx/Makefile.in: use modprep instead of e2d.c * modules/clx/new-clx/e2d.c: remove * modules/clx/new-clx/configure.in: check for XGetAtomNames() * modules/clx/new-clx/clx.f: converted to standard C and modprep.lisp * genclisph.d: export much stuff necessary for new-clx * spvw_sigpipe.d (disable_sigpipe): new function for new-clx 2003-08-27 John Hinsdale * modules/oracle/README, oracle.lisp - More documentation 2003-08-26 Sam Steingold * control.d (MACROLET): fix a GC-safety bug * condition.lisp (define-condition): return name, as per ANSI 2003-08-26 Sam Steingold * makemake.in (modular): do not depend on exporting, modprep, clisp.h (anymodule): depend on exporting, modprep, clisp.h 2003-08-25 Arseny Slobodjuck * utils/comment5.c (main): handle '# ' in traditional comments. * makemake.in : do not treat pathname.d specially. 2003-08-23 Sam Steingold * makemake.in (MODULESDIR, MODULESDIR_, MODULESDIR_M): new vars (exporting.fas): depend on ${MODULESDIR_M}exporting.lisp, not the link (modular): depend on clisp.h * configure: do not link plain files in modules (exporting will picked up from here); link modules/* directories even when building without FFI because many modules (regexp, syscalls, dirkey, clx/new-clx) do not require FFI 2003-08-22 Sam Steingold * init.lisp (defun): reverted the 2003-08-12 patch: cannot parse the signature at macroexpand time, FUNCTION should see it first for proper error reporting 2003-08-21 Sam Steingold * utils/modprep.c: rewrote in lisp * modules/regexp/regexi.c (REGEXP-COMPILE): pass a subr instead of a symbol to FINALIZE (supported by modprep.lisp) 2003-08-20 Sam Steingold * compiler.lisp (create-fun-obj, c-LOAD-TIME-VALUE): use *fasoutput-stream* instead of *compiling-from-file* to check whether the constant will be read before being evaluated - necessary for the recent COMPILE-FORM-IN-TOPLEVEL-ENVIRONMENT change Reported by Douglas Philips 2003-08-18 Sam Steingold * defs1.lisp (set-logical-pathname-translations): missing slots default to :WILD, as per ANSI CL * pathname.d (MAKE-LOGICAL-PATHNAME): upcase host (host_match, nametype_match_aux, subdir_match, version_match) (version_diff, translate_subdir, translate_version): merge identical LOGICAL and PHYSICAL code (translate_nametype_aux): do not replace NIL with "" 2003-08-17 Sam Steingold * makemake.in (XCFLAGS) [darwin]: remove `--traditional-cpp' Reported by Douglas Philips 2003-08-15 Sam Steingold MATCH structure is now printable readably * modules/regexp/regexi.c (REGEXP-EXEC): use MAKE-MATCH-BOA * modules/regexp/regexp.lisp (match): define a keyword constructor too 2003-08-15 Sam Steingold * modules/netica/wrap.lisp (make-node): specify placement (node-info): show parents and children (with-open-dne-file): new macro (read-net): new function * modules/netica/netica.lisp (GetNodeExpectedValue_bn) (GetNodeVisPosition_bn): fix declarations * modules/netica/demo.lisp: specify placement 2003-08-15 Sam Steingold * io.d (pr_orecord): print logical pathnames as namestrings (when printing un-readably and ANSI "host:path" is enabled) 2003-08-14 Sam Steingold * defmacro.lisp (analyze1): match lambda-list to argument strictly 2003-08-14 Sam Steingold ANSI compliance: macro definitions respects the lexical environment * defmacro.lisp (make-macro-expander): accept the second argument - the current lexical environment * compiler.lisp (insert-combined-LAPs): avoid ANSI-"undefined" code * control.d (aktenv_to_stack): new function, extracted from ... (compile_eval_form): call aktenv_to_stack() (MACROLET): pass aktev as the second argument to MAKE-MACRO-EXPANDER 2003-08-14 Sam Steingold * modules/netica/wrap.lisp (adjust-number-of-states): new function (GetNodeLevels): new wrapper (error-message, node-info): use ENUM-FROM-VALUE (net-info): call GetNetNodes and print all nodes (make-node): allow setting levels and creating continuous nodes (save-net): call TRANSLATE-LOGICAL-PATHNAME before NAMESTRING * modules/netica/demo.lisp: call net-info * modules/netica/netica.lisp: fix some declarations 2003-08-13 Sam Steingold You can now map between numeric and symbolic C enum values using functions FFI:ENUM-FROM-VALUE and FFI:ENUM-TO-VALUE * foreign1.lisp (enum-from-value, enum-to-value): new functions (def-c-enum): save the value -> constant name map in a hash-table 2003-08-13 Sam Steingold do FUNCTION-CODES lookup at load time: a change in FUNCTION-CODES means a change in FUNTAB, i.e., all FAS recompilation anyway * compiler.lisp (CALLS-code-fun): new macro (c-FNODE-FUNCTION, c-FUNCTION, insert-combined-LAPs): use it 2003-08-13 Bruno Haible * arilev1e.d (and_test_loop_up, test_loop_up): Change return type from 'bool' to 'int', for compatibility with the existing assembly code. * arilev1c.d (and_test_loop_up, test_loop_up): Likewise. * arilev1i.d (and_test_loop_up, test_loop_up): Likewise. Reported by Russ Ross . 2003-08-12 Sam Steingold * modules/dirkey/dirkey.c, modules/syscalls/calls.c: * modules/regexp/regexi.c (misc_encoding, pathname_encoding): use GLO to pick the user changes to *MISC-ENCODING* and *PATHNAME-ENCODING* at run time * genclisph.d (object_tab): enabled 2003-08-12 Sam Steingold * compiler.lisp (c-write-lib): do not write constants; unwrap PROGN * init.lisp (LAMBDA-LIST-TO-SIGNATURE) [!COMPILER]: dummy definition (defun): call LAMBDA-LIST-TO-SIGNATURE at macroexpand time (%expand-macro): new function (%expand-form): use it 2003-08-11 Sam Steingold * modules/netica/wrap.lisp (*license*): new variable (start-netica): license is a keyword parameter (*features*): push :netica 2003-08-11 Sam Steingold * calls.c (STREAM-LOCK): add begin_system_call()/end_system_call() 2003-08-10 Arseny Slobodjuck * pathname.d (nullfile): new local function. (LAUNCH): take NIL stream as /dev/nul. 2003-08-07 John Hinsdale * oracle.lisp, fastcgi.lisp, fastcgi.h, linux.lisp: Take "C" prototypes from standard headers, not FFI 2003-08-07 Sam Steingold LOAD :COMPILING T: handle errors just like with COMPILE-FILE * init.lisp (load): bind compiler::*c-error-output*; when *load-compiling*, call compiler::c-reset-globals before loading and compiler::c-report-problems after loading * compiler.lisp (compile-lambda-helper): extracted from compile-lambda (compile-lambda, compile-form-in-toplevel-environment): call it 2003-08-07 Sam Steingold track the current source file consistently * init.lisp (*current-source-file*): new variable (load): bind it (check-redefinition): use it instead of a complicated combination of *load-truename* & *compile-file-truename* * compiler.lisp (compile-file): bind it 2003-08-07 Sam Steingold * foreign.d (FOREIGN-FREE): make the freed function invalid 2003-08-07 Sam Steingold properly update pointers to dynamic objects * foreign.d (object_handle): extracted from object address() (foreign_libraries): keep the objects imported from the library (update_library, push_foreign_object): new functions (FOREIGN-LIBRARY, validate_fpointer): call update_library() (FOREIGN-LIBRARY-VARIABLE, FOREIGN-LIBRARY-FUNCTION): call push_foreign_object() 2003-08-07 Sam Steingold regexp module does not use FFI - 25% speedup * modules/regexp/preload.lisp: new file * modules/regexp/link.sh.in: preload it, don't look for regexp.c * modules/regexp/regexp.lisp: remove FFI forms * modules/regexp/regexi.c (REGEXP-COMPILE, REGEXP-EXEC) (REGEXP-FREE): implement here * foreign.d (check_fpointer): replaces fehler_fpointer_invalid() * genclisph.d (posfixnum, negfixnum, sfixnum, fp_validp) (check_fpointer): export 2003-08-06 Sam Steingold add a bindings/win32 module with a couple of rudimentary functions 2003-08-06 Sam Steingold * configure: link all modules/* files, not just directories * modules/exporting.lisp: new file, abstracted from linux.lisp * makemake.in: compile exporting.lisp * modules/bindings/glibc/linux.lisp, modules/netica/netica.lisp: * modules/postgresql/postgresql.lisp: load exporting.lisp 2003-08-06 Sam Steingold remove obsolete module linuxlibc5 and rename linuxlibc6 to glibc 2003-08-06 Sam Steingold Unified modules postgresql632 and postgresql642 into postgresql * Makefile.devel: use implicit rules for configure and config.h.in (CONFIGURES, CONFIG_H_IN): add postgresql 2003-08-06 Sam Steingold the netica demo now works just fine * modules/netica/demo.lisp: use DEFPARAMETER * modules/netica/wrap.lisp (null-pointer): remove (use NIL instead) (check-errors): use CERROR (make-net): set comment and title (net-info, node-info): new functions (make-node): fix the SetNodeProbs_bn call (make-node-wrapper): new build-time macro (GetNodeBeliefs, GetNodeExpectedUtils, GetNodeLikelihood) (GetNodeProbs): new low-level wrappers defined with it (save-net): fix file type merging * modules/netica/netica.lisp (MAX_PARENT, MAX_STATE): remove (GetNodeBeliefs_bn, GetNodeExpectedUtils_bn, SetNodeProbs_bn) (GetNodeLevels_bn, GetNodeProbs_bn): fix declarations 2003-08-06 Sam Steingold * modules/regexp/regexi.c (mregexec): new function * modules/regexp/regexp.lisp (num-matches, regexec): remove (mregexec): replaces regexec (regexp-exec): return an arbitrary number of matches, not limited by num-matches 2003-08-05 Sam Steingold * foreign.d (convert_from_foreign): treat NULL as NIL (convert_to_foreign): treat NIL as NULL * foreign1.lisp (foreign-address-null): remove * deprecated.lisp (deprecate): export from the home package (foreign-address-null): deprecated 2003-08-05 Sam Steingold * misc.d (MODULE-INFO): argument `O' returns a copy of O(foreign_libraries) (environ) [!HAVE_DECL_ENVIRON]: declare * m4/putenv.m4 (CL_PUTENV): check for environ 2003-08-05 Sam Steingold * foreign1.lisp (DEF-C-VAR, DEF-CALL-OUT): do not call NOTE-C-VAR and NOTE-C-FUN for dynamic objects 2003-08-04 Sam Steingold extended dynamic object loading from AMIGAOS to WIN32_NATIVE & POSIX * m4/dynload.m4 (CL_DYNLOAD): use AC_SEARCH_LIBS * constobj.d (foreign_libraries): define * constsym.d, subr.d (foreign_library, foreign_library_variable) (foreign_library_function): add * foreign.d (FOREIGN-LIBRARY, FOREIGN-LIBRARY-VARIABLE): (FOREIGN-LIBRARY-FUNCTION): extended to win32 & posix * foreign1.lisp (def-c-var, def-call-out): add :LIBRARY option * makemake.in (LIBDL): absorbed into LIBS * unix.d (dlopen, dlsym, dlclose, dlerror): remove prototypes 2003-08-02 Wolfgang Jenkner Sam Steingold * condition.lisp (assert): fix bug a whereby two adjacent ASSERTs would redefine ASSERT-RESTART-PROMPT and thus use the same closure when in fact they are prompting for different places 2003-08-02 Sam Steingold use system-wide regex implementation when it is available * modules/regexp/regexi.c: include , not "regex.h" * modules/regexp/link.sh.in: rename from link.sh * modules/regexp/configure.in: AC_SUBST REGEX_O®EX_H * modules/regexp/Makefile.in: use REGEX_O®EX_H 2003-08-02 Sam Steingold * modules/wildcard/wildcard.lisp: #include * modules/regexp/regexp.lisp (*output-c-functions*) (*output-c-variables*): set to T 2003-08-02 Sam Steingold * unixconf.h.in: generated by autoheader now * c++-bool.m4, cc-char-unsigned.m4, cc-elif.m4, cc-error.m4: * cc-mergestrings.m4, chdir.m4, chmod.m4, endian.m4, execl.m4: * execv.m4, fcntl.m4, fsync.m4, ftime.m4, getenv.m4, getpwnam.m4: * getpwuid.m4, localtime.m4, memset.m4, mkdir.m4, opendir.m4: * rename.m4, rmdir.m4, setitimer.m4, setlocale.m4, strerror.m4: * strlen.m4, structtm.m4, sys_errlist.m4, ualarm.m4, unistd.m4: * unlink.m4, usleep.m4, vfork.m4: remove files that only define *_CONST or something similar * unix.d: remove some duplicate prototypes 2003-08-02 John Hinsdale * modules/oracle/orafns.c, oracle.lisp, oiface.h: support access to Oracle's BLOB/CLOB data types 2003-08-01 Sam Steingold new module for interface to netica * modules/netica: new directory 2003-08-01 Sam Steingold * calls.c (FILE-LOCK): ported to win32; use fcntl(2) instead of flock(2) on UNIX; allow locking section of the file 2003-08-01 Stefan Kain * realelem.d: translated all comments 2003-07-31 Sam Steingold * stream.d (open_file_stream_handle): use ChannelStream_ihandle() * genclisph.d (OS_filestream_error): export 2003-07-31 Sam Steingold these days *.h files contain good prototypes - do not duplicate them * foreign1.lisp (*output-c-functions*, *output-c-variables*): new variables, default to NIL (finalize-coutput-file): do not write *FUNCTION-LIST* (resp. *VARIABLE-LIST*) to *COUTPUT-STREAM* when *OUTPUT-C-FUNCTIONS* (resp. *OUTPUT-C-VARIABLES*) is NIL 2003-07-31 Sam Steingold * misc.d (GETENV, clisp_setenv): use `environ', not win32-specific API, but declare `environ' outside the function scope for mingw/g++ 2003-07-30 Sam Steingold * modules/syscalls/calls.c: all *-INTERNAL functions call structure BOA constructors (thus they are not INTERNAL) * modules/syscalls/posix.lisp: all structures have BOA constructors, remove the wrappers 2003-07-30 Sam Steingold * genclisph.d (charp): enabled * modules/syscalls/calls.c (FILE-INFO, MAKE-SHORTCUT) (SHORTCUT-INFO) [WIN32_NATIVE, UNIX_CYGWIN32]: new functions * modules/syscalls/posix.lisp (file-info, shortcut-info) [WIN32_NATIVE, UNIX_CYGWIN32]: new structures * install.bat: run the full linking set * install.lisp: create a shortcut 2003-07-29 Sam Steingold * genclisph.d (to_time_t_) [UNIX_CYGWIN32]: export * modules/dirkey/dirkey.c (to_time_t_) [UNIX_CYGWIN32]: moved to... * unixaux.d (to_time_t_) [UNIX_CYGWIN32]: here 2003-07-29 Sam Steingold * spvw.d (main): when non-interactive, guard LOAD for "-i" with SYS::BATCHMODE-ERRORS to avoid infinite loop on error 2003-07-28 Sam Steingold pushSTACK(listof()) and STACK_1=listof() are illegal because listof() (and vectorof() &c) modify the STACK, so the whole expression becomes undefined! * control.d (SET): avoid undefined expressions * array.d (test_displaced, ADJUST-ARRAY): ditto * eval.d (interpret_bytecode_): ditto * pathname.d (directory_search_scandir): ditto * socket.d (SOCKET-SERVICE-PORT): ditto 2003-07-28 Stefan Kain * flo_rest.d: translated all comments 2003-07-28 Sam Steingold * pathname.d (directory_search) [WIN32_NATIVE]: save some consing (directory_search_scandir) [WIN32_NATIVE]: fix a GC-safety bug: use O(lnk_string) instead of allocating a new string each time * constobj.d (lnk_string) [WIN32_NATIVE]: new string 2003-07-28 Sam Steingold * misc.d (clisp_setenv) [WIN32_NATIVE]: use SetEnvironmentVariable() (GETENV) [WIN32_NATIVE]: use GetEnvironmentStrings() and FreeEnvironmentStrings() instead of the fictitious `environ' global (push_envar): new function, extracted from GETENV 2003-07-28 Sam Steingold * encoding.d, stream.d, socket.d, misc.d, win32aux.d: fix g++/mingw compilation 2003-07-27 Sam Steingold * genclisph.d, encoding.d (cstombs_f, cslen_f) [!UNICODE]: macros * modules/dirkey/dirkey.c: undef UNICODE before including clisp.h; no need for *_encoding without CLISP_UNICODE * modules/syscalls/calls.c: define WINVER before including clisp.h; no need for *_encoding without CLISP_UNICODE 2003-07-27 Sam Steingold * modules/syscalls/configure.in: check for signgam * modules/syscalls/calls.c (LGAMMA): use the check 2003-07-26 Sam Steingold * modules/syscalls/calls.c, pathname.d (hardlink_file, symlink_file): moved from pathname.d to calls.c * genclisph.d (Symbol_name, builtin_stream_p): enabled fix the HANDLE problems 2003-07-26 Sam Steingold * Makefile.devel (CONFIGURES): add config.h.in in wildcard, regexp, dirkey and syscall, use autoheader to generate them * m4/cc-void.m4 (RL_VOID): fix the AC_DEFINE call 2003-07-25 Sam Steingold Converted syscall to a module * Makefile.devel (CONFIGURES): add syscalls * configure, makemake.in (--with-dir-key): remove option * modules/syscalls: new directory * genclisph.d: add some stuff to support syscalls * constobj.d, constpack.d, constsym.d, pathname.d, socket.d: * spvw.d, stream.d, subr.d, subrkw.d: remove syscall-specific stuff * pathname.d (if_does_not_exist_symbol, if_exists_symbol): add * socket.d (addr_to_string, resolve_host1, resolve_host): add * stream.d (file_stream_truename, open_file_stream_handle): add * posix.lisp, posixmath.d, posixmisc.d: remove 2003-07-25 Sam Steingold * utils/modprep.c: DEFUN can specify side-effect-class 2003-07-25 Sam Steingold * error.d (check_posfixnum): new function * io.d (PPRINT-INDENT): use check_real() * lisparit.d (fehler_not_N): replace with check_number() (fehler_not_R): replace with check_real() (fehler_not_F): replace with check_float() (fehler_not_RA): replace with check_rational() (fehler_not_I): replace with check_integer() (to_double, to_int): new functions for modules made these changes pervasive in the whole file * lispbib.d (fehler_not_R): replace with check_real() (check_posfixnum): declared 2003-07-24 Sam Steingold * genclisph.d (SAFETY): export (type_data_object): fix (now fixnum() works) (svector_): fix (now TheSvector()->data works) (symbolp): uncomment (stringp): fix (array_displace_check): replaces iarray_displace_check() * dirkey.c (SET-DKEY-VALUE): use array_displace_check() instead of iarray_displace_check(); many cosmetic tweaks * spvw_debug.d (nobject_out1): handle structures and fpointers 2003-07-23 Sam Steingold Converted dirkey to a module * constobj.d, constpack.d, constsym.d, defs1.lisp, describe.lisp: * init.lisp, io.d, lispbibl.d, predtype.d, spvw.d, subr.d: * subrkw.d, type.lisp: remove dirkey-specific stuff * Makefile.devel (CONFIGURES): add dirkey, oracle, fastcgi * configure, makemake.in (--with-dir-key): remove option * encoding.d (cslen_f, cstombs_f): new functions that enable with_string_0() in modules * genclisph.d: enabled a LOT of stuff to support dirkey * modules/dirkey: new directory * dirkey.d, dirkey1.lisp: remove 2003-07-23 Sam Steingold * lispbibl.d (reset): update the prototype * eval.d (reset): accept count arg * control.d (UNWIND-TO-DRIVER): use reset() for everything * spvw_alloca.d (memfile): update reset() call * spvw_allocate (error_speicher_voll): ditto * spvw.d (SP_ueber, STACK_ueber): ditto * error.d (INVOKE-DEBUGGER): ditto * debug.d (break_driver): ditto 2003-07-23 Sam Steingold * record.d (fehler_record_length): fix stack 2003-07-21 Sam Steingold * _clisp.c (main): use shell_quote() and real_path() for CreateProcess() * w32shell.c: new file (extracted from pathname.d) * makemake.in (clisp) [WIN32_NATIVE]: put the icon into the executable; depend on w32shell.c (pathname.o) [WIN32_NATIVE]: depend on w32shell.c * pathname.d, spvw_memfile.d [WIN32_NATIVE]: rename TrueName() to real_path() 2003-07-18 Sam Steingold * condition.lisp (check-value): CONTINUE :INTERACTIVE ASSERT-RESTART-NO-PROMPTS to avoid infinite loops 2003-07-16 Sam Steingold * makemake.in (.gdbinit): substitute ${LEXE} for .run on w32 (lisp.a): do not use lisp.o on w32 because it leads to a crash on the first statement in main() (when built --with-debug) 2003-07-16 Sam Steingold * spvw.d (SP_ueber, STACK_ueber): flush stderr and guard fputs() and fflush() with begin_system_call()/end_system_call() 2003-07-15 John Hinsdale * modules/oracle/orafns.c,oracle.lisp: support access to Oracle's LONG, RAW and LONG RAW data types 2003-07-10 Sam Steingold * comptran.d (N_sin_N, N_cos_N): fix GC-safety bugs 2003-07-10 Sam Steingold * error.d (check_fdefinition): handle :CONTINUE restart from check_value() * condition.lisp (check-value): permit :CONTINUE restart when the place is (FDEFINITION ...) 2003-07-09 Sam Steingold * errwin32.d (OS_error, OS_file_error, SOCK_error): avoid a warning by calling NOTREACHED at the end 2003-07-08 Sam Steingold * configure: pass --win32gcc to makemake instead of ${target} * makemake.in: rely on autoconf for win32gcc 2003-07-08 Sam Steingold * predtype.d (equalp): fix a crash in (EQUALP '(0 1) '(#P"")) 2003-07-08 Sam Steingold * m4/filecharset.m4: avloid ":" on __MINGW32__ just like we do with __CYGWIN32__ 2003-07-08 Sam Steingold * compiler.lisp (c-MAP-on-CARs, c-MAP-on-LISTs): fix the 2003-02-09 patch: avoid bytecode duplication 2003-07-03 Sam Steingold * makemake.in (testsuite): pass LEXE to make in suite 2003-07-02 Sam Steingold * control.d (PROCLAIM): fix STACK indexing for CONSTANT-(NOT)INLINE 2003-07-02 Arseny Slobodjuck * pathname.d (directory_namestring_parts) [WIN32_NATIVE, PATHNAME_UNIX]: include host parts. (whole_namestring): do not call host_namestring_parts when directory_namestring_parts includes it. (assure_dir_exists) [WIN32_NATIVE]: fix bugs. (assure_dir_exists) [PATHNAME_UNIX]: do not insert host parts. 2003-07-01 Sam Steingold * describe.lisp (describe1): better whitespace for documentation 2003-06-25 Sam Steingold * spvw_debug.d (nobject_out1): accept third argument `level' (nobject_out): pass 5 as the level to avoid circularity problems 2003-06-24 Sam Steingold * spvw_circ.d (get_circ_unmark, get_circ_mark): handle Rectype_Weakpointer separately 2003-06-24 Sam Steingold * spvw_debug.d (nobject_out1): new function, extracted from nobject_out() to do all the recursive work (nobject_out): call it; now nobject_out() does fflush() and begin_system_call()/end_system_call() just once 2003-06-23 Sam Steingold * lispbibl.d (alloca) [UNIX_CYGWIN32]: use __builtin_alloca() 2003-06-19 Sam Steingold * type.lisp (canonicalize-type): canonicalize (VECTOR NIL) correctly * predtype.d (CLASS-OF): handle (ARRAY NIL) correctly * describe.lisp (describe-object): report (ARRAY NIL) as having no storage * io.d (pr_array): print (ARRAY NIL NIL) properly 2003-06-19 Sam Steingold add (SETF WEAK-POINTER-VALUE) * spvw_garcol.d (gar_col_normal): when the value of the weak pointer is GC-invariant, remove it from O(all_weakpointers) * lispbibl.d (weakpointer_broken_p): depend on wp_value (not wp_cdr) * record.d (mk_weakpointer): wp_cdr for GC-invariant values is unbound (MAKE-WEAK-POINTER, WEAK-POINTER-P, WEAK-POINTER-VALUE): fix seclass (check_weak_pointer): new function (WEAK-POINTER-VALUE): use it (%SET-WEAK-POINTER-VALUE): implement * constsym.d, subr.d (set_weak_pointer_value): add * places.lisp (WEAK-POINTER-VALUE): add defsetf 2003-06-15 Sam Steingold * spvw.d (main) [WIN32_NATIVE]: permit `-K' clisp-link.sh now works on mingw 2003-06-13 Sam Steingold * stream.d (make_file_stream): do not push :PROBE streams onto O(open_files) because that would prevent deleting this file and :PROBE streams do not have to be closed anyway 2003-06-13 Sam Steingold * makemake.in [win32gcc]: build lisp.a on mingw and do stage comparison (make check) unix-style, not dos-style * configure [cygwin/mingw]: work around the _WinMain@16 libcharset problem with --enable-shared=no; this is a FIXME for Bruno 2003-06-13 Sam Steingold * pathname.d (TrueName) [WIN32_NATIVE]: return bool; made global; fix a bug with overwriting "nameout" string with "resolved" (cpslashp): new macro, used throughout the file * spvw_memfile.d (loadmem) [WIN32_NATIVE]: use TrueName() to resolve possible symbolic links * lispbibl.d (TrueName): add a prototype 2003-06-12 Sam Steingold * makemake.in: on win32gcc, translate /cygdrive/ prefixes to the normal win32 pathnames (so that clisp.exe would work properly) (stage): use the same check for defining ${LN_S} to copy and for using it as a copier (as opposed to symbolic linker) 2003-06-12 Sam Steingold * pathname.d (simplify_directory): fold "*" into :WILD and "**" into :WILD-INFERIORS (subdir_diff): ignore logical (directory_list_valid_p): accept :WILD 2003-06-08 Sam Steingold * io.d (check_readtable): new function, replaces function fehler_readtable() and macro check_readtable() (COPY-READTABLE): modified accordingly (SET-SYNTAX-FROM-CHAR): ditto, also use check_char() instead of fehler_char() (test_readtable_arg, test_readtable_null_arg, test_nontermp_arg): accept an argument instead of using popSTACK() (SET-MACRO-CHARACTER, GET-MACRO-CHARACTER, SET-READTABLE-CASE) (MAKE-DISPATCH-MACRO-CHARACTER, SET-DISPATCH-MACRO-CHARACTER) (GET-DISPATCH-MACRO-CHARACTER, READTABLE-CASE): modified accordingly, use check_char() instead of fehler_char() 2003-06-07 Sam Steingold * init.lisp (*suppress-check-redefinition*): new user variable (check-redefinition): respect it 2003-06-07 Sam Steingold * cfgacorn.lisp, cfgamiga.lisp, cfgdos.lisp, cfgwin32.lisp: no need to prefix GETENV with "SYS::" * cfgsunux.lisp, cfgunix.lisp: ditto (short-site-name): read from uname(1) -n (long-site-name): read from uname(1) -a 2003-06-06 Sam Steingold * modules/clx/new-clx/clx.f (get_screen_and_display): fix a typo use listof() instead of funcall(L(list)) throughout the file (coerce_result_type): new function, used by all functions that take a :RESULT-TYPE argument (coerce_it): remove (it was used inconsistently and coerce_result_type() is more efficient anyway) (SCREEN-DEPTHS): fix a crash due to not pushing the visual info lists on the stack (they were just discarded!) 2003-06-06 Sam Steingold * encoding.d (CONVERT-STRING-FROM-BYTES): fix a bug in handling of indirect byte vectors Reported by Adam Warner 2003-06-06 Will Newton * modules/clx/new-clx/clx.f: fix the build with gcc 3.3, which has some changes with respect to multi-line strings 2003-06-06 Bruno Haible * clos.lisp (analyze-method-description): Call %call-next-method even if there is no next method. (%call-next-method): When there is no next method, call %no-next-method here. 2003-06-05 Sam Steingold * predtype.d (TYPE-OF): return KEYWORD for keyword symbols and BIT for 0 and 1 2003-06-05 Sam Steingold * pathname.d (LAUNCH) [WIN32_NATIVE]: fix GC-safety 2003-06-04 Sam Steingold * pathname.d (LAUNCH): :WAIT defaults to T, return child PID when the :WAIT is NIL 2003-05-29 Sam Steingold fix bug#738107: line number of output streams * io.d (pr_stream): do not print lineno for output streams Should we keep both lineno and ch_lpos for all streams?! 2003-05-25 Sam Steingold * constobj.d (type_packname): include CHARACTER, as per ANSI spec * charstrg.d (test_radix_arg, test_char_args) (test_char_args_upcase, test_stringsymchar_arg): recoverable avoid dotimes*() macro throughout the file * package.d (test_package_arg): recoverable 2003-05-24 Sam Steingold * hashtabl.d (HASH-TABLE-COUNT): rehash the argument when it is weak and invalid because GC could reduce the count 2003-05-24 Sam Steingold * spvw_debug.d (nobject_out): handle hash tables 2003-05-24 Sam Steingold * hashtabl.d (rehash): fix an "off by one" bug in user-defined HTs (hash_lookup): fix a GC-safety bug in user-defined HTs 2003-05-24 Sam Steingold * pathname.d (stringlist_to_asciizlist): always defined; fix GC-safety errors (LAUNCH): return NIL when :WAIT was NIL [UNIX/RISCOS]: fix GC-safety errors; handle :PRIORITY argument * unixconf.h.in (HAVE_NICE): add * configure.in: check for nice(2) 2003-05-24 Sam Steingold * error.d (check_list): new function * lispbibl.d (check_list): declare 2003-05-24 Arseny Slobodjuck Concerning the CLHS/Win32 issue. * pathname.d (shell_quote): remove source_end parameter. (stringlist_to_asciizlist) [WIN32_NATIVE]: new function. (LAUNCH) [WIN32_NATIVE,UNIX/RISCOS]: use it. (SHELL-EXECUTE): new function - a wrapper for ShellExecute. Shell means GUI shell, not the command.com. * constsym.d: declared SHELL-EXECUTE in EXT. * subr.d: ditto. * win32.d: include * makemake.in: link against shell32.lib * clhs.lisp (browse-url) [WIN32]: start default browser by default. 2003-05-24 Arseny Slobodjuck * spvw_sigsegv.d (stackoverflow_handler): fix MSVC compilation. 2003-05-22 Bruno Haible * spvw_sigsegv.d (stackoverflow_handler): Add support for restoring STACK on hppa-hpux, alpha-freebsd, i386-openbsd, alpha-netbsd. 2003-05-22 Bruno Haible Preliminary support for x86_64 CPU. * lispbibl.d (AMD64): New macro. * spvw_page.d: Treat AMD64 like IA64. 2003-05-22 Sam Steingold * loadform.lisp (make-load-form): do not define a method specialized to STANDARD-OBJECT - ANS requires an error there 2003-05-21 Sam Steingold * clos.lisp (no-method-caller): new function (compute-dispatch): use it instead of calling NO-APPLICABLE-METHOD directly to avoid funcalling the return value of NO-APPLICABLE-METHOD (compute-effective-method): ditto for NO-APPLICABLE-METHOD and NO-PRIMARY-METHOD; remove the loop 2003-05-21 Sam Steingold * error.d (check_fdefinition): fix stack handling (check_function): get(sym,ind) may not be a symbol * eval.d (eval1): do not use apply() after check_fdefinition() 2003-05-21 Sam Steingold * disassem.lisp (disassemble, disassemble-machine-code): return NIL, as per ANSI CL spec 2003-05-21 Sam Steingold MAKE-INSTANCES-OBSOLETE now does nothing except for issuing a warning: there is no point in obsoleting instances if the class has not been redefined * clos.lisp (ensure-class): incf CLASS-ID here (make-instances-obsolete): do not incf CLASS-ID here 2003-05-20 Sam Steingold even more errors are now recoverable * control.d (FUNCTION): use check_funname() and check_fdefinition() instead of signaling errors (fehler_undef_function): remove (SYMBOL-FUNCTION, FDEFINITION): use check_fdefinition() instead of fehler_undef_function() (check_setq_body): GC-unsafe due to using check_symbol_non_constant() instead of test_symbol_non_constant() (SET, MAKUNBOUND, MULTIPLE-VALUE-SETQ): use check_symbol_non_constant() instead of test_symbol_non_constant() (check_varspec): new function (make_variable_frame, COMPILER-LET): use it, also use check_symbol_non_constant() instead of test_symbol_non_constant() (PROGV): progv() is GC-unsafe now (PROCLAIM): use check_funname() instead of fehler_kein_symbol() * error.d (fehler_kein_symbol): remove (check_symbol_non_constant): replaces test_symbol_non_constant() (check_symbol_special, check_fdefinition): new functions (check_function): replaces fehler_function() * eval.d (progv): GC-unsafe due to using check_symbol_non_constant() instead of test_symbol_non_constant() (get_closure): use check_symbol_non_constant() instead of test_symbol_non_constant() (fehler_undefined): remove (coerce_function, eval1, apply, funcall): use check_fdefinition() instead of fehler_undefined() (interpret_bytecode_) [cod_symbol_function]: [cod_const_symbol_function, cod_const_symbol_function_push]: [cod_const_symbol_function_store]: use check_symbol() and check_fdefinition() instead of fehler_kein_symbol() and fehler_undefined() (funcall_iclosure): push arguments on STACK before calling fehler_key_odd() * foreign.d (EXEC-ON-STACK, CALL-WITH-FOREIGN-STRING): use check_function() instead of fehler_function() * lispbibl.d (progv): documented as GC-unsafe (fehler_undef_function, fehler_kein_symbol, fehler_function) (test_symbol_non_constant): remove (check_symbol_non_constant, check_fdefinition, check_function): add (COERCE): use check_fdefinition() instead of fehler_undef_function() * record.d (MAKE-MACRO, MAKE-FUNCTION-MACRO): use check_function() instead of fehler_function() * sequence.d (seq_boolop): ditto * symbol.d (%PUTD): ditto 2003-05-18 Arseny Slobodjuck Solve problems with CLHS and INSPECT on win32 * clhs.lisp (BROWSE-URL): use EXT::LAUNCH on win32. * runprog.lisp (run-shell-command): don't try to use #\& on win32. 2003-05-18 Arseny Slobodjuck * pathname.d (LAUNCH) [WIN32_NATIVE]: small fixes. (LAUNCH) [UNIX || RISCOS]: implement for these systems (like EXECUTE). Moved out of HAVE_SHELL. * subr.d (LAUNCH): change conditionals for declaration. * subrkw.d: ditto. * constsym.d: ditto. 2003-05-16 Sam Steingold * dribble.lisp (check-dribble-stream): new function (dribble-stream-source, dribble-stream-target): use it 2003-05-16 Sam Steingold fix bug#737541: describe on unnamed function and on macro * describe.lisp (describe-object): MACRO: suggest (DISASSEMBLE (MACRO-FUNCTION ...)) FUNCTION: do not suggest disassembling anonymous function 2003-05-13 Sam Steingold DEFINE-HASH-TABLE-TEST: user-defined hash table tests * lispbibl.d (Hashtable): add slots ht_test and ht_hash (hashtable_test): remove (ht_test_code): add (hash_table_test): declare * hashtabl.d (hashcode5): new function - for user-defined ht_test (hashcode_raw, hashcode_cook): split out from hashcode() (hashcode): use them; may trigger GC for user-defined ht_test (rehash, hash_lookup): may trigger GC for user-defined ht_test (prepare_resize, check_weak): the error is now recoverable (hash_prepare_store): use hashcode_raw() and hashcode_cook() to call the user hash function just once (MAKE-HASH-TABLE): accept user-defined ht_test all errors are now recoverable (fehler_hashtable): replace with check_hashtable() (shifthash): modified for the GC unsafe hash_lookup() (hash_table_test): new function (PUTHASH, REMHASH, MAPHASH, CLRHASH, HASH-TABLE-COUNT) (HASH-TABLE-REHASH-SIZE, HASH-TABLE-REHASH-THRESHOLD) (HASH-TABLE-SIZE, HASH-TABLE-TEST, HASH-TABLE-ITERATOR) (HASH-TABLE-WEAK-P, %SET-HASH-TABLE-WEAK-P, CLASS-TUPLE-GETHASH): use check_hashtable() instead of fehler_hashtable() * defs2.lisp (define-hash-table-test): define * init.lisp (define-hash-table-test): export * io.d (pr_orecord): use hash_table_test() * predtype.d (hash_table_equalp): use ht_test_code() 2003-05-15 Sam Steingold * stream.d (stream_lend_handle): handletype may be NULL (stream_fd): remove * lispbibl.d (stream_fd): remove * pathname.d (FILE-STAT-INTERNAL, copy_attributes_and_close): use stream_lend_handle() instead of stream_fd() 2003-05-15 Sam Steingold * stream.d (MAKE-STREAM): implement * constsym.d, subr.d, subrkw.d (make_stream): add * init.lisp (MAKE-STREAM): export * lispbibl.d (stream_lend_handle): declared 2003-05-15 Jörg Höhle * modules/bindings/linuxlibc6/linux.lisp [LINUX]: several fixes (errno, putpwent, c-struct group): fixed (getpwent, fgetpwent, getpwuid, getpwnam): return c-ptr-null (getgrent, fgetgrent, getgrgid, getgrnam): return c-ptr-null (readdir): return c-ptr-null (seed48): fix arg, but extern prototyping is still broken 2003-05-14 Sam Steingold stdio handles are now duped before being inserted into LISP streams, so they are never closed on user request * stream.d (handle_to_stream): new function (make_standard_input, make_standard_output): new macro (make_terminal_io, init_standard_io): use them (init_streamvars): use handle_to_stream() 2003-05-14 Sam Steingold * pathname.d (handle_dup): new global function (LAUNCH, DUPLICATE-HANDLE): use it * lispbibl.d (handle_dup1): new macro 2003-05-14 Sam Steingold * constobj.d (type_priority) [WIN32_NATIVE]: add * pathname.d (LAUNCH) [WIN32_NATIVE]: use it (GC-safety bug fix!) (allocate_cons_v): remove * error.d (fehler_key_odd): fix a GC-safety bug 2003-05-14 Bruno Haible * compiler.lisp: BLOCK-OPEN and TAGBODY-OPEN not only have undefined values, but invalidate value1 due to consing! (traverse-anode): clear the current known value (*current-value* and *current-vars*) when encountering BLOCK-OPEN or TAGBODY-OPEN 2003-05-13 Jörg Höhle * foreign.d (FOREIGN-SIZE): remove unreferenced function 2003-05-12 Sam Steingold * lispbibl.d (check_uint8, check_sint8, check_uint16, check_sint16) (check_uint32, check_sint32, check_uint64, check_sint64, check_uint) (check_sint, check_ulong, check_slong, check_ffloat, check_dfloat): functions returning the correct argument (fehler_uint8, fehler_sint8, fehler_uint16, fehler_sint16) (fehler_uint32, fehler_sint32, fehler_uint64, fehler_sint64) (fehler_uint, fehler_sint, fehler_ulong, fehler_slong) (fehler_ffloat, fehler_dfloat): remove * error.d (fehler_uint8, fehler_sint8, fehler_uint16, fehler_sint16) (fehler_uint32, fehler_sint32, fehler_uint64, fehler_sint64) (fehler_uint, fehler_sint, fehler_ulong, fehler_slong) (fehler_ffloat, fehler_dfloat): replace with check_*() * genclisph.d (...): ditto * stream.d (rd_by_array_dummy): use check_uint8() instead of fehler_uint8() * foreign.d (OFFSET, FOREIGN-LIBRARY, FOREIGN-LIBRARY-VARIABLE): use check_sint32() correctly (check_library): replaces test_library() 2003-05-12 Sam Steingold * type.lisp (built-in-class-p): eval only when loading source * clos.lisp (built-in-class-p): do not proclaim notinline 2003-05-12 Sam Steingold * pathname.d (MERGE-PATHNAMES): fix a crash: the address of the LHS may be computed before a GC in merge_dirs() [this is a GC-safety bug not detected by DEBUG_GCSAFETY] 2003-05-12 Jörg Höhle * pathname.d (DYNLOAD-MODULES): more error checking 2003-05-12 Jörg Höhle * foreign1.lisp (exec-with-foreign-string): new internal function to let FFI:WITH-FOREIGN-STRING to expand the same with or without unicode. * foreign.d (call_with_foreign_string): fix --without-unicode 2003-05-09 Sam Steingold function-name error can now be recovered from * error.d (fehler_funname_source, fehler_funname_type): merged into check_funname() (fehler_key_odd, fehler_key_notkw, fehler_key_badkw): add * lispbibl.d (fehler_funname_source, fehler_funname_type): replace with check_funname() (fehler_key_odd, fehler_key_notkw, fehler_key_badkw): declare * control.d (FUNCTION, FLET, LABELS): use check_funname() instead of fehler_funname_source() (funname_to_symbol): use check_funname() instead of fehler_funname_type() * eval.d (eval1): use check_funname() instead of fehler_funname_source() (apply, funcall): use check_funname() instead of fehler_funname_type() (fehler_key_unpaarig, fehler_key_notkw, fehler_key_badkw): remove (check_for_illegal_keywords): accept an additional caller arg * record.d (fehler_key_odd): remove (keyword_test): use fehler_key_notkw() and fehler_key_badkw() * trace.lisp (check-function-name): replaces error-function-name (check-traceable): modified to use check-function-name * clos.lisp (documentation): ditto * cmacros.lisp (compiler-macro-function): ditto 2003-05-09 Sam Steingold * type.lisp (%the): ANSI compliance: following issue 348, ignore discrepancies between the number of values and types 2003-05-09 Sam Steingold * compiler.lisp (compile-toplevel-form): do not write the result of (COMPILE ... NIL) into the FAS files (e.g., (eval-when (eval)) should not produce any test in the FAS file) 2003-05-09 Jörg Höhle * inspect.lisp (with-http-output): fix --without-unicode to send Content-type: text/html without charset. 2003-05-07 Sam Steingold * encoding.d (ENCODING-LINE-TERMINATOR): new function * init.lisp (ENCODING-LINE-TERMINATOR): exported from EXT * constsym.d, subr.d (encoding_line_terminator): add 2003-05-07 Sam Steingold replace fehler_encoding() with check_encoding() * error.d (check_encoding): new function, based on test_external_format_arg() in stream.d (fehler_encoding): remove * lispbibl.d (check_encoding, fehler_encoding): ditto * foreign.d (CALL-WITH-FOREIGN-STRING): use check_encoding() instead of fehler_encoding() * encoding.d (CHARSET-TYPEP, ENCODING-CHARSET, CHARSET-RANGE) (SET-DEFAULT-FILE-ENCODING, SET-PATHNAME-ENCODING) (SET-TERMINAL-ENCODING, SET-FOREIGN-ENCODING, SET-MISC-ENCODING) (CONVERT-STRING-FROM-BYTES, CONVERT-STRING-TO-BYTES): ditto * stream.d (test_external_format_arg): turned in to a macro that calls check_encoding() 2003-05-06 Jörg Höhle * ffcall/avcall/avcall.h.in (av_overflown): add this macro to check when buffer[AV_ALIST_WORDS] is too small for av_call() * foreign.d (FOREIGN-CALL-OUT): use it (bug#654718) 2003-05-05 Sam Steingold * backquote.lisp (bq-vec-expand): fix the unoptimized case * compiler.lisp (compile-file): finish listing-stream with a newline (compile) [CLISP-DEBUG]: bind *FORM* for TRACE (bug#731248) * control.d (UNWIND-TO-DRIVER): call unwind_upto() before driver() (bug#731251) 2003-05-05 Sam Steingold fix bug#732767: STRING-INFO does not work with displaced strings * charstrg.d (STRING-INFO): handle displaced strings 2003-05-05 Sam Steingold fix bug#732656: (proclaim '(notinline ...)) ignored * control.d (PROCLAIM): fix STACK indexing for (NOT)INLINE 2003-05-04 Sam Steingold * spvw_debug.d (bt_out): extracted from back_trace_out() (back_trace_out): use it (back_trace_depth, back_trace_out): fully check for circularities 2003-05-04 Sam Steingold * stream.d (var_stream): check whether the stream is open [broken since 2002-04-01] 2003-05-03 Sam Steingold * acorn.d, amiga.d, unix.d (stderr_handle): add * amigaaux.d (init_amiga): initialize it 2003-05-03 Sam Steingold * lispbibl.d (STACK_register) [__GNUC__ >= 3]: disable. This is a workaround for a GCC3 bug(s?) which manifest itself in CLISP bug#710737: CLISP+readline = core dump and bug#723097: cast to char array crashes. 2003-05-03 Sam Steingold * foreign.d (EXEC-ON-STACK): use UNWIND-PROTECT to always clean up 2003-05-02 Sam Steingold fix bug#729524: ffi:c-struct corrupt * foreign1.lisp (with-name/options): new macro (parse-components, c-struct-constructor, parse-c-type) (deparse-c-type, def-c-struct): C-STRUCT typespec is short again: (C-STRUCT name+opt slots ....) 2003-05-03 Arseny Slobodjuck Sam Steingold * pathname.d (LAUNCH): deobfuscated according to General Line. Supported -1 as return value. use check_string() instead of fehler_string() 2003-05-03 Arseny Slobodjuck Fix msvc (and amiga ?) build. * errwin32.d: add second argument start_driver_p = true to calls. * erramiga.d: same. * win32.d (MyCreateProcess): changed declaration command is LPTSTR, not LPCTSTR. * win32aux.d (MyCreateProcess): same + fix an error in old style declaration (introduced 2003-04-27). 2003-05-02 Sam Steingold * clos.lisp (allocate-instance, shared-initialize) (reinitialize-instance, make-instance): add &key &allow-other-keys to the signature (initial-reinitialize-instance): collect keywords from methods for REINITIALIZE-INSTANCE (in addition to SHARED-INITIALIZE) 2003-05-01 Sam Steingold make some errors recoverable * condition.lisp (report-new-value, report-no-new-value) (report-new-values): remove (prompt-for-new-value): take an optional INSTEAD-P argument (check-type, assert, retry-loop): must cons up the reporter at macroexpansion time (check-value): install restarts and signal the condition * constsym.d (check_value): add * error.d (end_error): may return when the new argument, start_driver_p, is false (fehler): pass true as start_driver_p to end_error() (check_value): new function, calls CHECK-VALUE (fehler_symbol, fehler_string): remove (check_symbol, check_char, check_string): add * errunix.d (OS_error, OS_file_error): pass true as start_driver_p to end_error() * init.lisp (make-condition): pre-draw for clos.lisp * lispbibl.d (check_string, check_symbol, check_char): declare (fehler_symbol, test_symbol, fehler_string): remove * macros2.lisp (report-one-new-value-string) (report-new-values-string): return a format string with 1 argument (report-one-new-value-string-instead): new function (assert): call FORMAT on REPORT-*NEW-VALUE?-STRING * charstrg.d (coerce_ss, coerce_imm_ss, coerce_imm_normal_ss) (string_concat): use check_string() instead of fehler_string() (test_string_limits_ro): ditto - it is now GC-unsafe! (test_char_arg): superseded by check_char() (STANDARD-CHAR-P, GRAPHIC-CHAR-P, CHAR-WIDTH, STRING-CHAR-P) (BASE-CHAR-P, ALPHA-CHAR-P, UPPER-CASE-P, LOWER-CASE-P) (BOTH-CASE-P, DIGIT-CHAR-P, ALPHANUMERICP, CHAR-CODE, CHAR-UPCASE) (CHAR-DOWNCASE, CHAR-INT, CHAR-NAME): use check_char() instead of test_char_arg() (CHAR, STORE-CHAR, SCHAR, STORE-SCHAR): use check_char() instead of test_char_arg() and check_string() instead of fehler_string() * clos.lisp (slot-unbound): use CHECK-VALUE * control.d (fehler_no_value): superseded by ... (check_global_symbol_value): new function (%SYMBOL-VALUE, SYMBOL-VALUE): use check_symbol() instead of test_symbol() and check_global_symbol_value() instead of fehler_no_value() (SYMBOL-FUNCTION, BOUNDP, SPECIAL-OPERATOR-P, BLOCK) (MACRO-FUNCTION, PROCLAIM, RETURN-FROM): use check_symbol() instead of test_symbol() (test_env): use check_value - it is now GC-unsafe! * dirkey.d (test_dir_key): ditto (DIR-KEY-OPEN, DKEY-SEARCH-ITERATOR, init_iteration_node) (DIR-KEY-VALUE, SET-DKEY-VALUE, REG_KEY_DEL): use check_string() instead of fehler_string() * eval.d (SPECIAL-VARIABLE-P): use check_symbol() instead of test_symbol() (sym_value_place, check_local_symbol_value): new functions (sym_value): now a macro that calls sym_value_place() (eval1): use check_local_symbol_value() * foreign.d (FOREIGN-LIBRARY): use check_string() instead of fehler_string() (FOREIGN-LIBRARY-FUNCTION): coerce_ss() makes the stringp() check unnecessary * genclisph.d (fehler_symbol, check_char, fehler_string): remove * i18n.d (SET-CURRENT-LANGUAGE): use check_symbol() instead of test_symbol() and check_string() instead of fehler_string() (GETTEXT, NGETTEXT): use check_string() instead of fehler_string() * misc.d (GETENV, SETENV, REGISTRY, MODULE-INFO): ditto * package.d (MAKE-SYMBOL, test_intern_args): ditto (UNINTERN): use check_symbol() instead of fehler_symbol() * pathname.d (SHELL): treat nil as unbound (SHELL, LAUNCH, DYNLOAD-MODULES) use check_string() instead of fehler_string() * predtype.d (FIND-CLASS): use check_symbol() instead of fehler_symbol() * record.d (SYMBOL-MACRO-EXPAND): use check_symbol() instead of test_symbol() * socket.d (SOCKET-SERVICE-PORT) use check_string() instead of fehler_string() * stream.d (SOCKET-CONNECT): ditto (SYMBOL-STREAM): use check_symbol() instead of test_symbol() * symbol.d (%PUTD, %FIND-SUBR, %PROCLAIM-CONSTANT, GET, %PUTPLIST) (%PUT, REMPROP, SYMBOL-PACKAGE, SYMBOL-PLIST, SYMBOL-NAME): ditto (Symbol_function_checked): remove 2003-05-02 Arseny Slobodjuck improved LAUNCH for win32 * pathname.d (LAUNCH) [WIN32_NATIVE]: add new arguments: :ARGUMENTS, :PRIORITY, changed return value. No longer use MyCreateProcess. (shell_quote, allocate_cons_v) [WIN32_NATIVE && HAVE_SHELL]: new functions. * constsym.d (:ARGUMENTS, :PRIORITY, :HIGH, :NORMAL, :LOW) [HAVE_SHELL]: add new keywords. (:WAIT, :TERMINAL): define only when HAVE_SHELL. * subr.d (LAUNCH): changed declaration. * subrkw.d (LAUNCH): ditto. 2003-05-02 Arseny Slobodjuck * stream.d (create_output_pipe): Fix a cut-and-paste type typo. 2003-04-30 Sam Steingold * compiler.lisp (compile-lambda): accept one more argument - error-when-failed-p - and signal an error when it is T and the compilation failed (compile-form): pass error-when-failed-p NIL to compile-lambda * eval.d (get_closure): pass ewfp T to compile-lambda, thus (:LAMBDA () (DECLARE (COMPILE)) (LET ((:Z T)) :Z)) now errors out instead of returning a weird function object * disassem.lisp (disassemble): pass ewfp NIL to compile-lambda 2003-04-29 Sam Steingold * makemake.in (full): no longer require "rm -rf full" for full to be remade 2003-04-29 Sam Steingold fix --without-unicode build * spvw_debug.d (string_out) [!UNICODE]: implement * stream.d (rd_ch_array_unbuffered, wr_ch_array_unbuffered_unix) (wr_ch_array_unbuffered_mac, wr_ch_array_unbuffered_dos) (wr_ch_array_buffered_unix) [!UNICODE]: add a cast * inspect.lisp (*http-encoding*) [-UNICODE]: do not pass :CHARSET to MAKE-ENCODING * foreign1.lisp (with-foreign-string) [-UNICODE]: no CUSTOM:*FOREIGN-ENCODING* without UNICODE * foreign.d (CALL-WITH-FOREIGN-STRING) [!UNICODE]: * encoding.d (MAKE-ENCODING) [!UNICODE]: NIL charset is passed when initializing O(default_file_encoding); handle that 2003-04-29 Sam Steingold fix bug#729456: --with-readline is silently ignored * makemake.in: fail when --with-readline is supplied but configure does not find a working readline 2003-04-29 Jörg Höhle * foreign1.lisp: add FFI:WITH-C-PLACE, FFI:C-VAR-OBJECT 2003-04-28 Jörg Höhle partially restored support for --without-unicode * encoding.d (EXT:ENCODING-CHARSET): only with #+UNICODE * subr.d, constsym.d: likewise * stream.d (rd_ch_array_unbuffered): typo 2003-04-28 Jörg Höhle * foreign.d (SETF FFI:VALIDP): prevent from invalidating unique session FFI pointer 2003-04-28 Jörg Höhle * stream.d (stream_lend_handle): strm_keyboard_handle only present when #define KEYBOARD 2003-04-27 Arseny Slobodjuck Implement extended program launcher in win32. * constsym.d (LAUNCH, :terminal): add. * win32.d (MyCreateProcess): add error-stream to declaration. * win32aux.d (MyCreateProcess): implement this addition. * pathname.d (SHELL) [WIN32_NATIVE]: usage of MyCreateProcess corrected. (MyDupHandle) [WIN32_NATIVE]: new helper function. (LAUNCH) [WIN32_NATIVE]: the launcher. * stream.d (sync_file_buffered): new function. (create_input_pipe, create_output_pipe, create_io_pipe): usage of MyCreateProcess corrected. (stream_lend_handle): new function to lend the handles. * subr.d (LAUNCH) [WIN32_NATIVE]: add. * subrkw.d (LAUNCH) [WIN32_NATIVE]: add. 2003-04-26 Sam Steingold * clos.lisp (finalize-instance-standard-class): use DOLIST instead of MAPC (def-unbound): fix the call (broken by the CLASS-ID patch) 2003-04-26 Sam Steingold * array.d (ADJUST-ARRAY): fix a GC-safety bug * eval.d (funcall_iclosure): fix 2 GC-safety bugs * record.d (update_instance): fix 3 GC-safety bugs (keyword_test): fix last patch * control.d (KEYWORD-TEST): ditto 2003-04-26 Sam Steingold * clos.lisp (ensure-class): when either the old definition or the new one is a DEFSTRUCT, just discard the old definition altogether 2003-04-26 Stefan Kain * floatprint.lisp: translated all comments 2003-04-26 Sam Steingold fix bug#726286: (load :compiling t) redefinition warnings * clos.lisp (setf find-class): always call CHECK-REDEFINITION * init.lisp (check-redefinition): handle LOAD :COMPILING T; always reset SYS::FILE indicator to the new value * places.lisp (define-setf-expander, defsetf): call CHECK-REDEFINITION at definition time, not macroexpansion time 2003-04-25 Sam Steingold fix bug#726282: read_form() botches STACK * debug.d (read_form): make sure to unbind *TERMINAL-READ-STREAM* 2003-04-25 Sam Steingold * lispbibl.d (STACKCHECKB): when non-0, check that we are unwinding a binding frame for the correct symbol (dynamic_unbind): accept a symbol argument (dynamic_unbind_g): same as old dynamic_unbind() * debug.d, error.d, eval.d, io.d, predtype.d, spvw_language.d: pass the symbol argument to dynamic_unbind() whenever possible 2003-04-25 Jörg Höhle * foreign.d (convert_to_foreign): accept FOREIGN-VARIABLE object for C-POINTER c-type declaration and move often used cases up in the long if-then-else chain * foreign1.lisp (allocate-shallow): fix typo, and export FOREIGN-POINTER 2003-04-22 Sam Steingold * _distmakefile, makemake.in: distribute clisp.ps and put it into lispdocdir together with clisp.html and clisp.dvi 2003-04-22 Sam Steingold implement adjusting of non-adjustable arrays (Issue 5) * lispbibl.d (X3J13_003): remove undef * array.d (array_atype): new function (array_element_type, test_displaced): use it (ADJUST-ARRAY): when the argument is not adjustable, return a fresh array 2003-04-22 Jörg Höhle * stream.d (lisp_completion): fix misplaced end_callback() * encoding.d (init_encodings_2), constsym.d: complete patch for CHARSET:WINDOWS-1255 and -1258 * ChangeLog: use users.sourceforge e-mail (hide other) 2003-04-21 Sam Steingold * io.d (ANSI-PATHNAME-READER): understand Allegro CL #P(...) syntax which is equivalent to our #S(PATHNAME ...) syntax 2003-04-21 Sam Steingold EQUALP on HASH-TABLEs now correctly descends the structure * predtype.d (hash_table_equalp): new function (equalp): use it to compare hash-tables 2003-04-21 Sam Steingold * spvw_fault.d, spvw_genera1.d, spvw_genera2.d, spvw_genera3.d: * spvw_heap.d, spvw_memfile.d (memdump_header, memdump_page) (memdump_physpage_state, memdump_reloc_header, old_new_pointer) (physpage_state, walkstep_fun, gc_data_list): appended "_t" to type names; use MALLOC * lispbibl.d (MALLOC): new macro 2003-04-21 Sam Steingold * control.d (KEYWORD-TEST): treat :ALLOW-OTHER-KEYS NIL correctly * record.d (keyword_test): ditto * eval.d (fehler_key_badkw): sync the message with the above 2003-04-21 Sam Steingold * defmacro.lisp (analyze1): &WHOLE argument may be a pattern too (analyze-key): permit patterns as &KEY arguments (broken on 2003-03-25) 2003-04-21 Sam Steingold * defmacro.lisp (make-macro-expansion): the environment argument in MACRO-FUNCTION is not optional but required * init.lisp (backquote, bq-nconc, defmacro): ditto 2003-04-20 Sam Steingold * m4/rusage.m4 (CL_RUSAGE): use time(2) instead of a constant loop: the Moore's law has caught up with this constant already * m4/rlimit.m4 (CL_RLIMIT): check getrlimit() too * posixmisc.d (RESOURCE-USAGE-LIMITS-INTERNAL): respect HAVE_SYS_RESOURCE_H, HAVE_GETRUSAGE and HAVE_GETRLIMIT 2003-04-20 Sam Steingold * package.d (make_present): if symbol is homeless, set its home this takes care of the Issue 194 * clos.lisp (setf find-class): allow nil as the new-value this takes care of the Issue 304 2003-04-19 Sam Steingold * spvw.d (main): when loading clisprc, use MAKE-PATHNAME :DEFAULTS instead of MAKE-PATHNAME + MERGE-PATHNAMES 2003-04-19 Sam Steingold * defmacro.lisp (kwd-arg-form): new function (analyze-key): use it, this fixes the 2003-03-25 patch which treated NIL keyword arguments as unsupplied 2003-04-18 Sam Steingold * condition.lisp (expand-restart-case): associate when ERROR-OF-TYPE this takes care of the item (6) in Issue 76 (break): bind *DEBUGGER-HOOK* to NIL this takes care of the Issue 91 * clos.lisp (DOCUMENTATION): accept STRUCTURE-OBJECTs and STANDARD-OBJECTs - this takes care of the Issue 135 * compiler.lisp (compile-file): accept :EXTERNAL-FORMAT argument, as per Issue 155 2003-04-18 Sam Steingold * stream.d (broadcast_stream_last): new function (BUILT-IN-STREAM-ELEMENT-TYPE): fix a crash with SYNONYM-STREAM pointing to a non-built-in stream; handle BROADCAST-STREAM as per Issue 21 (STREAM-EXTERNAL-FORMAT): ditto 2003-04-16 Sam Steingold * loadform.lisp (mlf-unquote): remove (mlf-init-function): use SUBLIS instead of MLF-UNQUOTE Reported by Christophe Rhodes 2003-04-18 Sam Steingold * backquote.lisp (eval-self-p): T evaluates to itself too (maybe-unquote): new function - the dual for MAYBE-QUOTE (bq-optimize-append): avoid consing up BUTLAST twice; do not destructively modify input lists (suggested by Kaz) (bq-optimize-list*): call MAYBE-UNQUOTE instead of the obsolete BQ-DROP-SUPERFLUOUS-QUOTES (bq-drop-superfluous-quotes): remove 2003-04-10 Kaz Kylheku * backquote.lisp (bq-optimize-vec): New function. (bq-vec-expand): Use it if optimization is turned on. 2003-04-18 Sam Steingold * encoding.d (init_encodings_2): unintern CHARSET:WINDOWS-1255 and CHARSET:WINDOWS-1258 when CHARSET:CP1255 and CHARSET:CP1258 are void Reported by Jörg Höhle 2003-04-18 Sam Steingold * reploop.lisp (make-xterm-io-stream) [UNIX]: new function * clos.lisp (need-gf-already-called-warning-p): new function (warn-if-gf-already-called): use it (std-remove-method): use it and not warn on removing methods when *WARN-IF-GF-ALREADY-CALLED* is NIL 2003-04-17 Sam Steingold implement RFE#723360: restart keyword commands in debugger * reploop.lisp (break-loop): use restart name as the command and :Rnum as the abbreviation; re-align help messages 2003-04-06 Sam Steingold * constobj.d: add hs_simple_nilvector and hs_nilvector * predtype.d: add enum_hs_simple_nilvector and enum_hs_nilvector (heap_statistics_mapper): count (VECTOR NIL) objects separately 2003-04-06 Sam Steingold implement ANSI CLOS class forward definition * clos.lisp (defclass): do not require that the parents exist (*finalizing-now*): new variable (class-finalize): new function (ensure-class): consider the class to exist already only if it has been finalized (finalize-instance-standard-class): move all finalizations here (initialize-instance-standard-class): call it (print-object): when printing a class object, print its finalization status and the number of redefinitions (class-finalized-p, finalize-inheritance): new MOP generics * constsym.d (CLASS-FINALIZE): add * inist.lisp (class-prototype, class-finalized-p) (finalize-inheritance): re-export from EXT * record.d (do_allocate_instance, %MAKE-INSTANCE): call CLASS-FINALIZE when the CLASS-PRECEDENCE-LIST is void 2003-04-05 Sam Steingold Implement ANSI CL ENSURE-GENERIC-FUNCTION * clos.lisp (ensure-generic-function): new generic function (*gf-warn-on-removing-all-methods*): remove (do-defgeneric): do not remove the existing methods; check signature congruence instead (make-instance-standard-class, make-instance-structure-class): use (SETF FDEFINITON) instead of DEFUN: this avoids 2 warnings, and should speed things up a tiny little bit * init.lisp (ensure-generic-function): export 2003-04-04 Sam Steingold * pprint.lisp (pprint-logical-block): avoid a package-lock cerror Reported by Christophe Rhodes 2003-04-04 Sam Steingold * compiler.lisp (c-EVAL-WHEN): use FCASE; correctly handle :EXECUTE/non-top-level; :EXECUTE is now _NOT_ the same as EVAL 2003-04-04 Sam Steingold * macros1.lisp (fcase): DEFMACRO, not DEFMACRO-SPECIAL so that it will also work in interpreted code 2003-04-04 Sam Steingold implement MAKE-INSTANCES-OBSOLETE and UPDATE-INSTANCE-FOR-REDEFINED-CLASS * clos.lisp (class): add slot ID - the number of class redefinitions (standard-class): add slot PREVIOUS-DEFINITION (obsolete-class): remove function (slot-difference): new function (ensure-class): call MAKE-INSTANCES-OBSOLETE instead of OBSOLETE-CLASS and allow non-trivial class redefinitions (initialize-instance-standard-class, ): INSTANCE-SIZE now starts with 2 because of ID (initialize-instance-built-in-class): new function (make-instance-built-in-class): use it (*dynamically-modifiable-generic-function-names*): add UPDATE-INSTANCE-FOR-REDEFINED-CLASS (update-instance-for-different-class): use SLOT-DIFFERENCE (make-instances-obsolete, update-instance-for-redefined-class): new generic functions (change-class): pass T as the third argument of %CHANGE-CLASS * lispbibl.d (Class): add slots class_id and previous_definition (Instance): add slot inst_cl_id (instance_valid_p, check_instance): new macros (instanceof): call check_instance() * constsym.d (UPDATE-INSTANCE-FOR-REDEFINED-CLASS): add * hashtabl.d (sxhash_atom): call check_instance() (SXHASH): seclass_default bacause of that * init.lisp (update-instance-for-redefined-class) (make-instances-obsolete): export * predtype.d (TYPE-OF, CLASS-OF): call check_instance() * record.d (class_of): ditto (ALLOCATE-STD-INSTANCE): INSTANCE-SIZE now starts with 2 because of ID (%CHANGE-CLASS): accept 3rd argument do-copy-t (update_instance): new function * subr.d (SXHASH): seclass_default (%CHANGE-CLASS): 3 arguments 2003-04-02 Sam Steingold * lispbibl.d, dfloat.d, ffloat.d: check DOUBLE_DIV0_EXCEPTION &c with defined(), not the value itself, since, as per unixconf.h, they are either defined to 1 or not defined at all 2003-04-02 Sam Steingold New generic function CLOS:CLASS-PROTOTYPE from MOP * clos.lisp (class-prototype): implement, exported from CLOS - but _not_ from COMMON-LISP (standard-class): add slot PROTO * lispbibl.d (Class): ditto 2003-04-01 Sam Steingold implement arrays with ARRAY-ELEMENT-TYPE NIL * array.d (eltype_code): return Atype_NIL for NIL argument (fehler_retrieve): new function (storagevector_aref, storagevector_store, elt_fill) (VECTOR-PUSH-EXTEND): barf on (VECTOR NIL) (fehler_store): use less stack (array_element_type): return NIL for Array_type_(s)nilvector (elt_copy, elt_move, test_displaced, MAKE-ARRAY): handle (VECTOR NIL) * defseq.lisp: add (VECTOR NIL), named "0" * io.d (ARRAY-READER): read #A(NIL dims) (pr_vector): print (ARRAY NIL) as #A(NIL dims) (pr_orecord): print Rectype_(S)nilvector with pr_vector() * lispbibl.d (Rectype_nilvector): new type, replaces rectype_unused1 (Rectype_Snilvector): new record type (arrayflags_atype_mask): 15 now (Atype_NIL): new type (Array_type_nilvector, Array_type_snilvector): new array types (vectorp, simplep, array_simplep, simple_string_p, stringp) (arrayp): adjusted to use symbolic Rectype_* (if_recordp): add Rectype_(S)nilvector (case_Rectype_Snilvector_above, case_Rectype_nilvector_above): add (case_Rectype_array_above): add Rectype_(S)nilvector (allocate_nilvector): declare * sequence.d (valid_type1, get_seq_type): handle (VECTOR NIL) * spvw_circ.d (get_circ_mark, get_circ_unmark, subst_circ_mark) (subst_circ_unmark): handle (VECTOR NIL) together with other component-less objects * spvw_garcol.d (gc_mark): handle Rectype_Snilvector with down_nopointers() and Rectype_nilvector with down_iarray() * spvw_genera1.d (walk_area, build_old_generation_cache): handle Rectype_Snilvector with bitvectors and numbers and Rectype_nilvector with iarrays * spvw_objsize.d (objsize): handle Rectype_(S)nilvector * spvw_typealloc.d (allocate_nilvector): implement * spvw_update.d (update_varobject): handle Rectype_(S)nilvector * type.lisp (upgraded-array-element-type): return NIL for NIL arg 2003-04-01 Kaz Kylheku Sam Steingold Brand new, from-scratch backquote implementation. * constsym.d (reading_array): New variable, corresponds to system::*reading-array*. (reading_struct): New variable, corresponds to system::*reading-struct*. (backquote_reader, comma_reader): Associate these objects with the symbol names of the new backquote reader functions. * init.lisp: Load new-backquote module rather than backquote. (bq-conc): New macro in SYSTEM package. (backquote): Macro rewritten to call the new backquote expander, rather than regurgitate the second argument. * io.d (init_reader): Define the variables *reading-array* and *reading-struct*. (read_top): Bind *reading-struct* and *reading-aray* to NIL. (structure_reader): Bind *reading-struct* to T. Do not bind *backquote-level* to NIL. (array_reader): Bind *reading-array* to T. Do not bind *backquote-level* to NIL. (pr_list_bothsplice): Adjust pretty-printer to new, simplified syntax for SPLICE and NSPLICE. * backquote.lisp: Rewrote from scratch. 2003-04-01 Sam Steingold Export struct slot accessors * modules/bindings/linuxlibc6/linux.lisp (exporting-slots): new local macro, used for def-c-struct Suggested by Pascal Bourguignon (stdin, stdout, stderr): simple foreign variables (def-c-var) Reported by Jörg Höhle 2003-03-31 Bruno Haible * runprog.lisp (shell-quote) [UNIX]: Handle empty argument correctly. (shell-quote) [WIN32]: Handle argument containing spaces and ending in a backslash correctly. 2003-03-30 Sam Steingold * spvw.d (init_symbol_values): define_variable's *LOAD-COMPILING*, *LOAD-VERBOSE*, *LOAD-PRINT*, *COMPILE-PRINT*. (usage): mention `-v' (main): accept -v(erbose). * constsym.d (*LOAD-PRINT*, *COMPILE-PRINT*): add * _clisp.c: accept -v 2003-03-30 Sam Steingold * regexp.lisp (cflags, eflags): new macros (cflags-max): new constant (regexp-compile): accept extended/case-sensitive/newline/nosub/cflags &key arguments instead of an &optional argument case-sensitive; add a compiler macro to pre-compute cflags when possible (regexp-exec): accept notbol/noteol/eflags &key arguments add a compiler macro to pre-compute eflags when possible (optimize-flags): new function, pre-compute cflags & eflags for compiler macros for the following functions: (match-once, %match, regexp-split): accept both notbol/noteol/eflags and extended/case-sensitive/newline/nosub/cflags &key arguments; add compiler macros to pre-compute cflags & eflags when possible (with-loop-split): accept both notbol/noteol/eflags and extended/case-sensitive/newline/nosub/cflags &key arguments (regexp-quote): accept an &optional extended argument Suggested by Pascal Bourguignon (*system-package-list*): push "REGEXP", i.e., REGEXP is now locked 2003-03-29 Sam Steingold solidified updating back_trace callers [cygwin build fix] * spvw.d (for_all_back_traces): new macro * spvw_update.d (update_back_traces): new macro * spvw_garcol.d, spvw_memfile.d: use it for all updating 2003-03-29 Sam Steingold * condition.lisp (restart-case, with-restarts): macroexpand `restartable-form' to associate the restarts with this condition 2003-03-28 Sam Steingold do not print system structure definitions do print full prototype for built-in functions * foreign.d (C_STRUCT_SLOTS): define to 3 * foreign1.lisp (parse-components, c-struct-constructor): C-STRUCT now has options, so slots start at CDDDR (parse-c-type): init name and options for C-STRUCT (deparse-c-type): extract name and options for C-STRUCT (to-c-typedecl): structures may be :EXTERNAL and :TYPEDEF (finalize-coutput-file): print full prototype for :BUILT-IN functions (def-call-out): recognize :BUILT-IN keyword (note-c-fun): save :BUILT-IN status * modules/bindings/linuxlibc6/linux.lisp (exporting): struct name maybe a list of name and options (div_t, ldiv_t): :TYPEDEF (cosf, sinf, sqrtf, fabsf): BUILT-IN (passwd): :EXTERNAL after "#include " (group): :EXTERNAL after #include " Based on a patch by Dan Knapp 2003-03-27 Sam Steingold * stream.d (history_last): new function (rd_ch_terminal3): use it instead of where_history()/previous_history() &c &c 2003-03-26 Sam Steingold * condition.lisp (restart): use CLOS:PRINT-OBJECT (print-restart): remove (applicable-restart-p): CONDITION may be NIL (compute-restarts, find-restart): even when CONDITION is NIL, APPLICABLE-RESTART-P has to be called (with-simple-restart): fix the optimized case 2003-03-25 Sam Steingold * defmacro.lisp (get-supplied-p): new function (analyze-key, analyze1): use it (analyze-key): do not evaluate the init form when the argument has been supplied Reported by Christophe Rhodes 2003-03-24 Sam Steingold * package.d (SYMBOL-VALUE-LOCK): return T only when the package is locked (helps SBCL bootstrap) 2003-03-22 Sam Steingold * configure (--edit-config): new option (for --build & --install) 2003-03-18 Sam Steingold * spvw.d (main): allow multiple -x options -repl forces REPL after -c/-x/exec option "--" terminates option processing; set *ARGS* earlier * _clisp.c (main): "-r" for "-repl" 2003-03-14 Sam Steingold function (SETF FFI:VALIDP) invalidates foreign objects * foreign.d (SET-VALIDP): implement * foreign1.lisp (validp): add a defsetf * subr.d, constsym.d (set_validp): add 2003-03-14 Sam Steingold extract and modify the FOREIGN-POINTER anchor * foreign.d (foreign_pointer_strict): new function (FOREIGN-POINTER, SET-FOREIGN-POINTER): implement (foreign_address): barf on non-foreign and possibly on FOREIGN-POINTER * foreign1.lisp (foreign-pointer): add a defsetf * lispbibl.d (Faddress): fa_offset is signed * subr.d, constsym.d (foreign_pointer, set_foreign_pointer): add 2003-03-12 Sam Steingold * makemake.in: win32msvc mean either msvc4 or msvc5 or msvc7 (.NET) * Makefile.devel (makefiles): add win32msvc/makefile.msvc7 (win32msvc/makefile.msvc7): new target * win32.d: undef `unused' around `#include ' for MSVC Suggested by Jay Kint 2003-01-31 Jörg Höhle patch#678216: FFI:WITH-FOREIGN-STRING * foreign.lisp (with-foreign-string): store string on C stack using any encoding * foreign.d (call_with_foreign_string): ditto * subr.d, constsym.d (call_with_foreign_string): add * type.lisp (encoding-zeroes): how many terminating \0 bytes does one expect when working with character of encoding X? 4 for UTF-32, 2 for UTF-16, 1 for UTF-8 or ISO-8859-1 etc. * encoding.d (fehler_encoding): moved to error.d * lispbibl.d (fehler_encoding): prototype 2003-03-11 Sam Steingold add EXT:MODULE-INFO for module information extraction * spvw_module.d (find_module, modules_names_to_stack): implement * lispbibl.d (find_module, modules_names_to_stack): declared * misc.d (MODULE-INFO): implement * constsym.d, subr.d (module_info): add * init.lisp (MODULE-INFO): export * modules.d (MODULE): cannot use STRING() because module_name may be a CPP macro, e.g., for the "linux" module, module name was "1" 2003-03-12 Jörg Höhle * time.d (get_real_time) [TIME_WIN32]: use GetSystemTimeAsFileTime(), not ftime() 2003-03-11 Sam Steingold fix bug#543072: make-encoding :input-action on bad input (again) * encoding.d (fehler_buffer_parity): new function (uni16_mblen): check that the input buffer has even length (uni16be_mbstowcs, uni16le_mbstowcs): barf when the input has an odd number of bytes (use fehler_buffer_parity) (uni32be_mblen, uni32le_mblen): check that the input buffer length is divisible by 4 (uni32be_mbstowcs, uni32le_mbstowcs): barf when the input length is not divisible by 4 (use fehler_buffer_parity) 2003-03-11 Sam Steingold * foreign.d (fehler_foreign_object, foreign_address) (foreign_pointer): new functions (VALIDP): use foreign_pointer() (FOREIGN-ADDRESS): new function (suggested by Joerg) (FOREIGN-FREE): use fehler_foreign_object() * foreign1.lisp (foreign-value, foreign-address) (foreign-address-unsigned, unsigned-foreign-address): export * subr.d (foreign_address): add (validp, unsigned_foreign_address, foreign_address_unsigned): seclass_read * describe.lisp (describe-object): DEPARSE-C-TYPE is in FFI 2003-03-10 Jörg Höhle Sam Steingold FFI heap allocation interface * foreign.d (FOREIGN-ALLOCATE, FOREIGN-FREE): heap memory (de)alloc * subr.d, subrkw.d, constsym.d (foreign_allocate, foreign_free): add * foreign1.lisp (allocate-deep, allocate-shallow): new macros 2003-03-08 Sam Steingold * list.d (cons_from_stack): new function (CONS, copy_tree, subst, sublis, ACONS): use it (LIST): use listof (APPEND, reverse, nreverse, nreconc, COPY-ALIST, REVAPPEND) (NRECONC, sublis_assoc, memq, PAIRLIS, assoc, rassoc): barf on dotted lists, as per ANSI (memq1): remove * list.d, subr.d (MEMQ): seclass_read * constsym.d (PLIST): add * type.lisp (PLIST): new type * symbol.d (fehler_sym_plist_odd, fehler_plist_odd): type_error (get, GETF, %PUTF, %REMF, GET-PROPERTIES, PUT, REMPROP): barf on dotted plists, as per ANSI 2003-03-07 Arseny Slobodjuck * spvw.d (main) [WIN32_NATIVE]: init SYS::*PRIN-LINELENGTH* to console width - 1. 2003-03-07 Arseny Slobodjuck * pathname.d (assure_dir_exists) [WIN32_NATIVE]: bug fixed: should raise an error when part of directory is an existing file. 2003-03-03 Peter Seibel Sam Steingold * charstrg.d, compelem.d, comptran.d, control.d, dfloat.d, eval.d: * ffloat.d, foreign.d, intdiv.d, intlog.d, intplus.d, intsqrt.d: * io.d, package.d, pathname.d, sfloat.d, socket.d, stream.d: phase-0 of d2c conversion: put braces where C99 requires them 2003-03-01 Sam Steingold * makemake.in: fix the 1.269 (2002-07-19) patch: check LIBTERMCAP and --with-termcap-ncurses after XCFLAGS is set, so that -DNO_TERMCAP_NCURSES is not overridden 2003-02-28 Sam Steingold ANSI CL compliance issues * clos.lisp (generic-function): commented out the macro definition: GENERIC-FUNCTION is a TYPE (and a COMMON-LISP symbol) in ANSI CL, but not a macro, so this definition violates the standard * type.lisp (canonicalize-type): canonicalize MOD, SIGNED-BYTE, and UNSIGNED-BYTE to an inclusive interval * macros2.lisp (times): rename from SPACE because SPACE is an ANSI Common Lisp symbol without a macro definition * init.lisp (times): export from EXT 2003-02-28 Sam Steingold * io.d (PARSE-INTEGER): seclass_read print the error index on badsyntax * subr.d (parse_integer): seclass_read 2003-02-27 Sam Steingold * describe.lisp (describe-object): print additional information for strings (using STRING-INFO) 2003-02-25 Sam Steingold * makemake.in (*.mem): do not dump images if LOAD "init" failed 2003-02-27 Sam Steingold detect side-effect class of some compiled closures * lispbibl.d (cclosure_flags, Cclosure_flags, Cclosure_seclass) (Cclosure_set_seclass): new macros (seclass_t): new enum class (instead of sclass_* bits) (allocate_closure): accept flags argument (allocate_cclosure_copy): ditto (seclass_object): map seclass_t to seclass_* objects * record.d (parse_seclass): new function (%make-closure): accept 4th argument - seclass (CLOSURE-SET-SECLASS): new function for updating the side-effect class of generic functions * constsym.d, subr.d (closure_set_seclass): add * clos.lisp (%make-gf): pass seclass to %MAKE-CLOSURE (std-add-method, std-remove-method): update the side-effect class of the generic function * compiler.lisp (make-closure): pass seclass to %MAKE-CLOSURE (seclass-or): remove (seclass-or-2): rename to SECLASS-OR, handle NIL (seclass-without): handle NIL (anodes-seclass-or, anodelist-seclass-or): reduce consing (f-side-effect): new function: look at *known-functions* before fdefiniton (c-DIRECT-FUNCTION-CALL): update FUNCTION-SIDE-EFFECT call (c-GLOBAL-FUNCTION-CALL): use FUNCTION-SIDE-EFFECT instead of a table (c-NORMAL-FUNCTION-CALL, c-LAMBDABODY, c-MULTIPLE-VALUE-CALL) (c-FUNCALL-NOTINLINE, c-APPLY): check the side-effect class (c-DEFUN, compile-lambdabody, match-known-unknown-functions): keep seclass in *known-functions* (create-fun-obj): pass seclass to MAKE-CLOSURE * type.lisp (class-name): add a temporary definition * control.d (form_constant_p): handle cclosures (FUNCTION-SIDE-EFFECT): return seclass object instead of 3 values; never signal an error, just return (T . T) * eval.d (get_closure): pass the extra arg to allocate_closure() * io.d (CLOSURE-READER): expect seclass before constants (pr_cclosure_lang): print seclass before constants * VERSION, version.h: bump * constobj.d (version): bump (because of %MAKE-CLOSURE) (seclass_no_se, seclass_read, seclass_write, seclass_default): add 2003-02-24 Sam Steingold * compiler.lisp (c-DIRECT-FUNCTION-CALL): use FUNCTION-SIDE-EFFECT instead of an explicit table * control.d (form_constant_p): new function (CONSTANTP): use it; all self-eval forms are constants (ANSI) (FUNCTION-SIDE-EFFECT): implement * constsym.d, subr.d (function_side_effect): add * lispbibl.d (subr_t): new slot `seclass' (instead of the dummy padding) (seclass_foldable, seclass_read, seclass_write, seclass_default) (seclass_no_se): new macros * subr.d (LISPFUN): accept 8 arguments (add seclass); update all declarations * genclisph.d (LISPFUN): ditto * affi.d, array.d, charstrg.d, control.d, debug.d, dirkey.d, * encoding.d, error.d, eval.d, foreign.d, i18n.d, io.d, * lisparit.d, list.d, misc.d, package.d, pathname.d, posixmath.d, * predtype.d, record.d, rexx.d, sequence.d, socket.d, stream.d, * symbol.d, time.d, zthread.d: update all LISPFUN headers 2003-02-23 Sam Steingold * check-lispfun.lisp (get-lisp-def): return the name of the form as well as the arguments as two values (*const-decls*): new variable (get-lisp-defs): take all LISP* forms (check-lisp-defs): exclude *const-decls* files (write-subrs): new function 2003-02-20 Sam Steingold * defs2.lisp (destructuring-error): as per CLHS 3.5.1.7, signal a PROGRAM-ERROR, not an ERROR 2003-02-17 Sam Steingold * charstrg.d (hex_table): const * spvw_debug.d (hex_table): const * spvw_memfile.d (memflags): const * stream.d (vktable, attr_table): const * encoding.d, utils/unicode/nls_table.c: rename nls_table to nls_table_t * spvw_alloca.d: rename malloca_header to malloca_header_t * spvw_multimap.d: rename mmap_interval to mmap_interval_t 2003-02-17 Sam Steingold * type.lisp (encoding-charset): remove (this completes the 2002-05-21 patch) 2003-02-16 Sam Steingold * type.lisp (with-interval-designators): new macro (interval-mix, interval-mix-not, canonicalize-type, subtypep): use it 2003-02-16 Sam Steingold * cmacros.lisp (define-compiler-macro): pass non-NIL as the 3rd argument of SYS::CHECK-REDEFINITION only when actually redefining * clos.lisp (analyze-method-description): ditto 2003-02-15 Sam Steingold * defstruct.lisp (defstruct): permit keywords as structure names 2003-02-15 Arseny Slobodjuck * makemake.in (CFLAGS) [win32msvc]: do not use optimization when debugging. Use enviroinment variable MSVCDIR to avoid manual editing. * win32msvc/makefile.msvc5d - new file - MSVC debug makefile. * Makefile.devel (win32msvc/makefile.msvc5d): new target. 2003-02-14 Sam Steingold never compare types using EQUAL! * type.lisp (interval-mix): handle integers better by making AND intervals inclusive and OR intervals exclusive (interval-mix-not, simplify-and-or): new functions (canonicalize-type): (MEMBER 1 2 3) --> (INTEGER 1 3) (subtypep): types staring with AND, OR &c are undecidable 2003-02-14 Sam Steingold * macros2.lisp (typecase): OTHERWISE must be the last clause to be considered an "otherwise clause" 2003-02-14 Sam Steingold fix bug#678194: symbol-macrolet not always expanded * eval.d (parse_dd): do not macroexpand the potential declarations and docstrings (as per ANSI CL) 2003-02-13 Sam Steingold * stream.d (create_input_pipe, create_output_pipe, create_io_pipe): wrap child creation in begin_want_sigcld()/end_want_sigcld(), just like it is done in EXECUTE Reported by Kaz Kylheku (MAKE-STRING-PUSH-STREAM): fix error message arguments 2003-02-13 Sam Steingold * io.d (PARSE-INTEGER): signal a PARSE-ERROR on bad syntax and report only the substring being parsed, not the whole string Reported by Jörg Höhle 2003-02-13 Sam Steingold fix bug#685855: ext:string-width ignores :start * charstrg.d (STRING-WIDTH): start with :START, not 0 * stream.d (MAKE-STRING-INPUT-STREAM): respect both index and offset 2003-02-10 Sam Steingold Do not treat #\/ in logical pathnames as #\; * pathname.d (lslashp): reintroduced (slashp): remove (parse_logical_word, parse_logical_pathnamestring): use lslashp() instead of slashp() (PARSE-NAMESTRING): use pslashp() instead of slashp() (ensure_last_slash): check both pslashp() and lslashp() 2003-02-09 Sam Steingold * debug.d (break_driver): unbind *TERMINAL-READ-OPEN-OBJECT*, just like *TERMINAL-READ-STREAM* * reploop.lisp (break-loop): ditto 2003-02-09 Sam Steingold * modules/bindings/linuxlibc6/linux.lisp (__ctype_get_mb_cur_max): returns size_t (errno): commented out (neither method works) (initstate, setstate): statebuf is a C-STRING, not a C-POINTER (seed48): seed16v is a C-ARRAY, not a (C-PTR (C-ARRAY ...)) (unsetenv): return int (realpath): return C-STRING (execv, execve, execvp): add Thanks to Dan Knapp, John K. Hinsdale, and Jörg Höhle. 2003-02-09 Sam Steingold fix EXT:MAPLAP, EXT:MAPCAP, MAPCAN and MAPCON in compiled code * compiler.lisp (copy-list-lax): new inline function (c-MAP-on-CARs, c-MAP-on-LISTs): use forward consing for EXT:MAPLAP, EXT:MAPCAP, MAPCAN and MAPCON 2003-02-08 Sam Steingold brought EXT:MAPLAP and EXT:MAPCAP in line with MAPCAN and MAPCON * control.d (set_last_inplace, set_last_copy): new functions (MAPCAN_MAPCON_BODY): accept `append_function' arg (MAPCAN, MAPCON): pass it (MAPCAP, MAPLAP): implement using MAPCAN_MAPCON_BODY() * constsym.d, subr.d (mapcan, mapcon): add * init.lisp (MAPCAP, MAPLAP): export * macros1.lisp (MAPCAP, MAPLAP): remove 2003-02-07 Sam Steingold MAPCAN and MAPCON now correctly handle functions returning ATOMs * control.d (MAPCAR_MAPLIST_BODY) [!MAP_REVERSES]: do not create an extra cons; this is now the default method (MAPCAN_MAPCON_BODY) [MAP_REVERSES]: remove (cannot handle ATOMs) [!MAP_REVERSES]: do not create an extra cons see also the 2002-11-28 loop.lisp patch 2003-02-07 Sam Steingold * list.d (endp): made global * lispbibl.d (endp): add the prototype * control.d (ENDP): remove (MAPCAR_MAPLIST_BODY, MAPC_MAPL_BODY, MAPCAN_MAPCON_BODY): use endp() instead of ENDP 2003-02-06 Sam Steingold * spvw_debug.d (nobject_out): return the object argument (back_trace_out): use STACK_item_count() instead of STACK_diff() * spvw.d (main): ditto * lispbibl.d (nobject_out): update the prototype (STACK_diff): remove 2003-02-05 Sam Steingold turned FCASE into a special form, just like CASE * macros1.lisp (fcase): defmacro-special * compiler.lisp (c-form-table): FCASE --> c-CASE (c-CASE): handle FCASE 2003-02-04 Sam Steingold * clos.lisp (class): new slot DIRECT-SUBCLASSES (obsolete-class): new function (ensure-class): use it (initialize-instance-standard-class, make-instance-built-in-class) (initialize-instance-structure-class): update DIRECT-SUBCLASSES of the DIRECT-SUPERCLASSES of this class * lispbibl.d (Class): new slot direct_subclasses * clos.lisp (class-and): new function * type.lisp (canonicalize-type): use it 2003-02-04 Sam Steingold * type.lisp (type-class, %standard-char-p) (valid-interval-designator-p, interval-mix): new functions (STANDARD-CHAR): use %STANDARD-CHAR-P to define (canonicalize-type): STANDARD-CHAR -> use %STANDARD-CHAR-P to avoid errors AND/OR -> more rigorous attempts to simplify REALs -> check interval designators CONS -> check components 2003-02-04 Sam Steingold * array.d (bit_up): fix a GC-safety bug: allocation invalidates dimptr (a pointer inside an Iarray structure) [this bug have never triggered before because, as the 2003-01-31 indicates, this code has never been used since it was written!] 2003-02-04 Jörg Höhle Sam Steingold fix bug#679661: FFI segfault passing struct arrays * foreign.d (count_walk_pre): C-ARRAY-PTR should reserve room for the array argument 2003-02-03 Sam Steingold EXT:XOR checks that exactly one of its arguments is non-NIL * control.d (XOR): implement * init.lisp (XOR): exported * constsym.d, subr.d (xor): add 2003-02-02 Sam Steingold * spvw_debug.d (nobject_out): handle pathnames and some special objects, like `nullobj' and `unbound'; fflush out; do not print package prefix for keywords 2003-02-01 Sam Steingold * io.d (read_delimited_list): fix a crash introduced by the 2003-01-21 "multiple forms on one line" patch: need to unbind *TERMINAL-READ-OPEN-OBJECT* even if *TERMINAL-READ-STREAM* changed 2003-01-31 Sam Steingold * type.lisp (typep, subtypep): accept &optional environment, as per ANSI CL spec * compiler.lisp (c-TYPEP): ditto 2003-01-31 Sam Steingold * array.d (bit_up): fix multi-dimensional array handling 2003-01-31 Sam Steingold fix bug#678105: unchecked :start/end in ext:convert-string-from/to-bytes * encoding.d (CONVERT-STRING-FROM-BYTES): use test_vector_limits() to check :START/:END arguments (CONVERT-STRING-TO-BYTES): use test_string_limits_ro() to check :START/:END arguments * charstrg.d (test_vector_limits): extracted from test_string_limits_ro() (test_string_limits_ro): use it * lispbibl.d (test_vector_limits): declare 2003-01-29 Sam Steingold SOCKET-STATUS on lists does not have to cons * stream.d (parse_sock_list): new function (handle_set, handle_isset): use it (SOCKET-STATUS): do not cons if the list provides places for the STATUS return the number of actionable streams as the second values 2003-01-29 Sam Steingold upgraded to autoconf-2.57 * Makefile.devel, ffcall/Makefile.devel (AUTOCONF_VERSION): remove (AUTOCONF, AUTOCONF_CACHE): do not depend on it 2003-01-25 Sam Steingold * stream.d (handle_isset): increased granularity of SOCKET-STATUS: distinguish between EOF and INPUT for READ 2003-01-28 Arseny Slobodjuck * m4/as-underscore.m4, ffcall/m4/as-underscore.m4 (CL_AS_UNDERSCORE) [__cplusplus]: declare test function as extern "C". 2003-01-24 Sam Steingold READ-BYTE-SEQUENCE now accepts :NO-HANG keyword argument * stream.d (rd_by_array_Pseudofun, rd_by_array_error) (rd_by_array_dummy, read_byte_array, rd_by_array_synonym) (rd_by_array_concat, rd_by_array_twoway, rd_by_array_echo) (strm_unbuffered_extrafields_t/low_read_array) (low_read_array_unbuffered_handle, rd_by_array_iau8_unbuffered) (strm_buffered_extrafields_t/low_fill, low_fill_buffered_handle) (buffered_nextbyte, read_byte_array_buffered) (rd_by_array_iau8_buffered, low_read_array_unbuffered_socket) (low_fill_buffered_socket): accept no_hang (listen_handle): extracted from low_listen_unbuffered_handle() (low_listen_unbuffered_handle): use listen_handle() (rd_by_aux_iax_unbuffered, rd_ch_array_unbuffered): pass no_hang=false to UnbufferedStreamLow_read_array()() (buffered_writebyte, position_file_buffered) (write_byte_array_buffered, rd_ch_buffered, listen_char_buffered) (rd_ch_array_buffered, position_file_i_buffered) (rd_by_aux_iax_buffered, rd_by_aux_ibx_buffered) (rd_by_aux_icx_buffered, rd_by_iau8_buffered) (listen_byte_ia8_buffered, WRITE_LAST_BYTE, wr_by_aux_ib_buffered) (wr_by_aux_ic_buffered, logical_position_file_end) (make_file_stream): pass no_hang=false to buffered_nextbyte() (READ-N-BYTES, READ-INTEGER, READ-FLOAT): pass no_hang=false to read_byte_array() * pathname.d (copy_file_low): ditto * sequence.d (READ-BYTE-SEQUENCE): accept :NO-HANG * subr.d, subrkw.d (READ-BYTE-SEQUENCE): ditto * gray.lisp (STREAM-READ-BYTE-SEQUENCE): ditto * constsym.d (:NO-HANG): add * unix.d (sock_read): define to read_helper(,,,true) 2003-01-23 Sam Steingold * lispbibl.d (arrayrank_limit_1): set to lp_limit_1 because array_dimensions() pushes the dimensions on the STACK 2003-01-23 Sam Steingold * type.lisp (upgraded-array-element-type): accept an &optional environment argument, as per ANSI CL (subtypep): fix a typo (quote '(and)) 2003-01-23 Sam Steingold * _clisp.c (main): -B specifies where -K is looked for * spvw.d (main): --help prints *CURRENT-LANGUAGE* and *LIB-DIRECTORY* 2003-01-21 Sam Steingold permit multiple forms in one line of interactive input * reploop.lisp (break-loop): makunbound *TERMINAL-READ-STREAM* when clearing *DEBUG-IO* * debug.d (break_driver): ditto (read_form): do not discard unprocessed input after the first form in the first line (in *TERMINAL-READ-STREAM*) 2003-01-21 Mirian Crzig Lennox * backquote.lisp, defmacro.lisp: translated all comments 2003-01-19 Arseny Slobodjuck Make clisp compiling on cygwin with g++ * avl.d (AVL(AVLID,delete1)): legalize goto for CC=g++ * spvw_garcol.d (free_some_unused_pages): explicit typecast * spvw_allocate.d (make_space_gc): modern definition, explicit typecast * lispbibl.d: don't define setjmp, longjmp as _setjmp, _longjmp * spvw_memfile (offset_pages_t): new type (loadmem_from handle): use it in explicit typecast 2003-01-16 Bruno Haible * lispbibl.d (allocate_weakkvt): DON'T USE LOCAL VARIABLES OF TYPE gcv_object_t. * hashtabl.d (prepare_resize): Likewise. * spvw_typealloc.d (allocate_weakkvt_low, allocate_weakkvt): Likewise. 2003-01-16 Sam Steingold do not bind slot names (which may be special variables) in keyword constructors * defstruct.lisp: DS-SLOT vector now has a new slot - VAR (make-ds-slot): init VAR (ds-slot-var): new function (ds-make-constructor-body): accept a GET-VAR argument (ds-make-boa-constructor): pass #'DS-SLOT-NAME to ds-make-constructor-body (ds-make-keyword-constructor): pass #'DS-SLOT-VAR to ds-make-constructor-body 2003-01-14 Stefan Kain * defstruct.lisp: translated all comments 2003-01-14 Sam Steingold * defstruct.lisp (ds-make-constructor-body): optimize LIST structures just like the VECTOR ones 2003-01-12 Sam Steingold * spvw_typealloc.d (reallocate_small_string): do not create the hole (and do not plug it) because both this object and the possible hole/plug will be collected during the next GC 2003-01-09 John Hinsdale * modules/fastcgi/*: new add-in module for FastCGI interface 2003-01-09 Sam Steingold implement CHANGE-CLASS and UPDATE-INSTANCE-FOR-DIFFERENT-CLASS * clos.lisp (change-class, update-instance-for-different-class): implement * init.lisp (change-class, update-instance-for-different-class): export * constsym.d, subr.d (pchange_class): add * lispbibl.d (Rectype_realloc_Instance): new record type (instance_un_realloc): new macro (instancep): handle Rectype_realloc_Instance (instanceof): make into a function and call instance_un_realloc() (case_Rectype_Instance_above): include Rectype_realloc_Instance * hashtabl.d (sxhash_atom): un_realloc instances * predtype.d (TYPE-OF, CLASS-OF): ditto * spvw_garcol.d (GC_MARK, down_record): ditto * io.d (pr_orecord): handle Rectype_realloc_Instance * record.d (class_of, ptr_to_slot): make into a function and call instance_un_realloc() (%CHANGE-CLASS): implement 2003-01-08 Sam Steingold * stream.d (GENERIC-STREAM-P, BUILT-IN-STREAM-OPEN-P) (INPUT-STREAM-P, OUTPUT-STREAM-P, STREAM-ELEMENT-TYPE-EQ): use VALUES_IF 2003-01-06 Sam Steingold some more work on MT: add stubs for functions, WITH-TIMEOUT almost works * zthread.d: new file - for the actual functions implementations (CALL-WITH-TIMEOUT): almost works * thread.lisp: rename threads to processes to comply with CMUCL &c (WITH-TIMEOUT): use CALL-WITH-TIMEOUT * subr.d, constsym.d [MULTITHREAD]: add thread functions * makemake.in: add zthread.d * stream.d (sec_usec): made global for use in zthread.d * lispbibl.d (current_thread): made static (compiles with -g now) * xthread.d (xcondition_timedwait, xthread_cancel): add 2003-01-04 Sam Steingold * hashtabl.d (%SET-HASH-TABLE-WEAK-P): a variable cannot have type gcv_object_t * makemake.in (check-sources): the target fails iff egrep succeeds 2003-01-04 Arseny Slobodjuck Get rid of some scary warnings * stream.d (wr_ch_array_window) [WIN32_NATIVE]: use uintB, not char * win32.d: undef SEEK_SET, SEEK_CUR, SEEK_END before redefining 2003-01-04 Arseny Slobodjuck Fix mingw compilation * pathname.d (resolve_shell_shortcut) [WIN32_NATIVE]: use number instead of missing SLGP_RAWPATH, cast to void - avoid a warning. (TrueName) [WIN32_NATIVE]: inline isalpha. * win32aux.d (MyCreateProcess): fix declaration. (abort): call exit to avoid a warning. 2003-01-03 Stefan Kain * lisparit.d, intelem.d, dfloat.d, lfloat.d: translated all comments 2003-01-03 Arseny Slobodjuck * makemake.in (init): do not include floatparam.h and intparam.h in the init rule for win32. 2003-01-03 Arseny Slobodjuck Fix MSVC compilation without libsigsegv * spvw.d (main) [WIN32_NATIVE]: do not init SP_bound when NO_SP_CHECK - SP_bount is not declared. 2003-01-02 Sam Steingold * lispbibl.d [WIDE_HARD]: treat UNIX_NETBSD on DECALPHA just like UNIX_OSF, UNIX_LINUX and UNIX_FREEBSD From Indrayana Rustandi 2002-12-24 Sam Steingold add VALUE, EITHER and BOTH weak hash tables * hashtabl.d (prepare_resize): weak argument is now an object (check_weak): new function (MAKE-HASH-TABLE, %SET-HASH-TABLE-WEAK-P): use it (hash_lookup): value may be obsoleted too * constobj.d (type_weak_ht): add * constsym.d (Kboth, Keither, Kvalue): add * io.d (pr_orecord): print ht_weak() for weak hash tables (pr_weakkvt): print wkvt_type * lispbibl.d (ht_weak): new macro (weakkvt_t): add wkvt_type slot * spvw_garcol.d (gar_col_normal): handle the new types of weak hash tables * spvw_typealloc.d (allocate_weakkvt, allocate_weakkvt_low): accept a second argument - the wkvt_type 2002-12-24 Sam Steingold * foreign.d (FOREIGN-CALL-OUT): fix argument order in the call to fehler_too_few_args() 2002-12-23 Sam Steingold DOCUMENTATION is now a generic function * clos.lisp (ensure-class): use SYS::%SET-DOCUMENTATION explicitly (analyze-method-description): pass the method object to CHECK-REDEFINITION when possible (documentation, (setf documentation)): new generic functions * defs2.lisp (defpackage): remember documentation string * defstruct.lisp (defstruct): use SYS::%SET-DOCUMENTATION explicitly * macros2.lisp (deftype): ditto * describe.lisp (describe1): print all documentation * places.lisp (documentation, %SET-DOCUMENTATION): remove * init.lisp (*documentation*): new variable (%set-documentation): implement (check-redefinition): save and check the SYS::FILE docstring 2002-12-22 Sam Steingold * symbol.d (%PUTF): when the place is a cons, modify it in-place 2002-12-21 Sam Steingold * makemake.in (LIBSIGSEGV): init to @LTLIBSIGSEGV@ (-L/... -lsigsegv) instead of @LIBSIGSEGV@ (/.../libsigsegv.a) because this value gets into LIBS and from there into distmakefile and breaks that 2002-12-21 Sam Steingold * makemake.in (--without*): escape "(|)" in sed RE with #\\ now handles --with-noreadline correctly (my_eval): new function 2002-12-20 James Chacon Sam Steingold applied NetBSD patches: do not assume r11 is free on PowerPC * lispbibl.d (RS6000) [__powerpc__]: define * ffcall/avcall/Makefile.in: use linux syntax for netbsd * ffcall/vacall/Makefile.in: ditto * ffcall/callback/vacall_r/Makefile.in: use netbsd syntax for netbsd * ffcall/callback/trampoline_r/test1.c: do not assume r11 is free * ffcall/callback/trampoline_r/trampoline.c: provide a trampoline implementation that does not presume r11 is free (it is not in dynamically linked programs and the ELF ABI says as much but somehow linux managed to avoid this it seems). Use r13 for the time being since while gcc will allocate it, it is the last "local" one allocated so none of the clisp code hits that (nothing needed 17+ local registers in use ever). Update the vacall implementation to match the trampoline calls but otherwise for any assembly use the linux code. 2002-12-30 Sam Steingold reversed the 2002-12-12 patch, reinstating the 2001-11-27 patch: elt_nreverse() can now be used because bitbuffer is 8bit now * stream.d (byte_swap): remove (READ-INTEGER, READ-FLOAT, WRITE-INTEGER, WRITE-FLOAT): use elt_nreverse() instead of byte_swap() 2002-12-20 Sam Steingold * realtran.d (R_sin_R, R_cos_R, R_sinh_R, R_cosh_R): fix GC-safety bugs triggered by the regression test * comptran.d (N_tan_N, N_sinh_N, N_cosh_N, N_tanh_N) (R_R_atanh_R_R): ditto * pathname.d (parse_logical_host_prefix): ditto * array.d (elt_nreverse): elements in Array_type_svector are type `gcv_object_t', not `object' 2002-12-20 Sam Steingold * makemake.in (XCFLAGS) [CC=g++]: add DEBUG_GCSAFETY * pathname.d, socket.d, spvw.d, stream.d: compilable with DEBUG_GCSAFETY * arilev1i.d (sub_loop_down, subx_loop_down, subfrom_loop_down): (dec_loop_down, neg_loop_down): avoid some C++ warnings 2002-12-04 Bruno Haible GC-safety checker. * lispbibl.d: Recognize DEBUG_GCSAFETY. (INNARDS_OF_GCV_OBJECT): New macro. (TYPEDEF_OBJECT): Remove. (gcv_object_t): Define instead of object. (as_object): Fix for OBJECT_STRUCT case. Add optional allocstamp initializer. (gcv_object_t) [DEBUG_GCSAFETY]: Define as a C++ class. (object): Define after gcv_object_t. (alloccount): New declaration. (INIT_ALLOCSTAMP): New macro. (fake_gcv_object) [DEBUG_GCSAFETY]: Define as a C++ class. (gcunsafe_object_t): Likewise. (type_untype_object, type_data_object): Add optional allocstamp initializer. (gcinvariant_bias_p): New macro. (pointable) [DEBUG_GCSAFETY]: Verify pointer integrity. (type_pointable): Update. (cgci_pointable, pgci_pointable, ngci_pointable) [DEBUG_GCSAFETY]: Verify pointer integrity when the argument is an object. (eq) [DEBUG_GCSAFETY]: Verify pointer integrity. (gcinvariant_symbol_p): New function. * genclisph.d (main): Update. * spvw_allocate.d (alloccount): New variable. (inc_alloccount): New macro. (make_space, make_space_true, make_space_false): Call inc_alloccount. * spvw_page.d (_Page): In DEBUG_GCSAFETY mode, use 'struct' instead of 'union', to avoid compilation erro. 2002-12-19 Sam Steingold * charstrg.d (DIGIT-CHAR-P): correctly identify MATHEMATICAL_* digits (* = SANS-SERIF/BOLD DOUBLE-STRUCK MONOSPACE) 2002-12-19 Bruno Haible * uni_attribute.c: Regenerated for Unicode 3.2.0 by gen-ctype.c. * uni_upcase.c: Likewise. * uni_downcase.c: Likewise. * utils/gen-uninames: Update for Unicode 3.2.0. * uninames.h: Regenerated for Unicode 3.2.0 by gen-uninames. * uniname.c: Assume ANSI C. (unicode_character_name, unicode_name_character): Update for Unicode 3.2.0. * utils/unicode/UnicodeDataFull.txt: Upgrade to Unicode 3.2. * describe.lisp (unicode-attributes-line): Lines in UnicodeDataFull.txt may start with up to 6 hex digits now. 2002-12-04 Bruno Haible * io.d (%PPRINT-LOGICAL-BLOCK): Make GC-safe. * lispbibl.d (gcunsafe_object_t): New type. * package.d (shadow, use_package): Prepare for DEBUG_GCSAFETY. * sequence.d (delete_help): Likewise. Fix some GC-safety bugs. * package.d (safe_check_pack_lock): Use the first argument. (unuse_1package): Mark as "can trigger GC". (unuse_package): Likewise. Make GC-safe. (SYSTEM::%IN-PACKAGE): Make GC-safe. (DELETE-PACKAGE): Make GC-safe. * pathname.d (copy_upcase): Change return type to void. (parse_logical_word): Make GC-safe. (simplify_directory): Make GC-safe. Avoid bug when dir list contains "." followed by a non-string. * realelem.d (R_R_contagion_R): Make GC-safe. (N_N_contagion_R): Simplify and make GC-safe. (C_R_float_C): Make GC-safe. (N_N_float_N): Make GC-safe. * comptran.d (N_exp_N): Make GC-safe. (N_log_N): Make GC-safe. 2002-12-18 Sam Steingold * lispbibl.d (bt_beyond_stack_p): fix the back_trace circularity bug: unwind until back_trace is strictly within STACK * eval.d (unwind_upto): no need to unwind_back_trace() in the beginning 2002-12-18 Sam Steingold * spvw_debug.d (nobject_out): handle uninterned symbols and special forms (Fsubrs) correctly 2002-12-04 Bruno Haible * lispbibl.d (alignof): With g++, use the builtin __alignof__. This avoids an error in alignof(jmp_buf) on FreeBSD that occurred because jmp_buf is defined using an anonymous struct type which makes jmp_buf not suitable as a template argument. * spvw_garcol.d (gc_mark): Add DEBUG_GC_MARK debugging facility. * lispbibl.d (simple_array_to_storage, simple_array_to_storage1): Change to avoid gcc warning. * lispbibl.d: Add inference TYPECODES => TRY_TYPECODES_1 on FreeBSD/x86. 2002-12-17 Sam Steingold * describe.lisp (unicode-attributes-line): lines in UnicodeDataFull.txt may start with up to 6 hex digits now 2002-12-17 Sam Steingold * charstrg.d (DIGIT-CHAR-P): correctly identify MYANMAR, ETHIOPIC, KHMER, and MONGOLIAN digits * uni_upcase.c, uni_downcase.c, uni_attribute.c: regenerated 2002-12-17 Bruno Haible * utils/unicode/UnicodeDataFull.txt: Rename from utils/unicode/ftp.unicode.org/UnicodeData.txt. * Makefile.devel (src/uninames.h): Update. * makemake.in: Use UnicodeDataFull.txt instead of UnicodeData.txt. * describe.lisp (unicode-attributes-line): Likewise. * _README.en: Update. 2002-12-17 Sam Steingold when :CONC-NAME is NIL, use the slot name as accessor and setter * defstruct.lisp (ds-make-accessors, ds-make-defsetfs): when concname is NIL, use slot-name without concatenation (defstruct): do not reset NIL conc-name-option to "" 2002-12-04 Bruno Haible New memory model WIDE_AUXI. * lispbibl.d (WIDE): Define if WIDE_AUXI. (value1_register, back_trace_register): Update. (TYPECODES): Update. (NO_ASYNC_INTERRUPTS): Update. (object, oint, soint): Define differently if WIDE_AUXI. (as_oint, as_object): Likewise. (as_object_with_auxi): New macro. (_attribute_aligned_object_): Update. (objectplus, wbit, wbitm, wbit_test, type_untype_object): Update. (IMMEDIATE_FFLOAT): New macro. (gcinvariant_type_p): Depend on IMMEDIATE_FFLOAT. Make it work also if tint_avoid is nonzero. (ffloat_): Depend on IMMEDIATE_FFLOAT. (Stream): Add more fillers if WIDE && !TYPECODES. (make_machine): Update. (TheFfloat): Depend on IMMEDIATE_FFLOAT. (cgci_pointable, pgci_pointable, ngci_pointable): New macros. (TheCons, TheRatio, TheComplex, TheSymbol, TheBignum, TheFfloat) (TheDfloat, TheLfloat, TheSarray, TheSbvector, TheS8string) (TheS16string, TheS32string, TheSstring, TheSvector, TheWeakKVT) (TheSiarray, TheIarray, TheRecord, TheSrecord, TheXrecord, ThePackage) (TheHashtable, TheReadtable, ThePathname, TheLogpathname) (The_Random_state, TheByte, TheFsubr, TheLoadtimeeval, TheSymbolmacro) (TheMacro, TheFunctionMacro, TheEncoding, TheFpointer, TheFaddress) (TheFvariable, TheFfunction, TheWeakpointer, TheFinalizer) (TheSocketServer, TheDirKey, TheYetanother, TheStream, TheStructure) (TheClass, TheClosure, TheIclosure, TheCclosure, TheInstance, TheSubr) (TheFramepointer, TheMachine, TheVarobject, ThePointer): Use them. (eq): Update. (bias_type_pointer_object): Update. (subr_tab_ptr_as_object, S_help_): Update. (topofframe): Add one more cast, to avoid warnings. * spvw.d (symbol_tab_ptr_as_object): Update. * spvw_allocate.d (pointable_usable_test): Update. * spvw_circ.d (get_circ_mark, get_circ_unmark): Depend on IMMEDIATE_FFLOAT. * spvw_garcol.d (gc_mark, alive): Depend on IMMEDIATE_FFLOAT. (pointer_as_object, pointer_was_object): Update. * spvw_global.d (init_mem_heaptypes): Depend on IMMEDIATE_FFLOAT. * spvw_mark.d (mark, unmark, marked): Update. * spvw_memfile.d (loadmem_update): Depend on IMMEDIATE_FFLOAT. * spvw_objsize.d (size_ffloat, objsize, objsize_ffloat) (init_objsize_table): Depend on IMMEDIATE_FFLOAT. * spvw_typealloc.d (allocate_ffloat): Depend on IMMEDIATE_FFLOAT. * constobj.d (hs_single_float, FF_zero, FF_one, FF_minusone): Depend on IMMEDIATE_FFLOAT. * aridecl.d (make_FF, FF_0, FF_1, FF_minus1): Depend on IMMEDIATE_FFLOAT. * ffloat.d (FF_to_float): Depend on IMMEDIATE_FFLOAT. * hashtabl.d (hashcode1): Use untype() only if WIDE && TYPECODES. * intelem.d (FN_MSD): Use typecode() only if WIDE && TYPECODES. * lisparit.d (init_arith): Depend on IMMEDIATE_FFLOAT. * predtype.d (eql): Depend on IMMEDIATE_FFLOAT. (enum_hs_single_float, heap_statistics_mapper): Likewise. * eval.d (closure_register): Don't undefine if WIDE_AUXI. * genclisph.d (main): Update. 2002-12-16 Sam Steingold * predtype.d (COERCE): accept CLOS class object as a type-spec when cannot coerce, signal a TYPE-ERROR when coercing FLOAT to COMPLEX, return (complex x (float 0 x)) * compelem.d (F_complex_C): new function * lispbibl.d (F_complex_C): declare it 2002-12-16 Sam Steingold * compiler.lisp (disassemble-closure): print the list of special variables read and written 2002-12-16 Sam Steingold * type.lisp (*canonicalize-type-prefer-clos*): new variable (canonicalize-type): depending on *canonicalize-type-prefer-clos*, return a CLOS class (e.g., NUMBER) or a list (e.g., (OR REAL COMPLEX)) (subtypep): try CLOS before playing with lists 2002-12-16 Bruno Haible * lispbibl.d (DYNAMIC_8BIT_VECTOR): Rename from DYNAMIC_BIT_VECTOR. Expect the length in bytes, not bits. (FREE_DYNAMIC_8BIT_VECTOR): Rename from FREE_DYNAMIC_BIT_VECTOR. * stream.d: Update callers. * pathname.d: Update callers. 2002-12-04 Bruno Haible * lispbibl.d: Reorder some definitions, so that 'object' and 'gcv_object_t' get defined earlier. * hashtabl.d (sxhash_atom): Really mask out all non-type bits. * io.d (fehler_read_eval_forbidden): Use const. * package.d (import): Remove unused macros CONFLICT1, CONFLICT2. * pathname.d (directory_diff_ab): Remove extra declaration. * amigaaux.d: Use WIDE_SOFT instead of WIDE. * spvw_allocate.d (mymalloc): Likewise. * lispbibl.d (fake_gcv_object): New macro. (SAVE_REGISTERS, finish_entry_frame, make_HANDLER_frame): Use it. * eval.d (funcall_iclosure, interpret_bytecode_): Likewise. * control.d (make_variable_frame, finish_flet): Likewise. 2002-12-15 Sam Steingold * stream.d (stream_handles): handle KEYBOARD-STREAMs 2002-12-15 Sam Steingold * lispbibl.d (DYNAMIC_BIT_VECTOR): make an 8bit vector, not 1bit vector, because READ-FLOAT, WRITE-FLOAT, WRITE-INTEGER and WRITE-FLOAT will pass this bit vector to STREAM-READ-BYTE-SEQUENCE and STREAM-WRITE-BYTE-SEQUENCE 2002-12-13 Sam Steingold CLUE and CLIO now compile with MIT-CLX * modules/clx/mit-clx/dependent.lisp (radians->int16) (int16->radians): avoid floating contagion warnings * modules/clx/mit-clx/depdefs.lisp (*def-clx-class-use-defclass*): set to '(window drawable pixmap) * modules/clx/mit-clx/clx.lisp: (provide :clx) 2002-12-13 Sam Steingold * stream.d (kbd_last_buf): new function (rd_ch_keyboard): use it to flush UnbufferedStream_bytebuf before checking strm_keyboard_buffer: this fixes a bug in LISTEN/READ-CHAR interaction: listen would consume the char and READ-CHAR will never see it, while LISTEN will now always return T Reported by Jamison Masse 2002-12-12 Sam Steingold * stream.d (key_event): rename to key_event_t (add_keybinding): rename to keybinding(); second argument is a struct, not a pointer now (keybinding): remove the macro (make_keyboard_stream): use new macros BIND_KEY() and CHECK_CAP() 2002-12-12 Sam Steingold reversed the 2001-11-27 patch: elt_nreverse() reverses _bits_ in the bitvector, while we need to swap _bytes_ * stream.d (byte_swap): new function (READ-INTEGER, READ-FLOAT, WRITE-INTEGER, WRITE-FLOAT): use it instead of elt_nreverse() Reported by Bernard Urban 2002-12-12 Sam Steingold * init.lisp (expand-form): export the code walker 2002-12-12 Sam Steingold * unixconf.h.in (ENABLE_NLS): add (this fixes the 2002-07-19 lispbibl.d patch) 2002-12-12 Arseny Slobodjuck * pathname.d (TrueName) [WIN32_NATIVE]: fix a bug - assure_dir_exists returned false on D:\ (D - any drive). 2002-12-12 Arseny Slobodjuck Fix MSVC compilation * stream.d (sock_opt_bool, sock_opt_int, sock_opt_time) (socket_options): use SOCKLEN_T instead of socklen_t. * spvw_mmap.d (mmap_zeromap) [HAVE_WIN32_VM]: fix declaration. 2002-12-11 Sam Steingold * reploop.lisp (debug-inspect-error): new function (commands1): bind it to Inspect/:i (break-loop): handle inspect-error catch'ed return 2002-12-11 Sam Steingold * debug.d (break_driver): restore back_trace before unwind()/reset() when the error is not continuable; use const and p_backtrace_t as appropriate 2002-12-11 Sam Steingold DRIBBLE now works by redefining *TERMINAL-IO* instead of a host of i/o variables; new type DRIBBLE-STREAM * dribble.lisp: full rewrite * savemem.lisp (saveinitmem): DRIBBLE-RESET is no longer needed 2002-12-04 Bruno Haible Avoid conditional expressions of the form (bool ? object : gcv_object_t) or (bool ? gcv_object_t : object). * aridecl.d (FF_0, FF_1, FF_minus1, DF_0, DF_1, DF_minus1): Cast to object. * array.d (bit_up): Cast conditional expression branch to object. * compelem.d (N_realpart_R, N_imagpart_R): Likewise. * debug.d (read_form): Likewise. * encoding.d (SYSTEM::CHARSET-RANGE, init_dependent_encodings): Likewise. * eval.d (interpret_bytecode_): Likewise. * foreign.d (convert_from_foreign, foreign_with_pointers_p) (convert_to_foreign): Likewise. * i18n.d (SYS::TEXT): Likewise. * io.d (klammer_auf, FORMAT-TABULATE): Likewise. * lisparit.d (NUMERATOR, DENOMINATOR): Likewise. * package.d (PACKAGE-ITERATE): Likewise. * pathname.d (pathname_host_maybe, pathname_device_maybe) (pathname_version_maybe): Add cast to object. (xpathname_host, xpathname_directory, xpathname_name, xpathname_type) (xpathname_version): Cast conditional expression branch to object. (string2wild, wild2string): Likewise. (NAMETYPE_MATCH): Likewise. (MAKE-LOGICAL-PATHNAME): Likewise. (version_diff, translate_nametype_aux): Likewise. * predtype.d (COERCE): Likewise. * record.d (class_of): Likewise. * spvw_circ.d (subst_circ_mark): Likewise. * stream.d (check_stream, check_wr_int): Likewise. (get_synonym_stream): Likewise. (Truename_or_Self): Likewise. (handle_set, handle_isset): Likewise. (init_standard_io): Likewise. 2002-12-04 Bruno Haible * lispbibl.d (object) [WIDE_STRUCT]: Wrap the union in struct. (as_object, typecode, mtypecode, untype, type_pointable): Update. * genclisph.d (main): Update. 2002-12-09 Sam Steingold * lispbibl.d (p_backtrace_t): new type, mostly useful for debugging back_trace issues in C++ mode (back_trace_check): declared (BT_CHECK, BT_CHECK1): new CPP macros (saved_back_trace, back_trace, _back_trace, _saved_back_trace): type p_backtrace_t * genclisph.d, spvw.d, spvw_garcol.d: ditto * spvw_debug.d (back_trace_check): implement (back_trace_depth, back_trace_out): handle circular back_trace 2002-12-09 Bruno Haible * arilev1i.d (add_loop_down, addto_loop_down, sub_loop_down) (subx_loop_down, subfrom_loop_down): Limit variable scope to make it compile in C++ mode. 2002-12-09 Sam Steingold * spvw_garcol.d (gar_col_normal): gc_mark() bt_caller's even though we are certain they have already been marked, since Bruno said: "Better safe than sorry" 2002-12-04 Bruno Haible * lispbibl.d (gcv_environment_t): New type. (aktenv): Change type to gcv_environment_t. (make_STACK_env): Use gcv_environment_t. (nest_env): Change argument and return type to gcv_environment_t*. (get_closure): Change argument type to gcv_environment_t*. * spvw.d (aktenv): Change type to gcv_environment_t. * eval.d (nest_env): Change argument and return type to gcv_environment_t*. (get_closure): Change argument type to gcv_environment_t*. Don't mix environment_t and gcv_environment_t. (eval, eval_applyhook): Update. * control.d (compile_eval_form): Don't mix environment_t and gcv_environment_t. (EVALHOOK, APPLYHOOK): Likewise. * debug.d (same_env_as): Likewise. * predtype.d (COERCE): Update. * array.d, control.d, eval.d, lispbibl.d, predtype.d, sequence.d: * spvw.d, spvw_circ.d, spvw_garcol.d, spvw_genera1.d, spvw_memfile.d: * spvw_objsize.d, spvw_update.d, spvwtabo.d: Use sizeof(gcv_object_t) where appropriate. 2002-12-08 Sam Steingold * lispbibl.d (backtrace_t): bt_caller is also a gcv_object_t(!) prefix all slots of backtrace_t with `bt_' (unwind_back_trace) [DEBUG_SPVW]: do circularity checking * debug.d, genclisph.d, spvw_debug.d, spvw_garcol.d: update 2002-12-06 Sam Steingold * makemake.in (check-sources): check that there are no variables of type gcv_object_t - only pointers to it (see lispbibl.d) 2002-12-06 Sam Steingold * modules/clx/new-clx/demos/sokoban.lisp: provide "sokoban" (sokoban): check that *display* is alive * modules/clx/new-clx/demos/qix.lisp: provide "qix" * modules/clx/new-clx/demos/clx-demos.lisp (CLX-DEMOS): use XLIB and EXT and shadow some symbols to avoid conflicts (getenv): remove (there is one in EXT) replace the EVAL-WHEN kludge with REQUIRE * modules/clx/new-clx/clx.lisp (closed-display-p, x-error): export use PRINT-OBJECT, not :PRINT-FUNCTION DEFSTRUCT option use (DEFSETF foo set-foo) instead of (SETF (FDEFINITION '(SETF foo)) #'set-foo) for all setters (make-gcontext): new function (for clue) (x-error, closed-display): new conditions (complete) (request-error, resource-error, request-error, resource-error) (access-error, alloc-error, atom-error, colormap-error) (connection-failure, cursor-error, device-busy, drawable-error) (font-error, gcontext-error, id-choice-error, implementation-error) (length-error, lookup-error, match-error, missing-parameter) (name-error, pixmap-error, reply-length-error, reply-timeout) (sequence-error, server-disconnect, unexpected-reply) (unknown-error, value-error, window-error): new conditions (just the stubs) * modules/clx/new-clx/clx.f (closed_display_error): new function (isa_struct_p): use memq() instead of an explicit loop (ensure_living_display): return Bool indicator of whether the display has been closed (CLOSED-DISPLAY-P): new public function (CLOSE-DISPLAY): mark the display as closed by setting fp_pointer to NULL (display_hash_table, pop_display, general_lookup): signal a CLOSED-DISPLAY error when ensure_living_display() returns false (get_ptr_object_and_display, get_xid_object_and_display): use pop_display() instead of ensure_living_display() (SET-DISPLAY-AFTER-FUNCTION): do not call ensure_living_display() twice (xlib_after_function): no need to call ensure_living_display() converted *-SETTER --> SET-* * modules/clx/new-clx/e2d.c (do_defun): terminate name on '(' 2002-12-04 Bruno Haible * lispbibl.d (gcv_object_t): New type. (kvtable_data): Don't confuse object and void*. (copy_mem_b, copy_mem_o): Use const. * genclisph.d (main): Emit gcv_object_t type. * affi.d, array.d, charstrg.d, comptran.d, constobj.d, control.d: * debug.d, encoding.d, error.d, eval.d, foreign.d, hashtabl.d, io.d: * lisparit.d, list.d, modules.d, package.d, pathname.d, predtype.d: * realtran.d, record.d, rexx.d, sequence.d, spvw.d, spvw_circ.d: * spvw_garcol.d, spvw_genera1.d, spvw_genera2.d, spvw_genera3.d: * spvw_heap.d, spvw_mark.d, spvw_memfile.d, spvw_page.d: * spvw_sigsegv.d, spvw_typealloc.d, spvw_update.d, stream.d: * subr.d, symbol.d: Use gcv_object_t instead of object where appropriate. * charstrg.d (char_name, name_char): Use const. * hashtabl.d (hashcode3_atom): Likewise. 2002-12-05 Sam Steingold * lispbibl.d (lp_limit_1, ca_limit_1): set to 2^12-1 * spvw.d (main) [DEBUG_SPVW]: check that the STACK depth is more that CALL-ARGUMENTS-LIMIT 2002-12-05 Sam Steingold * modules/clx/new-clx/clx.f (get_event_mask): fix error handling remove saving/restoring subr_self throughout applied the macrology patch (boundp, missingp, VALUES1 &c) (display_hash_table): replace STACK_0 instead of returning a value (make_xid_obj_2): reflect this change * modules/clx/new-clx/clx.lisp (*GCONTEXT-COMPONENTS*): define the constant (required by CLUE) * modules/clx/new-clx/demos/sokoban.lisp (*xpm-directory*) (*screen-directory*): use *LOAD-TRUENAME*, not *LOAD-PATHNAME*, and make sure that :NAME and :TYPE are NIL (save-state, load-state): use WITH-STANDARD-IO-SYNTAX (*sokoban-debug*): new variable; `d' - new command 2002-12-04 Bruno Haible * foreign.d (convert_function_to_foreign, init_ffi): Add casts to make it compile in C++ mode. 2002-12-04 Sam Steingold * loop.lisp (expand-loop): remove the `initializations2' optimization which bound some iteration variables right around the main-code: this allows accessing iteration variables in the finally clauses (this also shortens the bytecode) 2002-12-04 Sam Steingold * defmacro.lisp (make-length-test): use EXT:LIST-LENGTH-DOTTED instead if LENGTH because the argument may be dotted when it comes from a destructuring lambda list 2002-12-03 Sam Steingold * stream.d (MAKE-WINDOW): do not assume that *TERMINAL-IO* is a terminal-stream (FILE-POSITION): decrement the position if a character has been unread (so that PEEK-CHAR does not modify FILE-POSITION) 2002-12-02 Sam Steingold * spvw_debug.d (nobject_out): handle characters 2002-12-02 Sam Steingold * foreign1.lisp (finalize-coutput-file): produce ANSI C, compilable with a C++ compiler such as g++ 2002-12-02 Sam Steingold fix bug#647015: ffi:def-c-enum broken from .fas file * foreign1.lisp (def-c-enum): use DEF-C-TYPE to define the enum type to C `int' 2002-12-02 Sam Steingold * int2adic.d (D_D_mal2adic_D, UDS_UDS_durch2adic_UDS): avoid "warning: statement with no effect" * hashtabl.d (hashcode, CLASS-TUPLE-GETHASH): ditto 2002-12-01 Bruno Haible * spvw_debug.d (nobject_out): Fix compilation error when !DYNAMIC_FFI. 2002-12-01 Bruno Haible Make it buildable with CC=g++. * m4/proto.m4 (CL_PROTO_RET): Add an argument, the ANSI-DECL. * m4/abort.m4 (CL_ABORT): Update. * m4/closedir.m4 (CL_CLOSEDIR): Update. * m4/free.m4 (CL_FREE): Make it work better with CC=g++. * m4/getpagesize.m4 (CL_GETPAGESIZE): Update. * m4/putenv.m4 (CL_PUTENV): Avoid buggy AC_CHECK_FUNCS(putenv). * m4/select.m4 (RL_SELECT): Avoid buggy AC_CHECK_FUNCS(select). (CL_SELECT): Likewise. * m4/shmat.m4 (CL_SHMAT): Make it work better with CC=g++. * m4/signal.m4 (RL_RETSIGTYPE): Make it work better with CC=g++. * m4/strlen.m4 (CL_STRLEN): Make it work better with CC=g++. * cjk.h (is_cjk_encoding): Convert declaration to ANSI C. * uniname.c (unicode_name_word, unicode_name_word_lookup) (unicode_character_name, unicode_name_character): Convert declaration to ANSI C. * uniname.h (unicode_character_name, unicode_name_character): Convert declaration to ANSI C. * width.c (uc_width): Likewise. * utils/ccmp2c.c (token_type_t): Rename from enum token_t. * debug.d (read_form): Limit variable scope because of 'goto'. (SHOW-STACK): Add a cast. * eval.d (sym_value): Limit variable scope because of 'goto'. (setq): Likewise. (nest_env): Move variable declaration because of 'goto'. (eval_closure): Bug fix: Avoid setting the STACK to an uninitialized value in case of error. (apply): Move error code because of 'goto'. (apply_closure): Likewise. (funcall): Likewise. * io.d (write_sstring_case): Move some code because of 'goto'. (pr_enter_1): Limit variable scope because of 'goto'. * realelem.d (defaultfloatcase): Move variable declaration because of 'goto'. * spvw.d (main): Limit variable scope because of 'goto'. * spvw_debug.d (string_out): Fix element type of buffer. * spvw_memfile.d (loadmem_update_fsubr): Add cast. * stream.d (lisp_completion): Limit variable scope because of 'goto'. (rd_ch_terminal3): Add some casts. (sock_opt_bool, sock_opt_int, sock_opt_time, SOCKET-OPTIONS): Use socklen_t instead of 'int'. (read_line): Bug fix: Avoid using uninitialized variable in error message. * unix.d (ioctl): Move declaration after has been included. 2002-12-01 Sam Steingold * stream.d (check_wr_char): new macro (used in 18 places) 2002-11-30 Sam Steingold * places.lisp (remove-plist): new function * inspect.lisp (with-http-output): use it instead of REMF 2002-11-28 Sam Steingold * loop.lisp (expand-loop): APPEND/NCONC do not allow backward consing because REVAPPEND/NRECONC drop the last atom in dotted lists 2002-11-28 Sam Steingold * pprint.lisp (with-gensyms): append the variable name to GENSYM prefix 2002-11-27 Sam Steingold fix bug#644353: Segfault when overriding stdin * stream.d (read_line): call ssstring_append_extend() only when len>0 2002-11-26 Sam Steingold * list.d (list_length): new function (LIST-LENGTH, LIST-LENGTH-DOTTED): use it * subr.d, constsym.d (LIST-LENGTH-DOTTED): add * init.d (LIST-LENGTH-DOTTED): exported * describe.lisp (LIST-LENGTH-DOTTED): defined in list.d now 2002-11-25 Sam Steingold * loop.lisp (expand-loop): when IT keyword is not appropriate, treat it as a variable and hope it is bound somewhere - THEREIS clause adds NIL to RESULTS to prevent ambiguity in the return values - when summing (or counting &c) into a variable for which the type has been declared, make sure it is initialized to that particular type 2002-11-25 Sam Steingold * loop.lisp (loop-syntax-error, expand-loop): macro-expansion-time errors have type SOURCE-PROGRAM-ERROR 2002-11-25 Sam Steingold use C standard I/O instead of asciz_out() and friends * acorn.d, encoding.d, error.d, genclisph.d, io.d, misc.d: * msdos.d, pathname.d, socket.d, spvw.d, stream.d: do not include here * lispbibl.d: include (asciz_out, asciz_out_s, asciz_out_ss, asciz_out_1, asciz_out_2) (asciz_out_3, asciz_out_1_, asciz_out_2_, asciz_out_3_, dez_out) (dez_out_, hex_out, hex_out_, mem_hex_out): remove (STACK_diff): new macro (bt_beyond_stack_p): use it (OS_error, OBJECT_OUT, OS_file_error, OS_filestream_error): use fprintf(), fputs() &c instead of asciz_out() and friends (nobject_out): declare * affi.d (reg_call): ditto * amigaaux.d (abort, init_amiga): ditto * avl.d (AVL/out): ditto * erramiga.d, errunix.d, errwin32.d (errno_out): ditto * predtype.d (with_gc_statistics): ditto * rexx.d (debug_asciz_out, debug_out_1): ditto * spvw.d (SP_ueber, STACK_ueber, fsubr_argtype, subr_argtype) (fehler_code_alignment, init_subr_tab_1, init_module_2) (usage, main): ditto * spvw_alloca.d (malloca): ditto * spvw_allocate.d (error_speicher_voll, make_space_gc_true) (make_space_gc_false, make_space_gc): ditto * spvw_fault.d (handle_mmap_fault, handle_fault, xmprotect): ditto * spvw_garcol.d (gc_unmarkcheck, gar_col_normal): ditto * spvw_global.d (check_gc_consistency, check_gc_consistency_2): ditto * spvw_memfile.d (loadmem, loadmem_from_handle): ditto * spvw_mmap.d (mmap_zeromap, mmap_prepare, mmap_filemap) (mprotect, mmap_init): ditto * spvw_multimap.d (initmap, msync_mmap_intervals, fdmap, idmap) (open_temp_fd, fdsave, close_temp_fd, exitmap, open_shmid) (shmsave, close_shmid): ditto * spvw_sigsegv.d (sigsegv_handler_failed): ditto * stream.d (rd_ch_keyboard) [WIN32_NATIVE]: ditto * win32aux.d (DumpProcessMemoryMap): ditto * pathname.d (string_concat): ditto (debug_output, debug_printf): remove (DOUT, SDOUT): use object_out() and nobject_out() * debug.d (back_trace_out): moved to spvw_debug.d * spvw_debug.d (asciz_out, asciz_out_s, asciz_out_ss, asciz_out_1) (asciz_out_2, asciz_out_3, asciz_out_1_, asciz_out_2_, asciz_out_3_) (dez_out, dez_out_, hex_out, hex_out_): remove (mem_hex_out): turned into local, use fputs(), not asciz_out() (string_out, nobject_out): non-consing, STACK non-modifying output (back_trace_depth): new function (back_trace_out): moved here, use nobject_out() and STACK_diff() 2002-11-23 Sam Steingold * eval.d (interpret_bytecode, eval_closure, apply_closure) (funcall_closure, interpret_bytecode_): wrap calls to funcall_iclosure() and interpret_bytecode_() with a with_saved_back_trace() (interpret_bytecode_): do not augment back_trace 2002-11-23 Sam Steingold * spvw_garcol.d (gar_col_normal) [DEBUG_SPVW]: check that all callers in back_trace have been already marked 2002-11-16 Sam Steingold * loop.lisp (expand-loop): fix a bug: check that accumulation variables have not been bound yet (by iteration or WITH clauses) 2002-11-15 Sam Steingold * loop.lisp (expand-loop): fix a bug: package argument for symbol iteration is not required and defaults to *PACKAGE* 2002-11-15 Sam Steingold replace subr_self with back_trace * lispbibl.d, genclisph.d, spvw.d (backtrace_t): new struct (*back_trace_reg*): rename from *subr_self_reg* (HAVE_SAVED_back_trace): rename from HAVE_SAVED_subr_self (saved_back_trace): rename from saved_subr_self (bt_beyond_stack_p, unwind_back_trace, with_saved_back_trace): new macros (enter_frame_at_STACK): call unwind_back_trace() * array.d (eltype_code, initial_contents): do not save subr_self (initial_contents_aux): do not set subr_self * charstrg.d, control.d, error.d, foreign.d, hashtabl.d: * lisparit.d, package.d, record.d, rexx.d: do not mention subr_self as an argument in the comments * debug.d (driver, break_driver): bind back_trace (print_back_trace, back_trace_out): new functions (DESCRIBE-FRAME): call print_back_trace() (show_stack): new function (SHOW-STACK): call show_stack() and accept 3 arguments * subr.d (SHOW-STACK): reflect this change * reploop.lisp (debug-backtrace): use SHOW-STACK instead of a loop * encoding.d (CONVERT-STRING-FROM-BYTES): do not save subr_self * eval.d (unwind_upto): call unwind_back_trace() explicitly at the beginning, even though it is called by enter_frame_at_STACK() (eval_fsubr, apply_subr, funcall_subr, interpret_bytecode_): use with_saved_back_trace() instead of setting subr_self * io.d (SET-DISPATCH-MACRO-CHARACTER): no need to restore subr_self * list.d (member, MEMBER-IF, MEMBER-IF-NOT, ADJOIN): no need to save subr_self * pathname.d (coerce_xpathname, parse_as_logical, coerce_pathname) (defaults_pathname, assure_dir_exists, prepare_create) (directory_search, DYNLOAD-MODULES): ditto (ENOUGH-NAMESTRING, assume_dir_exists): use with_saved_back_trace() instead of setting subr_self (NAMESTRING, copy_one_file): no need to set subr_self * predtype.d (COERCE): no need to set subr_self * sequence.d (fehler_seqtype_length): use subr_self in error reporting (we now know that it is correct) (end_default_len, SUBSEQ, COERCED-SUBSEQ, seq_filterop) (seq_duplicates, find_op, position_op, count_op): no need to save and restore subr_self (copy_seqpart_into, FILL): use with_saved_back_trace() instead of setting subr_self (MISMATCH, SEARCH): no need to set subr_self * spvw_garcol.d (gar_col_normal): update callers in back_trace, they are all on the stack so we do not need to mark them (gar_col_simple, gar_col): no need to save and restore subr_self * stream.d (test_eltype_arg, sec_usec, check_float_eltype): ditto (read_line): use with_saved_back_trace() instead of setting subr_self 2002-11-15 Sam Steingold * m4/libtool.m4: upgraded to libtool-1.4.3 2002-11-14 Sam Steingold moved %REMF and %PUTF to C to unify all plist handling in one place * symbol.d (fehler_sym_plist_odd): rename from fehler_plist_odd() (fehler_plist_odd): new function for property lists (not associated with any symbol) (plist_find): generic property list search (get, GETF, %PUT, REMPROP): use plist_find() (%PUTF, %REMF): new functions (use plist_find()) * subr.d, constsym.d (%PUTF, %REMF): new functions * places.lisp (remf): use the built-in SYS::%REMF (%putf): remove 2002-11-10 Sam Steingold * spvw.d (SP_ueber, STACK_ueber): quit when CLISP is non-interactive 2002-11-06 Sam Steingold * compiler.lisp (c-FORMAT): when destination is T, pass *STANDARD-OUTPUT* to the value of the FORMATTER call, not NIL; also treat destination NIL specially 2002-11-05 Sam Steingold * clos.lisp (documentation): implement (ensure-class): use SYS::%SET-DOCUMENTATION instead of (SETF DOCUMENTATION) * defstruct.lisp (defstruct): ditto * defs2.lisp (defpackage): do not discard the documentation string 2002-11-04 Sam Steingold * macros1.lisp (declare): add a defmacro-special that expands to NIL: since DECLARE is not enumerated in the Figure 3-2, and it is a special operator in CLISP, a macro expander have to be provided 2002-11-03 Sam Steingold * defs2.lisp (defpackage): accept characters as symbol and package designators * init.lisp (in-package): accept characters as package designators 2002-11-02 Sam Steingold * package.d (unintern): do not put the same symbol into the options list twice 2002-11-02 Sam Steingold * pathname.d (directory_search_scandir): when returning from inside with_sstring_0, call FREE_DYNAMIC_ARRAY 2002-11-02 Sam Steingold * defs1.lisp (set-exclusive-or, nset-exclusive-or): call TEST and TEST-NOT with the arguments in the correct order, i.e., the first arg from the first list and the second arg from the second list 2002-11-01 Sam Steingold * defs1.lisp (do-symbols, do-external-symbols, do-all-symbols): wrap BODY-REST in TAGBODY 2002-11-01 Sam Steingold * package.d (shadow): accept characters too (test_stringsym_arg): remove (FIND-PACKAGE, test_names_args, %IN-PACKAGE, FIND-ALL-SYMBOLS): use test_stringsymchar_arg() instead of test_stringsym_arg() (apply_symbols) [X3J13_161]: pass characters to shadow() * constobj.d (type_stringsym): remove * charstrg.d, lispbibl.d (test_stringsymchar_arg): declare global 2002-11-01 Sam Steingold * package.d (FIND-PACKAGE): package object is a package designator too 2002-11-01 Sam Steingold * spvw.d (main): process argument `-p' _after_ all `-i' arguments so that the `-p' package can be created in one of the init files; this is backward compatible as long as all the files have an IN-PACKAGE statement, which they all certainly should have! 2002-11-01 Sam Steingold * condition.lisp, macros2.lisp (etypecase, ctypecase): when KEYCLAUSELIST contains T, expand to TYPECASE 2002-11-01 Sam Steingold * sequence.d (valid_type1): NULL --> (LIST 0); CONS --> (LIST (0) *) (fehler_seqtype_length): adjusted accordingly (SEQTYPE_LENGTH_MATCH): new macro (MAKE-SEQUENCE, coerce_sequence, COERCED-SUBSEQ, CONCATENATE, MAP) (MERGE): use it 2002-11-01 Sam Steingold * loop.lisp (li-vars): new inline function (expand-loop): check for duplicate iteration variables; use ATOM for ON iteration, as per ANSI CL spec 2002-10-31 Sam Steingold * error.d, lispbibl.d (fehler_lambda_expression): accept `caller' argument * symbol.d (%PUTD): pass caller to fehler_lambda_expression() * eval.d (coerce_function, apply, funcall): ditto 2002-10-30 Sam Steingold * error.d (fehler_proper_list): accept `caller' argument * control.d (ENDP): pass caller to fehler_proper_list() * lispbibl.d (list_to_mv): ditto * list.d (endp, memq1, LIST-LLENGTH): ditto * sequence.d (LENGTH): ditto 2002-10-30 Sam Steingold * lispbibl.d (restart): rename the typedef to restartf_t * control.d (UNWIND-PROTECT): ditto * eval.d (reset, invoke_handlers, interpret_bytecode_): ditto * spvw.d (quit): ditto 2002-10-28 Sam Steingold * compiler.lisp (signature): make it (:TYPE VECTOR) to avoid going through PRINT-OBJECT and MAKE-LOAD-FORM when compiling (function-signature): return function _name_ as the first value - this restores inline compilation (test-argument-syntax): with APPLY forms, one have to be more permissive wrt keyword arguments (a key may be explicitly in the list and the value maybe in the rest arguments) * init.lisp (nth-value, function-lambda-expression): export here for FUNCTION-SIGNATURE in compiler.lisp 2002-10-27 Sam Steingold * defs2.lisp (function-lambda-expression): always return a name, return the lambda expression for some compiled functions too 2002-10-25 Sam Steingold * eval.d (coerce_function): use fehler_function() * sequence.d (seq_boolop): ditto * symbol.d (%PUTD): ditto 2002-10-23 Sam Steingold * loop.lisp (expand-loop): separated `startup-code' from `initially-code' so that INITIALLY clauses can access variables 2002-10-23 Arseny Slobodjuck Bugfixing directory shortcuts on win32. * pathname.d (assure_dir_exists) [WIN32_NATIVE]: handle situation when dir exists but filename does not. (directory_search_scandir) [WIN32_NATIVE]: return symbolic name for nonexistent targets. 2002-10-22 Sam Steingold * complete.lisp (completion): call DESCRIBE only if there was something typed and it is in the completions 2002-10-22 Sam Steingold Make sure COMPILE-FILE-PATHNAME does not barf in SEARCH-FILE * init.lisp (search-file): pass :IF-DOES-NOT-EXIST :IGNORE to DIRECTORY * pathname.d (dir_search_if_none_t): add DIR_IF_NONE_IGNORE (directory_search_hashcode): never signal error, just return nullobj (directory_search_scandir): do not barf when DIR_IF_NONE_IGNORE, otherwise treat DIR_IF_NONE_IGNORE just like DIR_IF_NONE_DISCARD (directory_search): be more careful with subdirectories when DIR_IF_NONE_IGNORE (DIRECTORY): accept :IF-DOES-NOT-EXIST :IGNORE * constobj.d (type_directory_not_exist): add :IGNORE 2002-10-18 Sam Steingold * compiler.lisp (c-LABELS, c-GENERIC-LABELS): new macro ADD-FENV in their common MACROLET 2002-10-17 Sam Steingold * debug.d (read_form): do not nreverse STACK_2 before binding SYS::*KEY-BINDINGS*, since this destructively modifies commandsr in reploop.lisp * reploop.lisp (help): avoid much consing by not calling REVERSE + REMOVE-IF-NOT, this also simplifies the logic everywhere and makes the help message appear in the same order for different invocations (break-loop): push the restart announcement onto commandsr (break-loop, step-hook-fn): compute the command list just once, instead of for each READ-EVAL-PRINT invocation 2002-10-16 Sam Steingold * complete.lisp (completion): respect (readtable-case *readtable*) when printing and searching completions; do not close the parenthesis when quoting since readline will add a close quote after the closing parenthesis 2002-10-16 Sam Steingold * realtran.d (F_pi_round_I_F): remove (F_pi2_round_I_F): the second (integer) value is taken mod 4 (cos_stack, sin_stack): new functions (R_sin_R, R_cos_R): rewrote to use them 2002-10-16 Arseny Slobodjuck Directory shortcuts on win32. * pathname.d (FullName): save final slash, respect it. (resolve_shell_shortcut): don't call IShellLink->Resolve don't need to substitute missing target with any other file. Try to use description field on missing symlinks. (shell_shortcut_target_t): resolve result enumeration. (resolve_shell_shortcut_more): new function - resolve links to links, returns target attributes. (TrueName): similar to FullName, but tries to resolve every pathname component up to filename. (resolve_shell_symlink): change result type, input parameters. (assure_dir_exists): split MSDOS and WIN32_NATIVE, the latter is rewritten. (directory_search_1subdir) [WIN32_NATIVE]: separate from others. Uses TrueName to handle links. (directory_search_hashcode) [WIN32_NATIVE]: new for win32. (directory_search_scandir) [WIN32_NATIVE]: rework. (directory_search) [WIN32_NATIVE]: handle :CIRCLE flag. 2002-10-16 Arseny Slobodjuck Fix build for MSVC. * win32.d (MyCreateProcess): declare 1st parameter as const * win32aux.d (MyCreateProcess): same. * stream.d (sock_opt_bool, sock_opt_int, sock_opt_time) (SOCKET-OPTIONS): change length parameter of [g|s]etsockopt to type int (uint is absent). Cast option to (char *) - as declared in winsock (won't hurt (void *) unix declaration). 2002-10-15 Sam Steingold * complete.lisp (completion): print help when nothing useful was entered (just some whitespace) 2002-10-14 Sam Steingold fix bug#598128: values / multiple-value-list crash * lispbibl.d (list_to_mv): fix the check for mv_space overrun (mv_to_STACK): check space on STACK beforehand, not post-factum 2002-10-13 Sam Steingold * places.lisp (psetf): handle the empty form (PSETF) properly 2002-10-13 Sam Steingold * list.d (llength1): new global function, returning the last atom in addition to the list length (LIST-ENDTEST): use llength1: sequence functions expect proper sequences * lispbibl.d (llength1): declare (llength): define as a macro expanding to llength1() * sequence.d (LENGTH): use llength1 for lists and check for proper list termination 2002-10-13 Sam Steingold a character is a package designator too * package.d (test_package_arg, test_stringsym_arg) (DELETE-PACKAGE): convert characters to singleton strings (%SET-PACKAGE-LOCK): adapt to now triggering GC test_package_arg() 2002-10-13 Sam Steingold * sequence.d (MAKE-SEQUENCE): do not init strings with #\Space, keep the #\Null's from MAKE-STRING 2002-10-13 Sam Steingold MAPC[AR|ON|AN]/MAPL[IST] require proper lists * compiler.lisp (c-MAP-on-CARs-inner, c-MAP-on-LISTs, c-MAPL): use ENDP, not ATOM to check for the list end * control.d (MAPCAR_MAPLIST_BODY, MAPC_MAPL_BODY) (MAPCAN_MAPCON_BODY): ditto (ENDP): new macro 2002-10-13 Sam Steingold * list.d (TAILP): use EQL to compare the sublist, not EQ 2002-10-12 Sam Steingold * type.lisp (canonicalize-type): recognize typed structures; barf on symbols that do not name types (subtypep): handle ATOM properly 2002-10-12 Sam Steingold As per , external symbols in COMMON-LISP cannot have properties accessible in COMMON-LISP-USER, so we have to move EXT:MACRO to SYS::MACRO * init.lisp: do not export MACRO from EXT * lispbibl.d: fix comments * describe.lisp (describe-object): EXT:MACRO --> SYS::MACRO * constsym.d (macro): EXT --> SYS * constobj.d (hs_macro): EXT --> SYS 2002-10-12 Sam Steingold * pathname.d (DELETE-FILE): delete the argument, not its TRUENAME 2002-10-12 Sam Steingold * pathname.d (DIRECTORY): accept new :IF-DOES-NOT-EXIST argument (dir_search_if_none_t, dir_search_param_t): new typedefs (directory_search): accept a second dir_search_param_t argument (directory_search_scandir): accept a third dir_search_param_t argument * subr.d, subrkw.d (DIRECTORY): add :IF-DOES-NOT-EXIST * constobj.d (version): bumped (DIRECTORY is in FUNTAB) (type_directory_not_exist): new type * constsym.d (Kkeep, Kdiscard): new keywords 2002-10-11 Sam Steingold fix PEEK-CHAR for ECHO-STREAMs and non-NIL peek-type * io.d (wpeek_char_eof, PEEK-CHAR): use peek_char()+read_char(), not read_char()+unread_char() - for the sake of echo streams 2002-10-10 Sam Steingold * makemake.in (PARAMS): for the sake of a same-dir build, rename the temporary C file to tmp.c (instead of the actual name ${parf}.c) (XCFLAGS) [GCC-3 DEBUG]: add -falign-functions=4 2002-10-09 Sam Steingold * spvw_memfile.d (loadmem_from_handle): accept a second argument 'filename' for better error reporting 2002-10-06 Sam Steingold * realelem.d (F_R_float_F, RA_R_float_F): use Lfloat_length(y) instead of O(LF_digits), when y is actually a long float (C_R_float_C, N_N_float_N): do not modify the first argument * realtran.d (R_cosh_sinh_R_R): handle start_p/end_p for x=0 too * comptran.d (N_N_log_N): fix a typo in the last patch (N_cis_N): (sin a) may be 0 (N_exp_N): handle contagion properly (N_log_N): do not modify the complex argument (N_N_expt_N, N_tan_N, N_tanh_N): fix C_R_float_C/N_N_float_N calls * lisparit.d (EXP): pass a real as the 3rd arg of N_exp_N (LOG): pass a real as the 3rd arg of N_log_N 2002-10-04 Sam Steingold fix bug#618428: LOOP: local variables shadowing globals * loop.lisp (expand-loop): initialize accumulation variables after iteration variables 2002-10-04 Sam Steingold * spvw.d (init_object_tab) [DEBUG_SPVW]: add :CLISP-DEBUG to features * compiler.lisp: COMPILER-DEBUG --> CLISP-DEBUG (make-anode) [CLISP-DEBUG]: define when LOAD [CLISP-DEBUG]: do not remprop SYS::DEFSTRUCT-DESCRIPTION, 2002-10-04 John Hinsdale * modules/oracle/oracle.lisp: More error checking throughout 2002-10-03 Sam Steingold * defs2.lisp (read-sequence, write-sequence): when deciding between byte and char i/o, check the sequence element type too 2002-10-02 Sam Steingold * lispbibl.d (test_symbol): moved here from symbol.d (test_symbol_non_constant): declare new function * error.d (test_symbol_non_constant): new function * control.d (funname_to_symbol): new function (FDEFINITION, FBOUNDP, FMAKUNBOUND): use it (fehler_funsymbol, fehler_symbol_constant): remove (FUNCTION, FLET, LABELS): use fehler_funname_source() instead of fehler_funsymbol() (check_setq_body, SET, MAKUNBOUND, COMPILER-LET) (MULTIPLE-VALUE-SETQ): use test_symbol_non_constant() (%SYMBOL-VALUE, SYMBOL-VALUE, SYMBOL-FUNCTION, BOUNDP) (SPECIAL-OPERATOR-P, BLOCK, RETURN-FROM) (MACRO-FUNCTION, PROCLAIM): use test_symbol() * eval.d (SPECIAL-VARIABLE-P): ditto (progv, get_closure): use test_symbol_non_constant() * i18n.d (SET-CURRENT-LANGUAGE): ditto * record.d (SYMBOL-MACRO-EXPAND): ditto * stream.d (SYMBOL-STREAM): ditto * symbol.d (test_symbol): moved to lispbibl.d 2002-10-02 Sam Steingold remove SYS::%FUNCALL * compiler.lisp (c-form-table): remove SYS::%FUNCALL (c-form, c-HANDLER-BIND, c-FUNCTION-CALL, c-MAP-on-CARs) (c-MAP-on-LISTs, c-MAPC, c-MAPL): use FUNCALL instead of SYS::%FUNCALL * defstruct.lisp (ds-arg-default): ditto * trace.lisp (get-traced-definition, trace-step-apply) (trace-pre-output, trace-post-output, trace-print): do not use SYS::%FUNCALL - call the inlined functions directly (trace-level-inc): remove * constsym.d, subr.d, control.d (pfuncall): remove * spvw.d (*MACROEXPAND-HOOK*): init to FUNCALL, not SYS::%FUNCALL * eval.d (macroexp0): use FUNCALL, not SYS::%FUNCALL (FUNTABR): remove _(pfuncall) * constobj.d (version): bumped (because of FUNTABR) 2002-10-02 Sam Steingold * stream.d (BUILT-IN-STREAM-ELEMENT-TYPE): resolve synonym streams 2002-10-01 Sam Steingold fix bug#617221: distmakefile on cygwin uses `run', not `exe' * _distmakefile (lexe): new variable, init to @@LEXE@@ * makemake.in (distmakefile): substitute ${LEXE} for @@LEXE@@ 2002-10-01 Sam Steingold * m4/readline.m4: check for `rl_already_prompted' after AC_SEARCH_LIBS and define HAVE_READLINE on success * lispbibl.d, unixconf.h.in: use HAVE_READLINE instead of HAVE_READLINE_READLINE_H 2002-09-30 Sam Steingold * init.lisp (get-funname-symbol): moved here (defun): use GET-FUNNAME-SYMBOL instead of GET-SETF-SYMBOL * trace.lisp (check-traceable): ditto * places.lisp (get-setf-symbol): moved to init.lisp 2002-09-29 Sam Steingold * makemake.in: fix regeneration of intparam.h and floatparam.h 2002-09-29 Sam Steingold * m4/readline.m4 (CL_READLINE): check for `rl_already_prompted' and reject readline versions that lack it 2002-09-29 Sam Steingold * intparam.c: include for exit(3) to avoid a warning 2002-09-26 Sam Steingold SOCKET:SOCKET-OPTIONS - an interface to getsockopt/setsockopt * stream.d (sock_opt_bool, sock_opt_int, sock_opt_time) (SOCKET-OPTIONS): new functions * constsym.d (SOCKET-OPTIONS, :SO-*): add * subr.d (socket_options): add * constobj.d (type_socket_option): add * init.lisp (SOCKET-OPTIONS): export 2002-09-25 Sam Steingold * compiler.lisp (special-variable-p): add a COMPILER-MACRO * init.lisp (%the-environment-error): rename to %UNCOMPILABLE 2002-09-25 Sam Steingold * compiler.lisp (c-form): fix the same bug again: EXPAND-COMPILER-MACRO may return an atom. This bug has already been fix on 2002-02-28, but it was re-introduced on 2002-04-22. Yuk. 2002-09-25 Sam Steingold * compiler.lisp: remove the cross-compilation infrastructure, which was not used for over 10 years! 2002-09-25 Sam Steingold * check-lispfun.lisp (check-lisp-defs): do not need explicit APPEASE-CERRORS 2002-09-25 Sam Steingold * eval.d (symbol_env_search): new function (sym_value, setq): use it (SPECIAL-VARIABLE-P): accept an optional second argument - the environment (NIL for global, T for local, VENV, or ENV5) moved here from symbol.d because it uses symbol_env_search() * subr.d (SPECIAL-VARIABLE-P): changed the signature * constobj.d (version): bumped because SPECIAL-VARIABLE-P is in FUNTAB * symbol.d (SPECIAL-VARIABLE-P): moved to eval.d * compiler.lisp (subr-info) [CROSS]: update the signature * error.d (fehler_environment): new function * lispbibl.d (fehler_environment): prototype it * control.d (test_optional_env_arg): use it 2002-09-23 Sam Steingold some code clean-up * describe.lisp (unicode-attributes): avoid a warning in LOOP * charstrg.d (eqcomp_fun_t): rename from `eqcomp_fun' * array.d (ADJUSTABLE-ARRAY-P): use VALUES_IF (uint_bitpack_t): rename from `uint_bitpack' (uint_2bitpack_t): rename from `uint_2bitpack' (initial_contents_locals_t): rename from `initial_contents_locals' (reshape_data): rename from `reshape_data' (test_array): turned into a function (ADJUST-ARRAY): use it * symbol.d (test_symbol): new function (%PUTD, %FIND-SUBR, GET, %PUTPLIST, %PUT, REMPROP, SYMBOL-PACKAGE) (SYMBOL-PLIST, SYMBOL-NAME, SPECIAL-VARIABLE-P): use it * debug.d (climb_fun_t): rename from `kletterfun' 2002-09-22 Arseny Slobodjuck Bring (directory) to compliance with new win32 shortcut handling. * pathname.d [WIN32_NATIVE]: (resolve_shell_shortcut): changed parameters and semantics to lower level (symlink is based on shortcuts which is an implementation method). (resolve_shell_symlink): use it, work as old resolve_shell_shortcut did. (assure_dir_exists): rename a call to it. (directory_search_scandir): now handles shortcuts specially. 2002-09-21 John Hinsdale * module/oracle/Makefile.in: better Oracle -I path for v8.0.5 2002-09-20 Sam Steingold * control.d (UNWIND-TO-DRIVER): accept a TOP-P argument (UNWIND-TO-TOP): remove * subr.d, constsym.d (UNWIND-TO-TOP): remove * subr.d, compiler.lisp (UNWIND-TO-DRIVER): changed the signature * eval.d (FUNTAB): add MEMQ * constobj.d (version): bumped because of UNWIND-TO-DRIVER and MEMQ * reploop.lisp (break-loop, step-hook-fn): do not use UNWIND-TO-TOP but pass an argument to UNWIND-TO-DRIVER 2002-09-20 Sam Steingold fix the OBSOLETE-ACTION patch * init.lisp (warn): the preliminary definition must return NIL (open-for-load): use SYS::BUILT-IN-STREAM-CLOSE instead of CLOSE 2002-09-20 Sam Steingold error reporting clean-up * charstrg.d (coerce_ss, coerce_imm_ss, coerce_normal_ss) (coerce_imm_normal_ss): use fehler_string() instead of explicit fehler(type_error,...) (test_char_arg): rename from test_newchar_arg(), use fehler_char() (STANDARD-CHAR-P, GRAPHIC-CHAR-P, CHAR-WIDTH, STRING-CHAR-P) (BASE-CHAR-P, ALPHA-CHAR-P, UPPER-CASE-P, LOWER-CASE-P) (BOTH-CASE-P, DIGIT-CHAR-P, ALPHANUMERICP, CHAR-CODE) (CHAR-UPCASE, CHAR-DOWNCASE, CHAR-INT, CHAR-NAME, STORE-CHAR) (STORE-SCHAR): use test_char_arg() 2002-09-20 Sam Steingold LOAD now takes an additional :OBSOLETE-ACTION keyword * init.lisp (open-for-load): new function (load): use it to open the file (*load-obsolete-action*): new user variable 2002-09-20 Stefan Kain * constsym.d, subr.d, encoding.d, predtype.d, intlog.d, control.d: * charstrg.d, arihppa.d, array.d: translated all comments 2002-09-20 John Hinsdale * modules/oracle: Fix Makefile format and vars to work on more systems; take ORACLE_HOME from environment. 2002-09-20 Will Newton * ariarm.d: update ARM assembler code to the newer gas syntax 2002-09-19 Sam Steingold * lispbibl.d [SPARC GCC3]: disable global register declarations Suggested by Will Newton 2002-09-19 Sam Steingold * lisparit.d (log_digits): fix last patch: make sure that the saved value is not more precise than it is accurate 2002-09-18 Sam Steingold * makemake.in: treat floatparam.[ch] just like intparam.[ch] 2002-09-18 Sam Steingold * m4/fenv_default.m4: fix AC_DEFINE macro calls 2002-09-18 Sam Steingold * modules/bindings/linuxlibc6/linux.lisp (NGROUPS_MAX): do not redefine the constant based on _POSIX_NGROUPS_MAX 2002-09-18 Sam Steingold * foreign1.lisp (default-foreign-language): avoid a compile-time warning by wrapping SETQ *FOREIGN-LANGUAGE* inside a WITHOUT-PACKAGE-LOCK macro * compiler.lisp (c-form-table, compile-toplevel-form): handle WITHOUT-PACKAGE-LOCK specially (*compiler-unlocked-packages*): new variable (set-check-lock): use it (c-WITHOUT-PACKAGE-LOCK): new function, binds *COMPILER-UNLOCKED-PACKAGES* 2002-09-18 Will Newton * arihppa.d: syntactic changes to make the GNU assembler happy 2002-09-18 Sam Steingold do not print QUOTE and FUNCTION specially when that results in a dotted list representation * io.d (special_list_p): new `dotted_p' argument (pr_cons): pass `dotted_p' to special_list_p() 2002-09-17 John Hinsdale * modules/oracle/oracle.lisp: use new FFI calls; many performance improvements in low-level functions and macros 2002-09-17 Sam Steingold * lisparit.d (log_digits): fix the 2002-09-11 patch: give NULL as end_p to R_ln_R() and shorten the result 2002-09-17 Bruno Haible * loop.lisp (expand-loop): Warn if a sequence of forms is empty - allowed by CLtL2, but invalid according to ANSI CL. 2002-09-14 Sam Steingold * compiler.lisp (c-APPLY): check whether FUN is locally defined to check signature in (flet ((foo (...) ...)) (apply #'foo ...)) this also kills a spurious warning about undefined functions 2002-09-14 Sam Steingold * Makefile.devel (SOURCES): remove SOURCES3 (SOURCES2): simplified (SOURCES3): remove * makemake.in (clisp.html): VERSION --> `cat VERSION` * _clisp.html: report the CLISP version too 2002-09-15 Sam Steingold * version.h: 2.30 is released 2002-09-13 Sam Steingold * intparam.d: remove * Makefile.devel: do not regenerate comment5.c and intparam.c 2002-09-12 Sam Steingold * compiler.lisp (form-name): remove (compile-file): folded FORM-NAME; pass :PRETTY NIL to WRITE-TO-STRING 2002-09-11 Stefan Kain * error.d, socket.d: translated all comments 2002-09-11 Sam Steingold improved accuracy of some transcendental functions * realtran.d (pi): return long float of the same format as the arg (R_cos_sin_R_R, R_ln_R, R_exp_R, R_cosh_sinh_R_R): accept two additional arguments: start_p (whether to increase the precision in the beginning) and end_p (whether to lower the precision back at the end of computation) (R_R_log_R): handle these changes * realelem.d (N_N_contagion_R, F_R_float_F, RA_R_float_F) (R_R_float_F, C_R_float_C, N_N_float_N): new functions * lisparit.d (EXP, EXPT, log_digits): accommodate the changes in signatures of the basic transcendental functions * comptran.d (N_exp_N, N_log_N): accept start_p and end_p (N_N_log_N, N_N_expt_N, N_sin_N, N_cos_N, N_tan_N, N_cis_N) (N_sinh_N, N_cosh_N, N_tanh_N, R_R_atanh_R_R, N_atanh_N, N_atan_N) (R_R_asinh_R_R, N_acosh_N, N_acos_N): handle these changes 2002-09-11 John Hinsdale * modules/oracle/*: new add-in module for Oracle interface * Makefile.devel: build autoconf script for modules/oracle 2002-09-11 Marco Baringer Sam Steingold * lispbibl.d (VALUES_IF, VALUES0, VALUES1, VALUES2, VALUES3) (boundp, nullpSv, missingp): new macros * affi.d, aridecl.d, array.d, charstrg.d, control.d, debug.d: * dirkey.d, encoding.d, error.d, eval.d, flo_rest.d, foreign.d: * hashtabl.d, i18n.d, io.d, lisparit.d, lispbibl.d, list.d, misc.d: * package.d, pathname.d, predtype.d, realelem.d, record.d, rexx.d: * sequence.d, socket.d, spvw.d, spvw_garcol.d, stream.d, symbol.d: * time.d: use them 2002-09-08 Sam Steingold * acorn.d, msdos.d, unix.d, unixaux.d, m4/signal.m4, unix/sigsegv.c: rename signal_handler type to signal_handler_t 2002-09-07 Sam Steingold * defmacro.lisp (analyze-key): fix the bug with (destructuring-bind (&key (x x)) ...) 2002-09-05 Stefan Kain * avl.d: translated all comments 2002-09-05 Sam Steingold * makemake.in (LN_S) [win32gcc]: do not redefine: Arseny made CLISP understand symlinks! (CPP) [win32gcc]: make sure it contains -mno-cygwin (comment5) [win32gcc]: avoid -mno-cygwin so that comment5.exe understands symbolic links 2002-09-04 Sam Steingold * realtran.d (R_cos_sin_R_R): avoid one sqrt() and use sin(r)=r when r=0 2002-09-04 Sam Steingold * compiler.lisp (disassemble-closure): print the number of instructions 2002-09-04 Bruno Haible * m4/sigsegv.m4 (CL_SIGSEGV): Do not define NO_SIGSEGV. * makemake.in (XCFLAGS): Add -DNO_SIGSEGV if there is no libsigsegv. 2002-09-03 Bruno Haible * sigsegv: Remove directory. * unix/INSTALL: Recommend installation of GNU libiconv, GNU libsigsegv. * win32msvc/INSTALL: Likewise. * m4/sigsegv.m4: New file. * configure.in: Call CL_SIGSEGV. * makemake.in (LIBSIGSEGV): New variable. (USE_SIGSEGV, XCL_SIGSEGVLIB): Remove variables. (FILES, LIBS): Remove libsigsegv.a. (EVERY_INCLUDES_H): Remove sigsegv.h. (sigsegv.h, libsigsegv.a): Remove rules. (clean1, clean4): Don't remove libsigsegv.a, sigsegv.h, sigsegv. * lispbibl.d: Don't include sigsegv.h if NO_SIGSEGV is defined. * Makefile.devel (SOURCES4): Remove sigsegv. (CONFIGURES): Remove sigsegv/configure. (configures): Remove dependency on sigsegv/autoconf/aclocal.m4. (sigsegv/autoconf/aclocal.m4, sigsegv/configure): Remove rules. 2002-09-03 Sam Steingold * win32.d (HAVE_UNISTD_H): do not define (revert the 2002-08-19 patch) since is needed only for exec() which is not used on WIN32_NATIVE 2002-09-02 Arseny Slobodjuck Fixing makemake.in for mingw. * makemake.in: fix 2002-08-10 patch: double quotes now used on TSYS=win32msvc. (LIBS) [win32gcc]: add libuuid to library list (need it on mingw to handle shell objects) 2002-09-02 Arseny Slobodjuck Implement shorcut symlink ersatz on win32 (read-only, for CYGWIN compatibility). * win32aux.d (com_initialized): new global variable. (init_win32): initialize COM library. (done_win32): deinitialize COM library. * win32.d: include shell object headers. * pathname.d (FullName) [WIN32_NATIVE]: new function, translates short name to long one. (resolve_shell_shortcut): new function handles shortcuts. (assure_dir_exists): now trying to resolve ersatzsymlinkshortcuts. 2002-08-26 Sam Steingold * list.d (sublis_assoc): moved saving/restoring alist (to/from STACK) outside the loop because otherwise this function is mis-compiled by gcc-3.2 on linux (go figure!) Reported by James Mcclain 2002-08-19 Sam Steingold more win32gcc tweaks * unix.d (ualarm) [UNIX_CYGWIN32]: declaration tweak * win32.d (STDC_HEADERS, HAVE_UNISTD_H, HAVE_PERROR_DECL): declare for _clisp.c * acorn.d, amiga.d, msdos.d, unix.d, win32.d (OS_set_errno): new macro * socket.d (connect_to_x_server): use it * makemake.in (LN_S) [win32gcc]: set to "cp -p" * _clisp.c [WIN32_NATIVE]: ported to win32 2002-08-23 Marco Baringer Sam Steingold * pathname.d (DUPLICATE-HANDLE): dup/dup2 calls were reversed 2002-08-14 Sam Steingold * io.d (multi_line_sub_block_out): fix a crash when block contains several indentations Reported by Glauber Ribeiro 2002-08-14 Sam Steingold * compiler.lisp (form-name): use WRITE-TO-STRING instead of SYS::WRITE-TO-SHORT-STRING (reversed a major compilation performance hit introduced on 2002-03-11) 2002-08-14 Sam Steingold * makemake.in (makemake): no need for a separate second config.status invocation to get the additional commands * configure.in (po/Makefile.in): use AC_CONFIG_FILES, not AC_OUTPUT (makemake): use AC_CONFIG_FILES, not AC_CONFIG_COMMANDS 2002-08-12 Sam Steingold * makemake.in (encflags): new variable: -Efile and -Eterminal instead of the general -E (see patch 2002-06-10): need to keep *MISC-ENCODING* set to the user localization Reported by Arseny Slobodjuck. 2002-08-11 Sam Steingold fix the EXEEXT inconsistencies * _clisp.c (main): execname may be lisp.exe * clisp-link (LISPRUN): new variable, used throughout * makemake.in (clisp-link): replace EXEEXT use ${LEXE} more consistently 2002-08-10 Arseny Slobodjuck * makemake.in [win32]: do not use apostrophes as shell screening characters on win32. 2002-08-10 Arseny Slobodjuck * makemake.in: lisp executable depends on libcharset. 2002-08-09 Sam Steingold fix makemake creation: additional commands were not executed * configure.in (makemake): AC_OUTPUT with arguments is deprecated, use AC_CONFIG_COMMANDS instead * makemake.in (makemake): separate config.status invocation for variable substitution and the additional commands in configure.in 2002-08-09 Sam Steingold * _clisp.c (main): accept `-d' (now that .clisp is gone, the developers are expected to use the driver) 2002-08-09 Sam Steingold * makemake.in (TEXE, LEXE) [cygwin32]: exe/exe, because some win32 programs (e.g. Emacs) cannot start lisp.run (cygwin bash has no problems, of course) 2002-08-09 Sam Steingold add Gabriel's benchmarks * makemake.in (bench): new target 2002-08-09 Sam Steingold avoid compiler warning in (defun z () #'(lambda () (z))) * compiler.lisp (defining-p): new function (in-defun-p): use it (note-function-used): use it instead of IN-DEFUN-P 2002-08-07 Sam Steingold * charstrg.d (MAKE-STRING) [HAVE_SMALL_SSTRING]: create a string of minimal element size for the given initial element 2002-08-07 Sam Steingold * m4/ln.m4 (CL_PROG_HLN): this time, fix the link test for real 2002-08-07 Sam Steingold * pathname.d (COPY-FILE): instead of returning file count and byte count, return a list of (source dest byte-count) for each copy operation performed (copy_one_file, copy_file_low): update for that 2002-08-06 Sam Steingold rewrote the last patch to accept wildcards * pathname.d (check_copy_method, hardlink_file, symlink_file) (true_namestring): new functions (copy_method_t): new typedef (TRUENAME, PROBE-FILE, DELETE-FILE, rename_file, open_file, CD) (FILE-WRITE-DATE, FILE-AUTHOR, EXECUTE): use true_namestring() (NAMESTRING2, FILENAME_ACTION): remove (copy_attributes_and_close): converted from copy_attributes() (copy_file_low): do NOT do pathname merging and resolving (copy_one_file): do it here (COPY-FILE): return 2 values: file count and byte count 2002-08-05 Marco Baringer Sam Steingold POSIX:COPY-FILE - copying/renaming/linking files * pathname.d (COPY-FILE, copy_file_low, copy_attributes): new functions * constobj.d (type_link_arg): new object * constsym.d, subr.d, subrkw.d (copy_file): add * posix.lisp (copy-file): exported * lispbibl.d (strm_buffered_bufflen): moved here from stream.d * stream.d (strm_buffered_bufflen): commented out 2002-08-05 Sam Steingold * install.lisp: add a URL shortcut to CLISP home to the desktop * makemake.in (TXT_FILES): make clisp.c on all systems (needs): drop .clisp and .clisp-full in favor of clisp.c (IMPNOTES_FILES) [win32]: add clisp.ico (clisp): new target 2002-08-05 Sam Steingold * m4/dynload.m4 (CL_DYNLOAD): check for before doing anything else and drop out if the header is not there 2002-08-03 Sam Steingold * spvw_garcol.d (GC_MARK): new macro (gc_mark_stack): use it (gc_mark): unroll Rectype_reallocstring * spvw_genera2.d (gc_mark_at, gc_mark_old_generation): use GC_MARK 2002-08-02 Sam Steingold * compiler.lisp (c-DIRECT-FUNCTION-CALL): fix repeated key handling: ignore the value of the argument and issue a warning 2002-08-02 Sam Steingold * stream.d (make_terminal_stream_) [UNIX_CYGWIN32]: check ttyname() instead of inodes for stdin/out_handle (finish_tty_output, force_tty_output) [UNIX_CYGWIN32]: ignore EACCES (in addition to EBADF) for xterm/rxvt Suggested by David Young and Matthias Linder 2002-08-01 Sam Steingold * m4/ln.m4 (CL_PROG_HLN): fix the "hard links to symlinks" check * makemake.in (TEXE, LEXE) [cygwin32]: exe/run (distrib): rmrf TOPDIR before making the distribution 2002-08-01 Sam Steingold * type.lisp (COMPLEX): use UPGRADED-COMPLEX-PART-TYPE, just like VECTOR uses UPGRADED-ARRAY-ELEMENT-TYPE 2002-08-01 Sam Steingold * makemake.in (DISTFILE): strip parens from OS version for cygwin 2002-08-01 Sam Steingold * defs1.lisp (load-lpt-many): simplified messages * init.lisp (load): likewise 2002-08-01 Sam Steingold cygwin: understand win32 "c:" pathnames * pathname.d (PARSE-NAMESTRING) [UNIX_CYGWIN32]: use *DEVICE-PREFIX* to parse "c:/gnu/" --> "/cygdrive/c/gnu/" * constsym.d (*DEVICE-PREFIX*) [UNIX_CYGWIN32]: add * spvw.d (init_symbol_values) [UNIX_CYGWIN32]: defvar *DEVICE-PREFIX* * makemake.in [UNIX_CYGWIN32]: better cygwin32 canonicalization; less special treatment; add SETQ *DEVICE-PREFIX* to config.lisp 2002-07-31 Sam Steingold * utils/ccmp2c.c, utils/modprep.c: add * utils/ccmp2c.d, utils/modprep.d: remove * utils/txt2c.c: no pre-processing is needed * makemake.in: do not pre-process ccmp2c.c, modprep.c, txt2c.c 2002-07-31 Sam Steingold mingw port moving along - in-place only for now * configure: handle --with-mingw and pass 'win32gcc gcc' to makemake * makemake.in [win32gcc]: no special treatment for libcharset, sigsegv, and ffcall * Makefile.devel: remove win32gcc * win32gcc: remove directory * encoding.d [__MINGW32__]: #include for sprintf() * pathname.d (default_drive) [WIN32_NATIVE]: cast chart/cint properly * stream.d (rd_ch_keyboard, wr_ch_array_window, wr_ch_window) [WIN32_NATIVE]: ditto * win32.d (HAVE_LC_MESSAGES) [__MINGW32__]: define to 0 * win32aux.d (temp_interrupt_handler) [__MINGW32__]: no WSACancelBlockingCall() - need a replacement! 2002-07-31 Sam Steingold * m4/general.m4 (CL_CANONICAL_HOST_CPU_FOR_FFCALL) (CL_CANONICAL_HOST_CPU): canonicalize alphaev[4-8] to alpha Suggested by Will Newton 2002-07-30 Sam Steingold * utils/comment5.c (main): meaningful error messages * utils/comment5.d: remove 2002-07-29 Sam Steingold fix bug#552171: failure with clx.e * modules/clx/new-clx/e2d.c (do_defun): terminate with '\0' after inserting '}' 2002-07-29 Sam Steingold * spvw.d (main): warp all signal handler installations in begin/end_system_call() * spvw_debug.d [DEBUG_SPVW]: add some debugging functions 2002-07-26 Sam Steingold * stdint.h.in [__sun__]: defines everything 2002-07-26 Sam Steingold * type.lisp (upgraded-complex-part-type): spec must be a subtype of REAL, and the return value is REAL 2002-07-26 Sam Steingold * socket.d (RESOLVE-HOST-IPADDR-INTERNAL): fix a GC safety bug 2002-07-26 Sam Steingold Readline is now used properly on Cygwin * stream.d (make_terminal_stream_) [UNIX_CYGWIN32]: inode numbers do not make sense on Cygwin: they are based on filenames 2002-07-25 Sam Steingold * version.h: 2.29 is released 2002-07-25 Sam Steingold Bruno Haible fix the (compile nil (lambda () ... #'(lambda ...))) bug * compiler.lisp (symbol-suffix): also work when funname is NIL, but suffix is not a symbol (see also the 2002-02-11 patch) 2002-07-22 Sam Steingold * check-lispfun.lisp: new file: check LISPFUN, LISPFUNN and LISPSPECFORM between *.d and subr.d/subrkw.d/fsubr.d * makemake.in (check-sources): new target * array.d, charstrg.d, dirkey.d, io.d, posixmisc.d, rexx.d: * sequence.d, subr.d: remove backslashes from LISPFUNs 2002-07-22 Sam Steingold fix bug#584866: inspect.lisp invalid XHTML & e-mail * inspect.lisp (*user-mail-address*): new user variable (with-html-output): use it; link/rev should be a string, not a symbol, like all the other attribute values; add a comment about overriding keep-alive 2002-07-21 Bruno Haible * stdint.h.in: Add support for FreeBSD. 2002-07-21 Bruno Haible Avoid using floating-point hardware where it leads to exceptions or wrong computations. * floatparam.c: New file. * m4/fenv_default.m4: New file. * configure.in: Create floatparam.h. Call CL_{FLOAT,DOUBLE}_{DIV0,OVERFLOW,UNDERFLOW,INEXACT}. * unixconf.h.in (FLOAT_DIV0_EXCEPTION, FLOAT_OVERFLOW_EXCEPTION) (FLOAT_UNDERFLOW_EXCEPTION, FLOAT_INEXACT_EXCEPTION) (DOUBLE_DIV0_EXCEPTION, DOUBLE_OVERFLOW_EXCEPTION) (DOUBLE_UNDERFLOW_EXCEPTION, DOUBLE_INEXACT_EXCEPTION): New macros. * lispbibl.d: Include floatparam.h. (FAST_FLOAT, FAST_DOUBLE): Define according to the autoconf-determined parameters. * ffloat.d (FF_FF_durch_FF): Choose slow path if FLOAT_DIV0_EXCEPTION. * dfloat.d (DF_DF_durch_DF): Choose slow path if DOUBLE_DIV0_EXCEPTION. * lisparit.d (init_arith): Remove wrong value of DOUBLE-FLOAT-EPSILON and DOUBLE-FLOAT-NEGATIVE-EPSILON on Linux/i386. * unixaux.d (__fpu_control): Remove definition. * spvw.d (main): Remove __setfpucw call. 2002-07-21 Bruno Haible * defs1.lisp (module-name): Do not allow numbers or pathnames as module names. 2002-07-21 Bruno Haible * m4/rusage.m4 (CL_RUSAGE): Move CL_LINK_CHECK outside of AC_CACHE_CHECK. 2002-07-21 Bruno Haible * configure: Test ulimit result against 'unlimited'. 2002-07-21 Sam Steingold * m4/readline.m4 (CL_READLINE): fix whitespace * configure: remove config.cache to avoid stale cache problems * stream.d: #include before because of FILE* references in readline.h 2002-07-20 Sam Steingold * m4/readline.m4 (CL_READLINE): check for the name of the file completion function and CONST modifier of its first argument * unixconf.h.in (READLINE_CONST, READLINE_FILE_COMPLETE): undef * stream.d: use them 2002-07-19 Sam Steingold * spvw.d (main): more begin/end_system_call 2002-07-19 Sam Steingold * m4/termcap.m4 (CL_TERMCAP): use AC_SEARCH_LIBS * m4/readline.m4 (CL_READLINE): AC_REQUIRE CL_TERMCAP; check for the readline library, not just the header * configure (conf_dir): new function * makemake.in (LIBS): LIBTERMCAP and LIBREADLINE get into LIBS automagically 2002-07-19 Sam Steingold * lispbibl.d (GNU_GETTEXT): define based on NO_GETTEXT and ENABLE_NLS, not complex heuristics 2002-07-19 Sam Steingold do not distribute readline and termcap with CLISP * configure, makemake.in: dropped termcap and readline * m4/termcap.m4 (LIBTERMCAP): set to "broken" when termcap does not work * m4/readline.m4 (CL_READLINE): new test * configure.in (CL_READLINE): call it * lispbibl.d (GNU_READLINE): define based on NO_READLINE and HAVE_READLINE_READLINE_H, not complex heuristics * stream.d [GNU_READLINE]: include system headers, not local ones * unixconf.h.in (HAVE_READLINE_READLINE_H): undef * readline/*, termcap/*: remove * _distmakefile: remove readline docs 2002-07-19 Sam Steingold fix bug#583751: (compile-file xx :verbose NIL) * compiler.lisp (with-compilation-unit): bind *C-LISTING-OUTPUT* 2002-07-15 Marco Baringer Sam Steingold POSIX:DUPLICATE-HANDLE - interface to dup/dup2/DuplicateHandle * pathname.d (DUPLICATE-HANDLE): implement * constsym.d, subr.d (duplicate_handle): ditto * posix.lisp (duplicate-handle): export 2002-07-16 Sam Steingold * defs1.lisp (module-name): do not use ETYPECASE for bootstrapping reasons Reported by Marco Baringer 2002-07-16 Sam Steingold * misc.d (GETENV): return all the environment as an alist when the argument is NIL or omitted 2002-07-15 Bruno Haible * unix.d (fstatfs): Remove unused declaration. * makemake.in (lisp.a): Adapt to gcc-3.1; its libgcc.a contains *.oS, not *.o. * spvw_sigsegv.d (stackoverflow_handler): Add support for FreeBSD. * io.d (right_margin): Avoid gcc warning when compiling with -DWIDE. * lispbibl.d (copy_mem_o): Fix parentheses. (UNIX_HURD): Rename from UNIX_GNU. (UNIX_GNU): New macro. (_REENTRANT): Use for UNIX_GNU, not only UNIX_LINUX. (setjmp, longjmp): Treat UNIX_GNU like UNIX_LINUX. 2002-07-15 Sam Steingold check for OpenLDAP * m4/ldap.m4: new file * unixconf.h.in (HAVE_LDAP_H): undef * configure.in (CL_LDAP): call 2002-07-15 Sam Steingold fallout of 2002-07-09 parse-namestring patch in ANSI mode * pathname.d (test_default_pathname): treat NIL as unbound, permitting (parse-namestring "foo" nil nil ...) again * compiler.lisp (compile-file-pathname-helper): do not pass NIL as the :DEFAULTS to MAKE-PATHNAME 2002-07-15 Sam Steingold * configure: user-specified options (like --with-noreadline) override the default/inferred options 2002-07-15 Sam Steingold * pathname.d (wildcard_match): handle special patterns like :WILD, :WILD-INFERIORS, :UP and :BACK 2002-07-15 Sam Steingold fix bug#581646: REQUIRE uses STRING-EQUAL since CLISP in ANSI mode does not coerce symbols to pathnames, this also fixes a bug introduced on 2002-07-09 which precluded symbols as module names * defs1.lisp (module-name): new function (provide, require): use it to convert module name to a string * compiler (c-PROVIDE, c-REQUIRE): ditto (require, c-REQUIRE): use STRING= instead of STRING-EQUAL 2002-07-15 Sam Steingold * _distmakefile (clisp): new target for installing locally 2002-07-13 Sam Steingold ported DIR-KEY to cygwin32 * dirkey1.lisp (dir-key): export * dirkey.d (to_time_t_): stole from cygwin sources * constsym.d (Kwin32) [UNIX_CYGWIN32 DIR_KEY]: define 2002-07-13 Sam Steingold fix bug#514741: ldap bugs (describe, dir-key-info) * describe.lisp (describe-object): handle DIR-KEY 2002-07-12 Sam Steingold reverted the last patch wrt bindings (it broke lots of stuff) * control.d: reverted * eval.d (progv): reverted * compiler (bind-check-lock): remove (set-check-lock): use SYMBOL-VALUE-LOCK (c-LET/LET*, c-MULTIPLE-VALUE-BIND): reverted * package.d (SYMBOL-VALUE-LOCK): new function * subr.d, constsym.d (symbol_value_lock): ditto 2002-07-11 Sam Steingold extended package locking to assignments and bindings * compiler.lisp (set-check-lock, bind-check-lock): new functions (c-SETQ, c-PSETQ, c-MULTIPLE-VALUE-SETQ): use SET-CHECK-LOCK (c-LET/LET*, c-MULTIPLE-VALUE-BIND): use BIND-CHECK-LOCK * package.d (symbol_value_check_lock): new function * lispbibl.d (symbol_value_check_lock): declare * control.d (LET, LET*, COMPILER-LET): use it * eval.d (progv, setq): ditto 2002-07-11 Sam Steingold fix bug#580090: unbound SYSTEM::*COMPILING-FROM-FILE* error on (lambda () (defmethod ...)) * init.lisp (%expand-form): when evaluating (EVAL-WHEN (COMPILE)) bind COMPILER::*COMPILING-FROM-FILE* to nil 2002-07-10 Sam Steingold * spvw.d (quit): call done_win32() 2002-07-09 Sam Steingold * compiler.lisp (compile-file): do not clobber *.c file when there are no FFI forms 2002-07-09 Sam Steingold * bindings/linuxlibc6/linux.lisp (read): add commas before arguments in backquote 2002-07-09 Sam Steingold * complete.lisp (completion): consider the situation FUNCTIONALP when start==end, this fixes the "(finalize TAB" bug) 2002-07-09 Sam Steingold * pathname.d (PARSE-NAMESTRING): barf on symbols when CUSTOM:*PARSE-NAMESTRING-ANSI* is non-NIL (FILE-STAT-INTERNAL): use coerce_pathname() 2002-07-08 Sam Steingold * clos.lisp (check-metaclass-mix): new function (initialize-instance-standard-class, make-instance-built-in-class): (initialize-instance-structure-class): use it 2002-07-02 Sam Steingold * _clisp.c [STDC_HEADERS]: #include (HAVE_STDLIB_H is obsolete) 2002-07-01 Sam Steingold * spvw.d (main): remove the obsolete -W option for the sake of the CYGWIN port getting "-M c:/gnu/clisp/lispinit.mem" * _clisp.c (main): ditto 2002-07-01 LaMont Jones * ffcall/callback/trampoline_r/trampoline.c (alloc_trampoline_r) (is_tramp): work around a bug in gcc 3.* * ffcall/avcall/avcall-hppa.s: * ffcall/callback/trampoline_r/cache-hppa.s: * ffcall/callback/trampoline_r/proto-hppa.s: * ffcall/callback/trampoline_r/tramp-hppa.s: * ffcall/callback/vacall_r/vacall-hppa.s: * ffcall/trampoline/cache-hppa.s: * ffcall/trampoline/proto-hppa.s: * ffcall/trampoline/tramp-hppa.s: * ffcall/vacall/vacall-hppa.s: support both HP-UX assembler and GAS 2002-07-01 Sam Steingold * makemake.in (echotab_mkdir_maybe): pass `-p' to mkdir(1) (shared): new make var; create it before doc dirs 2002-06-29 Sam Steingold implement RFE#575303: quit to top-level in debugger * reploop.lisp (debug-quit): new function (commands1): document `Quit/:q' (break-loop, step-hook-fn): handle it (as `abort-to-top') * control.d (UNWIND-TO-TOP): new function * constsym.d, subr.d (unwind_to_top): ditto 2002-06-28 Sam Steingold * configure: work around the ulimit bug in cygwin /bin/sh 2002-06-28 Sam Steingold * lispbibl.d (alloca) [UNIX_CYGWIN32]: already defined in 2002-06-27 Sam Steingold fix Sparc/Linux glibc 2.2 --with-debug build * lispbibl.d (oint_type_*, oint_data_*) [SPARC UNIX_LINUX]: do special handling only for glibc 2.1 and earlier 2002-06-27 Sam Steingold * configure: check stack limit and suggest ulimit when printing further recommendations and call ulimit before make 2002-06-26 Sam Steingold * lispbibl.d: separate `chart' and `object' (object, as_oint, as_object) [OBJECT_STRUCT]: `one' --> `one_o' (chart, as_cint, as_chart) [CHART_STRUCT]: `one' --> `one_c' * stream.d (stream_reset_eltype): compare ch with LF properly * array.d (make_storagevector): use char_int(), not as_cint(), to convert an object to `cint' * spvw_mark.d (mark, unmark): object slot is `one_o' 2002-06-26 Sam Steingold * m4/general.m4 (CL_CANONICAL_HOST_CPU) (CL_CANONICAL_HOST_CPU_FOR_FFCALL): handle hppa64 the same way as hppa1 and hppa2 Suggested by Will Newton 2002-06-25 Sam Steingold memcpy() & begin/end_system_call() cleanup * lispbibl.d (copy_mem_b, copy_mem_o): new macros (do_cclosure_copy): use copy_mem_o() * hashtabl.d (%SET-HASH-TABLE-WEAK-P): use copy_mem_o() instead of memcpy() * record.d (COPY-STRUCTURE): ditto * stream.d (read_byte_array_buffered, write_byte_array_buffered) (READ-FLOAT, WRITE-FLOAT): use copy_mem_b() instead of memcpy() (%DEFGRAY): use copy_mem_o() instead of memcpy() (create_input_pipe, create_output_pipe, create_io_pipe): move the memcpy() call inside the begin/end_system_call() * encoding.d (MAKE-ENCODING): use copy_mem_b() instead of memcpy() 2002-06-25 Sam Steingold fix the spurious "fatal error in the fatal error handler" message: break_driver() lost the stack location of its `continuable' argument * debug.d (break_driver): accept a boolean argument instead of an object (save on stack manipulation, gain clarity) * lispbibl.d (break_driver): fix the prototype * eval.d (unwind): adjust break_driver() call * error.d (end_error, ERROR, ERROR-OF-TYPE, tast_break): ditto 2002-06-25 Sam Steingold * error.d (end_error): print the abort message to stderr include to avoid compiler warning 2002-06-25 Sam Steingold * charstrg.d (STRING-INFO): new function * constsym.d, subr.d (string_info): ditto 2002-06-25 Sam Steingold * stream.d (test_external_format_arg): fix for the 2002-06-19 patch (new MAKE-ENCODING keyword arg) 2002-06-20 Bruno Haible * lispbibl.d (CHART_STRUCT): Enable for gcc >= 3.0. 2002-06-20 Bruno Haible * lispbibl.d (sstring_): Define using chart. (Sstring): Likewise. * array.d (elt_copy_T_Char, ssstring_extend_low): Make it compile with CHART_STRUCT. * charstrg.d (copy_string, subsstring, SUBSTRING, string_concat): Likewise. * io.d (write_sstring_case): Likewise. * lisparit.d (decimal_string): Likewise. * pathname.d (Z_AT_SLASH): Fix for changed return type of schar. (wildcard_diff_ab): Likewise. 2002-06-20 Sam Steingold * record.d (COPY-STRUCTURE): use memcpy() instead of dotimespC (call_init_fun): new function (%REINITIALIZE-INSTANCE, do_initialize_instance): use it 2002-06-20 Sam Steingold * spvw_typealloc.d (reallocate_small_string) [TYPECODES]: fix a typo 2002-06-19 Sam Steingold * pathname.d (nametype_diff_aux): treat logical and physical pathnames the same way 2002-06-19 Sam Steingold * encoding.d (MAKE-ENCODING): new keyword argument :IF-DOES-NOT-EXIST to return nil for non-existing charsets (init_encodings_2): when the charset does not exist, just unintern the symbol (encoding_from_name): pushSTACK() the extra keyword argument for C_make_encoding() * subr.d, subrkw.d (make_encoding): new keyword argument * lispbibl.d (check_charset): return bool * stream.d (open_iconv): do not barf when charset is nullobj (check_charset): return false when code is invalid and charset is nullobj 2002-06-19 Bruno Haible * constsym.d (CHARSET:ARMSCII-8, CHARSET:TCVN): Disable in glibc-2.2. 2002-06-19 Sam Steingold new built-in MEMQ == MEMBER :TEST #'EQ * list.d (MEMQ): new function (uses memq) * constsym.d, subr.d (memq): ditto * clos.lisp, compiler.lisp, defstruct.lisp, describe.lisp: * init.lisp, type.lisp: use it instead of MEMBER :TEST #'EQ 2002-06-17 Sam Steingold abstracted some code * list.d (memq): new function * lispbibl.d (memq): declare * control.d (PROCLAIM, KEYWORD-TEST): use it * eval.d (augment_decl_env): ditto * io.d (interpret_feature): ditto * package.d (symtab_find, symtab_delete, shadowing_find) (use_package, %IN-PACKAGE, FIND-ALL-SYMBOLS, RE-EXPORT): ditto * symbol.d (GET-PROPERTIES): ditto * record.d (obj_in_list): remove (superseded by memq) (structure_up, %STRUCTURE-TYPE-P, keyword_test, slot_in_arglist) (%SHARED-INITIALIZE): use !null(memq()) instead of obj_in_list() 2002-06-17 Sam Steingold * lispbibl.d [DECALPHA/UNIX_FREEBSD]: treat just like Linux Verified by Jeffrey Katcher . 2002-06-15 Sam Steingold * modules/clx/mit-clx/input.lisp (:configure-request): use `member8' instead of `member' for `data' From and 2002-06-15 Arseny Slobodjuck more fixes for bug#542902: not only socket-wait is interruptible on windows, but also socket-accept is * socket.d (accept_connection) [WIN32_NATIVE]: interruptible check socket for readability (infinitely long) before calling accept. 2002-06-14 Sam Steingold * complete.lisp (completion): when there is no word to complete, describe the current funcall and return 0 * stream.d (lisp_completion): when COMPLETION returns 0, refresh the current line using rl_refresh_line() 2002-06-14 Sam Steingold grand type renaming continues array_dim_size --> array_dim_size_t environment --> environment_t gc_function --> gc_function_t host_data --> host_data_t host_data_fetcher --> host_data_fetcher_t map_sequence_function --> map_sequence_function_t module_ --> module_t sockaddr_max --> sockaddr_max_t stack_range --> stack_range_t thread_ --> thread_t unwind_protect_caller --> unwind_protect_caller_t * modules/clx/new-clx/clx.f, modules/clx/new-clx/e2d.c: * affi.d, array.d, control.d, debug.d, eval.d, foreign1.lisp: * fsubr.d, genclisph.d, io.d, lispbibl.d, modules.d, predtype.d: * sequence.d, spvw.d, spvw_memfile.d, spvw_module.d: * spvw_space.d, spvw_walk.d, spvwtabf.d, subr.d: * utils/modprep.d, utils/modpreptest.out: replace 2002-06-14 Sam Steingold * spvw_genera1.d (rebuild_old_generation_cache): fix last patch: FREE_DYNAMIC_ARRAY should be on the same block level as DYNAMIC_ARRAY 2002-06-14 Arseny Slobodjuck fix bug#514805: core dump using :rehash-size in 9nines On MSVC, also UNIX with HAVE_ALLOCA_H, RISCOS and others, where DYNAMIC_ARRAY implemented through _alloca(3), putting it into the loop is dangerous: stack is freed only when function returns, not by FREE_DYNAMIC_ARRAY. * spvw_genera1.d (rebuild_old_generation_cache): put allocation of fixed sized block out of loop. May allocate unneeded block, but that case seems rare to me. 2002-06-13 Sam Steingold grand type renaming: * --> *_t: decoded_time --> decoded_time_t internal_time --> internal_time_t lisp_function --> lisp_function_t map_heap_function --> map_heap_function_t object_initdata --> object_initdata_t subr_initdata --> subr_initdata_t timescore --> timescore_t * modules/clx/new-clx/e2d.c, affi.d, eval.d, foreign1.lisp, * fsubr.d, genclisph.d, lisparit.d, lispbibl.d, modules.d, * pathname.d, spvw.d, spvw_gcstat.d, spvw_walk.d, subr.d, time.d, * utils/modprep.d, utils/modpreptest.out: replace 2002-06-12 Sam Steingold Russian messages are now working * configure.in (ALL_LINGUAS): add `ru' * constsym.d (russian): add * init.lisp (russian.lisp) [GETTEXT UNICODE]: load * russian.lisp: new file * spvw_language.d (language_russian): add (current_language_o, init_language): handle it (init_language_from): check for Russian * makemake.in (LPARTS) [$with_unicode]: add russian 2002-06-12 Sam Steingold * lispbibl.d (schar): match the cast in return with the return type 2002-06-12 Arseny Slobodjuck Fix win32 build * win32.d [_MSC_VER]: no LC_MESSAGES in msvc * socket.d (connect_via_ip): fix bad goto 2002-06-12 Bruno Haible * lispbibl.d (schar): Add comments! Change return type to chart. Make 'static inline', not 'global inline', for better inlining. * array.d (storagevector_aref): Update for schar change. * charstrg.d (schar): Remove out-of-line definition. (coerce_char): Update for schar change. (CHAR, SCHAR): Likewise. * debug.d (read_form): Likewise. * io.d (sstring_printf): Likewise. * pathname.d (Z_AT_SLASH, parse_logical_word) (parse_logical_host_prefix, parse_logical_pathnamestring) (PARSE-NAMESTRING): Likewise. (legal_logical_word): Change variable from 'cintX' to 'chart', it's safer. (legal_type, wild_p, word_wild_p): Likewise. (wildcard_diff_ab): Update for schar change. Simplify filling string. (translate_nametype_aux, ensure_last_slash): Update for schar change. * stream.d (read_char_array, rd_ch_str_in, wr_ch_array_pphelp) (rd_ch_buff_in): Likewise. 2002-06-12 Bruno Haible * makemake.in (XCFLAGS): Put a space before --traditional-cpp. 2002-06-12 Bruno Haible * array.d (make_storagevector): Create a string with as small element size as possible. 2002-06-12 Bruno Haible * encoding.d (MAKE-ENCODING): Fix a GC safety bug. Use the original arg for the error message, not the upcased one. 2002-06-12 Bruno Haible * socket.d (CLOSESOCKET): Make macro more robust. 2002-06-12 Bruno Haible * m4/lcmessage.m4 (AM_LC_MESSAGES): Do not test ac_cv_header_locale_h here. * m4/gettext.m4 (AM_INTL_SUBDIR): Test it here. * configure.in: Call AM_LC_MESSAGES. * unixconf.h.in (HAVE_LC_MESSAGES): New macro. * win32.d (HAVE_LC_MESSAGES): New macro. * spvw_ctype.d (init_ctype): Use HAVE_LC_MESSAGES. 2002-06-12 Eduard Haritonov Arseny Slobodjuck Long awaited Russian translations * po/Makefile.devel: add ru language * po/Makefile.trans.ru: new translator's makefile * po/ru.po: new translations file 2002-06-11 Sam Steingold * complete.lisp (completion): restored adding ")" when completing a function without arguments, broken since FUNCTION-SIGNATURE was modified to return the function name as the first value 2002-06-11 Sam Steingold * spvw.d (main): add an undocumented, unsupported `-d' developer option: not in usage(), clisp.c, clisp.html, clisp.1 &c for now just unlock all packages 2002-06-11 Sam Steingold * makemake.in (XCFLAGS) [darwin]: add `--traditional-cpp' (--verbose): new option 2002-06-11 Sam Steingold * spvw_ctype.d (init_ctype) [UNIX_DARWIN]: no LC_MESSAGES, just like on WIN32_NATIVE 2002-06-10 Sam Steingold * charstrg.d (string_gleich): use string_eqcomp() (string_equal): use string_eqcomp_ci() 2002-06-10 Sam Steingold make string element access slightly easier: use schar() * lispbibl.d (schar): define * charstrg.d (schar) [HAVE_SMALL_SSTRING]: implement (coerce_char, CHAR, SCHAR): use schar() * array.d (storagevector_aref): use schar() * debug.d (read_form): ditto * io.d (sstring_printf): ditto * pathname.d (schar): remove (parse_logical_word, parse_logical_host_prefix) (parse_logical_pathnamestring, translate_nametype_aux) (parse_logical_host_prefix, wildcard_diff_ab) (ensure_last_slash): use direct `==' instead of chareq(as_chart) * stream.d (read_char_array, rd_ch_str_in, wr_ch_array_pphelp) (rd_ch_buff_in): use schar() 2002-06-10 Sam Steingold * pathname.d (common_case, test_optional_host, all_digits) (split_name_type, legal_logical_word, legal_type, wild_p) (word_wild_p, Z_AT_SLASH): adjusted for the new SIMPLE-STRING model by using SstringDispatch (for the 2002-05-26 UCS-4 patch) (schar, copy_upcase): new functions (parse_logical_word, translate_nametype_aux, PARSE-NAMESTRING) (parse_logical_host_prefix, parse_logical_pathnamestring) (wildcard_diff_ab): use them 2002-06-10 Sam Steingold * makemake.in: when running CLISP, pass "-E UTF-8" instead of "-Efile UTF-8" for the sake of "make check" on badly localized machines (ascii terminals make UNICODE warnings into errors) 2002-06-10 Sam Steingold user can now control the exit code better * lispbibl.d, spvw.d (final_exitcode): int, not bool (spvw.d and win32aux.d already assign it non-bool values) * control.d (%EXIT): errorp maybe a positive fixnum, in which case we can use its value for final_exitcode 2002-06-10 Sam Steingold * erramiga.d: do not use /* ENGLISH */ to mark gettext catalog messages 2002-06-07 Sam Steingold * modules/clx/new-clx/configure.in: work with autoconf-2.53 (GB_CHECK): remove 2002-06-07 Sam Steingold do not distribute autoconf with CLISP * Makefile.devel (EXCLUDE): exclude the po/tmp and autoconf cache (AUTOCONF_VERSION): new exported variable (AUTOCONF, AUTOCONF_CACHE): new variables (AUTOCONF_FILES): remove autoconf.m4f (*/configure): use $(AUTOCONF) (check-configures): remove $(AUTOCONF_CACHE) (potfiles): cleanup * ffcall/Makefile.devel (AUTOCONF_VERSION, AUTOCONF): new variables (AUTOCONF_FILES): remove autoconf.m4f (*/configure): use $(AUTOCONF) * libcharset/Makefile.devel, sigsegv/Makefile.devel: (AUTOCONF_VERSION, AUTOCONF): new variables (*/configure): use $(AUTOCONF) * ffcall/autoconf/autoconf, ffcall/autoconf/autoconf.m4f, * sigsegv/autoconf/autoconf, sigsegv/autoconf/autoconf.m4f, * autoconf/autoconf, autoconf/autoconf.m4f: remove 2002-06-06 Peter Burwood * stdint.h.in (NEED_SIGNED_INT_TYPES): New define. (int8_t) [NEED_SIGNED_INT_TYPES]: Declare type only when needed. (int16_t, int32_t, int64_t): Likewise. 2002-06-05 Bruno Haible * lispbibl.d (DYNAMIC_STRING) [UNICODE]: Use Rectype_S32string, not Rectype_S8string. 2002-06-05 Sam Steingold tweaked the last Arseny's patch * socket.d (lingerize_socket) [WIN32]: remove (not used) (ioctl) [WIN32]: moved to win32.d * win32.d (ioctl): define here, just like ioctl for UNIX is defined in unix.d 2002-06-04 Peter Burwood * m4/address.m4 (CL_ADDRESS_RANGE): Remove cl_cv_prog_cc_ansi test now that CL_CC_ANSI is not required. 2002-06-05 Arseny Slobodjuck Working with sockets on win32 * win32.d (socket_wait_event): new enum typedef (interruptible_socket_wait): rename from interruptible_wait and generalized to take event parameter, see socket select() function for description of these events. * win32aux.d (socket_wait_params): parameter struct to pass in thread. (do_socket_wait): rename from do_wait, takes struct as Joerg likes, now tests for given event, not only for read. (interruptible_socket_wait): parameters changed to struct. * socket.d (ioctl) [WIN32]: define on win32 as ioctlsocket. (bindlisten_via_ip): don't lingerize socket (seems working, need to test). (connect_via_ip): don't lingerize. Fix for win32 (may affect UNIX behavior too). * stream.d (socket_server_wait): use rename interruptible_socket_wait. 2002-06-04 Peter Burwood * lispbibl.d (DYNAMIC_STRING): Replace obsolete Rectype_Sstring with Rectype_S8string 2002-06-04 Sam Steingold * savemem.lisp (saveinitmem): add :START-PACKAGE argument 2002-06-04 Sam Steingold * Makefile.devel (CONFIGURES): add libcharset/configure (libcharset/configure): new target 2002-06-03 Sam Steingold * describe.lisp (describe-object): print the length of the lists before enumerating properties, packages, symbols &c 2002-06-03 Sam Steingold * makemake.in (packopt): fix the 2002-05-15 patch which broke giving meaningful package options (e.g. --with-threads=POSIX_THREADS) 2002-06-03 Sam Steingold build process: tweak 2002-05-30 patch: instead of relying on HAVE_*_H, add "." to the include path (-I.) and #include <...> * makemake.in (XCFLAGS): add -I. when STDBOOL_H and STDINT_H are non-void * lispbibl.d, uniname.c, unitypes.h: #include <...> 2002-05-31 Sam Steingold tweaked the last two win32 patches * socket.d (connect_via_ip): use sock_set_errno() instead of explicit errno= (for the benefit of win32) * win32.d (EINPROGRESS, ETIMEDOUT): remove (earlylate_asciz_error): remove declaration * win32aux.d (earlylate_asciz_error): local, not global if we need such global function in the future, it should probably go into 2002-06-01 Arseny Slobodjuck Win32 build fixes * win32.d: include (EINPROGRESS, ETIMEDOUT): define to use instead of WSAE*. * spvw_ctype (init_ctype) [WIN32_NATIVE]: LC_MESSAGES is not defined on win32 2002-05-31 Arseny Slobodjuck * win32.d (stderr_handle): new global variable. (earlylate_asciz_error): new function. * win32aux.d (stderr_handle): define. (winsock_initialized): new static variable. (init_win32): initialize stderr_handle, set winsock_initialized, use earlylate_asciz_error (done_win32): use winsock_initialized flag. (earlylate_asciz_error): New function. Prints an error to stderr, optionally exits clisp (the latter is not recommended). Does not use clisp internals. 2002-05-30 Sam Steingold * genclisph.d: anticipate possible future addition of stdint.h (print_file): new function (main): use it to output stdbool.h 2002-05-30 Sam Steingold OpenBSD build fixes * lispbibl.d, uniname.c (stdbool.h): check HAVE_STDBOOL_H * unitypes.h (stdint.h): check HAVE_STDINT_H * unixconf.h.in (HAVE_STDINT_H): add an #undef 2002-05-29 Sam Steingold * makemake.in (UNICODE_EXTRA): new variable (fix the build broken by addition of streq.h cjk.h uniwidth.h width.c) 2002-05-28 Sam Steingold * socket.d (connect_via_ip): when 0 timeout is given return immediately (do not wait at all); the next i/o operation on this socket might block - use SOCKET-STATUS to check that 2002-05-29 Bruno Haible Speed up the loading of type.lisp. * lispbibl.d (Encoding): Add a maxintervals argument to the enc_range function. (Encoding_range): Update. * stream.d (iconv_range): Add a maxintervals argument. * encoding.d (all_range): Likewise. (bmp_range): Likewise. (nls_range): Likewise. (SYSTEM::CHARSET-TYPEP): Update. (SYSTEM::CHARSET-RANGE): Add optional maxintervals argument. * pseudofun.d (all_range, nls_range, iconv_range): Add a maxintervals argument. * type.lisp (get-charset-range): Add optional maxintervals argument. 2002-05-29 Bruno Haible Upgrade CHAR-WIDTH and STRING-WIDTH to Unicode 3.2. * streq.h: New file, from libunistring-0.0. * cjk.h: New file, from libunistring-0.0. * uniwidth.h: New file, from libunistring-0.0. * width.c: New file, from libunistring-0.0. * charstrg.d (nonspacing_table_data, nonspacing_table_ind): Remove arrays. Instead include width.c. (char_width): Rewritten to use uc_width. * spvw.d (locale_encoding): New variable. * encoding.d (init_dependent_encodings): Initialize locale_encoding. 2002-05-28 Sam Steingold * stream.d (buffered_half_flush, buffered_full_flush): remove (buffered_flush): always do what buffered_half_flush() used to do 2002-05-28 Bruno Haible * lispbibl.d (STACK_register): Fix #if condition. 2002-05-28 Bruno Haible * makemake.in (XCC_GCC_VERSION): Update for gcc 3.1. (XCFLAGS): With gcc 3.1, add -fno-gcse. 2002-05-28 Bruno Haible * lispbibl.d (setSP, FAST_SP) [I80386]: Don't define when using gcc-3.1. 2002-05-26 Bruno Haible Assume exists. * m4/locale.m4: Remove file. * m4/setlocale.m4 (CL_SETLOCALE): Assume exists. * configure.in (CL_LOCALE_H): Remove call. * unixconf.h.in (HAVE_LOCALE_H): Remove macro. * unix.d: Always include and declare setlocale. * spvw_ctype.d (init_ctype): Assume HAVE_LOCALE_H is defined. 2002-05-26 Bruno Haible Finish 1998-02-11 patch. * m4/cc-ansi.m4: Remove file. * m4/address.m4 (CL_ADDRESS_RANGE): Don't require CL_CC_ANSI. * configure.in (CL_CC_ANSI): Remove call. * makemake.in: Remove CC_ANSI handling. * Makefile.devel (acorn/makefile.cc): Pass second argument 'cc' to makemake. 2002-05-27 Sam Steingold fix last patch * makemake.in (NLS_INCLUDES): remove nls_cp1255 and nls_cp1258 * charstrg.d (nstring_downcase): add cint32 case (nstring_upcase): remove the spurious extra case 2002-05-26 Bruno Haible * utils/unicode/Makefile (ALL): Remove nls_cp1255.c, nls_cp1258.c. (nls_cp1255.c, nls_cp1258.c): Remove rules. * nls_cp1255.c: Remove file. * nls_cp1258.c: Remove file. * constsym.d (CP1255, CP1258, WINDOWS-1255, WINDOWS-1258): Conditionalize on GNU_LIBICONV || glibc-2.2. (BIG5-HKSCS): Rename from BIG5HKSCS. (KOI8-RU, EUC-JP, SHIFT-JIS, CP932, ISO-2022-JP, EUC-CN, GBK, CP936) (GB18030, EUC-TW, BIG5, CP950, BIG5-HKSCS, ISO-2022-CN) (ISO-2022-CN-EXT, EUC-KR, CP949, ISO-2022-KR, JOHAB, ARMSCII-8) (GEORGIAN-ACADEMY, GEORGIAN-PS, TIS-620, CP1133, VISCII, TCVN, UTF-16) (UTF-7): Also enable on glibc-2.2. (ISO-2022-JP-2): Also enable on glibc-2.3. * encoding.d: Don't include nls_cp1255.c and nls_cp1258.c. (nls_tables): Remove nls_cp1255_table, nls_cp1258_table. (iconv_first_sym, iconv_last_sym, iconv_num_encodings): Also define on glibc-2.2. (init_encodings_2): Update according to changes in constsym.d. (encoding_from_name): Handle CP1255 in the libiconv specific part. Use same code on glibc-2.2 as with libiconv. Use BIG5-HKSCS, not BIG5HKSCS. * pseudofun.d (nls_cp1255_table, nls_cp1258_table): Remove entries. 2002-05-26 Bruno Haible * lispbibl.d (HAVE_GOOD_ICONV): Define if good iconv available. (HAVE_ICONV): Don't undefine this. * encoding.d: Test HAVE_GOOD_ICONV instead of GNU_LIBICONV || HAVE_ICONV. * pseudofun.d: Likewise. * stream.d: Likewise. Assume ICONV_CONST is defined. 2002-05-26 Bruno Haible Fix "make distclean". * makemake.in (OBSOLETE): Don't add linkkit. (install-bin): Use RMRF variable. (distrib): Likewise. (clean0): rm -rf linkkit. (clean1): rm -rf base full. (clean4): rm -f charset.alias. (clean5): If building outside srcdir, remove the UNICODE_INCLUDES, the NLS_INCLUDES, and unitypes.h, uniname.h, uninames.h. rm -rf data. (clean7): rm -rf avcall callback libcharset sigsegv. If building outside srcdir, rm -rf readline po termcap, and rm -f configure unixconf.h.in makemake.in VERSION. 2002-05-26 Bruno Haible Implement UCS-4 strings. * lispbibl.d: Accept new flag NO_SMALL_SSTRING. (Rectype_S8string, Rectype_Imm_S8string, Rectype_S16string) (Rectype_Imm_S16string, Rectype_S32string, Rectype_Imm_S32string): New enumeration values. (Rectype_Sstring, Rectype_Imm_Sstring, Rectype_SmallSstring) (Rectype_Imm_SmallSstring): Remove enumeration values. (char_int_len): Define to 24 instead of 16. (char_int_limit): Define to 0x110000 instead of 0x10000. (HAVE_SMALL_SSTRING): Don't define if NO_SMALL_SSTRING is specified. (small_char_int_len, small_char_int_limit, small_char_code_limit): Remove macros. (scint): Remove type. (cint8, cint16, cint32): New types. (cint8_limit, cint16_limit, cint32_limit): New macros. (STRUCT_SSTRING): New macro. (small_sstring_, SmallSstring): Remove types. (s8string_, S8string, s16string_, S16string, s32string_, S32string): New types. (Array_type_sstring): Handle 3 different simple-string types. (TheSmallSstring): Remove macro. (TheS8string, TheS16string, TheS32string): New macros. (vectorp, simplep, array_simplep, simple_string_p, stringp) (arrayp): Update. (if_recordp): Handle 3 different simple-string types. (small_char_p): Remove macro. (case_Rectype_Sstring_above): Handle 3 different simple-string types. (case_Rectype_string_above): Likewise. (case_Rectype_array_above): Likewise. (allocate_s8string, allocate_imm_s8string, allocate_s16string) (allocate_imm_s16string, allocate_s32string) (allocate_imm_s32string): New declarations. (allocate_string): Change to a macro. (allocate_imm_string): Likewise. (allocate_small_string, allocate_imm_small_string): Remove declarations. (reallocate_small_string): Add an argument 'newtype'. (copy_8bit_8bit, copy_8bit_16bit, copy_8bit_32bit, copy_16bit_8bit) (copy_16bit_16bit, copy_16bit_32bit, copy_32bit_8bit) (copy_32bit_16bit, copy_32bit_32bit): New declarations. (chartcopy): Remove macro. (scintcopy): Remove declaration. (SstringCase): Rename from SstringDispatch. Add one more case. (SstringDispatch): New macro. (sstring_normal_p): Update. (unpack_sstring_alloca): Update. Call copy_16bit_32bit or copy_8bit_32bit instead of scintcopy. (check_sstring_mutable): Handle 3 different simple-string types. * array.d (storagevector_aref): Update SstringDispatch invocation. (storagevector_store): Handle 3 different simple-string types. (elt_copy_Char_T): Update SstringDispatch invocation. (elt_copy_T_Char): Handle 3 different simple-string types. (elt_copy_Char_Char): Likewise. (elt_move_Char): Update SstringDispatch invocation. Don't inline elt_copy_Char_Char. (elt_fill): Update SstringDispatch invocation. (elt_reverse): Handle 3 different simple-string types. (elt_nreverse): Update SstringDispatch invocation. (ssstring_extend_low): Call copy_32bit_32bit/copy_8bit_8bit instead of chartcopy. (ssstring_append_extend): Handle 3 different simple-string types. (initial_contents_aux): Make it compile if TYPECODES. (ADJUST-ARRAY): Replace allocate_small_string call by one of allocate_s[8|16|32]string. * charstrg.d (nop_page): Change element type to uint16. (copy_8bit_8bit, copy_8bit_16bit, copy_8bit_32bit, copy_16bit_8bit) (copy_16bit_16bit, copy_16bit_32bit, copy_32bit_8bit) (copy_32bit_16bit, copy_32bit_32bit): New functions. (scintcopy): Remove function. (string_gleich): Update SstringDispatch invocations. (string_equal): Likewise. (sstring_store): Handle 3 different simple-string types. (sstring_store_array): Likewise. (copy_string): Likewise. (coerce_imm_ss): Likewise. (coerce_normal_ss): Likewise. (coerce_char): Update SstringDispatch invocation. (char_name): Update allocate_small_string invocation. Return a string of length 9 for characters with code >= 0x10000. (name_char): Accept names of the form "Uxxxxxxxx" of length 9. (CHAR): Update SstringDispatch invocation. (SCHAR): Likewise. (test_string_limits_rw): Handle 3 different simple-string types. (string_eqcomp): Update SstringDispatch invocations. (string_comp): Likewise. (string_eqcomp_ci): Likewise. (string_comp_ci): Likewise. (string_width): Update SstringDispatch invocation. (nstring_upcase): Handle 3 different simple-string types. (nstring_downcase): Likewise. (nstring_capitalize): Likewise. (subsstring): Likewise. (SUBSTRING): Likewise. (string_concat): Likewise. * debug.d (read_form): Update SstringDispatch invocation. * encoding.d (hex_table): Make read-only. (fehler_unencodable): Display character codes >= 0x10000 correctly. (bmp_range): New function. (uni16_wcslen): Handle the case of characters >= 0x10000 in the source string. (uni16be_wcstombs): Likewise. (uni16le_wcstombs): Likewise. (fehler_uni32_invalid): Update error message. (uni32be_mblen): Rename from uni32_mblen. (uni32le_mblen): New function. (uni32be_mbstowcs): Correct counting in case the error action is :IGNORE. (uni32le_mbstowcs): Likewise. (uni32be_wcstombs): Output characters outside the BMP correctly. (uni32le_wcstombs): Likewise. (fehler_utf8_invalid4): New function. (utf8_mblen): Reject UTF-8 encoded surrogates. Accept 4-byte sequences. (utf8_mbstowcs): Likewise. (utf8_wcstombs): Emit 4-byte sequence for characters outside the BMP. (java_mblen): Accept 12-byte sequences. (java_mbstowcs): Likewise. (java_wcslen): Characters outside the BMP generate 12 bytes of output. (java_wcstombs): Likewise. (nls_wcslen): Handle characters outside the BMP. (nls_wcstombs): Likewise. (nls_asciiext_wcslen): Handle characters outside the BMP. Remove a piece of dead code. (nls_asciiext_wcstombs): Handle characters outside the BMP. (nls_range): Speed up the case when end >= 0x10000. (ascii_to_string): Simplify. (init_encodings_1): Use bmp_range instead of all_range for UNICODE-16-BIG-ENDIAN and UNICODE-16-LITTLE-ENDIAN. Use uni32le_mblen for UNICODE-32-LITTLE-ENDIAN. Change max_bytes_per_char of UTF-8 to 4. Change max_bytes_per_char of JAVA to 12. * hashtabl.d (hashcode_string): Update SstringDispatch invocation. (hashcode3_atom): Handle 3 different simple-string types. (hashcode4_vector_Char): Update SstringDispatch invocation. * io.d (sstring_printf): Update SstringDispatch invocation. (small_char_code_limit): New macro. (write_sstring_case): Update SstringDispatch invocations. (pr_symbol_part): Likewise. (pr_sstring_ab): Likewise. (pr_orecord): Handle 3 different simple-string types. * lisparit.d (decimal_string): Inline the copying loop, instead of calling chartcopy. * misc.d (MACHINE-VERSION): Use TheS8string instead of TheSmallSstring. * package.d (string_hashcode): Update SstringDispatch invocation. * pathname.d (looks_logical_p): Update SstringDispatch invocation. (PARSE-NAMESTRING): Use SstringCase instead of SstringDispatch. (legal_name): Update SstringDispatch invocation. (ensure_last_slash): Likewise. * predtype.d (elt_compare_T_Char): Update SstringDispatch invocation. * pseudofun.d (bmp_range, uni32be_mblen, uni32le_mblen): New entries. (uni32_mblen): Remove entry. * spvw_garcol.d (gc_mark): Handle 3 different simple-string types. * spvw_genera1.d (walk_area, build_old_generation_cache): Likewise. * spvw_objsize.d (size_s8string, size_s16string, size_s32string): New macros. (size_sstring): Define as alias of size_s32string or size_s8string. (objsize): Handle 3 different simple-string types. * spvw_typealloc.d (allocate_string, allocate_imm_string) (allocate_small_string, allocate_imm_small_string): Remove functions. (allocate_s8string, allocate_imm_s8string, allocate_s16string) (allocate_imm_s16string, allocate_s32string) (allocate_imm_s32string): New functions. (reallocate_small_string): Add 'newtype' argument. * spvw_update.d (update_varobject): Handle 3 different simple-string types. * stream.d (wr_ch_array_dummy): Update SstringDispatch invocation. (read_char_array): Likewise. (rd_ch_str_in): Likewise. (wr_ch_array_pphelp): Likewise. (rd_ch_buff_in): Likewise. (CLISP_INTERNAL_CHARSET): Change to UCS-4-INTERNAL. (rd_ch_array_buffered): Update SstringDispatch invocation. (wr_ch_array_terminal3): Likewise. (wr_ch_array_window): Likewise. (FILE-STRING-LENGTH): Likewise. Upgrade Unicode character data tables from 2.0.14 to 3.2.0. * utils/unicode/gen-ctype.c: New file. * utils/unicode/attribute_table.java: Remove file. * utils/unicode/upcase_table.java: Remove file. * utils/unicode/downcase_table.java: Remove file. * utils/unicode/uni_bothcase.java: Remove file. * utils/unicode/Makefile (JAVA, JAVAC): Remove variables. (uni_upcase.c, upcase_table.class, uni_downcase.c) (downcase_table.class, uni_attribute.c, attribute_table.class): Remove rules. * uni_attribute.c: Regenerated for Unicode 3.2.0 by gen-ctype.c. * uni_upcase.c: Likewise. * uni_downcase.c: Likewise. * charstrg.d (up_case): up_case_table is now shorter than char_code_limit. Sign-extend the table entry. (down_case): Likewise. (unicode_attribute): unicode_attribute_table is now shorter than char_code_limit. Upgrade Unicode name tables to 3.2.0. * uniname.c: New file, from libunistring-0.0. * uniname.h: New file, from libunistring-0.0. * utils/gen-uninames: Update from libunistring-0.0. * uninames.h: New file, from libunistring-0.0, replaces uninames.c. * uninames.c: Remove file. * unitypes.h: New file, from libunistring-0.0. * charstrg.d: Include uniname.h and uniname.c instead of uninames.c. (unicode_name_word, unicode_name_word_lookup): Remove functions, now contained in uniname.c. (jamo_initial_short_name, jamo_medial_short_name) (jamo_final_short_name): Remove arrays, now contained in uniname.c. (char_name): Use unicode_character_name function from uniname.c. (name_char): Use unicode_name_character function from uniname.c. * makemake.in (UNICODE_INCLUDES): Remove uninames, add uniname. Treat unitypes.h uniname.h uninames.h like the UNICODE_INCLUDES. charstrg depends on them only if with_unicode is enabled. Substitute for . * stdint.h.in: New file, from libunistring-0.0. * m4/stdint.m4: New file, from libunistring-0.0. * configure.in: Invoke gt_STDINT_H. * makemake.in (EVERY_INCLUDES_H): Add stdint.h. (stdint.h): New rule. (clean4): Remove stdint.h. 2002-05-24 Bruno Haible * spvw.d (fehler_code_alignment): Give a useful advice for GCC 3. 2002-05-26 Bruno Haible * constsym.d: Avoid compilation error when compiling with GNU_GETTEXT but without UNICODE. 2002-05-26 Bruno Haible * makemake.in (FILES): List the additional .a files in the same order as in LIBS, not in the reverse order. (LIBS): Add libreadline.a in front of libcharset.a. This avoids a link error for 'locale_charset' when compiling without -DUNICODE. 2002-05-26 Sam Steingold timeout on connecting, see * socket.d (socket_connect_fn_t): accept 3rd arg `opts' (rename from `socket_connect_fn') (with_hostname): accept 4th arg `opts' (passed to `connector') (connect_to_x_via_ip, bindlisten_via_ip): accept and ignore `opts' (connect_to_x_server, create_server_socket): pass NULL to `with_hostname' as `opts' (create_client_socket, connect_via_ip): accept 3rd `timeout' arg * stream.d (sec_usec): sec may also be a cons and a real (socket_server_wait): extracted from SOCKET-WAIT (SOCKET-ACCEPT, SOCKET-CONNECT): accept 4th keyword arg :TIMEOUT (SOCKET-WAIT): use socket_server_wait() * subr.d, subrkwd.d (socket_accept, socket_connect): update * constsym.d (TIMEOUT): add the keyword 2002-05-25 Arseny Slobodjuck fix win32 build (broken on 2002-05-23 and 2002-05-22) * array.d (elt_move_Char): rename the label right after block beginning from `restart' to `restart_it' since 'restart' is used before as a type name and it confuses the compiler * charstrg.d (sstring_store_array): rename `small' to `smallp' for a similar reason (coerce_normal_ss, nstring_upcase, nstring_downcase): rename `restart' to `restart_it' * win32aux.d (read_helper_low, sock_read): fix typos 2002-05-24 Sam Steingold * bindings/linuxlibc6/linux.lisp (read-helper): new function (points to read_helper) (read): a macro, calls read-helper 2002-05-23 Sam Steingold buffered sockets and pipes now work * acorn.d (read_helper): prototype (full_read, safe_read): #define * amiga.d, msdos.d, win32.d: ditto * amigaaux.d (read_helper): implement (full_read): remove * unixaux.d: ditto (sock_read) [UNIX_BEOS]: partial read is okay * win32aux.d (lowlevel_full_read, do_full_read, full_read): remove (read_helper_low, do_read_helper, read_helper): add (lowlevel_sock_read): partial read is okay * stream.d (low_fill_buffered_handle): use safe_read() instead of full_read() Suggested by Todd Sabin 2002-05-23 Sam Steingold * stream.d (strm_buffered_extrafields_t): replace eofindex with have_eof_p and endvalid (BufferedStream_eofindex): remove (BufferedStream_have_eof_p, BufferedStream_endvalid): add (buffered_half_flush, buffered_flush, buffered_nextbyte) (buffered_eofbyte, position_file_buffered, read_byte_array_buffered) (write_byte_array_buffered, rd_ch_buffered, rd_ch_array_buffered) (logical_position_file_end, make_buffered_stream) (finish_output_buffered, closed_buffered): update Suggested by Todd Sabin 2002-05-22 Sam Steingold * pathname.d (directory_search): save subr_self before calling MAKE-HASH-TABLE and restore it afterwards (for error reporting) 2002-05-22 Bruno Haible Introduce mutable small strings. Storing characters in strings can now trigger GC. * lispbibl.d: Verify that SPVW_PURE implies TYPECODES. (Rectype_SmallSstring, Rectype_reallocstring): New enumeration items. (siarray_): New struct type. (Siarray): New type. (Array_type_sstring): Add Rectype_SmallSstring, Rectype_reallocstring. (TheSiarray): New macro. (vectorp, simplep, array_simplep, simple_string_p, stringp, arrayp): Update. (if_recordp): Handle Rectype_SmallSstring, Rectype_reallocstring. (case_Rectype_Sstring_above): Add Rectype_SmallSstring, Rectype_reallocstring. (case_Rectype_string_above): Likewise. (case_Rectype_array_above): Likewise. (allocate_small_string): New declaration. (reallocate_small_string): New declaration. (with_sstring_0): Follow Siarray chain before calling Sstring_length. (with_sstring): Likewise. (simple_array_to_storage, simple_array_to_storage1): New macros. (array_total_size): Turn into an inline function. Follow Siarray chain before calling Sarray_length. (elt_fill, elt_reverse): Can now trigger GC. (SstringDispatch): Handle mutable small-strings. (sstring_normal_p): Likewise. (unpack_string_rw): Return the storage vector and offset, instead of a chart* pointer. (sstring_store): New declaration. (sstring_store_array): New declaration. (nstring_upcase): Take a storage vector and an offset as arguments, instead of a chart* pointer. Can now trigger GC. (nstring_downcase): Likewise. (nstring_capitalize): Likewise. (check_sstring_mutable): Handle mutable small-strings. * affi.d (SYS::MEM-READ): Update for unpack_string_rw change. * array.d (vector_length): Follow Siarray chain before calling Sarray_length. (iarray_displace): Likewise. (iarray_displace_check): Likewise. (array_displace_check): Likewise. (subscripts_to_index): Follow Siarray chain before calling test_index. Return the real storage vector. (storagevector_store): Add a maygc argument. Return the storage vector. When storing a character in a small string, reallocate the string if needed. (SYS::STORE): Call storagevector_store with maygc=true. (ROW-MAJOR-AREF): Follow Siarray chain before calling storagevector_aref. (SYS::ROW-MAJOR-STORE): Follow Siarray chain before calling storagevector_store. Call storagevector_store with maygc=true. (ARRAY-DIMENSION): Follow Siarray chain before calling Sarray_length. (array_dimensions): Likewise. (ARRAY-IN-BOUNDS-P): Likewise. (ARRAY-ROW-MAJOR-INDEX): Follow Siarray chain before calling test_index. (elt_copy_T_Char): Handle the case of a mutable small-string. (elt_copy_Char_Char): Likewise. (elt_move_Char): Likewise. (elt_fill): Handle the case of a mutable small-string. Can now trigger GC. (elt_reverse): Likewise. (elt_nreverse): Handle the case of a mutable small-string. (VECTOR-PUSH): Call storagevector_store with maygc=true. (VECTOR-PUSH-EXTEND): Likewise. (initial_contents_aux): Follow Siarray chain if reallocated. (reshape): Call storagevector_store with maygc=false. (ADJUST-ARRAY): Create storage vector in the right type (small or not), to avoid GC later. * charstrg.d (unpack_string_ro): Follow Siarray chain before calling Sstring_length. (unpack_string_rw): Return the storage vector and offset, instead of a chart* pointer. (sstring_store): New function. (sstring_store_array): New function. (coerce_imm_ss): Handle mutable small-strings and reallocated strings. (coerce_normal_ss): Likewise. (coerce_imm_normal_ss): Likewise. (char_name): Return a small-string if possible. (CHAR): Follow Siarray chain before calling Sstring_length. (SCHAR): Likewise. (SYS::STORE-CHAR): Follow Siarray chain before calling check_sstring_mutable. Call sstring_store. (SYS::STORE-SCHAR): Likewise. (test_string_limits_rw): Handle mutable small-strings. (test_1_stringsym_limits): Return the storage vector and offset, instead of a chart* pointer. (nstring_upcase): Take a storage vector and an offset as arguments, instead of a chart* pointer. Handle small-strings. Can now trigger GC. (string_upcase): Follow Siarray chain before return. (NSTRING-UPCASE): Update. (STRING-UPCASE): Update. Follow Siarray chain before return. (nstring_downcase): Take a storage vector and an offset as arguments, instead of a chart* pointer. Handle small-strings. Can now trigger GC. (string_downcase): Follow Siarray chain before return. (NSTRING-DOWNCASE): Update. (STRING-DOWNCASE): Update. Follow Siarray chain before return. (nstring_capitalize): Take a storage vector and an offset as arguments, instead of a chart* pointer. Handle small-strings. Can now trigger GC. (NSTRING-CAPITALIZE): Update. (STRING-CAPITALIZE): Update. Follow Siarray chain before return. * debug.d (read_form): Follow Siarray chain before calling Sstring_length. * encoding.d (ascii_to_string): Allocate a mutable small-string. * foreign.d (convert_from_foreign_array_fill): Return the array. For strings, convert into a temporary array on the stack, then call sstring_store_array. Follow Siarray chain before return. (convert_from_foreign): Follow Siarray chain before storing array. * hashtabl.d (hashcode3_atom): Handle mutable small-strings and reallocated strings. * io.d (sstring_printf): Follow Siarray chain before accessing elements. (write_string): Follow Siarray chain before calling write_sstring. (pr_orecord): Handle mutable small-strings and reallocated strings. * misc.d (MACHINE-VERSION): Use a small-string. * pathname.d (PARSE-NAMESTRING): Update for nstring_downcase, nstring_capitalize changes. (customary_case): Likewise. Follow Siarray chain before return. (SHELL): Call sstring_store. * spvw_garcol.d (gc_mark): Handle Rectype_SmallSstring, Rectype_reallocstring. * spvw_genera1.d (walk_area): Likewise. (build_old_generation_cache): Likewise. * spvw_objsize.d (size_siarray): New macro. (objsize): Handle Rectype_SmallSstring. Handling of Rectype_reallocstring is automatic. * spvw_typealloc.d (allocate_small_string): New function. (reallocate_small_string): New function. * spvw_update.d (update_varobject): Handle Rectype_SmallSstring, Rectype_reallocstring. * stream.d (rd_ch_array_dummy): Call sstring_store. (read_char_array): Likewise. Handle mutable small-strings. (rd_ch_array_str_in): Follow Siarray chain before calling elt_copy. (rd_ch_array_unbuffered): Call sstring_store. (rd_ch_array_buffered): Call sstring_store_array. (lisp_completion): Fix wrong error message code. Follow Siarray chain before calling Sstring_length. 2002-05-22 Bruno Haible * stream.d (OS_error_saving_errno): Rename from error_saving_errno. All callers changed. 2002-05-21 Sam Steingold * inspect.lisp (*http-encoding*): new variable (utf-8/dos) (http-command, with-http-output): use it 2002-05-21 Sam Steingold * encoding.d (MAKE-ENCODING): when the iconv charset is already built-in use it instead of iconv (ENCODING-CHARSET): new function * constsym.d, subr.d: ditto * init.lisp: export ENCODING-CHARSET 2002-05-21 Sam Steingold * makemake.in (XCFLAGS) [GCC]: no optimization with GCC-3.1 2002-05-20 Bruno Haible * stream.d (wr_ch_array_pphel_): Remove function. (wr_ch_array_pphelp): Inline it here. 2002-05-20 Bruno Haible * charstrg.d (CHAR, SYSTEM::STORE-CHAR): Correct checking of validity of index. Don't use unpack_string here. (unpack_string): Remove function. (unpack_string_ro): Inline old unpack_string. (unpack_string_rw): Call unpack_string_ro, not unpack_string. 2002-05-20 Bruno Haible Remove gcc-3.0.4 warning. * eval.d (LD, LR): Don't use CONCAT to paste strings; juxtaposing the strings is sufficient. 2002-05-19 Sam Steingold * lispbibl.d (STACK_register) [S390]: adjusted 2002-03-24 patch to use the register on GCC-3.1 or better 2002-05-18 Sam Steingold * makemake.in (stdbool.h): sed RE depends on TOS: not all systems use autoconf [actually, it is not clear that it is legitimate to expect a non-UNIX system to have sed; cygwin is ubiquitous though, so win32 is, hopefully, covered] 2002-05-18 Arseny Slobodjuck Sam Steingold graceful disconnect and interruptible wait in win32 * stream.d (low_close_socket) [WIN32_NATIVE]: do not shutdown a socket: shutdown does not respect the linger option. To use shutdown for graceful disconnect, one should implement a kind of protocol, i.e. shutdown SEND and wait for client acknowledgment (client should support that protocol). (SOCKET-WAIT) [WIN32_NATIVE]: use interruptible_wait() (SOCKET-STREAM-SHUTDOWN): explicitly cast handle to socket * socket.d (lingerize_socket) [WIN32_NATIVE]: new function: set SO_LINGER to 30sec, as is done in Apache (http_main.c) (bindlisten_via_ip, connect_via_ip) [WIN32_NATIVE]: use it * spvw.d (main) [WIN32_NATIVE]: call done_win32() to finalize sockets * win32.d (done_win32, interruptible_wait): declare new functions * win32aux.d (done_win32): new function: finalizes socket library (do_wait): new thread function for DoInterruptible (interruptible_wait): new global function 2002-05-18 Sam Steingold kill src/gettext; POs are now in src/po * Makefile.devel (SOURCES3, CONFIGURES, configures, potfiles): remove gettext/* (src--distrib): do create a PO tar * configure: remove gettext, replace gettext/po with po * configure.in (ALL_LINGUAS, po/Makefile.in): moved here from gettext/configure.in * makemake.in: remove gettext, replace gettext/po with po (ALL_LINGUAS): get it from src/configure.in 2002-05-17 Sam Steingold fix bug#557155: inspector :http broken Content-Length * inspect.lisp (with-http-output): convert the string to a vector with CONVERT-STRING-TO-BYTES and STREAM-EXTERNAL-FORMAT of the socket to reliably compute the `Content-length:' header; then write it with WRITE-BYTE-SEQUENCE (temporarily changing STREAM-ELEMENT-TYPE to binary) 2002-05-17 Bruno Haible * stdbool.h.in: Upgrade to gettext-0.11.3. * m4/stdbool.m4: Upgrade to gettext-0.11.3. * configure.in: Use gt_STDBOOL_H instead of CL_STDBOOL_H. * makemake.in (stdbool.h): Create using sed. 2002-05-16 Sam Steingold * stream.d (make_file_stream) [UNIX, RISCOS]: file streams for the /proc filesystem default to unbuffered (it's better not to mess with those files anyway!) 2002-05-16 Sam Steingold * makemake.in (LIBS) [win32]: link with ws2_32 and not wsock32 since we are using winwock2.h 2002-05-15 Bruno Haible * makemake.in: Fix handling of with-xxx options, broken on 2002-03-07. * configure.in: Move the AM_ICONV invocation before AM_GNU_GETTEXT. Don't forget that 3000 students were murdered by the government of the "People's Republic of China" in June 1989! 2002-05-14 Sam Steingold * timezone.lisp (PRC): China does not observe DST since 1991. 2002-05-10 Bruno Haible * ../configure: Configure libcharset, not libiconv. * configure.in: Call AM_GNU_GETTEXT, in order to get use an external GNU gettext. Call AM_ICONV instead of CL_ICONV. * m4/iconv.m4: Update from GNU gettext 0.11.2. * m4/codeset.m4, m4/gettext.m4, m4/glibc21.m4, m4/isc-posix.m4, * m4/lcmessage.m4, m4/lib-ld.m4, m4/lib-link.m4, m4/lib-prefix.m4, * m4/progtest.m4: New files, from GNU gettext 0.11.2. * autoconf/config.rpath: New file, from GNU gettext 0.11.2. * makemake.in: Pay attention to CPPFLAGS. New variable XCPPFLAGS. (USE_LIBICONV, XCL_ICONVLIB): Remove variables. (USE_LIBCHARSET, XCL_CHARSETLIB): New variables. (GETTEXTLIB): Remove variable. (USE_GETTEXT, XCL_GETTEXTLIB): Assume external libintl. (EVERY_INCLUDES_H): Don't include libintl.h and iconv.h, they are external now. Instead include libcharset.h. (${GETTEXTLIB}, libintl.a, libintl.h): Remove targets. (iconv.h, libiconv.a): Remove targets. (libcharset.a): New target. (distmakefile): No need for localesed processing. * lispbibl.d (GNU_LIBICONV): Define only when including shows that GNU libiconv is used. Otherwise, if not glibc >= 2.2, undefine HAVE_ICONV. * _distmakefile: Use 'share' instead of @DATADIRNAME@. * Makefile.devel (SOURCES4): Use libcharset, not libiconv. (CONFIGURES): Remove libiconv/configure. (libiconv/autoconf/aclocal.m4, libiconv/configure): Remove rules. 2002-05-08 Sam Steingold * gettext/po/Makefile.devel: use msguniq from GNU gettext 0.11 instead of clisp-msguniq (clisp-msguniq): remove 2002-05-07 Bruno Haible * compiler.lisp (SP-depth): Insert a verification that each label is a symbol. Fix wrong treatment of JMPIFBOUNDP. 2002-05-07 Sam Steingold * stream.d (ChannelStream_init): add an end_system_call() for each begin_system_call() 2002-05-06 Bruno Haible * misc.d (LISP-IMPLEMENTATION-VERSION): Use casts to 'unsigned int' to avoid gcc-3.1 warnings. * utils/comment5.d: Include , for exit(). 2002-05-06 Sam Steingold do not create unusable iconv encodings * stream.d (fehler_iconv_invalid_charset): remove (open_iconv): open the iconv conversion and signal all errors (check_charset): check whether the charset is valid (iconv_mblen, iconv_mbstowcs, iconv_wcslen, iconv_wcstombs) (iconv_range, ChannelStream_init): use open_iconv() * lispbibl.d (check_charset): declare * encoding.d (MAKE-ENCODING): check the iconv charset for validity before making the charset 2002-05-03 Sam Steingold fix bug#550864: cannot use RETURN-FROM in deep nesting [this bug was introduced by the 2001-06-25 patch] * compiler.lisp (note-far-used-block): propagate block to all the enclosing functions, not just the current one 2002-05-03 Sam Steingold * makemake.in (XCFLAGS) [debug]: add -DDEBUG_OS_ERROR on all platforms, do not add it on win32 when not debugging also add -DDEBUG_SPVW -DSAFETY=3 also do not do any optimization when debugging: even though GCC supports that, the result is not convenient for debugging 2002-05-02 Sam Steingold * io.d (read_token_1): permit input of multiply escaped illegal characters (bug fix) 2002-04-30 Sam Steingold fix bug#550528: misleading error converting UTF-7 * stream.d (saving_errno, error_saving_errno): new macros (iconv_mblen, iconv_mbstowcs, iconv_wcslen, iconv_wcstombs) (iconv_range, create_input_pipe, create_output_pipe) (create_io_pipe): use them 2002-04-28 Bruno Haible Split autoconf/aclocal.m4 into pieces. * m4/general.m4, m4/proto.m4, m4/cc-gcc.m4, m4/c++.m4, * m4/cc-ansi.m4, m4/cc-cppaux.m4, m4/cc-elif.m4, m4/cc-error.m4, * m4/cc-ema.m4, m4/cc-mergestrings.m4, m4/as-underscore.m4, * m4/ranlib.m4, m4/install.m4, m4/cp.m4, m4/ln.m4, m4/x11.m4, * m4/sys-irix.m4, m4/sys-dynix.m4, m4/socket.m4, m4/sh-args.m4, * m4/cc-void.m4, m4/ffcall-pccstruct.m4, m4/ffcall-smallstruct.m4, * m4/ffcall-ireg.m4, m4/longlong.m4, m4/longdouble.m4, * m4/stdc-headers.m4, m4/offsetof.m4, m4/stdbool.m4, m4/locale.m4, * m4/unistd.m4, m4/openflags.m4, m4/access.m4, m4/dir.m4, * m4/utsname.m4, m4/netdb.m4, m4/shm.m4, m4/termios.m4, * m4/caddr_t.m4, m4/socklen_t.m4, m4/structtm.m4, m4/strlen.m4, * m4/memset.m4, m4/gmalloc.m4, m4/malloc.m4, m4/free.m4, * m4/alloca.m4, m4/setjmp.m4, m4/signal.m4, m4/siginterrupt.m4, * m4/sigaltstack.m4, m4/fpu_control.m4, m4/raise.m4, m4/abort.m4, * m4/perror.m4, m4/strerror.m4, m4/sys_errlist.m4, m4/getenv.m4, * m4/putenv.m4, m4/setlocale.m4, m4/rlimit.m4, m4/vfork.m4, * m4/setsid.m4, m4/execv.m4, m4/execl.m4, m4/waitpid.m4, * m4/rusage.m4, m4/getcwd.m4, m4/chdir.m4, m4/mkdir.m4, m4/rmdir.m4, * m4/stat.m4, m4/readlink.m4, m4/eloop.m4, m4/opendir.m4, * m4/closedir.m4, m4/open.m4, m4/read-write.m4, m4/chmod.m4, * m4/rename.m4, m4/unlink.m4, m4/fsync.m4, m4/ioctl.m4, m4/fcntl.m4, * m4/select.m4, m4/ualarm.m4, m4/setitimer.m4, m4/usleep.m4, * m4/localtime.m4, m4/gettimeofday.m4, m4/ftime.m4, m4/times.m4, * m4/getpwnam.m4, m4/getpwuid.m4, m4/gethostname.m4, * m4/gethostbyname.m4, m4/connect.m4, m4/unixconn.m4, m4/tcpconn.m4, * m4/address.m4, m4/getpagesize.m4, m4/vadvise.m4, m4/mach-vm.m4, * m4/mmap.m4, m4/munmap.m4, m4/msync.m4, m4/mprotect.m4, * m4/ffcall-codeexec.m4, m4/shmget.m4, m4/shmat.m4, m4/shmdt.m4, * m4/shmctl.m4, m4/shm-rmid.m4, m4/dynload.m4, m4/iconv.m4, * m4/termcap.m4, m4/filecharset.m4, m4/c++-constructors.m4, * m4/builtin_strlen.m4, m4/cc-char-unsigned.m4, m4/c++-bool.m4, * m4/intparam.m4, m4/endian.m4: New files. * Makefile.devel (aclocal.m4): New rule. * autoconf/acselect: Remove file. * m4/libtool.m4: Rename from autoconf/libtool.m4. 2002-04-27 Sam Steingold limited support for tracing local functions (cannot use the lexicals, i.e., must not be real closures) * trace.lisp (tracer): new struct (tracer-set-fdef, check-traceable): new functions (trace, trace1): use them (untrace1, untrace2): handle the tracer argument 2002-04-26 Sam Steingold * lispbibl.d (PC386) [WIN32]: define, so that *FEATURES* will contain :PC386 on the :WIN32 platform 2002-04-25 Sam Steingold fix bug#539701: early initialization error -> crash * spvw.d (main): init_other_modules_2() after the stream variables are already initialized 2002-04-25 Sam Steingold fix bug#548368: inspector help barfs (nested inspectors) * inspect.lisp (*inspect-all*): bind in INSPECT instead of using a global variable since nested INSPECT sessions can interfere with each other, each modifying the same *INSPECT-ALL* (inspect-finalize): the default method now does nothing 2002-04-24 Sam Steingold fix bug#548362: inspector deletes wrong package on exit * inspect.lisp (inspect): keep the temp inspect package in a lexical variable in addition to *PACKAGE* 2002-04-24 Sam Steingold * spvw.d (init_object_tab) [UNIX_CYGWIN32]: add :CYGWIN to *FEATURES* 2002-04-24 Sam Steingold upgrade to readline-4.2a * stream.d (lisp_completion_matches, lisp_completion_more): fix the signature for the new readline (rd_ch_terminal3): wrap multi-line history handling inside begin_system_call()/end_system_call() (init_streamvars): do not use readline internals * noreadline.d: upgraded to the readline-4.2a API 2002-04-24 Jörg Höhle Sam Steingold patch#548089: FOREIGN-FUNCTION+VARIABLE for everybody this allows CLISP FFI self-test (and dozens of hacks) * foreign.d (ffi_identity): new function (ffi_user_pointer): new variable (init_ffi): register them * foreign.lisp (ffi_identity, ffi_user_pointer) [commented]: define 2002-04-23 Jörg Höhle Sam Steingold patch#547541: WITH-FOREIGN-OBJECT FFI stack allocation * foreign.d (EXEC-ON-STACK): new function * constsym.d, subr.d: ditto * foreign1.lisp (with-foreign-object): new public macro 2002-04-23 Jörg Höhle Sam Steingold patch#547491: C-VAR-ADDRESS and OFFSET foreign-places * foreign1.lisp (offset, c-var-address): new public macros * foreign.d (%OFFSET): comment that it is used now 2002-04-22 Sam Steingold * spvw.d (main): new option: `-interactive-debug', which overrides batch-mode for -c, -x and exec-file * constsym.d (APPEASE-CERRORS): define here for the above 2002-04-22 Jörg Höhle Sam Steingold * foreign.d (UNSIGNED-FOREIGN-ADDRESS): new function (FOREIGN-ADDRESS-VALUE): rename to FOREIGN-ADDRESS-UNSIGNED * subr.d, constsym.d: ditto * foreign1.lisp (foreign-address-null): use FOREIGN-ADDRESS-UNSIGNED 2002-04-22 Sam Steingold do not go into an endless loop on `clisp -x '(assert nil)'` * condition.lisp (assert): name the interactive CONTINUE restart functions for the benefit of APPEASE-CERRORS and MUFFLE-CERRORS (assert-restart-no-prompts, maybe-continue, muffle-cerror): new functions (muffle-cerrors): use MUFFLE-CERROR (appease-cerror): use MAYBE-CONTINUE (prompt-for-new-value): interact via *DEBUG-IO*, not *QUERY-IO* 2002-04-22 Sam Steingold fix bug#547046: compiler-macro -> no special-operator * compiler.lisp (c-form): call EXPAND-COMPILER-MACRO before checking C-FORM-TABLE to accommodate expanding to a special form 2002-04-22 Sam Steingold * cmacros.lisp (define-compiler-macro): call CHECK-REDEFINITION 2002-04-21 Sam Steingold * cfgamiga.lisp, cfgdos.lisp, cfgsunux.lisp, cfgunix.lisp: * cfgwin32.lisp, cfgacorn.lisp (*clhs-root-default*): restore the DEFVAR lost on 2002-04-12 2002-04-18 Sam Steingold fix bug#543072: make-encoding :input-action on bad input * stream.d (iconv_mblen, iconv_mbstowcs): treat EINVAL (incomplete input) like EILEQ (conversion error) for delimited strings 2002-04-17 Sam Steingold * stream.d (low_close_socket) [WIN32_NATIVE]: shutdown the socket before closing it (SOCKET-STREAM-SHUTDOWN): use SOCK_error(), not OS_errno() 2002-04-16 Peter Burwood * autoconf/aclocal.m4 (HAVE_GETRUSAGE): check whether getrusage() actually works, not just that it is present (it is present in cygwin, but works only on NT, not win98) 2002-04-16 Jörg-Cyril Höhle * regexp.lisp (regexp-exec): correct positions for ()-group submatches 2002-04-16 Jörg-Cyril Höhle * foreign.d (convert_from_foreign): fix c-array uint8/16/32 return broken since CVS 1999-09-13 2002-04-16 Sam Steingold * foreign1.lisp (parse-c-function): check :OUT & :IN-OUT args for being pointers, just like in FOREIGN-CALL-OUT in foreign.d 2002-04-16 Jörg-Cyril Höhle Sam Steingold * io.d (pr_orecord): print invalid FOREIGN-VARIABLEs and FOREIGN-FUNCTIONs with INVALID prefix and address with offset 2002-04-16 Sam Steingold error reporting unification * record.d (fehler_key_odd): new function (check_keywords): new macro (%ALLOCATE_INSTANCE, %SHARED-INITIALIZE, %REINITIALIZE-INSTANCE) (%INITIALIZE-INSTANCE, %MAKE-INSTANCE): use them * constsym.d: define SHARED-INITIALIZE, REINITIALIZE-INSTANCE, INITIALIZE-INSTANCE, MAKE-INSTANCE here for error reporting * subr.d, constsym.d: %* should be named p*, not * 2002-04-16 Stefan Kain * clos.lisp, record.d: translated all comments 2002-04-12 Peter Burwood * stream.d (finish_tty_output) [UNIX_CYGWIN32]: ignore EBADF from fsync, just like in force_tty_output() 2002-04-12 Sam Steingold *BROWSERS* and *BROWSER* are in CUSTOM, as advertised * init.lisp (*browser*, *browsers*): export from CUSTOM * clhs.lisp (*browser*, *browsers*): docstrings (*browsers*): xterm is UNIX-only * cfgamiga.lisp, cfgdos.lisp, cfgsunux.lisp, cfgunix.lisp: * cfgwin32.lisp, cfgacorn.lisp: suggest customizing *BROWSER* 2002-04-12 Sam Steingold * time.d (DELTA4): work with up to 64-bit return values * lispbibl.d, intelem.d (UL2_to_I): define always 2002-04-11 Peter Burwood * errunix.d (get_errormsg): prevent EILSEQ shadowing ENOENT 2002-04-10 Sam Steingold new built-in DELTA4 for metering.lisp optimization * time.d (delta4): implement * subr.d, constsym.d (delta4): add * defs1.lisp (%time): use DELTA4 2002-04-10 Sam Steingold * configure: handle --with-no-dynamic-ffi * makemake.in: uniform handling of --with* arguments 2002-04-05 Jörg-Cyril Höhle * modules.d (MODULE): silence the compiler warning about module__*__init_function_*() prototype * modules/regexp/regexi.c: include before "regex.h" 2002-04-04 Stefan Kain * spvw_ctype.diff, spvw_gcstat.diff, spvw_genera2.diff: * spvw_genera3.diff, spvw_page.diff, spvw_sigsegv.diff: * spvw_sigwinch.diff, spvwtabf.diff, spvwtabo.diff: * spvwtabs.diff: translated all comments 2002-04-04 Sam Steingold fix bug#538748: OS_errno lost before error reporting * spvw_memfile.d (loadmem): use OS_errno instead of errno 2002-04-02 Sam Steingold * clhs.lisp (*browsers*): add mozilla and links and various `-remote' and `-xterm' variations 2002-04-01 Sam Steingold Rework the 2002-03-30 patch: use SOCKET-STREAM-SHUTDOWN instead of CLOSE :DIRECTION * gray.lisp, subrkw.d: revert CLOSE * subr.d, constsym.d: add SOCKET-STREAM-SHUTDOWN * stream.d (SOCKET-STREAM-SHUTDOWN): implement (builtin_stream_close_partial): remove (built_in_stream_close): revert 2002-04-01 Sam Steingold uncouple OPEN-STREAM-P from INPUT-STREAM-P/OUTPUT-STREAM-P * lispbibl.d (strmflags_open_bit_B): new bit (0) (strmflags_open_B): use it, not the top 4 bits (allocate_stream): add it to strmflags * spvw_typealloc.d (allocate_stream): ditto * stream.d (strmflags_rdwr_B): new mask (top 4 bits) (make_synonym_stream, make_twoway_stream, make_echo_stream) (MAKE-GENERIC-STREAM, make_socket_stream) (BUILT-IN-STREAM-SET-ELEMENT-TYPE): use it instead of strmflags_open_B (BUILT-IN-STREAM-ELEMENT-TYPE): do not return NIL for closed streams * io.d (pr_stream): print INPUT/OUTPUT/IO even for closed streams 2002-04-01 Stefan Kain * spvw_heap.diff, spvw_language.diff, spvw_objsize.diff: * spvw_sigint.diff, spvw_space.diff, spvw_update.diff: * spvw_walk.diff: translated all comments 2002-03-31 Sam Steingold * reploop.lisp (commands4): `Continue' was mentioned twice From Arseny Slobodjuck (commands): new function to combine COMMANDS[1-4]; do not COPY-LIST the return values thereof since they are already freshly consed lists (break-loop, step-hook-fn): use it (main-loop): do not COPY-LIST the return value of COMMANDS0 2002-03-30 Stefan Kain * spvw_fault.d, spvw_global.d, spvw_mmap.d, spvw_multimap.d: translated all comments 2002-03-30 Sam Steingold * io.d (pr_stream): print components of TWO-WAY and ECHO streams * lispbibl.d (strm_twoway_input, strm_twoway_output): define here * stream.d (strm_twoway_input, strm_twoway_output): do not define here 2002-03-30 Sam Steingold For the benefit of internet protocol implementors, allow closing streams in only one direction - an interface to shutdown(2) * stream.d (builtin_stream_close_partial): new function - close a stream in only one direction (BUILT-IN-STREAM-CLOSE): instead of ignored :ABORT keyword arg, take :DIRECTION argument and use builtin_stream_close_partial() * subr.d, subrkw.d (BUILT-IN-STREAM-CLOSE): kw(abort)->kw(direction) * pathname.d (check_direction): use subr_self for error message * gray.lisp (close): pass direction to BUILT-IN-STREAM-CLOSE * configure.in (HAVE_SHUTDOWN): check for shutdown(2) * unixconf.h.in (HAVE_SHUTDOWN): add an #undef * win32.d (HAVE_SHUTDOWN, SHUT_RD, SHUT_WR, SHUT_RDWR): define 2002-03-30 Sam Steingold * trace.lisp (*trace-indent*): new user option (trace-pre-output, trace-post-output): use it (subclosure-pos): find traced definitions too (%local-set): fix error reporting 2002-03-29 Stefan Kain * spvw_allocate.d, spvw_genera1.d, spvw_memfile.d, spvw_typealloc.d: translated all comments 2002-03-28 Sam Steingold when COMPILE-FILE with :OUTPUT-FILE arg causes REQUIRE to compile a file, place the compiled file in the same directory * compiler.lisp (*compile-file-directory*): new variable (compile-file): bind it when given :OUTPUT-FILE (c-REQUIRE): when it is non-NIL, give COMPILE-FILE :OUTPUT-FILE 2002-03-27 Arseny Slobodjuck Sam Steingold * install.bat: search for install.lisp in the current directory if it is not found in src/; slashes changed to backslashes * install.lisp (*clisp-home*): forward slashes only for -B parameter (*lisp-type-map*): new variables (top-level): registers all file extensions HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes is a synonym for HKEY_CLASSES_ROOT, do not set it Use Y-OR-NO-P to let the user control the setup. 2002-03-24 Sam Steingold * defs1.lisp (%time): avoid some possible consing by computing the hi/lo differences before merging 2002-03-24 Sam Steingold * spvw.d (SUBR_SET_ARGTYPE): new macro (init_subr_tab_1, dynload_modules): use it 2002-03-24 Stefan Kain * spvw.d, spvw_garcol.d, spvw_circ.d: translated all comments 2002-03-24 Gerhard Tonn FFCALL ported to IBM s/390 * lispbibl.d (STACK_register) [S390]: do not define - broken due to a compiler bug * ffcall/avcall/Makefile.in (avcall-s390.lo): new target * ffcall/avcall/avcall-s390.c, ffcall/avcall/avcall-s390.s: add * ffcall/avcall/avcall.h.in (__s390__): handle it * ffcall/callback/trampoline_r/Makefile.in (tramp-s390.lo): new target * ffcall/callback/trampoline_r/proto-s390.s: add * ffcall/callback/trampoline_r/tramp-s390.s: add * ffcall/callback/trampoline_r/proto.c (__s390__): handle it * ffcall/callback/trampoline_r/test1.c (__s390__): ditto * ffcall/callback/trampoline_r/trampoline.c (__s390__): ditto * ffcall/callback/vacall_r/vacall-s390.c: add * ffcall/callback/vacall_r/vacall-s390.s: add * ffcall/callback/vacall_r/Makefile.in (vacall-s390.lo): new target * ffcall/callback/vacall_r/vacall_r.h.in (__s390__): handle it * ffcall/trampoline/Makefile.in (tramp-s390.o): new target * ffcall/trampoline/proto-s390.s, ffcall/trampoline/tramp-s390.s: add * ffcall/trampoline/trampoline.c (__s390__): handle it * ffcall/vacall/Makefile.in (vacall-s390.o): new target * ffcall/vacall/vacall-s390.c, ffcall/vacall/vacall-s390.s: add * ffcall/vacall/vacall.h.in (__s390__): handle it 2002-03-22 Sam Steingold * makemake.in (mandir, htmldir, dvidir, docdir): architecture-independent, thus under prefix, not exec_prefix 2002-03-21 Sam Steingold fix bug#531879: eval-when and top-forms * init.lisp (%expand-form): do not conflate COMPILE and :COMPILE-TOPLEVEL situations * compiler.lisp (c-EVAL-WHEN): do not conflate LOAD with :LOAD-TOPLEVEL and COMPILE with :COMPILE-TOPLEVEL 2002-03-21 Sam Steingold * configure (--with-debug): new option: pass "debug" to makemake * clisp.spec: update 2002-03-21 Will Newton fix bug#501963: FFCALL cannot be built with GCC 3.0 When compiling with -O2 or better, the configure test for PCC non-reentrant struct return convention is optimized away and always returns true. This causes avcall to believe it can use PCC when it cannot - and so bad things happen. * autoconf/aclocal.m4 (CL_PCC_STRUCT_RETURN): reset CFLAGS 2002-03-21 Will Newton * trampoline.c [linux MIPS]: cachectl.h is in asm, not linux 2002-03-21 Sam Steingold more $host_cpu canonicalization (arm, alpha) * makemake.in (host_cpu): handle hppa* and arm* together * autoconf/aclocal.m4 (CL_CANONICAL_HOST_CPU) (CL_CANONICAL_HOST_CPU_FOR_FFCALL): canonicalize $host_cpu=arm* to arm and alphaev6[78] to alpha Suggested by Will Newton 2002-03-21 Sam Steingold * eval.d, ffcall/avcall/avcall.h.in * ffcall/avcall/avcall.h.mingw32, ffcall/avcall/avcall.h.msvc * ffcall/callback/vacall_r/vacall_r.h.in * ffcall/callback/vacall_r/vacall_r.h.mingw32 * ffcall/callback/vacall_r/vacall_r.h.msvc * ffcall/vacall/vacall.h.in, ffcall/vacall/vacall.h.mingw32 * ffcall/vacall/vacall.h.msvc: Never check for __GNUC_MINOR__ without first making sure that __GNUC__ is correct Reported by Will Newton 2002-03-18 Sam Steingold * spvw.d (main): void domain for the -E command line argument means all 5 domains 2002-03-18 Sam Steingold add CUSTOM:*PARSE-NAMESTRING-DOT-FILE* user option * init.lisp (*source-file-types*, *compiled-file-types*): list strings, not pathnames (load): modified accordingly (search-file): EXTENSION is a list of strings, not pathnames * cfgamiga.lisp, cfgdos.lisp, cfgsunux.lisp, cfgunix.lisp: * cfgwin32.lisp: set *PARSE-NAMESTRING-DOT-FILE* to :NAME * compiler.lisp: do not use pathname literals (merge-extension): new function (compile-file-pathname-helper, compile-file): use it * constsym.d (*PARSE-NAMESTRING-DOT-FILE*): add * spvw.d (init_symbol_values): defvar it * defs1.lisp (load-logical-pathname-translations): pass strings, not pathnames, to SEARCH-FILE * io.d (pr_orecord): when compiling, print pathnames as #s(pathname) without #p"" * pathname.d (split_name_type): respect *PARSE-NAMESTRING-DOT-FILE* * savemem.lisp (saveinitmem): do not use pathname literals 2002-03-17 Sam Steingold * describe.lisp (describe-stream-flush-buffer): use WRITE-CHAR-SEQUENCE instead of WRITE-SEQUENCE for the benefit of dribbling when the output streams are reset so that it is not clear that they are character streams * dribble.lisp (dribble-reset): new function (dribble): reset *DRIBBLE-STREAM* to NIL after dribbling is over * savemem.lisp (saveinitmem): new option :verbose; call DRIBBLE-RESET in the temporary *DRIVER*: this fixes a bug in images saved after DRIBBLE Reported by Peter Wood 2002-03-16 Jörg-Cyril Höhle * describe.lisp (describe-object): FOREIGN-POINTER is present when UNIX or DIR-KEY are present too; handle FOREIGN-FUNCTION only under FUNCTION, not under T too, and print its full foreign type 2002-03-15 Sam Steingold minor error reporting unification * lispbibl.d (fehler_too_many_args, fehler_too_few_args): declare * error.d (fehler_too_many_args, fehler_too_few_args): implement * foreign.d (FOREIGN-CALL-OUT): use them * eval.d (fehler_key_zuviel): remove (match_subr_key, match_cclosure_key): use fehler_too_many_args() (fehler_apply_[zuviel/zuwenig]): unchanged for now: it is unclear how to keep enough info for a good error message without taking a performance hit in apply_*() (fehler_apply_dotted): accept another argument - the arglist terminator 2002-03-15 Sam Steingold Incorporated more of Joerg's suggestions * bindings/linuxlibc6/linux.lisp (substitution): add ffi:c-ptr-null (realpath, gethostname, getdomainname): using arrays of `character' as opposed to `char' results in strings being returned instead of byte arrays (char=uint8, character is a lisp CHARACTER) (gcvt): appears to work (sigaction-new): allow NULL (NIL) first arg (sigaction-query): remove (superseded by sigaction-new) * bindings/linuxlibc6/wrap.lisp (vec2string): obsolete, commented out (real-path, get-host-name, get-domain-name): do not use it (signal-valid-p): use sigaction-new 2002-03-15 Sam Steingold * compiler.lisp (expand-compiler-macro): do not expand compiler macros for functions declared NOTINLINE (3.2.2.1.3) 2002-03-14 Sam Steingold * makemake.in (config.lisp): chmod +w before appending 2002-03-14 Sam Steingold * defs1.lisp (require): fix a deadly typo in the 2002-02-28 patch this fixes bug#580092: problems with require which will be filed on 2002-07-11 2002-03-13 Sam Steingold fix bug#528886: (typep x (type-of x)) must => T (FFI) * type.lisp (foreign-function, foreign-variable, foreign-address) (foreign-pointer): new types (subtypep): FOREIGN-FUNCTION is a FUNCTION 2002-03-12 Sam Steingold fix bug#527380: encoding :output-error-action :ignore broken * encoding.d (nls_wcslen): sync with nls_wcstombs() wrt ignoring errors (i.e., return the correct number of dest bytes) (nls_asciiext_wcslen): sync with nls_asciiext_wcstombs() wrt ignoring errors (i.e., return the correct number of dest bytes) (nls_wcstombs, nls_asciiext_wcstombs): handle ignored errors properly (and do not require the same SRC and DEST count) 2002-03-12 Sam Steingold * configure (maybe_link): new function * makemake.in (config.status, configure, makemake.in) (unixconf.h.in, VERSION): new targets 2002-03-12 Sam Steingold * unix.d (HAVE_DLOPEN) [UNIX_HPUX]: undef since dlopen() is broken on HP-UX without a patch 2002-03-11 Sam Steingold * compiler.lisp (c-warn, c-warn): CURRENT-FUNCTION does not necessarily return a function (form-name): new function - a short printed form representation (compile-file): use it for *COMPILE-PRINT* and form name that is passed to COMPILE-TOPLEVEL-FORM instead of '#:TOP-LEVEL-FORM 2002-03-10 Peter Burwood * pathname.d (realpath) [UNIX_CYGWIN32]: neither dir nor symlink generate ENOTDIR 2002-03-10 Sam Steingold The default foreign language is now ANSI C, not K&R C * foreign1.lisp (DEF-C-CALL-OUT, DEF-C-CALL-IN): deprecated (*foreign-language*): new variable (default-foreign-language): new exported macro (set it) (parse-c-function): use it * compiler.lisp (with-compilation-unit): bind it * init.lisp (load): ditto * bindings/linuxlibc5/linux.lisp, bindings/linuxlibc6/linux.lisp * postgresql632/postgresql.lisp, postgresql642/postgresql.lisp * regexp/regexp.lisp, wildcard/wildcard.lisp: use DEF-CALL-OUT instead of DEF-C-CALL-OUT and call DEFAULT-FOREIGN-LANGUAGE 2002-03-10 Sam Steingold IPv6 portability suggested by Bruno * socket.d (s6_addr16): define if not defined yet (S6_ADDR16): accessor helper (ipv6_ntop): use it - a unified definition now 2002-03-09 Sam Steingold more error unification * init.lisp (check-symbol): new function (defun): use it * foreign1.lisp (check-symbol): remove (DEF-C-TYPE, DEF-C-VAR, DEF-CALL-OUT, DEF-LIB-CALL-OUT) (DEF-CALL-IN, def-c-enum): use the new check-symbol * defstruct.lisp (defstruct): ditto (ds-symbol-or-error): remove 2002-03-09 Sam Steingold autoconf tweaks for hp/ux and cygwin * autoconf/aclocal.m4 (CL_CANONICAL_HOST_CPU_FOR_FFCALL) (CL_CANONICAL_HOST_CPU): hppa2.0* --> hppa * configure.in (HAVE_GETHOSTENT): check for gethostent(3) * unixconf.h.in (HAVE_GETHOSTENT): add an #undef * socket.d (RESOLVE-HOST-IPADDR-INTERNAL): check HAVE_GETHOSTENT before calling gethostent() 2002-03-09 Peter Burwood cygwin (u)alarm is adequate - do not re-implement it * unix.d (HAVE_UALARM): Remove as defined in unixconf.h. * unixaux.d (alarm, ualarm, sleep, usleep): Remove function as cygwin supplied function works. (do_alarm, do_sleep, interrupt_handler, DoInterruptible): Remove support functions. (alarm_thread, alarm_date, alarm_interval): Remove support variables. 2002-03-09 Peter Wood Sam Steingold add signal handling * linux.lisp: interface to , and * wrap.lisp: many wrappers and examples 2002-03-08 Sam Steingold * bindings/linuxlibc6/wrap.lisp (real-path): linux:realpath does not return an integer flag (vec2string): use :END arg to CONVERT-STRING-FROM-BYTES instead of SUBSEQ * bindings/linuxlibc6/linux.lisp (realpath): return a pointer to C-ARRAY-MAX, not C-ARRAY (errno): a simple DEF-C-VAR, not a SYMBOL-MACRO Suggested by Jörg Höhle 2002-03-08 Sam Steingold rename dirkey.lisp to dirkey1.lisp (like foreign1.lisp/foreign.d) since (compile-file "foo") clobbers foo.c (because of FFI) * init.lisp: "dirkey1", not "dirkey" * makemake.in (LPARTS): ditto * gettext/po/Makefile.devel (LISPSOURCES): ditto * dirkey1.lisp: rename from dirkey.lisp 2002-03-08 Sam Steingold * genclisph.d (nonreturning_function, SLONGLONG, ULONGLONG): fix for MICROSOFT * makemake.in: create modules-related rules on non-UNIX systems ($with_export_syscalls): do not add -lm to LIBS on win32 Reported by 2002-03-06 Sam Steingold POSIX:STREAM-LOCK - file stream locking interface based on flock(2) * stream.d (STREAM-LOCK): implement * subr.d, subrkw.d (stream_lock): declare * constsym.d (stream_lock, Kshared): add * configure.in (HAVE_FLOCK): check for flock(2) (HAVE_SYS_WAIT_H): check for (flock(2) is declared there) * unixconf.h.in (HAVE_FLOCK, HAVE_SYS_WAIT_H): add the #undef's * posix.lisp (STREAM-LOCK) [:unix]: export 2002-03-06 Sam Steingold infrastructure tweaks * makemake.in (XCFLAGS): handle --with-threads=FLAVOR by adding "-DMULTITHREAD -Dflavor" * configure (info_help): documented all options * Makefile.devel (upload): new target * autoconf/aclocal.m4 (CL_STRERROR, CL_FSYNC, CL_UALARM) (CL_USLEEP): remove trivial defuns * configure.in: call AC_CHECK_FUNCS for strerror(), fsync(), ualarm() and usleep() directly 2002-03-06 Sam Steingold * foreign.d (FOREIGN-ADDRESS-VALUE): handle foreign pointers too 2002-03-04 Sam Steingold * foreign1.lisp (to-c-typedecl): c-pointer --> void*, not char* * bindings/linuxlibc6/linux.lisp (flock): new call-out (fcntl2, fcntl3l, fcntl3f): 3 forms of fcntl() (ioctl-set-int, ioctl-get-int): 2 basic forms of ioctl() [there are many many more!] * bindings/linuxlibc6/wrap.lisp (check-res): new macro (real-path, get-host-name, get-domain-name): use it * modules/clx/new-clx/clx.f: NOTREACHED and thus NOTIMPLEMENTED and UNDEFINED require a semicolon 2002-03-03 Sam Steingold * version.h: 2.28 is released 2002-03-05 Sam Steingold * spvw_garcol.d (gc_mark): add down_weakkvt(), up_weakkvt(), and case_weakkvt statements that call them (fixes weak HTs on the TYPECODES platforms) 2002-03-05 Sam Steingold * array.d (elt_nreverse): do not use SIMPLE_NREVERSE for simple strings since TheSstring != TheSvector (breaks NREVERSE on Alpha) 2002-03-03 Sam Steingold Compilation on Alpha/Linux * dfloat.d: SAVE_NUM_STACK/RESTORE_NUM_STACK want {} around them * lispbibl.d (weakkvt_type): remove extra '|' * spvw_typealloc.d: one cannot use `obj' in allocate() portably (allocate_weakkvt_low): rename from allocate_weakkvt() (allocate_weakkvt): call allocate_weakkvt_low() 2002-03-03 Sam Steingold build process portability * makemake.in (data, clean1, ${TESTDIR}): use the appropriate slashes (RM) [win32]: set to 'del /q' (~ rm -f) (UTILDIR*, DOCDIR): define using SRCTOPDIR*+NEXT*, not sed(1) (PARENT_SRCTOPDIR_, PARENT_SRCTOPDIR_M): new vars (data, suite): use them so that `./configure /tmp/...' works * Makefile.devel (htmldoc): make split docs but do not copy impnotes.html to src/ (SOURCES1): add clisp.lsm (acorn/pathname.txt): update the regexp because of the src/pathname.d translation 2002-03-02 Sam Steingold fix bug#506098: ICONV_CONST-related build problems * stream.d: check ICONV_CONST before using it * unixconf.h.in (ICONV_CONST): reverted the 2001-12-25 patch: use #undef, not #define; just like all other *_CONST macros 2002-03-02 Arseny Slobodjuck * spvw_language.d (current_language_o): typo: argument should be `uintL', not `uint' 2002-03-02 Sam Steingold * package.d (%SET-PACKAGE-LOCK): do not barf when the package list is empty 2002-03-02 Sam Steingold * bindings/linuxlibc6/linux.lisp (WEXITSTATUS, WTERMSIG, WSTOPSIG) (WIFEXITED, WIFSIGNALED, WIFSTOPPED, WCOREFLAG, WCOREDUMP) (W_EXITCODE, W_STOPCODE): add #define's from 2002-03-02 Sam Steingold * modules/regexp/regexp.lisp (with-loop-split): fix :START/:END 2002-02-27 Sam Steingold * bindings/linuxlibc6/linux.lisp (wait, waitpid): new C call-outs (provide "linux"): for (require "linux") in wrap.lisp 2002-03-01 Sam Steingold error reporting unification * trace.lisp (error-function-name): new function (trace1): use it * cmacros.lisp (compiler-macro-function): ditto * error.d (fehler_funname_type, fehler_funname_source): new functions * lispbibl.d (fehler_funname_type, fehler_funname_source): declare * control.d (function): use fehler_funname_source() * eval.d (eval1): ditto (apply, funcall): use fehler_funname_type() 2002-02-02 Sam Steingold * trace.lisp (force-cclosure): take FDEFINITION when compiling (%local-set): COMPILE NEW-DEF and take its FDEFINITION when NEW-DEF is not compiled 2002-02-28 Barry Fishman * modules/clx/new-clx/clx.f (CONVERT-SELECTION): clean up the stack (SELECTION-NOTIFY): add window notification 2002-02-28 Sam Steingold * defs1.lisp (require): push *load-truename* on *load-paths* * compiler.lisp (c-REQUIRE): push *compile-file-truename* on *load-paths* 2002-02-28 Sam Steingold * compiler.lisp (c-form): fix a bug: EXPAND-COMPILER-MACRO can return an atom 2002-02-28 Sam Steingold * bindings/linuxlibc6/linux.lisp (substitution): map DEFCONSTANT 2002-02-28 Sam Steingold * compiler.lisp (c-write-lib): bind *PRINT-SYMBOLS-LONG* when writing *.lib files, just like with *.fas files 2002-02-27 Sam Steingold implement weak hash-tables * hashtabl.d (MAKE-HASH-TABLE): accept :WEAK keyword argument (rehash, hash_store, REMHASH, MAPHASH, HASH-TABLE-ITERATE) (CLASS-TUPLE-GETHASH): use ht_kvtable()/kvtable_data() (hash_lookup): remove obsolete key/value from a weak HT (prepare_resize): accept third argument `weak' (resize): handle weak hash-tables (HASH-TABLE-WEAK-P, %SET-HASH-TABLE-WEAK-P): implement (sxhash_atom): handle WeakKVT * constobj.d (all_weakkvtables, hs_weakkvt): new objects (version): bumped because of the MAKE-HASH-TABLE change * constsym.d (hash_table_weak_p, set_hash_table_weak_p, Kweak) (weak_kvtable): add * init.lisp (hash-table-weak-p, weak-key-value-table): export from EXT * io.d (pr_weakkvt): new pr_routine_t (prin_object_dispatch): use it to print a Weak KVT (pr_kvtable): handle weak KVTs * lispbibl.d (weakkvt_type, case_weakkvt, Rectype_WeakKVT): add (ht_weak_p, kvtable_data, ht_kvt_data): new macros (weakkvt_t): new lrecord (TheSarray, TheVarobject, ThePointer): add weakkvt_type (Weakkvt_length, TheWeakKVT, weakkvtp, case_Rectype_WeakKVT_above): concomitant macros (if_recordp): Rectype_WeakKVT is not a record (allocate_weakkvt): declare (map_hashtable, map_hashtable_nogc): accommodate weak hash-tables (case_array, case_Rectype_array_above): add WeakKVT * places.lisp (hash-table-weak-p): add defsetf * predtype.d (CLASS-OF, TYPE-OF, heap_statistics_mapper): handle Weak KVT (enum_hs_weakkvt): add to the enum * spvw.d (init_object_tab_1): init O(all_weakkvtables) * spvw_garcol.d (gar_col_normal): mark & update O(all_weakkvtables) (gar_col_compact, move_conses): update O(all_weakkvtables) * spvw_genera1.d (walk_area, build_old_generation_cache): add case_weakkvt * spvw_global.d (init_mem_heaptypes): handle Weak KVT * spvw_memfile.d (savemem, loadmem_from_handle): update O(all_weakkvtables) * spvw_objsize.d (objsize, init_objsize_table): handle case_weakkvt * spvw_typealloc.d (allocate_weakkvt): implement * spvw_update.d (update_weakkvtables, update_weakkvtables_mod): add * subr.d (make_hash_table): add :WEAK (hash_table_weak_p, set_hash_table_weak_p): add * subrkw.d (make_hash_table): add :WEAK * version.h, VERSION: bumped to 2.27.3 2002-02-26 Sam Steingold * error.d (signal_and_debug): avoid a GCC warning (end_error): abort(), not exit() -- for debugging 2002-02-26 Sam Steingold lib dir can now be changed at run-time * constsym.d, subr.d (set_lib_directory): add * constobj.d (lib_dir): new object * pathname.d (LIB-DIRECTORY): use it (SET-LIB-DIRECTORY): set it (new function) * spvw.d (main): set it from argv_lisplibdir * _clisp.html, _clisp.1: document that * places.lisp (*lib-directory*): new symbol-macro * init.lisp (*lib-directory*): export it from CUSTOM * describe (clisp-data-file): new function (unicode-data-file): remove (unicode-attributes-line): use CLISP-DATA-FILE instead of UNICODE-DATA-FILE * clhs.lisp (clhs-file): remove (clhs): use CLISP-DATA-FILE instead of CLHS-FILE * makemake.in: data files, like clhs.txt and UnicodeData.txt, are now in $(lisplibdir)/data on all platforms 2002-02-25 Sam Steingold Moved language-dependent constants out of constobj.d * constobj.d (LISPOBJ_L, LISPOBJ_LS): remove * lispbibl.d (CLSTEXT, CLOTEXT): add (OGETTEXT, OL, OLS, localized_string, localized_object): remove (GNU_GETTEXT): do not define unless UNICODE is defined too * spvw_language.d (CLSTEXT, CLOTEXT): add (localized_string, localized_object): remove * debug.d, error.d, flo_rest.d, misc.d, package.d, pathname.d * realelem.d, spvw.d: use CLSTEXT() instead of OLS() and CLOTEXT() instead of OL() * misc.d, spvw_memfile.d (software_version_string): remove the cache (language-dependent) * i18n.d (TEXT): use CLSTEXT() instead of localized_string() * gettext/po/clisp-xgettext: accommodate these changes: search for CLSTEXT and CLOTEXT in *.d and for TEXT in *.lisp * gettext/po/Makefile.devel (GMSGFMT): set to msgfmt, since GNU gettext does not install gmsgfmt, and require GNU gettext (clean): remove tmp 2002-02-25 Sam Steingold * clhs.lisp (clhs): unlock COMMON-LISP before reading clhs-file (read-from-file): add PACKAGE keyword argument 2002-02-23 Sam Steingold minor code cleanups * record.d (obj_in_list): new function (structure_up, %STRUCTURE-TYPE-P, keyword_test): use it (slot_in_arglist): new function (%SHARED-INITIALIZE, %REINITIALIZE-INSTANCE) (do_initialize_instance): use it 2002-02-23 Sam Steingold * record.d (%REINITIALIZE-INSTANCE): fix a crash in repeated REINITIALIZE-INSTANCE calls 2002-02-22 Sam Steingold UI language can now be changed at run time * constobj.d (current_language_cache): remove (current_language): language-independent object now * constsym.d (german, french, spanish, dutch): add * constsym.d, subr.d (language): remove (set_current_language, text): add * encoding.d (init_encodings): split into init_encodings_1() and init_encodings_2() to accommodate non-ASCII symbol names * i18n.d (SET-CURRENT-LANGUAGE): new function (LANGUAGE): replace with TEXT * lispbibl.d (init_encodings_1, init_encodings_2): replace init_encodings() (init_language): global now (called by SET-CURRENT-LANGUAGE) * spvw.d (init_symbol_tab_2): accommodate non-ASCII symbols (initmem): call init_encodings_1() and init_encodings_2() around init_symbol_tab_2() (main): init O(current_language) * spvw_language.d (current_language_o): new function: map language number to its symbol name (init_language): use it to init O(current_language) * spvw_memfile.d (loadmem_from_handle): remove O(current_language_cache) * places.lisp (*CURRENT-LANGUAGE*): define * init.lisp (*CURRENT-LANGUAGE*): export * clos.lisp, affi1.lisp, foreign1.lisp: import SYS::TEXT * french.lisp: spell FRANCAIS with a cedilla * makemake.in (LPARTS): include french.lisp only with_unicode * international.lisp: export ENGLISH here * affi1.lisp, amigasock.lisp, backquote.lisp, beossock.lisp: * cfgacorn.lisp, cfgamiga.lisp, cfgdos.lisp, cfgsunux.lisp: * cfgunix.lisp, cfgwin32.lisp, clos.lisp, cmacros.lisp: * compiler.lisp, condition.lisp, defmacro.lisp, defs1.lisp: * defs2.lisp, defstruct.lisp, describe.lisp, dirkey.lisp: * disassem.lisp, dribble.lisp, edit.lisp, floatprint.lisp: * foreign1.lisp, format.lisp, init.lisp, international.lisp: * loop.lisp, macros1.lisp, macros2.lisp, macros3.lisp: * places.lisp, pprint.lisp, query.lisp, reploop.lisp, rexx1.lisp: * room.lisp, runprog.lisp, screen.lisp, trace.lisp, type.lisp: * xcharin.lisp: use TEXT instead of ENGLISH 2002-02-22 Sam Steingold * install.lisp (*clisp-base-cmd*, *clisp-cmd*): surround pathnames with quotes to accommodate "c:/Program Files/CLISP/" &c (*clisp-home*): convert backslashes to forward slashes 2002-02-21 Sam Steingold minor code cleanups * debug.d (read_form): use cint_white_p() * pathname.d (SHELL): use fehler_string() * package.d (MAKE-SYMBOL): ditto (package_lookup_ext, package_lookup_int, package_lookup): new macros (inherited_lookup, find_external_symbol, find_symbol) (shadowing_import, shadow, unintern, import, use_package_aux) (FIND-ALL-SYMBOLS): use them (prepare_query_user): new function (query_user, export, use_package, correct_packname): use it (UNINTERN): use fehler_symbol() * predtype.d (FIND-CLASS): ditto * lisparit.d (!): use fehler_posfixnum() 2002-02-21 Stefan Kain * package.d: translated all comments * constobj.d: ditto 2002-02-20 Sam Steingold * makemake.in (distrib): include the Emacs-Lisp files in the binary distribution: indentation and coding are included, but d-mode is excluded 2002-02-20 Sam Steingold fix bug#515604: (EVAL-WHEN (COMPILE)) no longer automatically writes to *.lib; you need EVAL-WHEN-COMPILE or both LOAD and COMPILE * compiler.lisp (c-write-lib): new function (c-eval-and-write-lib): rename from c-eval-when-compile (compile-toplevel-form): respect the renaming (eval-when-compile): new macro: call C-EVAL-AND-WRITE-LIB at compile time (c-GLOBAL-FUNCTION-CALL): use it instead of (EVAL-WHEN (COMPILE)) (c-EVAL-WHEN): write to *lib only when _both_ LOAD and COMPILE are specified; COMPILE-ONCE-ONLY is eliminated * init.lisp (eval-when-compile): add a bootstrap definition (defun): use EVAL-WHEN-COMPILE instead of (EVAL-WHEN (COMPILE)) * clos.lisp (defmethod, defgeneric): ditto * macros1.lisp (defconstant): ditto * foreign1.lisp (DEF-LIB-CALL-OUT): ditto (DEF-CALL-OUT): use COMPILE situation instead of COMPILE-ONCE-ONLY and EVAL-WHEN-COMPILE instead of (EVAL-WHEN (COMPILE)) (DEF-C-VAR, DEF-CALL-IN): use COMPILE situation instead of COMPILE-ONCE-ONLY 2002-02-17 Arseny Slobodjuck smooth Ctrl-C, Ctrl-Break handling not depending on whether interrupted thread is alive when temp_interrupt_handler executes * win32aux.d: (interruptible_abort_code): new variable holds 1+CtrlType after temp_interrupt_handler works, zero while temp_interrupt_handler is not called. (temp_interrupt_handler): check whether thread is alive before terminating it. Save result in new variable instead of use of thread exit code. (DoInterruptible): use interruptible_abort_code. 2002-02-18 Sam Steingold * bindings/linuxlibc6/wrap.lisp: require "linux" to avoid warnings 2002-02-13 Sam Steingold * bindings/linuxlibc6/linux.lisp (getdomainname, setdomainname) (gethostname, sethostname, mkstemp, realpath): uncommented and fixed * bindings/linuxlibc6/wrap.lisp: new file * bindings/linuxlibc6/Makefile, bindings/linuxlibc6/link.sh: add wrap.lisp 2002-02-12 Sam Steingold * lisparit.d (init_arith): define DOUBLE-FLOAT-EPSILON and DOUBLE-FLOAT-NEGATIVE-EPSILON differently on linux-x86 because of the 80-bit floating registers 2002-02-12 Sam Steingold * package.d (%SET-PACKAGE-LOCK): call test_package_arg() on the single arg 2002-02-11 Sam Steingold * stream.d (strip_white): strip only the CR, not all whitespace, since it breaks READ-LINE on terminals Reported by Peter Wood 2002-02-11 Sam Steingold ANSI CL 11.1.2.1.2 #9 forbids tracing in COMMON-LISP * trace.lisp (trace1, untrace1): forbid tracing in locked packages * init.lisp (check-redefinition): handle (SETF function-name) 2002-02-11 Sam Steingold fix the (compile nil (lambda () (flet (())))) bug * compiler.lisp (symbol-suffix): use just the suffix for NIL funname 2002-02-10 Sam Steingold * foreign1.lisp, affi1.lisp: moved *FOREIGN-ENCODING* to the CUSTOM package, as described in the impnotes 2002-02-09 Sam Steingold * makemake.in: include impnotes.css in the distribution along with impnotes.html 2002-02-02 Bruno Haible * charstrg.d (name_char): Fix endless loop when string = "A_A". 2002-02-03 Sam Steingold fix a bug: (defmethod foo ((x (eql 1))) x) * package.d (CHECK-PACKAGE-LOCK): handle non-package third argument to mean "unlocked" * init.lisp (check-redefinition): (EQL X): when X is not a symbol, pass NIL as the package 2002-02-01 Sam Steingold * spvw_update.d (update_weakpointer): new macro (update_weakpointers, update_weakpointers_mod): use it 2002-02-01 Sam Steingold * io.d (pr_array_nil): print array address too (pr_hex6_obj): save the object (pr_orecord): print HASH-TABLE with TEST and COUNT even when *PRINT-ARRAY* is NIL * constobj.d (printstring_hash_table): remove 2002-01-31 Sam Steingold * lispbibl.d (hashtable_test): new macro * io.d (pr_orecord): use it * hashtable.d (HASH-TABLE-TEST): ditto 2002-01-31 Sam Steingold * record.d (mk_weakpointer): new local helper function (allocate_weakpointer): new global function, uses mk_weakpointer() (MAKE-WEAK-POINTER): use mk_weakpointer() * lispbibl.d (allocate_weakpointer): declare as function, not macro (weakpointer_broken_p): new macro * io.d (pr_orecord): use it 2002-01-30 Sam Steingold * io.d (pr_orecord): print EQUALP hash tables correctly (pr_kvtable): new function, used by pr_orecord() 2002-01-29 Sam Steingold * hashtabl.d (check_hashtable): new macro (GETHASH, PUTHASH, REMHASH, MAPHASH, CLRHASH) (HASH-TABLE-REHASH-THRESHOLD, HASH-TABLE-TEST, HASH-TABLE-ITERATOR) (CLASS-GETHASH, CLASS-TUPLE-GETHASH): use it 2002-01-29 Stefan Kain * hashtabl.d: translated all comments 2002-01-27 Sam Steingold fix bug#509073 * compiler.lisp (expand-compiler-macro): pass to COMPILER-MACRO-FUNCTION only function names 2002-01-27 Sam Steingold code simplifications * foreign.d (check_cc_match): new function (convert_function_to_foreign, convert_function_from_foreign): use it (fehler_eltype_zero_size): new function (convert_from_foreign, walk_foreign_pointers): use it 2002-01-27 Sam Steingold add FFI:FOREIGN-ADDRESS-NULL to check for NULL pointers * foreign.d (FOREIGN-ADDRESS-VALUE): new function * subr.d, constsym.d (foreign_address_value): add * function1.lisp (foreign-address-null): new exported function 2002-01-26 Sam Steingold * .clisp-full: new file * makemake.in: treat .clisp-full just like .clisp 2002-01-24 Sam Steingold fix bug#506105: check semi-simple vectors&strings for overflow * array.d (fehler_extension): new function (VECTOR-PUSH-EXTEND): use it (fehler_dim_type): moved before semi-simple vectors&strings (make_ssstring, make_ssbvector): check len <= arraysize_limit_1 (ssstring_push_extend, ssstring_extend, ssbvector_push_extend): check for overflow 2002-01-23 Sam Steingold * lispbibl.d (SEMI_SIMPLE_DEFAULT_SIZE): new constant * io.d (get_buffers, FORMAT-TABULATE): use it * stream.d (make_string_output_stream) (MAKE-BUFFERED-OUTPUT-STREAM): ditto 2002-01-23 Sam Steingold * lispbibl.d (OBJECT_OUT): new macro * spvw_debug.d (object_out): return obj 2002-01-23 Sam Steingold * array.d (ssstring_extend_low): new function (ssstring_push_extend, ssstring_extend): use it 2002-01-22 Sam Steingold * predtype.d (with_gc_statistics) [DEBUG_SPVW]: print a message when a GC is being done 2002-01-22 Sam Steingold ANSI CL 11.1.2.1.2 #19 forbids methods with locked functions and specializers - check that too * package.d (CHECK-PACKAGE-LOCK): package may be a list of packages * init.lisp (check-redefinition): symbol maybe a method spec - a list of function name and specializers * clos.lisp (analyze-method-description): call CHECK-REDEFINITION 2002-01-21 Sam Steingold SOCKET-STATUS now works on all handle streams, whose handles are acceptable to the underlying OS's select system call * stream.d (stream_handles): work on many streams and return 2 handles (rename from socket_handle) (handle_set, handle_isset, SOCKET-STATUS): modified accordingly (ChannelStream_ihandle, ChannelStream_ohandle): new macros 2002-01-18 Sam Steingold * stream.d (stream_char_p): remove (good only for "basic streams") (handle_isset, stream_reset_eltype): look at strm_eltype directly 2002-01-18 Sam Steingold support #! UNIX scripts on WIN32 too * io.d, constsym.d, spvw.d, subr.d (UNIX-EXECUTABLE-READER): define on WIN32_NATIVE too 2002-01-18 Sam Steingold * stream.d (SOCKET-STATUS): fix a GC safety bug (handle_isset): mark as GC-unsafe Reported by Todd Sabin 2002-01-18 Sam Steingold * stream.d (FILE-POSITION): work on any stream, not just an open file stream, as per ANSI CL 2002-01-17 Sam Steingold * stream.d (read-byte): respect the unread chars (stream_reset_eltype): new function - rectify the ignore_next_LF lossage when changing STREAM-ELEMENT-TYPE (BUILT-IN-STREAM-SET-ELEMENT-TYPE, SET-STREAM-EXTERNAL-FORMAT): use it (resolve_synonym_stream): new function (TERMINAL-RAW, check_open_file_stream): use it 2002-01-16 Sam Steingold * inspect.lisp (close) [html-stream-out]: new method (*with-html-output-doctype*): new user variable, defaults to XHTML (with-html-output): use it; close the HTML stream too (crlf): remove (we create an :EXTERNAL-FORMAT :DOS socket) (with-http-output): new keyword args: RETURN-NAME and RETURN-CODE do not call CRLF, rely on the socket to provide proper EOL (http-error): new function (http-command): reconnect when a KEEP-ALIVE connection times out; handle invalid requests (e.g., for favicon.ico) and ":"->"%3a" [FIXME: disabled KEEP-ALIVE connections because it appears that content length in WITH-HTTP-OUTPUT is computed incorrectly] (inspect-frontend) [http]: handle NIL ID returned by HTTP-COMMAND due to an invalid request 2002-01-16 Sam Steingold * describe.lisp (describe-stream-flush-buffer, stream-line-column) (stream-start-line-p): check the return value of SYS::LINE-POSITION (it may be NIL!) 2002-01-15 Sam Steingold * lispbibl.d (OGETTEXT): mark as GC-unsafe * package.d (cerror_package_locked): fix a GC-safety bug 2002-01-15 Sam Steingold * defs2.lisp (with-standard-io-syntax): bind SYSTEM::*PRIN-LINE-PREFIX* to NIL 2002-01-15 Sam Steingold * describe.lisp (describe): flush the pending output _before_ increasing indentation (describe-object) [symbol]: handle unbound special variables too 2002-01-14 Sam Steingold * defs1.lisp (*system-package-list*): new custom variable (without-package-lock): new extension macro * package.d (%SET-PACKAGE-LOCK): allow multiple packages * savemem.lisp (saveinitmem): default LOCKED-PACKAGES to *SYSTEM-PACKAGE-LIST* 2002-01-14 Sam Steingold add :SCREEN to *FEATURES* when the "SCREEN" package is present * init.lisp: use #+SCREEN instead of (find-package "SCREEN") * spvw.d (*features*): add :SCREEN #ifdef SCREEN 2002-01-12 Sam Steingold * trace.lisp (trace1): made macros traceable again (broken since the 2000-06-11 patch introducing MACRO type) (fdefinition-local): remove (replace with LOCAL) (local): new macro (SETF-able) (local-function-name-p): new function * init.lisp (local): export from EXT 2002-01-11 Sam Steingold close all inaccessible PIPE and SOCKET streams on GC, like file streams * stream.d (add_to_open_streams): new function (make_file_stream, make_terminal_stream, make_printer_stream): use it instead of in-line code (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM, MAKE-PIPE-IO-STREAM) (SOCKET-ACCEPT, SOCKET-CONNECT, SYS::MAKE-SOCKET-STREAM): call add_to_open_streams() too Reported by Todd Sabin 2002-01-10 Sam Steingold * spvw.d (main): --version: print *FEATURES* 2002-01-10 Sam Steingold * package.d (cerror_package_locked): error-format-string: print func with ~A so that "DEFUN/DEFMACRO" is printed without quotes 2002-01-10 Sam Steingold fix a bug in the 2001-11-09 patch * pathname.d (CD): slashp expects a chart, not cint 2002-01-10 Sam Steingold fix (format nil "~2f" 1234567.1234) => "1234567." * format.lisp (format-float-for-f): pass 0 as DMIN to FORMAT-FLOAT-TO-STRING 2002-01-09 Sam Steingold notice function redefinitions again * compiler.lisp (c-DEFUN): accept optional argument TYPE, to distinguish between DEFUN and DEFMETHOD (CURRENT-FUNCTION for top-level forms does not return anything useful) * clos.lisp (defmethod, defgeneric): pass the 4th argument to c-DEFUN 2002-01-09 Sam Steingold fix bug#501166 * pathname.d (SUBDIR_PUSHSTACK): check for non-string subdir elements, do not return (subdir_namestring_parts): modified accordingly (use_default_dir): call simplify_directory (directory_search_scandir, directory_search): use SUBDIR_PUSHSTACK 2002-01-09 Sam Steingold * compiler.lisp (signature-to-list): do not intern ARG# symbols in SYSTEM (c-DEFUN): print signatures with ~A, not ~S, to avoid package prefixes 2002-01-08 Sam Steingold * deprecated.lisp (deprecate): add optional DEF argument 2002-01-08 Sam Steingold Implement arbitrary package locking * lispbibl.d (Package): use bit(1) for package lock (mark_pack_locked, mark_pack_unlocked, pack_locked_p): new macros * package.d (cerror_package_locked): new function (check_pack_lock, safe_check_pack_lock): new macros (intern, shadowing_import, shadow, unintern, unexport, export) (use_package, RENAME-PACKAGE): check package lock (PACKAGE-LOCK, %SET-PACKAGE-LOCK, CHECK-PACKAGE-LOCK): implement * subr.d, constsym.d (package_lock, set_package_lock) (check_package_lock): add * init.lisp (package-lock): export from EXT (exported-lisp-symbol-p): remove (fbound-string): do not barf on non-fbound symbols (check-redefinition): new function (remove-old-definitions): use CHECK-REDEFINITION * places.lisp (check-accessor-name): new function (define-setf-expander, defsetf): use CHECK-ACCESSOR-NAME and CHECK-REDEFINITION (package-lock): defsetf to SYSTEM::%SET-PACKAGE-LOCK * clos.lisp ((setf find-class)): use SYS::CHECK-REDEFINITION * savemem.lisp (saveinitmem): new argument: :locked-packages to lock the system packages when saving the final image * os2/lispinit.in: call saveinitmem * makemake.in (lispinit.mem): call lispinitmem (not %lispinitmem) 2002-01-07 Sam Steingold * symbol.d (Symbol_function_checked): use fehler_undef_function() 2002-01-07 Sam Steingold made problem reporting work with WITH-COMPILATION-UNIT * compiler.lisp (c-source-point): new structure (instead of a cons) (c-source-location): accept a 3rd optional argument - file, defaults to *compile-file-truename* (c-source-point): remove the function (c-source-point-location): pass all slots of a C-SOURCE-POINT to C-SOURCE-LOCATION (note-function-used, c-DEFUN): use MAKE-C-SOURCE-POINT instead of C-SOURCE-POINT (match-known-unknown-functions): bind *COMPILE-FILE-TRUENAME* too 2002-01-07 Sam Steingold * trace.lisp (fdefinition-local): new function for extracting local (LABELS & FLET) functions 2002-01-06 Sam Steingold * pathname.d (assure_dir_exists) [WIN32_NATIVE]: fix a bug introduced on 2001-08-29 (mind tolerantp!) 2002-01-06 Sam Steingold * compiler.lisp (note-function-used, c-report-problems): report the replacements for the deprecated functions * deprecated.lisp (deprecate): new function - use throughout 2002-01-06 Sam Steingold * makemake.in (RM) [win32]: prepend '-' * ffcall/Makefile.msvc: prepend '-' before 'del' * ffcall/avcall/Makefile.msvc: ditto * ffcall/callback/Makefile.msvc: ditto * ffcall/callback/trampoline_r/Makefile.msvc: ditto * ffcall/callback/vacall_r/Makefile.msvc: ditto * ffcall/trampoline/Makefile.msvc: ditto * ffcall/vacall/Makefile.msvc: ditto * libiconv/Makefile.msvc: ditto * libiconv/lib/Makefile.msvc: ditto * libiconv/libcharset/Makefile.msvc: ditto * libiconv/libcharset/lib/Makefile.msvc: ditto * libiconv/src/Makefile.msvc: ditto * libiconv/tests/Makefile.msvc: ditto * sigsegv/Makefile.msvc: ditto From Indrayana Rustandi 2002-01-06 Sam Steingold finished the 2001-09-24 (functionp) patch * control.d (FUNCTION): use the functionp() macro * eval.d (coerce_function): ditto * sequence.d (seq_boolop): ditto * symbol.d (%PUTD): ditto 2002-01-05 Sam Steingold SOCKET-STREAM-PEER et al now work for buffered sockets too * stream.d (SocketChannel): new macro (SOCKET-SERVER, socket_handle, publish_host_data) (SOCKET-STREAM-HANDLE): use it Reported by Todd Sabin 2002-01-05 Sam Steingold * stream.d (BufferedStream_buffer_address): new macro, use it along with BufferedStream_channel() and BufferedStream_buffer() 2002-01-05 Sam Steingold some new macros for brevity * pathname.d (WIN32_ERROR_NOT_FOUND) [WIN32_NATIVE]: new macro (check_noname, check_notdir, check_delete_open): new macros 2002-01-03 Stefan Kain * pathname.d: translated all comments 2002-01-03 Sam Steingold * lispbibl.d (OGETTEXT): new macro * gettext/po/clisp-xgettext: recognize the new OGETTEXT macro 2001-12-26 Stefan Kain * trace.lisp: translated all comments 2002-01-01 Todd Sabin Sam Steingold * stream.d (BUILT-IN-STREAM-SET-ELEMENT-TYPE): fix a crash for `strmtype_twoway_socket' 2002-01-01 Sam Steingold unified some error messages * pathname.d (fehler_file_exists): no args: get caller from subr_self and pathname from STACK_0 (a la fehler_file_not_exists) (rename_file): modified accordingly (open_file): use fehler_file_not_exists() and fehler_file_exists() 2002-01-01 Sam Steingold * init.lisp (sys::remove-old-definitions): CERROR for exported CL symbols even when there is no definition 2001-12-25 Sam Steingold make DESCRIBE break long lines * describe.lisp (describe-stream): new slot BUFFER (word-buffered) (describe-stream-flush-buffer): new function to flush the BUFFER (stream-write-char, stream-finish-output, stream-force-output): use it (stream-line-column, stream-start-line-p, stream-clear-output): account for BUFFER (describe-object): when printing the external symbols of a package, do not fill: DESCRIBE-STREAM does it for us (describe1): FINISH-OUTPUT when done to flush the buffer (describe-signature): terminate with a period 2001-12-25 Sam Steingold * makemake.in (MAKE): set from the environment variable, if any 2001-12-25 Sam Steingold The 2001-08-25 patch (autoconf-2.52 upgrade) broke FreeBSD build. This patch appears to fix it. * unixconf.h.in (ICONV_CONST): use #define, not undef 2001-12-24 Sam Steingold * compiler.lisp (c-FLET, c-FUNCTION-MACRO-LET, traverse-anode): use NEW-CONST 2001-12-21 Sam Steingold * compiler.lisp (c-DIRECT-FUNCTION-CALL): add a flet COMMUTE-WITH-REST-P (a minor simplification) 2001-12-20 Sam Steingold optimize away COMPLEMENT in :TEST (COMPLEMENT ...) * compiler.lisp (c-TEST/TEST-NOT): new function (c-form-table): map the functions with :TEST/:TEST-NOT keys listed in to c-TEST/TEST-NOT 2001-12-20 Sam Steingold * compiler.lisp (c-seqop): do not need to check whether the user rebound NOT (this optimization does not depend on it) 2001-12-20 Sam Steingold * makemake.in (unixconf.h): a separate target (makemake): recreate only makemake, not the whole configuration 2001-12-20 Sam Steingold * type.lisp (canonicalize-type): canonicalize EXTENDED-CHAR to (OR), not to NIL 2001-12-20 Sam Steingold * compiler.lisp: Minor code tweaks and simplifications: (analyze-lambdalist): new MACROLET macro PUSH-OPT (closuredummy-add-stack-slot): new function (c-LAMBDABODY, c-LET/LET*, c-MULTIPLE-VALUE-BIND, c-FLET) (c-LABELS, c-FUNCTION-MACRO-LET, c-GENERIC-FLET, c-GENERIC-LABELS) (c-FUNCALL-INLINE): use it (lambda-form-p): new function (c-form, inline-callable-function-lambda-p, c-FUNCTION): use it (shift-vars): new function (c-MAP-on-CARs, c-MAP-on-LISTs, c-MAPC, c-MAPL): use it (c-FLET, c-LABELS, c-FUNCTION-MACRO-LET, c-GENERIC-FLET) (c-GENERIC-LABELS): new macro GET-ANODE in their common MACROLET (inlinable-function-operation-form-p): new function (c-FUNCTION-CALL, c-APPLY, c-seqop): use it 2001-12-20 Sam Steingold * compiler.lisp (version) [CROSS]: update (19071996 --> 20010726) 2001-12-20 Arseny Slobodjuck * lispbibl.d (OS_error): use asciz_out_s(), not asciz_out_1(), to output a string 2001-12-19 Stefan Kain * compiler.lisp: translated all comments 2001-12-17 Sam Steingold * type.lisp (canonicalize-type): extensive treatment of AND/OR and NOT (with flattening and special cases) (subtypep): a hack for NOT add; corrected T & NIL special cases 2001-12-17 Sam Steingold * predtype.d (expand_deftype): check that (CAR TYPE-SPEC) is a symbol before calling GET 2001-12-12 Sam Steingold simplify pathname directory lists * pathname.d (subst_coerce_normal_ss, subst_up_dotdot): folded into simplify_directory() (simplify_directory): new function: coerce to normal simple strings, replace ".." with :UP and collapse "foo/../" (parse_logical_pathnamestring, PARSE-NAMESTRING, merge_dirs): call it (subdir_namestring_parts): handle :UP (directory_list_valid_p): extracted from MAKE-PATHNAME (MAKE-PATHNAME): call simplify_directory() and directory_list_valid_p(); Also: reverted the 2001-08-29 change: do NOT return a logical pathname when defaults is logical, but `logical' is false 2001-12-11 Sam Steingold * socket.d (socket_getlocalname): when not resolving, init truename to a zero-length string Reported by Ian Wild 2001-11-29 Sam Steingold * configure (link): remove the target ($2) first (maybe_mkdir): new function * makemake.in (echotab_mkdir_maybe): new function 2001-11-28 Sam Steingold * configure, makemake.in, lndir: the idiom `cd $path; pwd` breaks down when cd prints something -- redirect its output to /dev/null From William Harold Newman 2001-11-28 Sam Steingold * pathname.d (wild_char_p): new macro (PARSE-NAMESTRING, MAKE-PATHNAME, wild_p): use it 2001-11-28 Sam Steingold * pathname.d (MAKE-PATHNAME): revert the 2001-07-20 patch: :case applies only to strings, not pathnames in the :default arg Reported by Kent M Pitman 2001-11-27 Sam Steingold * array.d (SIMPLE_FILL, SIMPLE_REVERSE, SIMPLE_NREVERSE): new macros (elt_fill): use SIMPLE_FILL (elt_reverse): use SIMPLE_REVERSE (elt_nreverse): use SIMPLE_NREVERSE 2001-11-27 Sam Steingold * stream.d (READ-INTEGER, READ-FLOAT, WRITE-INTEGER, WRITE-FLOAT): use elt_nreverse() instead of inline code 2001-11-19 Sam Steingold more consistent floating point computations: (log -1d0) => #C(0.0d0 3.141592653589793d0), not #C(0.0d0 3.1415927f0) * realelem.d (defaultfloatcase): accept NUM arg (I_float_F, RA_float_F): update accordingly * realtran.d (pi): accept an arg and pass it to defaultfloatcase() (R_R_atan_R): pass an argument to pi() * comptran.d (R_R_atanh_R_R, R_R_asinh_R_R, N_acos_N, N_acosh_N): pass an argument to pi() * flo_rest.d (floatcase): envelop in "do{}while(0)" * lisparit.d (read_float): pass Fixnum_0 to defaultfloatcase() 2001-11-19 Sam Steingold Move all deprecated functionality to deprecated.lisp * compiler.lisp (*deprecated-functions-list*): took SPECIAL-FORM-P and GET-SETF-METHOD-MULTIPLE-VALUE out * init.lisp (export "EXT"): ditto * defs1.lisp (special-form-p): moved to deprecated.lisp * places.lisp (get-setf-method-multiple-value) (define-setf-method): ditto * deprecated.lisp (special-form-p, get-setf-method-multiple-value) (define-setf-method): add and deprecate * describe.lisp (describe-object): macros can be deprecated too, give the new name for the deprecated functionality 2001-11-11 Bruno Haible Support for Intel icc on Linux/i386. * autoconf/aclocal.m4 (CL_STRLEN): When checking for the return type, prefer size_t over int. Avoids icc warning. * lispbibl.d (INTEL): New macro. (NULL): Don't define if INTEL. Avoids icc warning. (ASM_get_SP_register, SP, setSP): Use same asm based statement expression when using Intel icc as when using gcc. * genclisph.d (main): Likewise. * arilev0.d (mulu16) [I80386]: Likewise. (mulu32) [I80386]: Likewise. (divu_3216_1616) [I80386]: Likewise. (divu_6432_3232) [I80386]: Likewise. * eval.d (LD, LR, U_operand, S_operand): Likewise. * int2adic.d (D_D_mal2adic_D): Likewise. * intlog.d (integerlength16, integerlength32, ord2_32): Likewise. * ari80386.d (mulu32_): Don't define when using Intel icc. (divu_6432_3232_): Likewise. 2001-11-14 Sam Steingold * stream.d (init_streamvars): when stdin (resp. stdout) is not a terminal, set *STANDARD-INPUT* (resp. *STANDARD-OUTPUT*) to the actual stream, not *TERMINAL-IO* synonym stream 2001-11-14 Sam Steingold * lispbibl.d: envelop all "{}" macros in "do{}while(0)" 2001-11-09 Sam Steingold * pathname.d (CD): append a slash when the string does not end with it (compatibility with CMUCL &al); the original behavior is still available as (cd (pathname string)) 2001-11-08 Sam Steingold * defs1.lisp (load-lpt-many): evaluate the definition for AllegroCL compatibility 2001-11-07 Sam Steingold Support CMUCL- and AllegroCL-style logical host loading * defs1.lisp (load-lpt-many): new function (AllegroCL-style) (load-lpt-one): new function (CMUCL-style) (*load-logical-pathname-translations-database*): new user variable (load-logical-pathname-translations): use them 2001-11-07 Sam Steingold * init.lisp (search-file): handle the extension-less situations 2001-11-05 Sam Steingold * debug.d (read_form): keep calling READ-LINE until a non-empty line is supplied; this fixes the C-z RET win32 problem 2001-11-04 Bruno Haible Interoperability with gcc-3.0 -fuse-cxa-atexit. * autoconf/aclocal.m4 (CL_GLOBAL_CONSTRUCTORS): Add test whether global destructors actually exist. 2001-11-02 Sam Steingold * stream.d (check_stream, check_streamtype, check_builtin_stream): (check_wr_int, resolve_as_synonym): new macros (test_stream_args, test_input_stream_args, SYNONYM-STREAM-SYMBOL) (BROADCAST-STREAM-STREAMS, CONCATENATED-STREAM-STREAMS) (TWO-WAY-STREAM-INPUT-STREAM, TWO-WAY-STREAM-OUTPUT-STREAM) (ECHO-STREAM-INPUT-STREAM, ECHO-STREAM-OUTPUT-STREAM) (GENERIC-STREAM-P, bitbuff_ixu_sub, bitbuff_ixs_sub) (wr_by_iau8_unbuffered, wr_by_iau8_buffered, TERMINAL-RAW) (BUILT-IN-STREAM-OPEN-P, INPUT-STREAM-P, OUTPUT-STREAM-P) (BUILT-IN-STREAM-ELEMENT-TYPE, BUILT-IN-STREAM-SET-ELEMENT-TYPE) (STREAM-EXTERNAL-FORMAT, SET-STREAM-EXTERNAL-FORMAT) (interactive_stream_p, INTERACTIVE-STREAM-P, BUILT-IN-STREAM-CLOSE) (get_line_position, READ-BYTE, READ-BYTE-LOOKAHEAD) (READ-BYTE-WILL-HANG-P, READ-BYTE-NO-HANG, READ-INTEGER) (READ-FLOAT, WRITE-BYTE, WRITE-INTEGER, WRITE-FLOAT, LINE-NUMBER) (ALLOW-READ-EVAL): use them (decoded_el_t): rename from decoded_eltype (strm_channel_extrafields_t): rename from strm_channel_extrafields_struct (strm_unbuffered_extrafields_t): rename from strm_unbuffered_extrafields_struct (strm_buffered_extrafields_t): rename from strm_buffered_extrafields_struct (win32_console_extrafields_t): rename from win32_console_extrafields_struct (CHECK_INTERRUPT, SYSCALL) [UNIX_BEOS WIN32_NATIVE]: new macros (low_read_unbuffered_socket, low_listen_unbuffered_socket) (low_read_array_unbuffered_socket, low_write_unbuffered_socket) (low_write_array_unbuffered_socket, low_fill_buffered_socket) (low_flush_buffered_socket) :use them 2001-11-02 Stefan Kain * stream.d: translated the comments 2001-10-28 Arseny Slobodjuck Sam Steingold * stream.d (SCREEN) [WIN32_NATIVE]: w95/98 bug fixes (win32_console_extrafields_struct): add field handle_reused. (v_puts): fix a coord bug becoming apparent on w95. (low_close_console): new function, closing console handle if it is not reused. (MAKE-WINDOW): on NT create new console handle, on w95/98 try to get standard handle (w95 returns stdout anyway). Set new field in stream data accordingly. Removing obsolete ASSERT. Change stream closing procedure to new low_close_console. 2001-10-25 Sam Steingold * pathname.d (MAKE-PATHNAME): STACK_* = listof() might not be what you think! -- avoid 2001-10-25 Sam Steingold * socket.d (ipv6_ntop): make sure buffer is returned 2001-10-25 Sam Steingold * stream.d (rd_ch_keyboard) [WIN32_NATIVE !UNICODE]: fix the call to OemToCharBuff() Suggested by Arseny Slobodjuck 2001-10-24 Sam Steingold * charstrg.d (char_name, name_char): fix for --without-unicode 2001-10-24 Sam Steingold fix --without-unicode on msvc * lispbibl.d (pseudodata_tab) [MS !UNICODE]: add a dummy member * spvw.d (pseudocode_anz) [MS !UNICODE]: define to 0 * stream.d (pseudodata_tab) [MS !UNICODE]: init the dummy member 2001-10-24 Bruno Haible * clhs.lisp (*browsers*): Add an entry for :konqueror. 2001-10-23 Sam Steingold fix bug#474216 * misc.d (LISP-IMPLEMENTATION-VERSION): do not try to convert O(lisp_implementation_version_built_string) when month is not found 2001-10-23 Sam Steingold * clisp-link.sh (LIBS): quote commas Suggested by Johannes Groedem 2001-10-23 Sam Steingold * io.d (pprin_object, pprin_object_dispatch): declare local 2001-10-20 Sam Steingold * init.lisp (socket-stream-handle) [:WIN32]: do not export 2001-10-18 Sam Steingold MAKE-INSTANCE returns the instance, not the return value of INITIALIZE-INSTANCE * clos.lisp (initial-make-instance): save & return instance * record.d (CLOS::%MAKE-INSTANCE): ditto 2001-10-18 Sam Steingold pass *ARGS* to :INIT-FUNCTION when argv_execute_file is "" * spvw.d (init_symbol_values): define_variable EXT:*ARGS* (main): when argv_execute_file is "", do not call LOAD, just set EXT:*ARGS* 2001-10-05 Arseny Slobodjuck Sam Steingold Work with terminal/console encoding more directly in win32. Initialize terminal-encoding to OEM encoding. * stream.d (wr_ch_array_window, wr_ch_window, rd_ch_keyboard) [WIN32_NATIVE UNICODE]: do not convert to OEM (encodings do) * encoding.d (init_dependent_encodings) [WIN32_NATIVE]: init terminal encoding to OEM code page * win32aux.d (OEM2ANSI_table, ANSI2OEM_table) [UNICODE]: drop (init_win32): ditto (lowlevel_full_read, full_write) [UNICODE]: don't translate 2001-10-05 Arseny Slobodjuck Sam Steingold move win32 console attributes to non-GC-ed area to ensure absence of conflicts. * stream.d (strm_console_attrib, strm_console_size) (strm_console_cursor_pos, UnwrapCoord, WrapCoord, ConsolePosR) (ConsoleSizeR, ConsoleAttribR, ConsolePosS, ConsoleSizeS) (ConsoleAttribS, ConsoleHandleS) [WIN32_NATIVE]: remove macros (unwrap_coord): remove function (v_put): no need to move cursor (ConsoleData) [WIN32_NATIVE]: new console attrib accessor (win32_console_extrafields_struct): new structure, contains strm_channel_extrafields_struct and console state. (make_window, window_size, window_cursor_position) (set_window_cursor_position, clear_window, clear_window_to_eot) (clear_window_to_eol, delete_window_line, insert_window_line) (highlight_on, highlight_off, wr_ch_array_window): update to get attributes from new structure. (wr_ch_array_window, make_window): fix UNICODE mode 2001-10-15 Sam Steingold * io.d (read_internal): clear EOF from the stream 2001-10-10 Sam Steingold optimize #'* and #'/ * compiler.lisp (c-form-table): map * to c-STAR and / to c-SLASH (c-constant-number, c-collect-numeric-constants): add (c-PLUS, c-MINUS): use them (c-STAR, c-SLASH): new functions 2001-10-08 Sam Steingold fix bug#462982: support ipv6 on i386 (cygwin32, mingw32, msvc) * win32.d (HAVE_IPV6): define (ws2tcpip.h, winsock2.h): include * socket.d (in6_addr): define to in_addr6 (ipv6_ntop): the s6_addr array is directly in struct in6_addr 2001-10-08 Sam Steingold * savemem.lisp (saveinitmem): default image type is .mem 2001-10-05 Sam Steingold * io.d (pr_enter_1): set indent if not skipping a newline after a TAB 2001-10-04 Sam Steingold make COERCE error message more consistent * sequence.d (coerce_sequence): add a third argument error_p to indicate whether to return nullobj when result_type is not a sequence or to signal an error * lispbibl.d (coerce_sequence): update the prototype * rexx.d (REXX-PUT): update for the new coerce_sequence() signature * eval.d (SUBR-INFO, match_subr_key): ditto * foreign.d (convert_from_foreign): ditto * predtype.d (coerce_sequence_check): new function (COERCE): use it 2001-10-04 Sam Steingold special file for deprecated functions * deprecated.lisp: add (define type-expand-1) * init.lisp: load deprecated.lisp * makemake.in (LPARTS): add deprecated 2001-10-04 Sam Steingold expand compiler macros in C-FORM * compiler.lisp (expand-compiler-macro): new function (c-form, macroexpand-form): use it 2001-10-04 Sam Steingold * type.lisp (clos-class): new function (typep, canonicalize-type, type-expand): use it 2001-10-03 Sam Steingold limit DEFTYPE depth * predtype.d (expand_deftype): do not iterate more than (or *DEFTYPE-DEPTH-LIMIT* MOST-POSITIVE-FIXNUM) times * constsym.d, spvw.d (*DEFTYPE-DEPTH-LIMIT*): add 2001-10-03 Sam Steingold EXPAND-DEFTYPE & TYPE-EXPAND accept an optional argument * predtype.d (expand_deftype): take the second arg once_p (EXPAND-DEFTYPE): take the second optional arg once-p * subr.d (expand-deftype): ditto * lispbibl.d (expand_deftype): ditto * sequence.d (valid_type): changed the expand_deftype() call * type.lisp (type-expand): take the second optional arg once-p * describe.lisp (describe-object): use type-expand 2001-10-03 Sam Steingold * io.d (pr_enter_1): do not print the initial newline with definite single-liners 2001-10-02 Sam Steingold * format.lisp (formatter-main-1): fix quoting (colon-p and atsign-p must be under comma) 2001-10-01 Sam Steingold * pathname.d (make-pathname): support string and :wild/:wild-inferiors :directory arg support :UP and :BACK in the directory list coerce name &c to normal simple string (legal_name): accept non-simple strings (subst_up_dotdot): new function * constsym.d (:UP, :BACK): add 2001-10-01 Sam Steingold add EXPAND-DEFTYPE primitive, remove TYPE-EXPAND-1 * lispbibl.d (expand_deftype): add a prototype * predtype.d (expand_deftype, EXPAND-DEFTYPE): implement (COERCE): use expand-deftype() * constsym.d, subr.d (EXPAND-DEFTYPE): add * sequence.d (find_seq_type): new local function (valid_type): split into valid_type() and valid_type1(), use expand_deftype() and find_seq_type() (get_seq_type): use find_seq_type() * type.lisp (typep, canonicalize-type, subtype-integer) (type-expand-1): use EXPAND-DEFTYPE (type-expand-1): folded into type-expand * describe.lisp (describe-object): do not use type-expand-1 2001-09-24 Sam Steingold add functionp macro predicate * lispbibl.d (functionp): define * record.d (MAKE-FUNCTION-MACRO, MAKE-MACRO): use it * predtype.d (COERCE): ditto 2001-09-23 Sam Steingold optional filling of PPHELP streams * stream.d (wr_ch_pphelp): when filling, handle spaces specially (wr_ch_array_pphelp): split on NL and (when filling) on spaces (wr_ch_array_pphel_): rename from wr_ch_array_pphelp * constsym.d (*PRINT-PRETTY-FILL*): add * spvw.d (init_symbol_values): defvar *PRINT-PRETTY-FILL* 2001-09-24 Stefan Kain * lispbibl.d: translated the rest of the comments 2001-08-12 Bruno Haible * io.d (a_letterdigit, a_expodigit): New macros. (test_potential_number_syntax): Swap step2 and step3. Translate into a_letterdigit and a_expodigit. Update step4 and step6 accordingly. (test_number_syntax): Drop most of step4. Update step5 accordingly. 2001-08-25 Bruno Haible Make it compile in C++ mode. * foreign.d (free_foreign_callin): Cast free_callback argument. (struct_alignment): Provide alternative definition in C++. 2001-09-22 Sam Steingold * error.d (end_error): use exit() instead of NOTREACHED to avoid an infinite loop reporting fatal errors 2001-09-22 Sam Steingold new built-ins: SYS::WHITESPACEP & SYS::WRITE-SPACES * constsym.d, subr.d (whitespacep, write_spaces): add * io.d (write_spaces, whitespacep): implement * lispbibl.d (cint_white_p): new macro * stream.d (strip_white): use it * compiler.lisp (stream-tab): use write-spaces * describe.lisp (describe-stream): ditto * format.lisp (whitespacep): commented out 2001-09-21 Sam Steingold binary i/o on True64 * stream.d (bitbuff_is_I): subtract, not add wbitm(intLsize) to wert before calling negfixnum Suggested by Kalman Reti 2001-09-21 Sam Steingold some bugfixes to the Pretty-Printer * io.d (FORMAT-TABULATE): check the optional arguments * format.lisp (formatter-main-1): add FORMAT-PPRINT-NEWLINE and FORMAT-PPRINT-INDENT (format-pprint-indent): fix COUNT default value 2001-09-20 Sam Steingold fix WITH-COMPILATION-UNIT * compiler.lisp (compile-warnings-p, compile-failure-p): new helper functions (compile, compile-file): use them (c-report-problems): call c-reset-globals (with-compilation-unit): bind *error-count* *warning-count* and *style-warning-count* when *c-top-call* (compile-file): use with-compilation-unit (compile): flet closure-slot 2001-09-20 Sam Steingold handle *PRINT-LEVEL* for CLOS instances correctly * io.d (pr_instance, pr_structure_external): do level check (pr_structure): do not do level check 2001-09-20 Sam Steingold PPRINT-LOGICAL-BLOCK supports *PRINT-CIRCLE* and *PRINT-LENGTH* * pprint.lisp (pprint-pop): handle *PRINT-LENGTH* & *PRINT-CIRCLE* * constsym.d, subr.d (pcirclep): add * io.d (double_dots): do not set *PRIN-LINES* to :END (string_fit_line_p): take a third arg offset (pr_enter_1): do not print TAB before NL (pprin_object, pprin_object_dispatch): new pr_routine_t (pprint_lisp): remove (%PPRINT-LOGICAL-BLOCK): use pprin_object instead of pprint_lisp (%CIRCLEP): new LISPFUNN 2001-09-19 Sam Steingold * io.d (format_tab): ASSERT that the return value is >=0 2001-09-19 Sam Steingold * makemake.in (DEBUGGING): handle on win32msvc 2001-09-17 Sam Steingold finished the Pretty-Printer * constsym.d, subr.d (FORMAT-TABULATE): add * format.lisp (format-tabulate): commented out * lispbibl.d (cons_ssstring): take args (PUSH_CONS, PPHELP_PUSH, PPHELP_NEW_STRING): remove * stream.d (make_pphelp_stream): call cons_ssstring() with args (wr_ch_pphelp): use cons_ssstring() instead of PPHELP_NEW_STRING() * io.d (strm_pphelp_strings): contains NL/indent/tab too (cons_ssstring): take 2 agrs - stream pointer and NL type (format_tab): new function (pprint_prefix): take an additional `prefix' arg (pphelp_newline): use cons_ssstring() instead of PPHELP_NEW_STRING() (klammer_zu): drop the newline / indentation / tab (multi_line_sub_block_out): new function (justify_end_eng, justify_end_weit): use it (space_available, pphelp_length, string_fit_line_p): new functions (pr_enter_1): accommodate the new strm_pphelp_strings format (PPRINT-NEWLINE): implement non-mandatory newlines (FORMAT-TABULATE): moved here from format.lisp 2001-09-17 Sam Steingold * io.d (syntax_readtable_get, syntax_readtable_put): new macros (SET-SYNTAX-FROM-CHAR, GET-MACRO-CHARACTER, read_char_syntax) (wpeek_char_syntax, wpeek_char_eof): use them 2001-09-17 Sam Steingold bind *PRINT-READABLY* to NIL before reporting errors * error.d (write_errorobject): bind *PRINT-READABLY* to NIL (signal_and_debug): new function; extracted from end_error(), ERROR, ERROR-OF-TYPE; additionally bind *PRINT-READABLY* to NIL (end_error, ERROR, ERROR-OF-TYPE): use it * debug.d (break_driver): bind *PRINT-READABLY* to NIL 2001-09-14 Sam Steingold * modules/regexp/regexp.lisp (with-loop-split): :case-sensitive is a &key, not &optional, add :start and :end (regexp-exec): accept negative :end 2001-09-14 Sam Steingold more work on the Pretty-Printer * constsym.d (*PRIN-INDENTATION*): new var * format.lisp (format-tabulate): use it instead of CURRENT-INDENT (current-indent): remove * io.d (cons_ssstring, pprint_prefix): new functions (right_margin): use pprint_prefix() (pphelp_newline): use PPHELP_NEW_STRING() (justify_empty_1): use cons_ssstring() (pr_enter_1): use pprint_prefix() (PPRINT-INDENT): add spaces when necessary (pprint_lisp): do level check * lispbibl.d (cons_ssstring, PUSH_CONS, PPHELP_PUSH) (PPHELP_NEW_STRING): add (for io.d and stream.d) * pprint.lisp (pprint-logical-block): moved binding out of lambda; bind *PRIN-INDENTATION* instead of *PRIN-L1* and *PRIN-LM* * spvw.d (init_symbol_values): defvar *PRIN-LINE-PREFIX* (forgot on 2001-08-17) and *PRIN-INDENTATION* * stream.d (wr_ch_pphelp): when given NL, start a new string using PPHELP_NEW_STRING (make_pphelp_stream): use cons_ssstring() 2001-09-13 Sam Steingold * modules/regexp/regexp.lisp: replace CASE-INSENSITIVE with CASE-SENSITIVE throughout (preserving the defaults) 2001-09-11 Sam Steingold * makemake.in (docdir): use `share' for all $fsstnd 2001-09-10 Sam Steingold * debug.d (read_form): check the input_len before string_eqcomp_ci() 2001-09-10 Sam Steingold * pprint.lisp (pprint-logical-block): unroll stream-symbol (NIL -> *STANDARD-OUTPUT*, T -> *TERMINAL-IO*) 2001-09-10 Sam Steingold * io.d (pr_enter_1): a GC-safety issue 2001-09-10 Sam Steingold * macros2.lisp (Exhaustive-Case-Analysis): add CASE-LIST flet (gensym-list): new function (time, space): use it * compiler.lisp (c-MAP-on-CARs, c-MAP-on-LISTs, c-MAPC, c-MAPL): ditto * condition.lisp (handler-bind): ditto * format.lisp (formatter-main-1): ditto * places.lisp (get-setf-expansion, push, pushnew): ditto * clos.lisp (analyze-method-description, prototype-table) (compute-dispatch, compute-effective-method, generic-flet) (generic-labels): ditto (n-gensyms): remove 2001-09-10 Sam Steingold fix bug#458746 * format.lisp (format-float-to-string): make sure width is at least 2 (when given): for a digit and for the decimal point 2001-09-09 Stefan Kain * format.lisp: translated all comments 2001-09-09 Sam Steingold * lispbibl.d (offsetof) [MSVC]: defined in 2001-09-09 Sam Steingold * pathname.d (host_namestring_parts): handle logical pathnames on win32 2001-09-07 Sam Steingold * lispbibl.d, error.d, genclisph.d (conditiontype): rename to `condition_t' 2001-09-07 Oliver Nee Sam Steingold * lispbibl.d: translate half of the comments 2001-09-06 Sam Steingold * macros1.lisp (case-expand): new function (case): use it (fcase): new macro 2001-09-05 Sam Steingold * reploop.lisp (debug-backtrace): print the number of frames * debug.d (SHOW-STACK): return the number of frames examined 2001-09-05 Sam Steingold * install.lisp (add-fas-file, add-mem-file): set the default action 2001-08-30 Sam Steingold * lispbibl.d (nonreturning_function) [MICROSOFT]: __declspec(noreturn) 2001-08-30 Sam Steingold * pathname.d (MERGE-PATHNAMES): when physical directories do not match, check for unbound directory in pathname 2001-08-29 Sam Steingold * pathname.d (assure_dir_exists) [WIN32_NATIVE]: signal an error when the path is invalid 2001-08-29 Sam Steingold more ANSI compliance pathnames wrt HOSTS & VERSIONS * constobj.d (semicolon_string, zero_string): add for the benefit of VERSION pathname component * pathname.d (PARSE-NAMESTRING): fix HOST handling (pathname_version_maybe, pathname_host_maybe) (pathname_device_maybe): new convenience macros (subdir_namestring_parts): take an additional logp arg (host_namestring_parts, directory_namestring_parts): handle logical pathnames (nametype_namestring_parts): separate version with ".", not ";" (directory_namestring): do not add host (FILE-NAMESTRING, DIRECTORY-NAMESTRING, HOST-NAMESTRING) (ENOUGH-NAMESTRING, NAMESTRING): handle logical pathnames (defaults_pathname): permit logical *DEFAULT-PATHNAME-DEFAULTS* (merge_dirs): new function (MERGE-PATHNAMES): use it; handle versions better (MAKE-PATHNAME): handle defaults early; pass UNBOUND instead of NIL to MERGE-PATHNAMES as default version 2001-08-27 Sam Steingold * makemake.in (testsuite): add on all platforms 2001-08-27 Sam Steingold win32gcc names libraries libFOO.a and not FOO.LIB * makemake.in (LIB_TYPE): new variable, used instead of $HOS in creating library dependencies 2001-08-27 Sam Steingold fix bug#455559 * defstruct.lisp (ds-arg-default): when ARG is a list and default is NIL, return (ARG NIL) and not (ARG) (ds-arg-with-default): pass VAR instead of ARG to DS-ARG-DEFAULT 2001-08-25 Bruno Haible Upgrade to autoconf-2.52. * autoconf/autoconf: Upgrade to autoconf-2.52. * autoconf/acgeneral.m4: Remove file. * autoconf/acspecific.m4: Remove file. * autoconf/autoconf.m4f: New file, from autoconf-2.52. * autoconf/aclocal.m4: Require autoconf-2.52. (CL_AS_UNDERSCORE): Avoid stupid autoconf-2.52 error "possibly undefined macro: AS_UNDERSCORE". (CL_CONFIG_SUBDIRS): Rewritten. (CL_CANONICAL_HOST): Call AC_CANONICAL_HOST. Don't cache the result, AC_CANONICAL_HOST does it itself. Add $SHELL in front of $ac_config_guess and $ac_config_sub. (CL_VOID): Define return_void to empty. (CL_DIR_HEADER): Inline the autoconf-2.13 AC_CHECK_HEADERS_DIRENT code. (CL_SIGACTION_REINSTALL): Include , for memset declaration. (CL_STAT): Define STAT_INLINE outside of CL_PROTO. (CL_LSTAT): Likewise. (CL_SHM): Cast the shmat return value, to avoid error in C++ mode. * Makefile.devel (AUTOCONF_FILES): Remove acgeneral.m4, acspecific.m4. Add autoconf.m4f. (src/gettext/configure, src/gettext/config.h.in): Likewise. (src/configure): Use autoconf options -A, -l instead of -m. (modules/wildcard/configure): Likewise. (modules/regexp/configure): Likewise. (modules/clx/new-clx/configure): Likewise. (utils/hln/configure): Likewise. * unixconf.h.in (return_void, *_CONST, CONNECT_ADDRLEN_T): Use #undef instead of #define, to work around an autoconf bug. (DIRENT, SYSNDIR, SYSDIR, NDIR): Remove comments after #undef, to work around an autoconf-2.52 bug. * configure: Pass --cache-file=config.cache to the main configure, to force a cache file. Needed for grepping cl_cv_prog_cc_cplusplus and also for speed. Don't pass --cache-file=../config.cache to gettext's configure because it uses different CPPFLAGS and LDFLAGS (needed so that gettext gets HAVE_ICONV right). 2001-08-25 Bruno Haible * makemake.in (gettext_datadirname_sedcommand): Remove. (datadir): Always set to $(prefix)/share. (localesed): Update. (clean5): Also remove the varbrace executable. 2001-08-27 Sam Steingold * init.lisp (load): when checking whether FILENAME names a compiled file, do not call MAKE-PATHNAME since if *DEFAULT-PATHNAME-DEFAULTS* has a non-trivial host, the search will always fail 2001-08-27 Stefan Kain * init.lisp: translated all comments 2001-08-05 Bruno Haible * pathname.d (Z_SHIFT, Z_AT_SLASH, Z_SUB): Parenthesize argument expressions. 2001-08-05 Bruno Haible * spvw.d (main): Use GETTEXT, not GETTEXTL, in combination with O(internal_encoding). 2001-08-05 Bruno Haible * lispbibl.d (nonreturning_function): Define in a way that works also for function definitions. * genclisph.d (main): Update accordingly. * affi.d: Merge nonreturning_function declarations with definition. * amigaaux.d: Likewise. * aridecl.d: Likewise. * array.d: Likewise. * charstrg.d: Likewise. * control.d: Likewise. * debug.d: Likewise. * encoding.d: Likewise. * erramiga.d: Likewise. * error.d: Likewise. * errunix.d: Likewise. * errwin32.d: Likewise. * eval.d: Likewise. * flo_konv.d: Likewise. * foreign.d: Likewise. * hashtabl.d: Likewise. * intbyte.d: Likewise. * intdiv.d: Likewise. * intelem.d: Likewise. * intmal.d: Likewise. * io.d: Likewise. * lfloat.d: Likewise. * lisparit.d: Likewise. * list.d: Likewise. * pathname.d: Likewise. * record.d: Likewise. * rexx.d: Likewise. * sequence.d: Likewise. * spvw.d: Likewise. * spvw_allocate.d: Likewise. * stream.d: Likewise. * symbol.d: Likewise. 2001-08-22 Sam Steingold * pprint.lisp (pprint-logical-block): set indentation with PPRINT-INDENT after printing :PREFIX 2001-08-22 Sam Steingold * io.d (PPRINT-NEWLINE): output only to PPHELP streams and when *PRINT-PRETTY* is non-NIL (%PPRINT-LOGICAL-BLOCK): bind *PRIN-PPRINTER*, not set it 2001-08-05 Bruno Haible * io.d (check_readtable): Rename from CHECK_READTABLE. Add documentation. 2001-08-05 Bruno Haible * pathname.d (version_diff): Fix syntax error. 2001-08-21 Sam Steingold * lispbibl.d, stream.d (check_direction): const argument 2001-08-21 Sam Steingold * stream.d (stream_dummy_fill): fill the stream with error pseudofuns (close_dummys): a macro now, uses stream_dummy_fill() (make_broadcast_stream, make_concatenated_stream) (MAKE-STRING-INPUT-STREAM, make_string_output_stream) (MAKE-STRING-PUSH-STREAM, make_pphelp_stream) (MAKE-BUFFERED-INPUT-STREAM, MAKE-BUFFERED-OUTPUT-STREAM) (fill_pseudofuns_unbuffered, fill_pseudofuns_buffered) (make_keyboard_stream, make_terminal_stream_) (MAKE-WINDOW, make_printer_stream): use stream_dummy_fill() (ELTYPE_DISPATCH): new macro (canon_eltype, fill_pseudofuns_buffered): use it 2001-08-05 Bruno Haible * lispbibl.d (direction_t): Explicit value assignments. 2001-08-05 Bruno Haible * io.d (get_readtable): Local variable zuweisung -> assignment. (read_char_syntax): Likewise. (wpeek_char_syntax): Likewise. 2001-08-05 Bruno Haible * eval.d (eval_fsubr): Change error message: talk about special operator, not special form. 2001-08-21 Sam Steingold * makemake.in (XCFLAGS): with win32gcc, do not need -D_NO_OLDNAMES: there is no sleep() in stdlib.h and _NO_OLDNAMES_ kills struct timeb in timeb.h 2001-08-21 Sam Steingold fix bug#446942 * makemake.in (DISTFILE): insulate from AIX uname which does not have the -p option 2001-08-21 Sam Steingold some symbols appeared in wrong packages - fix this * international.lisp (textdomain, textdomaindir): use package prefix before SET-TEXTDOMAIN and SET-TEXTDOMAINDIR * clos.lisp (signature): import from COMPILER 2001-08-20 Sam Steingold * loadform.lisp (mlf-unquote, mlf-init-function): new functions (make-init-form): warn about errors in MLF-INIT-FUNCTION 2001-08-20 Sam Steingold * places.lisp (setf-symbol): intern the result when the argument is interned 2001-08-05 Bruno Haible * constsym.d: Reorder according to the definition order in the files. 2001-08-05 Bruno Haible * win32.d: Test __MINGW32__, not __mingw32__. 2001-08-18 Sam Steingold * loadform.lisp (make-load-form-saving-slots): compute the slot list differently for STANDARD-OBJECTs and STRUCTURE-OBJECTs; quote slot values 2001-08-17 Sam Steingold implement the ANSI CL pretty-printer * constobj.d (version): bumped (type_pprint_newline, type_pprint_indent): add * constsym.d (PPRINT-DISPATCH, PPRINT-INDENT, PPRINT-NEWLINE) (%PPRINT-LOGICAL-BLOCK, :MISER-WIDTH, :PPRINT-DISPATCH, :LINEAR) (:FILL, :MISER, :MANDATORY, :BLOCK, :CURRENT, *PRIN-LINE-PREFIX*) (*PRIN-MISERP*, *PRIN-PPRINTER*): new symbols * defs2.lisp (with-standard-io-syntax): bind *PRINT-MISER-WIDTH* and *PRINT-PPRINT-DISPATCH* * format.lisp (format-parse-cs): add ~_ and ~I instructions (format-pprint-newline, format-pprint-indent, current-indent): new functions (format-tabulate): do not ignore colon-modifier * init.lisp: export PPRINT symbols; load pprint.lisp * inspect.lisp (with-gensyms): moved to pprint.lisp * io.d (pretty_print_call): look into *PRINT-PPRINT-DISPATCH* (pr_enter_1): call it, instead of calling pr_xxx directly respect *PRIN-LINE-PREFIX* (pr_external_1): bind *PRINT-MISER-WIDTH* and *PRINT-PPRINT-DISPATCH* (PPRINT-INDENT, PPRINT-NEWLINE): implement (pprint_lisp): new pr_routine_t helper (%PPRINT-LOGICAL-BLOCK): new function (WRITE, WRITE-TO-STRING): accept :MISER-WIDTH and :PPRINT-DISPATCH * lisparit.d (fehler_not_R): made global * lispbibl.d (init): add the prototype * makemake.in (LPARTS): add pprint.lisp * pprint.lisp: new file * spvw.d (init_symbol_values): define *PRINT-MISER-WIDTH*, *PRIN-MISERP*, *PRIN-PPRINTER*, *PRINT-PPRINT-DISPATCH* * subr.d, subrkw.d (write, write_to_string): add kw(miser_width) and kw(pprint_dispatch) * subr.d (pprint_indent, pprint_newline, ppprint_logical_block): add 2001-08-17 Sam Steingold * charstrg.d (char_name): fix the binary search to always terminate 2001-08-13 Stefan Kain * eval.d: translated all comments 2001-08-05 Bruno Haible * constsym.d (S(re_export)): Rename from S(reexport). 2001-08-05 Bruno Haible * charstrg.d (unpack_string): Rename local variable index to offset, to be consistent with the documentation. (unpack_string_ro): Add documentation. (SYSTEM::STORE-CHAR): Rename local variable index to offset. 2001-08-05 Bruno Haible * control.d (CONSTANTP): Optimize a popSTACK(). 2001-08-05 Bruno Haible * makemake.in: Update documentation of --with-[no]gettext. 2001-08-16 Sam Steingold * loop.lisp (expand-loop): WITH vars should always be bound on top 2001-08-05 Bruno Haible * makemake.in (Makefile): Back up Makefile before erasing it. 2001-08-05 Bruno Haible * spvw.d (loadmem): Take a 'const char*'. * spvw_memfile.d (loadmem): Take a 'const char*'. Create CYGDRIVE replacement using alloca. Fix oversized memmove argument. 2001-08-05 Bruno Haible * pathname.d (PARSE-NAMESTRING): Verify consp before accessing Cdr. 2001-07-31 Arseny Slobodjuck Sam Steingold * stream.d [WIN32_NATIVE] (rd_ch_keyboard): cast uAsciiChar in (*.uAsciiChar <= ' ') to uintB since uAsciiChar is signed in MSVC (!). (vktable): add 'WIN' key just to avoid 'unknown keyboard event' messages. Add keyboard OEM to local charset translation and then local to internal (for UNICODE). May be it will be nicer to automatically init *terminal-io* to OEM charset and decode input/output through internal encoding facility, but that should be done with care about other code. (check_window_stream): return its argument on success WIN32 console output: (console_handle, console_size, console_cursor_pos, console_needtoclose) (screenattr, attr) deleted global variables. 'encapsulated' them into window-stream. The latter changed to be channel-stream since iconv-based translations require channel-stream extra fields. (UnwrapCoord, WrapCoord, ConsolePosR, ConsoleSizeR, ConsoleAttribR) (ConsoleHandleR, ConsolePosS, ConsoleSizeS, ConsoleAttribS) (ConsoleHandleS): new macros to access new fields. (InitConsole) remove since two function calls left in it. (DoneConsole) remove since Channel stream finalization does all right. (unwrap_coord) new function. convert uintL to COORD. (move_ccp_by): new function, moves cursor position (v_emit_spaces): new helper function (v_move, v_put, v_cb, v_cs, v_ce, v_cl, v_cd, v_scroll, v_al, v_dl) (v_su, v_put): changed argument lists in view of absence of global variables. (v_put): processing Y overflow, subsequent output continues on the top of screen. It differs from DOS behavior where subsequent chars being written to bottom right of the screen (as far as I can see from code). (v_puts): new function, buffered console output. (wr_ch_array_window): new function instead of dummy which slowly works through v_put(). Handles newlines and bottom of screen like v_put does. Handles UNICODE internal format in two stages, like rd_ch_keyboard. (wr_ch_window): changed to handle UNICODE internal format (make_window): allocates a stream (channel stream) and sets strm_encoding as terminal_encoding. (close_window, window_size, window_cursor_position) (set_window_cursor_position, clear_window, clear_window_to_eot) (clear_window_to_eol, delete_window_line, insert_window_line) (highlight_on, highlight_off, window_cursor_on) (window_cursor_off): changed to take parameters from stream fields. 2001-08-16 Sam Steingold Bruno Haible * pathname.d (PARSE-NAMESTRING): check CONSP before CAR & CDR 2001-08-16 Sam Steingold * install.lisp (bat-file): use registry to get the "Common Desktop" location 2001-08-05 Bruno Haible * autoconf/acgeneral.m4 (AC_MSG_RESULTPROTO): Remove macro. (AC_LANG_EXTERN): Move to aclocal.m4. * autoconf/aclocal.m4 (AC_LANG_EXTERN): Moved here from acgeneral.m4. (CL_PROTO): Use AC_MSG_RESULT directly, instead of AC_MSG_RESULTPROTO. (CL_SILENT): No need to pushdef AC_MSG_RESULTPROTO. 2001-08-16 Sam Steingold * disassem.lisp (disassemble): if a form is not a lambda form, prepend lambda before coercing to function 2001-08-15 Sam Steingold * utils/gcc-cccp/Makefile.* (clean): new target * utils/gcc-cccp/Makefile (clean): new target adapted for CYGWIN/MINGW compilation * utils/gcc-cccp/cccp.c: made compilable under CYGWIN/MINGW: (stdlib.h, string.h, errno.h): include (max): define only if not yet defined (sys_nerr, sys_errlist): do not use on CYGWIN/MINGW, use strerror() code clean-up: add prototypes, fix warnings and... (fancy_abort): remove (unused) (pipe_closed): ifndef _WIN32 (fancy_abort): turned into a macro (grow_outbuf): void (expand_to_temp_buffer): do not return a local var fix a show-stopper bug: (rescan): `obufp_before_macroname' is on the top level now (RECACHE): update `obufp_before_macroname' 2001-08-15 Sam Steingold MT-safety: remove a static variable * io.d (circle_p): return a boolean and take a circle_info_t* arg (pr_circle): info is not a pointer now; pass it to circle_p() (pr_cons): pass NULL to circle_p() 2001-08-05 Bruno Haible * sequence.d (seq_check_index): Remove typdescr argument. Use index, not STACK_0. Fix fehler_index_range argument. Add documentation. (ELT): Update. (SYSTEM::%SETELT): Update. 2001-08-05 Bruno Haible * pathname.d (legal_namechar): Treat ' ' as valid and '"' as invalid. 2001-08-14 Sam Steingold fix bug#448817 * io.d (pr_external_1): use new macro BIND_UNLESS (pr_sharp_dot): new local function (pr_instance): use it do not call pr_external_[12] around a call to prin_object() (pr_orecord): use pr_sharp_dot() when printing Rectype_Loadtimeeval 2001-08-14 Sam Steingold * .gdbinit: set args and define zout 2001-08-05 Bruno Haible * hashtabl.d (SXHASH): Perform 32-bit -> 24-bit mapping by dividing through 0xFFFFFF. This does not show bad patterns mod 255. 2001-08-05 Bruno Haible * package.d (export_symbol_from): Fix GC safety bug. 2001-08-13 Sam Steingold use unix file utilities and forward slashes with win32gcc * makemake.in (H_DOS): DOS-style filenames and file utilities 2001-08-04 Bruno Haible * eval.d (check_for_illegal_keywords): Don't signal an error for ((LAMBDA (&KEY X) X) :X 1 :ALLOW-OTHER-KEYS NIL :ALLOW-OTHER-KEYS NIL) 2001-08-05 Bruno Haible Make it possible again to build clisp with the CFLAGS option "-x c++". * autoconf/acspecific.m4 (AC_C_INLINE): Add explicit return type to declaration. * lispbibl.d (export): Define. (strmflags_rd_by_bit_B, strmflags_wr_by_bit_B, strmflags_rd_by_B) (strmflags_wr_by_B, strmflags_rd_B, strmflags_wr_B): New macros, moved from stream.d. (input_stream_p, output_stream_p): Remove declarations. * spvwtabs.d (export): Undefine. * stream.d (strmflags_rd_by_bit_B, strmflags_wr_by_bit_B) (strmflags_rd_by_B, strmflags_wr_by_B, strmflags_rd_B, strmflags_wr_B): Commented out. Now in lispbibl.d. (input_stream_p, output_stream_p): Make local. (rd_by_aux_icx_buffered): Bracify so that 'goto eof' doesn't jump into uninitialized variables. (MAKE-PIPE-INPUT-STREAM): Pass a real direction_t to make_unbuffered_stream and make_buffered_stream. (MAKE-PIPE-OUTPUT-STREAM): Likewise. (MAKE-PIPE-IO-STREAM): Likewise. (SYS::MAKE-SOCKET-STREAM): Likewise. (make_socket_stream): Likewise. (sec_usec): Fix declaration so that "ansidecl" recognizes it. (make_terminal_io): Pass a real direction_t to make_file_stream. (init_streamvars): Pass a real direction_t to make_unbuffered_stream. * io.d (pr_stream): Don't use input_stream_p, output_stream_p. * unix.d (getpid): Declare only once. * socket.d (errno): Remove superfluous declaration. * misc.d (clisp_setenv): Cast malloc return value. (SYS::SETENV): Rename local variable 'error' to 'ret'. Ensure it is always initialized. * pathname.d (open_file): Bracify so that 'goto ergebnis_NIL' doesn't jump into uninitialized variables. * spvw_garcol.d (move_aligned_p1_p2): Don't use the gcc extension if compiling in C++ mode. * stdbool.h.in (_Bool): Define differently in C++ mode. 2001-08-05 Bruno Haible * lispbibl.d (pathname_to_OSdir, OSdir_to_pathname): New declarations. * pathname.d (pathname_to_OSdir, OSdir_to_pathname): New functions. * spvw_ctype.d (init_ctype): Call setlocale for all standard categories except LC_NUMERIC. * spvw_language.d (init_language): Use locale names of the form "ll_CC", not "ll", needed for glibc-2.2. Call setlocale for LC_MESSAGES in all cases. * i18n.d: New file. * misc.d (SYS::CURRENT-LANGUAGE, SYS::LANGUAGE): Move to i18n.d. * international.lisp: New file. * macros2.lisp (*all-languages*, assert-language, ensure-language) (deflanguage, ENGLISH, definternational, deflocalized, localized) (*localized-recursion*, definternational-default): Move to international.lisp. * init.lisp: Load "international". * makemake.in (CPARTS): Add i18n. (LPARTS): Add international. 2001-08-05 Bruno Haible * lispbibl.d (subr_argtype_3_2): New enum value. * eval.d (eval_subr): Treat it. (apply_subr): Likewise. (funcall_subr): Likewise. * spvw.d (subr_argtype): Likewise. 2001-08-03 Sam Steingold some minor code rearrangements * compiler.lisp (c-error-c): new macro (analyze-lambdalist): add local macros CHECK-ITEM and SKIP-L, remove local macro ERR-SUPERFLU 2001-08-02 Sam Steingold fix bug#445286 * compiler.lisp (c-SYMBOL-MACROLET): bind *VENV* before PARSE-BODY because PARSE-BODY macroexpands the first form in search of declarations, and that macroexpansion might rely on the definitions of the current SYMBOL-MACROLET 2001-08-02 Bruno Haible * nls_iso8859_16.c: Regenerated from newest unicode.org table. 2001-07-25 Sam Steingold due to the change in the WRITE signature, all FAS files have to be re-compiled * constobj.d (version): bumped 2001-07-25 Sam Steingold Win32: understand Cygwin's /cygdrive/[letter] pathnames * pathname.d (parse_namestring): translate :DIRECTORY (:ABSOLUTE *DEVICE-PREFIX* "c" ...) to :DEVICE "C" :DIRECTORY (:ABSOLUTE ...) * cfgwin32.lisp (*device-prefix*): set to "cygdrive" * constsym.lisp (*device-prefix*): add * spvw.d (init_symbol_values): defvar *DEVICE-PREFIX* * spvw_memfile.d (loadmem): check the path for "cygdrive" prefix and modify it if necessary in place 2001-07-25 Sam Steingold * socket.d (create_client_socket, create_server_socket): avoid warnings 2001-07-25 Sam Steingold * defs2.lisp (with-standard-io-syntax): bind *PRINT-LINES* 2001-07-24 Sam Steingold mingw32 compilation - kill more warnings * win32.d (ULONGLONG): define to OS_ULONGLONG around #include (USE_SYS_TYPES_FD_SET): define around #include 2001-07-24 Sam Steingold Tweak the MAKE-LOAD-FORM patch * loadform.lisp: new file; moved `make-load-form', `make-load-form-saving-slots' and `make-init-form' here * init.lisp: load "loadform" * makemake.in (LPARTS): add "loadform" * clos.lisp (make-load-form, make-load-form-saving-slots): gone * compiler.lisp (*load-forms*): new variable (compile-file): bind it 2001-07-18 Arseny Slobodjuck Sam Steingold * pathname.d (legal_namechar): PATHNAME_WIN32: permit characters 197 and 206 (legal in CP1251) 2001-07-24 Sam Steingold * init.lisp (*terminal-encoding*): fix the export statement spelling 2001-07-23 Sam Steingold implement ANSI CL make-load-form * clos.lisp (make-load-form, make-load-form-saving-slots): add (print-class): remove (print-object): print class readably using #.; print standard-objects readably using make-load-form (*dynamically-modifiable-generic-function-names*): add make-load-form * constsym.d (make_init_form): add * init.lisp (make-load-form, make-load-form-saving-slots): export (make-init-form): add * io.d (pr_instance): when SYS::*COMPILING*, use MAKE-INIT-FORM 2001-07-22 Sam Steingold Implement *PRINT-LINES* * io.d (pphelp_newline): incf SYS::*PRIN-LINES* (check_lines_limit, double_dots): new functions (CHECK_LINES_LIMIT): new macro (justify_end_eng, justify_end_weit, pr_cons, pr_vector) (pr_array_recursion, pr_structure_default, pr_record_ab) (pr_record_rest, pr_record_descr, pr_orecord) (pr_cclosure_codevector): use it (pr_enter): bind SYS::*PRIN-LINES* (print_vars_anz): increased to 14 (write, write-to-string): add :LINES arg * constsym.d: add :LINES, *PRINT-LINES* and SYS::*PRIN-LINES* * init.lisp: export *PRINT-LINES* * inspect.lisp (inspect): bind *PRINT-LINES* to *INSPECT-PRINT-LINES* * spvw.d (init_symbol_values): define *PRINT-LINES* and SYS::*PRIN-LINES* * subr.d, subrkw.d (write, write-to-string): add :LINES arg 2001-07-21 Sam Steingold massive reindentations and code re-arrangements * io.d (RTCase): new macro (token_info_t): rename from token_info (zahl_info_t): rename from zahl_info (pr_routine_t): rename from pr_routine (CHECK_PRINT_READABLY): new macro (PPHELP_STREAM_P): new macro (circle_info_t): rename from circle_info (triple_dots): new function (CHECK_LENGTH_LIMIT): new macro (UNREADABLE_START, UNREADABLE_END): new macros (pr_array_info_t): rename from pr_array_info (pr_array_elt_routine_t): rename from pr_array_elt_routine (pr_array_elt_simple): rename from pr_array_elt_t 2001-07-20 Sam Steingold * package.d (export_symbol_from): made congruent to `one_sym_function' to avoid a compiler warning 2001-07-20 Sam Steingold mingw32 compilation * dirkey.d: mingw32 does not have winldap.h * lispbibl.d: mingw32 defined offsetof() * win32.d: mingw32 does not need a separate uAsciiChar * makemake.in (LIBS): mingw32 does not have wldap32 (XCFLAGS): add -D_WIN32 -D__MINGW32__ 2001-07-20 Sam Steingold * pathname.d (SUBST_RECURSE): new macro (subst_coerce_normal_ss, subst_common_case, subst_logical_case) (subst_customary_case): use it (make-pathname): logical arguments do not override :CASE :COMMON 2001-07-19 Sam Steingold * list.d (ldiff): handle dotted lists correctly, bug#442739 2001-07-16 Sam Steingold * version.h: 2.27 is released 2001-07-16 Sam Steingold * stream.d (previous_line_virtual): fix an off-by-one error 2001-07-16 Sam Steingold * defstruct.lisp (defstruct): warn when the slot accessor shadows the predicate (i.e., when the slot is named "P") 2001-07-13 Bruno Haible * io.d (char_reader): do not search for hyphens. 2001-07-13 Sam Steingold * stream.d (bitbuff_is_I): fix the bin i/o for (signed-byte n) with n>32 on LITTLE_ENDIAN architecture 2001-07-12 Sam Steingold abstracted some code * stream.d (bitbuff_iu_I, bitbuff_is_I): new functions (read-integer): use them (rd_by_iu_I): use bitbuff_iu_I() (rd_by_is_I): use bitbuff_is_I() (bitbuff_ixu_sub, bitbuff_ixs_sub): new functions (write-integer): use them (wr_by_ixu_sub): use bitbuff_ixu_sub() (wr_by_ixs_sub): use bitbuff_ixs_sub() 2001-07-11 Sam Steingold YAPT (yet another pathname tweak) * pathname.d (lslashp): remove, replace with slashp (looks_logical_p): new local function (parse-namestring): with *PARSE-NAMESTRING-ANSI* non-nil, parse as logical when pathname contains ";" - this is what others do (merge-pathnames): merge to logical even when only one is logical (make-pathname): coerce defaults to logical when the path is logical already 2001-07-10 Sam Steingold * encoding.d, hashtabl.d, stream.d: unified some error messages 2001-07-10 Sam Steingold finished the 2001-06-21 patch * lispbibl.d (make_file_stream): declare direction arg as direction_t * stream.d (make_unbuffered_stream, make_buffered_stream) (make_file_stream): ditto * dirkey.d (open_reg_key): declare if_not_exists arg as if_does_not_exist_t 2001-07-10 Sam Steingold * condition.lisp (appease-cerrors, muffle-cerrors): do not cons up a lambda for handler (exit-on-error, appease-cerrors, muffle-cerrors, batchmode-errors): turned comments into doc strings 2001-07-10 Sam Steingold * eval.d (invoke_handlers): do not popSTACK twice! 2001-07-10 Sam Steingold replace chartcopy with memcpy compilation time of compiler.lisp went down 3.76% fix bug#438486 * charstrg.d (chartcopy): remove * lispbibl.d (chartcopy): define to expand to memcpy() 2001-07-09 Sam Steingold * stream.d (handle_isset): use listen_byte() for binary sockets 2001-07-09 Sam Steingold fix the 2001-05-01 patch * spvw.d (main): call set_ansi only when either -ansi or -traditional was given 2001-07-03 Sam Steingold tweak the 2001-06-27 patch * debug.d (read_form): ignore only whitespace 2001-06-29 Sam Steingold command-oriented-history-2 * constsym.d (*TERMINAL-READ-STREAM*): add * spvw.d (*TERMINAL-READ-STREAM*): define * stream.d (terminal_stream_p): use it * debug.d (read_form): bind it * io.d (string_reader): unbind *TERMINAL-READ-OPEN-OBJECT* in case of an error too 2001-06-27 Sam Steingold command-oriented-history-1 * constsym.d (*TERMINAL-READ-OPEN-OBJECT*): add * spvw.d (*TERMINAL-READ-OPEN-OBJECT*): define * lispbibl.d (terminal_stream_p): declare * stream.d (terminal_stream_p): define (rd_ch_terminal3): when *TERMINAL-READ-OPEN-OBJECT* is bound, add the new lines to the old history item (next_line_virtual, previous_line_virtual): readline helper functions (init_streamvars): bind them to M-p and M-n * io.d (read_token_1, read_delimited_list, string_reader): bind *TERMINAL-READ-OPEN-OBJECT* 2001-06-27 Sam Steingold Fix the win32/emacs bug when commands were ignored because of ^M * debug.d (read_form): use string_eqcomp_ci() instead of string_equal() and skip the extra chars in the line 2001-06-27 Sam Steingold * stream.d (strip_white): new local function (rd_ch_terminal3): use it to trim the line 2001-06-27 Sam Steingold non-whole byte i/o finally works * stream.d (rd_by_aux_icx_buffered): fix (actually, rewrite) 2001-06-25 Bruno Haible Optimize away local functions that are not used. This fixes the CLOS consing introduced on 2000-06-11 when CALL-NEXT-METHOD was defined with SYSTEM::FUNCTION-MACRO-LET. * compiler.lisp (var): New slot 'fnode'. (fnode): New slots 'Tags', 'far-used-vars', 'far-assigned-vars', 'far-used-blocks', 'far-used-tagbodys'. (note-far-used-var, note-far-assigned-var, note-far-used-block) (note-far-used-tagbody, propagate-far-used): New functions. (c-VAR): If variable is defined in different fnode, store var for later propagation, instead of setting (var-closurep var). (c-VARSET): Likewise. (bind-fixed-var-1, process-fixed-var-list, bind-movable-var): Let the variable point to *func*. (c-LAMBDABODY): Set fnode-venvconst, fnode-far-used-blocks, fnode-far-used-tagbodys for use by the caller. (c-RETURN-FROM): If block is defined in different fnode, store it for later propagation, instead of setting (block-used-far block). (c-TAGBODY): Initialize tagbody-used-far differently. Compute tagbody-used-far only at the end. (c-GO): If tag is defined in different fnode, store it for later propagation, instead of augmenting (tagbody-used-far tagbody). (c-FUNCTION): After c-lambdabody, call propagate-far-used. (c-%GENERIC-FUNCTION-LAMBDA): Likewise. (c-%OPTIMIZE-FUNCTION-LAMBDA): Likewise. (c-FLET): After compiling the body and before deciding about the closurevars, call propagate-far-used. (c-LABELS): Likewise. (c-FUNCTION-MACRO-LET): Likewise. (c-GENERIC-FLET): Let the variable point to *func*. (c-GENERIC-LABELS): Likewise. (traverse-anode): For GO instructions, extract tag index that was computed at the end of the first pass. (compile-lambdabody): Make sure there are no lost closure variables. 2001-06-25 Bruno Haible * condition.lisp (handler-case): After signaling a warning for duplicated :NO-ERROR clause, don't treat it like a regular clause. 2001-06-16 Bruno Haible Back out unneeded 2001-04-06 patch. * makemake.in (NLS_INCLUDES): Set to empty if not using unicode. * encoding.d: When not UNICODE, don't include "nls_ascii.c" and don't define nls_ascii_table and nls_tables. * pseudofun.d: When not UNICODE, don't relocate nls_ascii_table. 2001-06-16 Bruno Haible Tweak 2001-03-27 patch. * eval.d (coerce_function): Mark unreachable code with NOTREACHED. (apply): Likewise. (funcall): Likewise. 2001-06-16 Bruno Haible * list.d (up2_test): Don't go through funcall() if the test function is #'eq, #'eql or #'equal. (up_test): Likewise. (funcall_key): New macro. (subst, nsubst, sublis, nsublis, member, ADJOIN, assoc, rassoc): Use it. 2001-06-23 Bruno Haible * aclocal.m4 (CL_GETPAGESIZE): Add check for sys/param.h. For mingw32. 2001-06-22 Sam Steingold New debug command "Reset"(:re) to restore the i/o - *PACKAGE* and *READTABLE* * reploop.lisp (debug-reset-io): new function (*saved-debug-package*, *saved-debug-readtable*): new variables (commands1): bind "Reset" and ":re" to `debug-reset-io' 2001-06-21 Sam Steingold SOCKET-STATUS now accepts SOCKET-SERVERs too and the direction of the checks can be specified * lispbibl.d (direction_t, if_does_not_exist_t, if_exists_t): new enum types (check_direction, check_if_does_not_exist, check_if_exists) (input_stream_p, output_stream_p): declare * pathname.d (check_direction, check_if_does_not_exist) (check_if_exists): new global functions (OPEN): use them (open_file): use symbolic values for direction, if_exists and if_does_not_exist * stream.d (input_stream_p, output_stream_p): global functions now (READ_P, RO_P, WRITE_P, DIRECTION_FLAGS): new macros on direction_t (make_unbuffered_stream, make_buffered_stream, make_file_stream): use them (socket_handle): new local function (handle_set, handle_isset): turned into functions (SOCKET-STATUS): accept socket servers too, allow request specialization (just :INPUT or just :OUTPUT) * io.d (pr_stream): print stream direction * constobj.d (printstring_(input|output|io)): new constants * dirkey.d (DIR_KEY_*, IDNE_*, parse_if_not_exists) (parse_direction): remove (open_reg_key): convert from direction_t to REGSAM 2001-06-19 Sam Steingold * stream.d: use memset(3) and memcpy(3) instead of dotimes 2001-06-19 Sam Steingold * compiler.lisp (c-FORMAT): avoid calling FORMAT altogether when the destination is T and the format string is constant 2001-06-19 Sam Steingold * makemake.in (test): strip gensyms before cmp(1) 2001-06-17 Sam Steingold some symbols appeared in wrong packages - fix this * compiler.lisp (function-signature): FOREIGN-FUNCTION is in FFI * constobj.d: add package prefixes to non-CL symbols * constsym.d (MACRO): all type designators are in EXT * describe.d: FOREIGN-FUNCTION, FOREIGN-VARIABLE, FOREIGN-ADDRESS are in FFI, FOREIGN-POINTER is in EXT * foreign1.lisp: export FOREIGN-* from FFI * init.lisp: export MACRO from EXT 2001-06-17 Sam Steingold * disassem.lisp (orig-fundef): new aux function (disassemble): moved here and made into a generic function handle SYMBOL-MACROs too * compiler.lisp (disassemble): remove * init.lisp: load "disassem" after CLOS * makemake.in (LPARTS): reorder 2001-06-15 Sam Steingold * makemake.in (makemake, Makefile): new development targets (RUN): new Makefile variable (halfcompiled): restored; now compilation goes like this: *.lisp --> interpreted.mem *.lisp + compiler.fas --> halfcompiled.mem *.fas --> lispinit.mem (stage): create a separate memory image for compilation testing and reset *GENSYM-COUNTER* in it from halfcompiled.mem 2001-06-15 Sam Steingold * threads.lisp (with-timeout, with-lock): do not use WITH-GENSYMS which is defined only in inspect.lisp 2001-06-14 Sam Steingold * stream.d (stream_char_p): new macro (socket-status): go through `listen_char()' for character streams only Reported by Lennart Staflin. 2001-06-12 Stefan Kain * io.d: translated all comments 2001-06-11 Sam Steingold * compiler.lisp (compile-file-pathname-helper): tweak the 2001-05-30 patch making sure FILE is treated as a pathname 2001-06-09 Sam Steingold * constpack.d: create THREADS package when MULTITHREAD * spvw.d: put :MT into *FEATURES* when MULTITHREAD * threads.lisp: new file * init.lisp: load it when #+MT * makemake.in (LPARTS): add it * xthread.d (xthread_init) [win32]: noop (xmutex_init, xmutex_destroy, xmutex_lock, xmutex_unlock) [win32]: use GetLastError() to get the error status 2001-06-09 Sam Steingold some MT compilation errors fixed * lispbibl.d (OS_error) [macro]: use asciz_out_1() (SP_bound) [MULTITHREAD]: no semicolon * spvw_circ.d: varbrace does not work with #if, so expand var manually 2001-06-09 Sam Steingold * install.lisp: create CLISP.BAT on desktop 2001-06-08 Bruno Haible * autoconf/libtool.m4: Upgrade to libtool-1.4. 2001-06-08 Bruno Haible * autoconf/config.guess: Update to GNU version 2001-05-11. * autoconf/config.sub: Likewise. 2001-06-08 Sam Steingold Fix MIT-CLX build. * modules/clx/mit-clx/dependent.lisp (conditional-store): GET-SETF-METHOD is in EXT now Reported by Paolo Amoroso * modules/clx/mit-clx/manager.lisp (cut-buffer): use DEFINE-SETF-EXPANDER instead of DEFINE-SETF-METHOD * modules/clx/mit-clx/resource.lisp (initialize-resource-database): WM-RESOURCES is not exported from XLIB * modules/clx/mit-clx/package.lisp: add IN-PACKAGE statement 2001-06-07 Sam Steingold Print (c-ptr (c-function)) with arguments and correct "()" * foreign1.lisp (element, deref, slot, cast, typeof, sizeof) (bitsizeof): new local (flet) function `foreign-place-p' (ctype-type): new function (parse-c-function, prepare-c-typedecl, to-c-typedecl) (note-c-call-in): use it (flag-set-p): new function (deparse-c-type, note-c-call-in, count-inarguments): use it (flag-to-language, language-to-flag): new functions (deparse-c-type, parse-c-function): use them, respectively (deparse-c-type): new labels: `new-type' and `deparse-slot' (split-c-fun-arglist): new function (note-c-call-in): use it (to-c-typedecl): print the function name in () for c-prt and also print the arglist 2001-06-07 Sam Steingold * modules/clx/mit-clx/clx.lisp (boolean): built-in CLISP type since 1998-04-08, do not redefine * modules/clx/mit-clx/package.lisp (boolean): do not shadow Reported by Paolo Amoroso 2001-06-07 Sam Steingold * makemake.in (LPARTS): add foreign1 only when foreign is in CPARTS 2001-06-02 Sam Steingold * foreign1.lisp (to-c-typedecl): tweak the 2001-05-30 patch. struct t1234 { struct t1234 * NEXT; ... } 2001-06-02 Sam Steingold made GETENV setfable * lispbibl.d: declare clisp_setenv() * subr.d, constsym.d: add SYS::SETENV (set_env) * spvw_language.d: remove mysetenv, use clisp_setenv() * misc.d (clisp_setenv, SETENV): new functions (GETENV): barf on non-string arg instead of returning NIL * places.lisp: defsetf getenv when setenv is present 2001-06-02 Sam Steingold * makemake.in (LPARTS): add dirkey 2001-06-01 Sam Steingold * screen.lisp: use DEFPACKAGE instead of USE-PACKAGE since this file is compiled even when it is not subsequently loaded. 2001-05-30 Sam Steingold * compiler.lisp (compile-file-pathname-helper): return a logical pathname when file is a logical pathname 2001-05-30 Sam Steingold * pathname.d (merge-pathnames): fix the 2001-05-24 patch to handle unbound defaults 2001-05-30 Sam Steingold * compiler.lisp (*package-tasks-treat-specially*): set to NIL (#+CROSS subr-info): `in-package' is now an always-evaluated macro (c-GLOBAL-FUNCTION-CALL): remove `in-package' from the list of specially treated tasks. 2001-05-30 Sam Steingold * foreign1.lisp (with-defining-c-type): new macro (parse-components, c-struct-constructor): new functions (parse-c-type): use the above (to-c-typedecl): handle the recursive types (like linked lists) (def-c-enum): make `name' a synonym for `int' 2001-05-27 Sam Steingold * modules/regexp/regexp.lisp (mregerror): FINALIZE is in EXT 2001-05-25 Sam Steingold * install.lisp, install.bat: bind LISP, FAS and MEM files with CLISP * makemake.in: add install.* to the win32 binary distribution 2001-05-25 Sam Steingold * dirkey.lisp (dir-key-info): `dkey-info' is in LDAP, not SYS (with-dir-key-search): ditto for `dkey-search-iterator', `dkey-search-next-key', and `dkey-search-next-att' 2001-05-24 Sam Steingold * pathname.d (merge-pathnames): if PATHNAME is a logical namestring, while DEFAULT is a physical pathname, coerce DEFAULT to logical using whole_namestring(). 2001-05-24 Sam Steingold hostname resolution is now optional in SOCKET-STREAM-PEER and SOCKET-STREAM-LOCAL. * stream.d (host_data_fetcher): accept an additional boolean argument. (publish_host_data): pass `resolve_p' to func (SOCKET-STREAM-PEER, SOCKET-STREAM-LOCAL): 1 optional argument * subr.d: ditto * socket.d (socket_getlocalname, socket_getpeername): accept an additional `resolve_p' argument. 2001-05-23 Sam Steingold * makemake.in (distrib): pack in the build directory. 2001-05-23 Sam Steingold * version.h: 2.26 is released 2001-05-21 Bruno Haible * lispbibl.d (dfloat): ARM saves the doubles as two little-endian words, in big-endian order. Reported by Richard Kreckel. 2001-05-21 Bruno Haible * ariarm.d: Use #0x instead of #& to designate hexadecimal constants. 2001-05-15 Sam Steingold * modules/clx/new-clx/clx.lisp: use DEFPACKAGE to define XLIB; import SYS::CONCAT-STRINGS * modules/clx/new-clx/demos/clx-demos.lisp: load/compile sokoban.lisp only when the package XPM is present 2001-05-14 Sam Steingold * constobj.d (current_language): use the package prefix I18N 2001-05-14 Sam Steingold * defs2.lisp (with-standard-io-syntax): finish the 2000-12-12 patch - bind *PRINT-RPARS* and *PRINT-INDENT-LISTS* appropriately 2001-05-12 Sam Steingold * pathname.d (pslashp, lslashp, Z_AT_SLASH, Z_SHIFT): new macros (parse_as_logical): new helper function (logical_pathname, merge_pathnames): use it (merge_pathnames): new macros SPECIFIED, NAMETYPE_MATCH, and VERSION_MATCH; changed the previous patch: re-parse pathname as logical when the default is logical (make_pathname): do not translate :name :wild to :name "*" (has_wildcards): replace with wild_p() which handles :WILD (has_word_wildcards): ditto with word_wild_p() (has_*_wildcards): simplified accordingly 2001-05-11 Sam Steingold * makemake.in (cpu): set to "arm" when "$host_cpu" is "arm*" Reported by Ola Rinta-Koski . 2001-05-10 Sam Steingold Fix a crash, reported by Christophe Rhodes ANSI CL compliance: (merge-pathnames lp) --> lp * pathname.d: more debugging instrumentation (string2wild, wild2string): new macros (split_name_type): use them; "*.*" ==> :name :wild :device :wild (directory_namestring_parts): :name and :type maybe :wild (merge-pathnames): as per ANSI CL, return a logical pathname when the first argument is one. (directory_match, nametype_match, version_match): unbound matches everything (directory_diff, nametype_diff, version_diff): treat unbound appropriately too (translate_device, translate_nametype_aux): :WILD is the same as NIL 2001-05-09 Sam Steingold Implement the ANSI CL issue CONSTANTP-ENVIRONMENT:ADD-ARG * control.d (constantp): accept the optional environment arg * subr.d (constantp): ditto 2001-05-09 Sam Steingold * lispbibl.d (ARM): Recognize __arm__ as CPU indicator on Linux 2001-05-09 Sam Steingold Implement ANSI CL compiler macros * cmacros.lisp: new file * makemake.in (LPARTS): add cmacros * compiler.lisp (env, mac-exp): new aux inline functions (macroexpand-1, c-form, compile-toplevel-form &c): use them (macroexpand-form): call COMPILER-MACRO-FUNCTION (inline-callable-function-lambda-p, inline-callable-lambdabody-p): use FUNCTION-FORM-FUNFORM (c-FUNCTION-CALL, c-APPLY): use SIMPLE-FUNCTION-FORM-P * init.lisp: load cmacros; export COMPILER-MACRO, COMPILER-MACRO-FUNCTION DEFINE-COMPILER-MACRO * defmacro.lisp (make-macro-expansion): accept an optional PRE-PROCESS argument 2001-05-06 Bruno Haible * configure: Configure and build libiconv before configuring gettext. While configuring gettext, add the build directory to the CPPFLAGS and LDFLAGS, so that HAVE_ICONV gets defined to 1. 2001-05-07 Sam Steingold * hashtabl.d (sxhash): return a fixnum, as per ANSI CL 2001-05-06 Bruno Haible * makemake.in: Move USE_GETTEXT treatment after USE_LIBICONV treatment, so that $LIBS contains libintl.a before libiconv.a. 2001-05-06 Sam Steingold * eval.d (check_for_illegal_keywords): look only at the first :allow-other-keys keyword 2001-05-05 Sam Steingold handle devices in hostname translation correctly * pathname.d (device_diff): push_solution_with(S(Kdevice)) (translate_device): pop (S(Kdevice)) 2001-05-05 Sam Steingold * type.lisp (subtypep): COMPILED-FUNCTION is a subtype of FUNCTION 2001-05-05 Sam Steingold * clos.lisp (function-keywords): return 2 values: list of keywords and allow-other-keys-flag, as per ANSI CL 2001-05-05 Sam Steingold Made the compiler a little less vociferous * clos.lisp (check-signature-congruence): extracted from STD-ADD-METHOD (std-add-method): use CHECK-SIGNATURE-CONGRUENCE * compiler.lisp (c-DEFUN): do not check signature for generic functions since this is better done at load time 2001-05-04 Sam Steingold ANSI CL compliance: CHAR does not check for FILL-POINTER, ELT does. * sequence.d (seq_check_index): new function (elt, setelt): use it * charstrg.d (unpack_string): new function (unpack_string_rw, unpack_string_ro): use it (char, store_char): call unpack_string() directly instead of unpack_string_r[ow] 2001-05-04 Sam Steingold Add compile-time signature checking in function calls * compiler.lisp (c-source-location): 2 optional arguments (c-source-point, c-source-point-location, current-function) (get-signature, sig-to-list, inline-lambdabody) (inline-callable-lambdabody-p, lambda-list-to-signature) (match-known-unknown-functions, in-defun-p): new functions (c-warn): use C-COMMENT and CURRENT-FUNCTION (c-error): use CURRENT-FUNCTION (signature): new defstruct (function-signature, signature-to-list): moved here from describe.lisp (test-argument-syntax): reindented (c-DIRECT-FUNCTION-CALL, pass2): translated the comments (c-GLOBAL-FUNCTION-CALL, C-APPLY): always check the signature always call NOTE-FUNCTION-USED, not just when compiling a file; use INLINE-CALLABLE-LAMBDABODY-P and INLINE-LAMBDABODY (note-function-used): keep the arguments too (c-DEFUN): check the signature using *KNOWN-FUNCTIONS* (inline-callable-function-p): use INLINE-CALLABLE-LAMBDABODY-P (c-FUNCTION): always call NOTE-FUNCTION-USED (c-report-problems): use MATCH-KNOWN-UNKNOWN-FUNCTIONS (compile-file): call C-REPORT-PROBLEMS before reporting *ERROR-COUNT* and *WARNING-COUNT* (c-form): use IN-DEFUN-P * clos.lisp: import SIGNATURE structure from COMPILER and use them instead of simple lists throughout the file * constobj.d (version): bumped (generic functions use SIGNATUREs instead of lists to store their signatures) * describe.lisp (function-signature, signature-to-list): moved to compiler.lisp (arglist): use SIG-TO-LIST and GET-SIGNATURE to accommodate possible future modifications * foreign1.lisp (DEF-CALL-OUT, DEF-LIB-CALL-OUT): pass signature to C-DEFUN (argvector-to-signature, count-inarguments): new functions (foreign-function-signature): rename to FOREIGN-FUNCTION-IN-ARG-COUNT * init.lisp (defun): pass signature to C-DEFUN 2001-05-01 Sam Steingold * type.lisp (subtypep): handle types NIL and T specially [bugfix: (subtypep 'EXTENDED-CHAR 'CHARACTER) returned (NO)] 2001-05-01 Sam Steingold * format.lisp: pass width to ~a when a non-number is given to a numeric format instruction 2001-05-01 Sam Steingold * spvw.d (main): add "-traditional" command line option to override "-ansi" ("-a" deprecated) 2001-05-01 Sam Steingold * condition.lisp (handler-case): accept :NO-ERROR clause in any position, not just the last one 2001-04-30 Sam Steingold * compiler.lisp (test-argument-syntax): call C-WARN and return NIL on WRONG-KEY, instead of calling C-ERROR (*deprecated-functions-list*): add GET-SETF-METHOD-MULTIPLE-VALUE 2001-04-25 Sam Steingold * runprog.lisp (run-shell-command, run-program): accept :wait parameter (defaults to T) * clhs.lisp (clhs): pass :wait nil to RUN-PROGRAM 2001-04-25 Sam Steingold * eval.d (invoke_handlers): fix the 2001-04-18 patch for Linux 2001-04-24 Sam Steingold * intgcd.d (I_I_xgcd_I_I_I): do not use bit operations for logical variables sA and sB (this caused incorrect results on alpha-tru64) 2001-04-24 Sam Steingold * bindings/linuxlibc5/linux.lisp, bindings/linuxlibc6/linux.lisp: add package prefix to IN-PACKAGE and DELETE-PACKAGE 2001-04-23 Sam Steingold * makemake.in (linkkit): rm-r it before creating links 2001-04-23 Sam Steingold * affi1.lisp: use DEFPACKAGE to define package AFFI 2001-04-22 Sam Steingold Finished re-packaging in the modules directory * bindings/amigaos/asl-load.lisp, bindings/amigaos/window.lisp: * bindings/linuxlibc5/linux.lisp, bindings/linuxlibc6/linux.lisp: * clx/mit-clx/package.lisp, modules/postgresql642/postgresql: * modules/postgresql632/postgresql.lisp, modules/wildcard/wildcard.lisp: use DEFPACKAGE, not CLtL1 IN-PACKAGE * new-clx/demos/clx-demos.lisp: getenv is in EXT, not SYS now, use strings, not symbols in DEFPACKAGE 2001-04-20 Sam Steingold * constobj.d (version): bump the bytecode version due to repackaging 2001-04-19 Sam Steingold * clhs.lisp (clhs): BROWSER defaults to *BROWSER*, not :netscape 2001-04-18 Sam Steingold * spvw.d (main): quote load_extra_file_types for `clisp file` 2001-04-18 Sam Steingold Move EXECUTE from COMMON-LISP to EXT * constsym.d (EXECUTE): in EXT, not LISP * init.lisp (export): export EXECUTE from EXT 2001-04-18 Sam Steingold ANSI CL compliance: HANDLER-BIND uses multiple handlers for the a single error * compiler.lisp (c-HANDLER-BIND): collect all handlers, even for duplicate types * eval.d (invoke_handlers): go over the whole list of handlers, not stopping after the first match has been found. 2001-04-18 Sam Steingold * compiler.lisp (stream-tab): new function (disassemble-closure): use it 2001-04-16 Sam Steingold * io.d (CHECK_READTABLE): new macro (unread-char, write-char): use fehler_char() 2001-04-16 Sam Steingold * sequence.d (valid_type): CONS and NULL are sequences of type LIST 2001-04-11 Sam Steingold * socket.d: made compilable with SAFETY=3 (SERVENT_TO_STACK): turned into a local function servent_to_stack() (ADDR_TO_STRING): return NIL, not NULL, as the failure value (HOSTENT_TO_STACK): turned into a local function hostent_to_stack() 2001-04-11 Sam Steingold Merged FLET with SYS::%FLET (same for LABELS & MACROLET) * init.lisp (flet, labels, macrolet): remove (%expand-form): remove flet, labels and macrolet do not load "defs3" * defs3.lisp: remove * compiler.lisp (skip-declarations): new function (c-flet, c-labels, c-macrolet): use it * constsym.d (pflet, plabels, pmacrolet): remove * control.d (skip_declarations): new function 2001-04-10 Bruno Haible Support for MacOS X. * lispbibl.d (RS6000): Define if __ppc__ is defined. (TIME_ABSOLUTE, TIME_RELATIVE): Undefine after pulling in the system headers. * socket.d (in6_u, u6_addr16) [UNIX_DARWIN]: Define as aliases. Thanks to Daniel Buenzli and Sunil Mishra for feedback. 2001-04-09 Sam Steingold * spvw.d (*features*): add :LISP=CL to denote the re-packaging 2001-04-09 Sam Steingold * type.lisp (upgraded-complex-part-type): ANSI CL compliance - trivial function, always returns T * init.lisp (upgraded-complex-part-type): exported 2001-04-09 Sam Steingold * init.lisp (sys::*home-package*): set to NIL at the end 2001-04-06 Sam Steingold The grand repackaging: USER+CL-USER; LISP+CL * amigasock.lisp, beossock.lisp: no export (done in init.lisp) * cfgacorn.lisp, cfgamiga.lisp, cfgdos.lisp, cfgsunux.lisp, cfgunix.lisp, cfgwin32.lisp, clhs.lisp: (in-package "EXT") * clos.lisp: use I18N temporarily (for ENGLISH) * compiler.lisp (c-form-table): treat sys::%flet and friends just like cl:flet and friends * condition.lisp: moved CLISP extensions, like `muffle-cerrors', to the EXT package * constobj.d (use_default): set to COMMON-LISP * constpack.d: add EXT, I18N, GRAY and CUSTOM, and, conditionally, LDAP, SOCKET and GSTREAM * constsym.d: moved CLISP extensions to EXT or a more specific package, if appropriate * control.d, fsubr.d: rename flet->%flet; labels->%labels; macrolet->%macrolet * defs1.lisp (doseq, dohash): export from EXT (fbound-string): moved to init.lisp * defs2.lisp (use-default): COMMON-LISP now * defs3.lisp: remove everything except for flet and friends * dirkey.d, lisparit.d: fix comments * dirkey.lisp: export everything from LDAP and re-export from EXT * dutch.lisp, french.lisp, german.lisp, spanish.lisp: moved to I18N * edit.lisp, runprog.lisp, savemem.lisp: export from EXT, not LISP * eval.d (FUNTAB): remove `in_package', add `pfind_package' and `reexport' * foreign1.lisp: use COMMON-LISP and EXT in FFI * gray.lisp: extracted from gstream.lisp * gstream.lisp: moved to GSTREAM package * init.lisp: separated LISP exported symbols into COMMON-LISP and EXT (and friends) (in-package): define here (flet, labels, macrolet): add temporary definitions * inspect.lisp: export use variables from CUSTOM * keyboard.lisp (with-keyboard, *keyboard-input*): export from EXT * loop.lisp: in COMMON-LISP * macros1.lisp (mapcap, maplap): export from EXT * macros2.lisp (without-floating-point-underflow, space) (with-output-to-printer): export from EXT (deflanguage, definternational, deflocalized, localized): export from I18N * macros3.lisp (ethe, letf, letf*, with-collect): export from EXT * makemake.in (LPARTS): add gray * misc.d (set_ansi): do not bother with *features* * package.d (in_package): remove (reexport): new function (init_packages): COMMON-LISP (= LISP, CL); COMMON-LISP-USER (= USER, CL-USER) * places.lisp (*ansi*): update the doc string (dir-key-value): moved here from dirkey.lisp * posix.lisp: re-export from EXT exported symbols * reploop.lisp (*prompt*): export from CUSTOM (*command-index*, prompt-new-package, package-short-name): export from EXT * rexx1.lisp: defpackage REXX and export everything from it * screen.lisp: use COMMON-LISP and EXT in SCREEN * spvw.d (init_symbol_tab_2): add `enum_user_index' to the enum, export everything in SOCKET and CUSTOM (*features*): replace :cltl2 with :ansi-cl; add :generic-streams when GENERIC_STREAMS is defined and :sockets when SOCKET_STREAMS is defined (main): -p: is the package does not exist, do not create it; -a: do not call `in-package' * subr.d (reexport): add (in_package): remove * subrkw.d (in_package): remove * trace.lisp (*trace-function*, *trace-args*, *trace-form*) (*trace-values*): export from EXT, not LISP * type.lisp (type-expand-1, type-expand): export from EXT, not LISP * xcharin.lisp: export from EXT, not LISP 2001-04-06 Sam Steingold Symbols in FAS files remember their home packages and do not depend as much on the special treatment of the package tasks, which is now optional. This constitutes a switch from the "current-package" model to the "home-package" model as described in COMPILE-FILE-SYMBOL-HANDLING * constsym.d (*print-symbols-long*): new variable * spvw.d (init_symbol_values): define it * io.d (pr_symbol): respect it * compiler.lisp (*package-tasks-treat-specially*): new variable (c-GLOBAL-FUNCTION-CALL, compile-toplevel-form): use it (compile-toplevel-form): bind *print-symbols-long* to t when writing to *fasoutput-stream* 2001-03-23 Sam Steingold Remove the obsolete `COMMON' type (not in ANSI) See issue COMMON-TYPE:REMOVE * constsym.d (commonp): remove * eval.d (FUNTAB): remove `commonp' * predtype.d (commonp): remove * subr.d (commonp): remove * compiler.lisp (subrinfo, c-DIRECT-FUNCTION-CALL): remove `commonp' (*declaration-types*): remove `common' * init.lisp (commonp, common): remove * type.lisp (common): remove (canonicalize-type): remove `common' 2001-04-06 Sam Steingold * version.h: 2.25.1 is released 2001-04-06 Sam Steingold fix the --without-unicode build * makemake.in (NLS_INCLUDES): always has `nls_ascii' * encoding.d: include "nls_ascii.c" and define `nls_tables' even without unicode * pseudofun.d: define `nls_ascii_table' even without unicode 2001-04-05 Sam Steingold * clos.lisp (initialize-instance): [ANSI] add &key and &allow-other-keys to the lambda-list 2001-03-28 Sam Steingold * condition.lisp (simple-type-error): [ANSI] inherit from `simple-condition', not `simple-error' 2001-03-28 Bruno Haible * pathname.d (translate_pathname): Fix invalid use of ## in GET_ITEM_S. 2001-03-27 Sam Steingold fix a bug: macros were reported as special forms by funcall &Co * eval.d (fehler_specialform): report special operators as such, not as special forms (coerce_function, funcall, apply): not all orecords are special operators * control.d (FMAKUNBOUND): error message spelling * trace.lisp (trace1): ditto * init.lisp (defun): ditto * defs1.lisp (fbound-string): ditto 2001-03-27 Sam Steingold * package.d (symtab_lookup, shadowing_lookup): check sym_ for being non-NULL (inherited_lookup, inherited_find): new local functions (accessiblep, find_symbol, import, unexport, export): use them 2001-03-27 Bruno Haible * package.d (SYSTEM::PACKAGE-ITERATE): When looking for inherited symbols, ignore symbols that are simultaneously exported from the used package and present in the main package. Reported by Sam Steingold. 2001-03-22 Sam Steingold fix a bug: a single value was sometimes returned by `read-line' * io.d (eof_handling): mv_count argument add (read_w, READ-CHAR, PEEK-CHAR, READ-CHAR-NO-HANG): respect that (READ-LINE): always return 2 values 2001-03-22 Bruno Haible * lispbibl.d (sstring_normal_p): Fix typo. 2001-03-21 Bruno Haible Make it possible to compile gstream.lisp with interpreted.mem. * compiler.lisp: Compile #'venv-search. 2001-03-21 Bruno Haible * misc.d: Include . 2001-03-21 Bruno Haible Make --without-unicode work again. * error.d (write_errorasciz_substring): Fix typo. * init.lisp: Load "spanish" only if UNICODE. * makemake.in (LPARTS): Add "spanish" only if UNICODE is enabled. * type.lisp (charset-subtypep): Avoid warning. * stream.d (test_external_format_arg) [!UNICODE]: Accept and ignore any symbols in the CHARSET package. 2001-03-20 Bruno Haible * configure: Add trailing slash to www.lisp.org URL. * cfgacorn.lisp (*clhs-root-default*): Likewise. * cfgamiga.lisp (*clhs-root-default*): Likewise. * cfgdos.lisp (*clhs-root-default*): Likewise. * cfgwin32.lisp (*clhs-root-default*): Likewise. * makemake.in (HSDEFAULT): Likewise. (hyperspec): Check existence of directory if it's an absolute directory. Remove trailing slash afterward. * clhs.lisp (clhs): Accept a clhs-root with or without trailing slash. 2001-03-20 Bruno Haible * compiler.lisp (compile-file-pathname-helper): Rewritten. Obey output-file's directory even if it is a relative directory. 2001-03-19 Bruno Haible * pathname.d (find_executable): Use strcpy instead of sprintf. 2001-03-18 Bruno Haible * spvw_memfile.d (DUMPHOST_LEN): New macro. (memdump_header): Make _dumphost size OS independent. (savemem): Simplify filling of hostname and _dumphost. Use UTF-8 encoding. (loadmem): Move extraction of _dumptime and _dumphost to the end. Use UTF-8 encoding. * socket.d (MACHINE-INSTANCE): Return hostname as returned by gethostbyname, i.e. including the domainname. 2001-03-18 Bruno Haible * clhs.lisp: Export CLHS-ROOT. * cfgunix.lisp: Export CLHS-ROOT and *CLHS-ROOT-DEFAULT*. * cfgacorn.lisp: Likewise. * cfgamiga.lisp: Likewise. * cfgdos.lisp: Likewise. * cfgsunux.lisp: Likewise. * cfgwin32.lisp: Likewise. 2001-03-18 Bruno Haible * clisp-link.in: Pass -B argument to all lisp.run invocations. 2001-03-18 Bruno Haible * .clisp: New file. * makemake.in: Link .clisp and .gdbinit into the build dir. 2001-03-18 Bruno Haible * autoconf/aclocal.m4 (CL_CANONICAL_HOST): Cache $host_alias. Needed by AC_CANONICAL_BUILD. Call config.guess and config.sub via $CONFIG_SHELL if set. 2001-03-18 Bruno Haible * condition.lisp (interrupt-condition, simple-interrupt-condition): New condition classes. (%defclcs): Add interrupt-condition -> simple-interrupt-condition mapping. (exitunconditionally): New function. (exitonerror): Use it. (exit-on-error): Don't bind *BREAK-DRIVER*, as that impacts saved memory images. Instead, establish a handler for INTERRUPT-CONDITION. Generalize the normal handler from ERROR to SERIOUS-CONDITION. (batchmode-break-driver): Remove function. * lispbibl.d (conditiontype): Add interrupt_condition. * error.d (tast_break): When (and (null *error-handler*) *use-clcs*), signal a condition of type INTERRUPT-CONDITION. * spvw_sigint.d (react_on_sigint, interrupt_handler): Signal an INTERRUPT-CONDITION, more specific than a SERIOUS-CONDITION. * stream.d (fehler_interrupt): Likewise. * savemem.lisp (saveinitmem): Also reset SYSTEM::*ACTIVE-RESTARTS* and SYSTEM::*CONDITION-RESTARTS*. Reset the dynamic variables in the new image, not in the old. 2001-03-19 Bruno Haible * pathname.d (PARSE-NAMESTRING): Coerce string to normal-simple-string before calling parse_logical_host_prefix. * lispbibl.d (sstring_normal_p): New macro. * pathname.d (parse_logical_word, parse_logical_host_prefix) (legal_logical_word, legal_name, legal_type, wildcard_match) (wildcard_diff): assert that the simple-string is normal. 2001-03-19 Bruno Haible * autoconf/libtool.m4: Upgrade to libtool-1.3.5. * autoconf/aclocal.m4 (CL_CANONICAL_HOST): Always define ac_config_guess and ac_config_sub. Then ignore requests for AC_CONFIG_AUX_DIR_DEFAULT or AC_CANONICAL_HOST. 2001-03-18 Sam Steingold * init.lisp: do not export `interpreter' & `compiler' from LISP for `*features*', since they are keywords now. 2001-03-17 Sam Steingold load-inside-load bug fix * pathname.d (parse_logical_word, parse_logical_host_prefix) (legal_logical_word, legal_name, legal_type, wildcard_match) (wildcard_diff): make sure that the `simple-string' is normal. 2001-03-16 Sam Steingold `compile-file-pathname' bug fix * compiler.lisp (compile-file-pathname-helper): new function (compile-file-pathname, compile-file): use it 2001-03-15 Bruno Haible * Makefile.devel (all): Depend on src/VERSION instead of src/version.h. (ffcall-i386): New target. * spvw_memfile.d (savemem): Zero-fill the rest of _dumphost. * spvw.d (main): Do complain about missing -B in all cases. (usage): Internationalize. 2001-03-14 Sam Steingold New versioning system adopted. * spvw.d (main): --version works without -B and -M we are now GNU CLISP! do not complain about missing -B when given -x * constobj.d (lisp_implementation_version_month_string): remove (lisp_implementation_version_date_string): set to VERSION_DATE (lisp_implementation_version_number_string): set to VERSION_NUMBER (lisp_implementation_version_built_string): set to __DATE__ (memory_image_timestamp, memory_image_host): new objects * makemake.in: VERSION depends on version.h now * Makefile.devel: ditto; remove `update-version', unused for 2.5 years * misc.d (lisp-implementation-version): return "2.25 (2001-03-15)" and then either the build date of the build host * spvw_memfile.d (memdump_header): add `_dumptime' and `_dumphost' (savemem, loadmem_from_handle): use them for `memory_image_timestamp' and `memory_image_host' 2001-03-13 Sam Steingold implement X3J13 vote <72> unconditionally * compiler.lisp (c-form): do not check (package-use-list *package*) * eval.d (other_self_evaluating_p): remove (eval1): do not call it 2001-03-09 Sam Steingold A Logical Pathnames bug fixed. * pathname.d (host_diff): when HAS_HOST, push `:host' onto solutions (device_diff): when HAS_DEVICE, push `:device' onto solutions (translate_host): respect and expect `:host' in `subst' (translate_device): respect and expect `:device' in `subst' also, add a pathname translation debugging infrastructure also, translated some German comments 2001-03-09 Sam Steingold * posix.lisp (sysinfo): Export structure accessors. 2001-03-07 Bruno Haible * stream.d (lisp_completion): Remove end_callback() call from last patch. 2001-03-06 Sam Steingold * stream.d (lisp_completion): bug#221956: check the return value of `sys::completion'. 2001-03-06 Bruno Haible * unix.d (EDQUOT): Undefine if it is negative. 2001-03-02 Sam Steingold * dirkey.d: include winldap.h on WIN32_NATIVE and define LDAP there (LDAP_PORT): conditionally define (dir_key_open): early LDAP support do not barf on ACCESS_DENIED in search: (IDNE_IGNORE): new constant for `init_iteration_node' (open_reg_key): handle it (init_iteration_node): use it; return 2 values (state_next_key): pop stack on NULL handle (dkey_search_next_key): return 2 values Bruno's memory fixes (MAKE_OBJECT_LIST, dir_key_value, dkey_info): alloca may be a macro * constsym.d (:LDAP): define on WIN32_NATIVE * makemake.in (LIBS): link with wldap32 on WIN32_NATIVE * dirkey.lisp (dir-key-dump-tree): reflect the new iteration interface 2001-03-02 Bruno Haible * stream.d (lisp_completion_ignore): New function. (lisp_completion): Use CATCH and HANDLER-BIND to catch conversion errors. Skip symbols that are not convertible to *terminal-encoding*. 2001-02-28 Bruno Haible Sam Steingold * defmacro.lisp (analyze-rest): Allow destructuring for the &REST/&BODY variable. 2001-02-21 Bruno Haible * places.lisp (PROGN, LOCALLY, IF): New defsetf expanders. 2001-02-17 Arseny Slobodjuck Bruno Haible * lispbibl.d (SCREEN): Also define on WIN32_NATIVE. * stream.d [WIN32_NATIVE]: Implement window streams for SCREEN package. (console_handle, console_size, console_cursor_pos) (console_needtoclose, screenattr, attr_table, attr): New variables. (InitConsole, DoneConsole, v_up, v_cb, v_cs, v_ce, v_cl, v_cd) (v_scroll, v_al, v_dl, v_su, v_move, v_put, wr_ch_window) (MAKE-WINDOW, close_window, WINDOW-*): New functions. 2001-02-08 Bruno Haible * cfgunix.lisp: Mark the file as being UTF-8 encoded, so it can be loaded and compiled in any locale. * cfgacorn.lisp: Likewise. * cfgamiga.lisp: Likewise. * cfgdos.lisp: Likewise. * cfgsunux.lisp: Likewise. * cfgwin32.lisp: Likewise. Reported by Ulrich Drepper . 2001-02-07 Sam Steingold * inspect.lisp: fix bug#130567: unbound slots. (*inspect-unbound-value*): new internal variable (inspect-cllib): bind it (inspect-backend): use it for unbound symbols and slots (get-insp): call `insp-check' only when `insp' is non-NIL 2001-02-06 Bruno Haible * lispbibl.d (ICONV_CONST) [!UNIX]: New macro. 2001-02-04 Bruno Haible * stream.d (iconv_init): Remove macro, not needed any more since libiconv-1.5. (iconv): Define as macro, to cast second argument. (iconv_mblen, iconv_mbstowcs, iconv_wcslen, iconv_wcstombs) (iconv_range, ChannelStream_init): Don't call iconv_init. 2001-02-04 Sam Steingold Bruno Haible * pathname.d (whole_namestring): Don't set subr_self. (file_namestring): New function. (FILE-NAMESTRING): Simplification: Call file_namestring. (ENOUGH-NAMESTRING): Set subr_self before calling whole_namestring. (assure_dir_exists): Simplification: Call directory_namestring and whole_namestring. (change_default): Simplification: Call directory_namestring. (NAMESTRING): Set subr_self before calling whole_namestring. (directory_exists): Simplification: Call directory_namestring. (directory_search): Simplification: Call file_namestring. 2001-02-04 Bruno Haible * autoconf/aclocal.m4 (CL_STDBOOL_H): New macro. * configure.in: Invoke it. * unixconf.h.in (HAVE_STDBOOL_H): New macro. * makemake.in (EVERY_INCLUDES_H): Add stdbool.h, unless the system has it. (stdbool.h): New rule. (clean4): Remove stdbool.h. * lispbibl.d (boolean, FALSE, TRUE): Remove definitions. Include stdbool.h instead. * All *.d: Use bool/false/true instead of boolean/FALSE/TRUE. * genclisph.d (main): Include or copy stdbool.h instead of defining boolean/FALSE/TRUE. 2001-02-04 Bruno Haible * pathname.d (translate_directory): Don't choke if 'subst' doesn't specify any pieces for the directory. 2001-02-04 Bruno Haible * pathname.d (PARSE-NAMESTRING): Make treatment of :HOST argument CLHS compliant. 2001-02-04 Bruno Haible * spvw.d (init_symbol_values): Initialize SYS::*LOGICAL-PATHNAME-TRANSLATIONS* to an EQUALP hash table. 2001-02-04 Bruno Haible * pathname.d: Back out Sam's 2001-01-03 and 2001-01-04 patches. (host_namestring_parts): Use "\\\\" instead of twice "\\". (directory_namestring): Include the host namestring parts. (MERGE-PATHNAMES): If pathname's host is NIL but pathname's device is non-NIL, on Win32, don't take the defaults' host+device. (MAKE-PATHNAME): If pathname's host and device are both non-NIL on Win32, signal an error. (use_default_dir) [OS2, WIN32]: If the pathname already has a host: 1. Don't insert the default drive. 2. Resolve :RELATIVE to :ABSOLUTE. (assure_dir_exists): Include host_namestring_parts. (directory_exists): Likewise. (CD): Signal error if pathname includes a host. 2001-02-03 Bruno Haible * configure: Also copy gettext/autoconf. * makemake.in (libintl.h): Link to gettext/intl/libintl.h. * lispbibl.d (GETTEXTL): New macro. (clgettextl): New declaration. * amigaaux.d: Use GETTEXTL instead of GETTEXT for strings to be output via asciz_out(). * spvw.d: Likewise. * spvw_alloca.d: Likewise. * spvw_allocate.d: Likewise. * spvw_fault.d: Likewise. * spvw_garcol.d: Likewise. * spvw_memfile.d: Likewise. * spvw_mmap.d: Likewise. * spvw_multimap.d: Likewise. * spvw_sigsegv.d: Likewise. * spvw_language.d (init_language): Call bindtextdomain also for domain "clisplow". Remove textdomain() call. Call bind_textdomain_codeset. (to_latin_table, from_latin_table, cvgettext): Remove. (clgettext): Call dgettext with domain "clisp". (clgettextl): New function. (localized_string): Check argument must be in ASCII. clgettext() returns value in UTF-8. (localized_object): Likewise. * error.d (write_errorasciz_substring): New function. (write_errorasciz): Use it. (write_errorstring): Move into string segment after segment, not byte after byte. * errunix.d (get_errormsg): Use GETTEXTL instead of GETTEXT, so the strings end up in both clisp.mo and clisplow.mo. (OS_error_internal): Define 'translate' as clgettext, for UTF-8 converted translation. (errno_out): Define 'translate' as clgettextl, for locale dependent encoded translation. 2001-02-01 Bruno Haible * io.d (pr_sstring_ab): Make GC safe. 2001-02-01 Bruno Haible * stream.d (read_line): When EOF was reached, always set strm_rd_ch_last to eof_value. 2001-01-29 Sam Steingold * pathname.d (PARSE-NAMESTRING): use `slashp' when parsing UNC pathnames, so that //host/dir/file is the same as \\host\fir\file. 2001-01-27 Bruno Haible * lispbibl.d: Add IA-64 support. (object) [WIDE_HARD]: Use the 1-element struct or directly 'void *'. * spvw_mmap.d (mmap_init_pagesize): On IA-64, always use 64 KB. * spvw_page.d (oint_addr_relevant_len): Set to 32, to limit std_page_size to 64 KB. * predtype.d: Include arilev0.c, needed for R_sign when TYPECODES is defined. 2001-01-28 Bruno Haible * foreign.d (convert_function_to_foreign, free_foreign_callin) (convert_function_from_foreign, callback): Add cast, to avoid warning on 64-bit machines. 2001-01-17 Bruno Haible * spvw.d (main): Restore functionality broken by last patch. 2001-01-17 Sam Steingold * posix.lisp (sysinfo, rlimit, limits, usage): unix-specific, do not define on other systems * spvw.d (main): handle `argv_expr' ("-x") similar to `argv_execute_file', as if wrapped in `exit-on-error' 2001-01-15 Bruno Haible * init.lisp (load): Additional keyword argument :extra-file-types. * spvw.d (main) [WIN32_NATIVE]: Pass :extra-file-types '(".bat") to LOAD. 2001-01-14 Bruno Haible * configure: In avcall and callback, do "make check" instead of "make minicheck". * makemake.in: Likewise. 2001-01-04 Sam Steingold * pathname.d (pathname_check_remote): replace with (pathname_fix_remote): reset device to NIL and make the path :absolute (merge-pathnames, make-pathname): use it 2001-01-03 Sam Steingold * pathname.d (use_default_dir win32): do not use `default_drive' or `default_directory_of' for UNC paths (pathname_check_remote, namestring_host_dir): new local functions (assure_dir_exists, directory_exists): use `namestring_host_dir' instead of `directory_namestring' and `whole_namestring' instead of `directory_namestring_parts'+`file_namestring_parts' (change_default): barf on remote arguments * inspect.lisp (inspect-frontend): bind `keep-alive' 2001-01-03 Bruno Haible * pathname.d (USER-HOMEDIR-PATHNAME): If HAS_HOST is defined but the host is NIL, use the homedir on the local machine. 2001-01-02 Bruno Haible * lispbibl.d (HAS_HOST): Set to 1 for PATHNAME_WIN32. * pathname.d (legal_hostchar): Add a definition for PATHNAME_WIN32. (PARSE-NAMESTRING): For PATHNAME_WIN32, parse hosts in \\hostname syntax. (host_namestring_parts): For PATHNAME_WIN32, use \\hostname syntax. (USER-HOMEDIR-PATHNAME): Add dummy definition for PATHNAME_WIN32. 2001-01-03 Sam Steingold * pathname.d (assure_dir_exists, change_default): Use `directory_namestring' instead of `directory_namestring_parts'+`string_concat'. 2000-12-28 Bruno Haible * makemake.in: encoding.o depends on libcharset.h. (libcharset.h): New rule. * encoding.d: Include libcharset.h. (encoding_from_name): Argument is now canonicalized like locale_charset(), not like X11. (init_dependent_encodings): Call locale_charset(). * spvw_ctype.d (locale_charset): Remove variable. (init_ctype): Remove initialization of locale_charset. * constsym.d: Add JOHAB and AIX specific encoding. 2000-12-29 Bruno Haible * utils/gen-uninames: New file. * Makefile.devel (all): Depend on src/uninames.c. (src/uninames.c): New rule. * makemake.in (UNICODE_INCLUDES): Add uninames. * charstrg.d: Include uninames.c. (unicode_name_word, unicode_name_word_lookup): New functions. (jamo_initial_short_name, jamo_medial_short_name) (jamo_final_short_name): New tables. (char_name, name_char): Add support for Unicode character names. 2000-12-21 Sam Steingold * dirkey.d: made the second half of the file GC safe (registry_value_to_object): Fix the bugs introduced yesterday: extra "" at the end of a REG_MULTI_SZ and a += instead of =. (scope_error): Replace with `parse_scope'. 2000-12-20 Bruno Haible * dirkey.d (registry_value_to_object): Make GC safe. Fix possible buffer overrun. (struct root): Add length field. (MKKEY): Store string length as well. (parse_registry_path): Use memcmp instead of strncmp. (DIR-KEY-OPEN): Make GC safe. (MAKE_OBJECT_LIST): Make GC safe. 2000-12-20 Bruno Haible * charstrg.d (nonspacing_table_data): Update to match glibc 2.2 width definition. 2000-12-19 Bruno Haible * time.d (SYS::DEFAULT-TIME-ZONE) [WIN32]: Don't produce time_t values >= 2^31. 2000-12-13 Sam Steingold Remote registry access: * dirkey.d (test_dir_key): Return obj. (roots): Check whether the constants are defined. (parse_registry_path): new function to extract the host name and the top-level handle-key. (dir_key_open): Use it. (open_reg_key): Use the IDNE_* constants. (dir_key_subkeys): Return the list of the local top-level keys when the argument is :win32. (itst_current): Ignore zero-length names. (scope_error): New nonreturning_function. (dkey_search_iterator): Use it. (state_next_key): Pop the iteration stack when closing the hangle. (dkey_search_next_key): Rely on this change; use `scope_error'. * dirkey.lisp: Export `dir-key-values' and `dir-key-children' (with-dir-key-search): Make sure `att-iter' is a symbol. 2000-12-12 Sam Steingold * spvw.d (init_symbol_values): Set *PRINT-RPARS* to NIL and *PRINT-INDENT-LISTS* to 1. 2000-12-05 Bruno Haible * io.d (JUSTIFY_START): Add argument. (JUSTIFY_LAST): New macro. (justify_start): Add traillength argument. Bind SYS::*PRIN-TRAILLENGTH* and SYS::*PRIN-PREV-TRAILLENGTH*. (justify_end_eng): Respect SYS::*PRIN-PREV-TRAILLENGTH*. Unbind SYS::*PRIN-TRAILLENGTH* and SYS::*PRIN-PREV-TRAILLENGTH*. (justify_end_weit): Likewise. (justify_last): New function. (pr_enter): Bind SYS::*PRIN-TRAILLENGTH* to 0. (pr_cons): Add argument to JUSTIFY_START. Call JUSTIFY_LAST. (pr_number, pr_array_nil, pr_vector, pr_array_rekursion, pr_array) (pr_structure_default, pr_hex6_obj, pr_readlabel, pr_record_ab) (pr_record_rest, pr_record_descr, pr_orecord, pr_other_obj, pr_subr) (pr_closure, pr_cclosure_lang, pr_cclosure_codevector, pr_stream) (SYSTEM::WRITE-UNREADABLE): Likewise. (some_printable_slots): New function. * spvw.d (init_symbol_values): Define SYS::*PRIN-TRAILLENGTH* and SYS::*PRIN-PREV-TRAILLENGTH* as special. 2000-12-04 Sam Steingold * misc.d (registry): do not goto outside `with_string_0' * dirkey.d (dir_key_value): ditto 2000-12-04 Bruno Haible * lispbibl.d (dir_key_length): Set to 3. 2000-12-03 Sam Steingold --with-export-syscalls works on win32 under MSVC5 now * socket.d (resolve-host-ipaddr): MSVC doesn't have `gethostent' * posixmath.d (erf, erfc, gamma, lgamma): MSVC doesn't have these * posixmisc.d: ditto * constsym.d, subr.d: kill the exported calls not found under MSVC 2000-12-02 Sam Steingold Directory access (LDAP, Win32 registry, gnome config.) Only Win32 registry works at this time. * lispbibl.d (FOREIGN): define when DIR_KEY is defined. (Dir_Key): new record type. * constobj.d (hs_dir_key, type_dir_key, type_scope) (printstring_dir_key): add. (slash_string): define when DIR_KEY id defined. * constsym.d, subr.d, subrkw.d: define the dirkey functions. * predtype.d: recognize the new rectype. * io.d: print the new rectype. * spvw.d: add :DIR-KEY to `*features*' when DIR_KEY is defined. * places.lisp (dir-key-value): new defsetf. * init.lisp: load dirkey.lisp. * dirkey.lisp, dirkey.d: new files. * makemake.in: add --with-dir-key. 2000-11-30 Bruno Haible * lispbibl.d (convert_time_to_universal): New declaration. * time.d (convert_time_to_universal): New function. * pathname.d (FILE-WRITE-DATE): Use it. 2000-11-29 Bruno Haible * lispbibl.d (set_start_time): Remove declaration. * time.d (internal_time_to_I): New function. (GET-INTERNAL-REAL-TIME, GET-INTERNAL-RUN-TIME): Use internal_time_to_I. (encode_universal_time): New function. (calc_start_UT): Remove function. (get_start_time): New function. (universal_time_sec): New function. (GET-UNIVERSAL-TIME): Call universal_time_sec. 2000-11-25 Sam Steingold * lispbibl.d (UNIX_LISP_TIME_DIFF): new macro * time.d (real_time_sec): use it * pathname.d (file_stat_): ditto 2000-11-20 Bruno Haible * makemake.in (lisp.exe): Make the stack 3 MB large. 2000-11-16 Bruno Haible * array.d (elt_move_T): Use eq instead of ==. (elt_move_Char, elt_move_Bit, elt_move_2Bit, elt_move_4Bit) (elt_move_8Bit, elt_move_16Bit, elt_move_32Bit): Likewise. * sequence.d (copy_seqpart_into): Likewise. 2000-11-15 Bruno Haible * makemake.in: If TSYS=win32msvc, introduce a Makefile variable MFLAGS. (lisp.exe): Don't use /MD flag; use MFLAGS instead. 2000-11-14 Bruno Haible * Makefile.devel (PERL): New macro. (acorn/makefile.cc, acorn/makefile.gcc): Use it. 2000-11-14 Sam Steingold * win32msvc/makefile.msvc4, win32msvc/makefile.msvc5: libinconv/iconv.h and libinconv/iconv.lib are now in include and src respectively. 2000-11-13 Bruno Haible * lispbibl.d (UNIX_MACOSX): Rename from UNIX_RHAPSODY. (UNIX_RHAPSODY, UNIX_DARWIN): New macros. 2000-11-12 Bruno Haible * lispbibl.d: Undefine TIME_ABSOLUTE and TIME_RELATIVE first. * autoconf/config.guess, autoconf/config.sub: Upgrade to newest version from GNU CVS. 2000-11-10 Sam Steingold * inspect.lisp: workaround for the Linux bug. (crlf, flush-http): new functions. (with-http-output): new macro. (print-inspection): add &rest opts. (http-command): handle `keep-alive'. (inspect-frontend :http): ditto. * clhs.lisp (*browser*): the default browser. (browse-url): `browser' defaults to `*browser*' and can be NIL. 2000-11-10 Bruno Haible * makemake.in: Increase optimization for SUNPRO compilers to O3. 2000-11-08 Bruno Haible * pathname.d (delete_file_if_exists) [WIN32_NATIVE]: Treat ERROR_BAD_NETPATH like ERROR_PATH_NOT_FOUND. (rename_file_to_nonexisting) [WIN32_NATIVE]: Likewise. (assure_dir_exists) [WIN32_NATIVE]: Likewise. (directory_exists) [WIN32_NATIVE]: Likewise. (open_input_file) [WIN32_NATIVE]: Likewise. (READDIR_findfirst) [WIN32_NATIVE]: Likewise. (check_stat_directory) [WIN32_NATIVE]: Likewise. (FILE-WRITE-DATE) [WIN32_NATIVE]: Likewise. 2000-11-08 Bruno Haible * aclocal.m4 (CL_SIGNAL_UNBLOCK): Enable 'volatile' for gotsig, wasblocked. (CL_SIGNAL_BLOCK_OTHERS): Enable 'volatile' for gotsig, somewereblocked. (CL_SIGACTION_UNBLOCK): Enable 'volatile' for gotsig, wasblocked. 2000-10-23 Bruno Haible * constsym.d (CHARSET:GB18030, CHARSET:BIG5HKSCS): New symbols. 2000-10-22 Bruno Haible * encoding.d (init_encodings): Set O(internal_encoding) to UTF-8. * makemake.in: Default file encoding for all CLISP sources is now UTF-8. 2000-10-22 Bruno Haible * spvw_language.d (init_language_from): Accept french and spanish names in both ISO-8859-1 and UTF-8. * spvw_ctype.d (init_ctype): Likewise. 2000-10-22 Bruno Haible * spvw.d (print_banner): Don't use non-ASCII argument of gettext. * spvw_global.d (check_gc_consistency): Don't use non-ASCII error message. 2000-10-09 Bruno Haible CPU recognition on OpenBSD. * lispbibl.d (VAX): Define if __vax__ is defined. (MC680X0): Define if __m68k__ is defined. (MC680Y0): Define if __mc68020__ is defined. (MIPS): Define if __mips__ is defined. (M88000): Define if __m88k__ is defined. * autoconf/aclocal.m4 (CL_WORDS_LITTLEENDIAN): Recognize __m68k__, __mc68020__, __MIPSEB__, __MIPSEL__, __m88k__ as CPU indicators. 2000-09-29 Bruno Haible * autoconf/aclocal.m4 (CL_CANONICAL_HOST): Fix bug in 2000-05-23 change. 2000-09-28 Bruno Haible * makemake.in: On AIX without gcc, use gcc-cccp. (XCPP_POSTPROCESS): New variable. * autoconf/aclocal.m4 (CL_SOCKLEN_T): New macro. * configure.in: Call it. * unixconf.h.in (SOCKLEN_T): New macro. * win32.d (SOCKLEN_T): Define as int. * socket.d (socket_getlocalname_aux, socket_getpeername) (create_server_socket, accept_connection): Use the SOCKLEN_T type. * stream.d (iconv_mblen): Cast to avoid warning. (iconv_wcstombs): Likewise. (rd_ch_terminal3): Likewise. 2000-09-25 Bruno Haible * lispbibl.d (I80386): Define if __i386__ is defined. On OpenBSD, i386 and __i386 are not defined, only __i386__. * autoconf/aclocal.m4 (CL_WORDS_LITTLEENDIAN): Recognize __i386__ as equivalent to __i386. For OpenBSD. 2000-09-21 Martin Atzmueller * reploop.lisp (debug-backtrace): cleanup of unused variable. 2000-09-12 Bruno Haible Followup to Sam's 1999-04-07 patch. * compiler.lisp (c-form): Accept arrays as self-evaluating forms, consistently with eval.d:eva11(). 2000-09-12 Bruno Haible * lispbibl.d (listen_char): Rename from stream_listen. (listen_byte): New declaration. * debug.d (read_form): Update. * io.d (LISTEN, READ-CHAR-WILL-HANG-P, READ-CHAR-NO-HANG): Update. * stream.d (listen_char_synonym): Rename from listen_synonym. (listen_byte_synonym): New function. (listen_char_concat): Rename from listen_concat. (listen_byte_concat): New function. (listen_char_twoway): Rename from listen_twoway. (listen_byte_twoway): New function. (listen_char_str_in): Rename from listen_str_in. (listen_char_buff_in): Rename from listen_buff_in. (listen_char_generic): Rename from listen_generic. (listen_byte_ia8_unbuffered): New function. (listen_char_unbuffered): Rename from listen_unbuffered. (listen_char_buffered): Rename from listen_buffered. (listen_byte_ia8_buffered): New function. (listen_char_keyboard): Rename from listen_keyboard. (listen_char_terminal): Rename from listen_terminal. (listen_char_terminal1): Rename from listen_terminal1. (listen_char_terminal2): Rename from listen_terminal2. (listen_char_terminal3): Rename from listen_terminal3. (SYSTEM::LISTEN-BYTE): Remove function. (listen_char): Rename from stream_listen. (listen_byte): New function. (READ-BYTE-LOOKAHEAD, READ-BYTE-WILL-HANG-P, READ-BYTE-NO-HANG): New functions. * gstream.lisp: Export STREAM-READ-BYTE-LOOKAHEAD, STREAM-READ-BYTE-WILL-HANG-P, STREAM-READ-BYTE-NO-HANG. (STREAM-READ-BYTE-LOOKAHEAD, STREAM-READ-BYTE-WILL-HANG-P) (STREAM-READ-BYTE-NO-HANG): New generic functions. * modules/clx/mit-clx/depdefs.lisp: Remove feature test for sys::listen-byte. Add feature test for read-byte-lookahead. * modules/clx/mit-clx/dependent.lisp (buffer-read-default) [CLISP]: Use read-byte-lookahead instead of sys::listen-byte. 2000-09-06 Sam Steingold Followup to Sam's 1999-04-07 patch. * compiler.lisp (c-form): Handle simple vectors as a constant. 2000-09-02 Bruno Haible * savemem.lisp (saveinitmem): Bind *home-package* to nil while saving the image. Needed because the new image may be started with -a, thus with a different value of *package*. Reported by Valeriy E. Ushakov . 2000-09-02 Bruno Haible * modules/clx/new-clx/configure.in: When checking for Xpm and XShape, temporarily add $X_CFLAGS to the CFLAGS. Needed on FreeBSD, which has X_CFLAGS=-I/usr/X11R6/include. Reported by Valeriy E. Ushakov . 2000-09-01 Bruno Haible Fix line numbers in generated C code. * utils/varbrace.d (out_line): New function. (ifdef_line_repeat): New variable. (line_emit, line_repeat_else, line_repeat_endif): New functions. (next_token): Call them. (convert): Initialize ifdef_line_repeat. Call line_emit to emit a #line directive. 2000-09-01 Bruno Haible * stream.d (lisp_completion): Put end_callback() at the right place, and protect malloc() and free() with begin/end_system_call(). Fixes a crash in cstombs on i386 platforms. Reported by Valeriy E. Ushakov . 2000-09-01 Bruno Haible * eval.d (interpret_bytecode_): Don't produce "testb %edx,%edx" or "testb %eax,%eax" any more. 2000-08-19 Bruno Haible * utils/ccpaux.c: main() returns int. Call fflush(stdout) before testing ferror(stdout). * utils/deema.c: Likewise. * utils/txt2c.c: Call fflush(stdout) before testing ferror(stdout). * utils/comment5.d: Call fflush(outfile) before testing ferror(outfile). 2000-08-26 Bruno Haible * autoconf/acgeneral.m4 (AC_OUTPUT): Use braces in exec_prefix default value, not parens. 2000-08-18 Bruno Haible * pathname.d (parse_logical_host_prefix): Rename from logical_host. (string_logical_path_p): Remove function. (parse_namestring): Integrate it here. When recognizing a logical host, don't overwrite the :host argument. ANSI CL wants (PATHNAME (OPEN filename ...)) to return filename if filename is a logical pathname. * pathname.d (open_file): Expect the original filename on the stack. (OPEN): When the filename argument is a logical pathname, pass it to open_file. 2000-08-17 Sam Steingold ANSI `parse-namestring' when LISP:*PARSE-NAMESTRING-ANSI* is non-NIL * pathname.d (logical_host): New function. (parse_logical_pathnamestring): Use it. (string_logical_path_p): New function. (parse_namestring): Use it. * constsym.d (parse_namestring_ansi): New variable. * spvw.d (init_symbol_values): Define it. * misc.d (set_ansi): Set it. * places.lisp (*ansi*): Add it to the doc. 2000-08-17 Bruno Haible * pathname.d (open_file): Pass tolerantp = TRUE to assure_dir_exists also if if_not_exists = 2 and direction != 0. 2000-07-27 Bruno Haible * foreign.d (walk_foreign_pointers): C-FUNCTION values can be NULL. (convert_to_foreign): When converting C-FUNCTION, convert NIL to NULL. 2000-07-27 Bruno Haible * predtype.d (eql): When comparing long-floats, also compare the sign. Reported by Bernard Urban . 2000-07-26 Bruno Haible * makemake.in (DESTDIR): Rename from 'install_root'. 2000-07-20 Sam Steingold * inspect.lisp (insp-check): `warn' instead of `assert' (*inspect-browser*): default to nil (inspect-frontend :http): hardcode host 127.0.0.1 print URL when `*inspect-browser*' is nil - permits CLISP and browser running on different machines 2000-07-19 Sam Steingold * socket.d (create_server_socket): use "0.0.0.0" instead of the current host to allow anyone to connect to our server 2000-06-23 Sam Steingold * type.lisp (canonicalize-type, subtypep-integer): use (ash 1 *) instead of (expt 2 *) 2000-06-22 Sam Steingold * stream.d (stream_element_type_eq): new function (built_in_stream_element_type): use it * constsym.d, subr.d: mention `stream_element_type_eq' 2000-06-21 Bruno Haible * stream.d (built_in_stream_element_type): Fix the last patch. 2000-06-21 Sam Steingold * stream.d (socket_status): minor tweaks (built_in_stream_element_type): fix the last patch 2000-06-21 Sam Steingold * stream.d (built_in_stream_element_type): Special case for two-way and echo streams. 2000-06-16 Thomas Klausner Bruno Haible * lispbibl.d (unix): Define on NetBSD. * modules/clx/new-clx/e2d.c: Treat __MACH__, __NetBSD__, __BeOS__ as Unix. * makemake.in (fsstnd): New variant netbsd. (install, installdirs, uninstall): For fsstnd=netbsd, install the html files in $(lispdocdir), not $(htmldir), and the extra documentation in $(lispdocdir), not $(lispdocdir)/doc. 2000-06-12 Bruno Haible * makemake.in (LIBGCC): Set to empty on BeOS. (interpreted.mem, lispinit.mem, lispinit2.mem): On BeOS, copy the executable before running it (workaround BeOS kernel bug). * unix.d (sock_read, sock_write, closesocket): Don't #define on BeOS. * unixaux.d (sock_read, sock_write): New functions. * stream.d (low_listen_unbuffered_handle): On BeOS, don't use select on file handles. Use O_NONBLOCK as a preferred alternative to O_NDELAY. (rd_ch_keyboard): On BeOS, don't use select on file handles. (low_close_socket, low_read_unbuffered_socket): (low_listen_unbuffered_socket, low_clear_input_unbuffered_socket): (low_read_array_unbuffered_socket, low_write_unbuffered_socket): (low_write_array_unbuffered_socket, low_fill_buffered_socket): (low_flush_buffered_socket): Define on BeOS, differently from the file handles analogs. 2000-06-11 Bruno Haible * clos.lisp (analyze-method-description): Generate code expanding into SYSTEM::FUNCTION-MACRO-LET instead of MACROLET. * fsubr.d (system::function-macro-let): New special form. * control.d (system::function-macro-let): Likewise. * init.lisp (%expand-form): Handle SYSTEM::FUNCTION-MACRO-LET. (%expand-funmacdefs-1, %expand-funmacdefs-2): New functions. * compiler.lisp (c-form-table): Add SYSTEM::FUNCTION-MACRO-LET. (c-FUNCTION-MACRO-LET): New function. * lispbibl.d (Rectype_Macro, Rectype_FunctionMacro): New enumeration items. (Macro, FunctionMacro): New types. (macro_length, functionmacro_length): New macros. (TheMacro, TheFunctionMacro): New macros. (macrop, functionmacrop): New macros. (allocate_macro, allocate_functionmacro): New macros. (fehler_function): New declaration. * error.d (fehler_function): New function. * predtype.d (TYPE-OF, CLOS:CLASS-OF): Treat Rectype_Macro and Rectype_FunctionMacro. (COERCE): When the symbol has both a function and a macro, use the function. (enum_hs_macro, enum_hs_function_macro): New enum items. (heap_statistics_mapper): Update. * io.d (pr_orecord): Treat Rectype_Macro and Rectype_FunctionMacro. * record.d (SYS::MAKE-MACRO, SYS::MACROP, SYS::MACRO-EXPANDER) (SYS::MAKE-FUNCTION-MACRO, SYS::FUNCTION-MACRO-P) (SYS::FUNCTION-MACRO-FUNCTION, SYS::FUNCTION-MACRO-EXPANDER): New functions. * eval.d (FUNTAB): Add SYS::FUNCTION-MACRO-FUNCTION. (macroexp): Test for Macro instead of cons with car = SYS::MACRO. (macroexp0): Likewise. (eval1): Treat Rectype_FunctionMacro. * control.d (FUNCTION): Treat Rectype_FunctionMacro. (MACRO-FUNCTION): Test for Macro instead of cons with car = SYS::MACRO. * symbol.d (SYS::%PUTD): Test for Macro instead of cons with car = SYS::MACRO. * defmacro.lisp (make-macro-expander): Rename from make-macro-expandercons. * init.lisp: Use function sys::make-macro instead of cons 'sys::macro. (%expand-form): Treat FunctionMacros like functions. Test for Macro instead of cons with car = SYS::MACRO. (defmacro) : Use function sys::make-macro instead of cons 'sys::macro. * trace.lisp (trace1): Use function sys::make-macro instead of cons 'sys::macro. * places.lisp (MACRO-FUNCTION): Likewise. * compiler.lisp: Import sys::make-macro-expander. (funtab): Add SYS::FUNCTION-MACRO-FUNCTION. (fenv-search): Return more values, to deal with the FunctionMacro case. (c-form, macroexpand-form): Update for changed fenv-search. Call *macroexpand-hook* directly. (c-FUNCTION): Update for changed fenv-search. (c-MACROLET): Update. (c-APPLY): Update for changed fenv-search. (compile): Test for Macro instead of cons with car = SYS::MACRO. (compile-toplevel-form): Update for changed fenv-search. (disassemble): Test for Macro instead of cons with car = SYS::MACRO. * describe.lisp (describe-object): Treat SYS::MACRO and FUNCTION-MACRO. * init.lisp (MACRO-EXPANDER): Remove macro. * macros1.lisp (defmacro-special): New macro. (and, or, prog1, prog2, when, unless, psetq, multiple-value-list) (multiple-value-bind, multiple-value-setq, locally, case, cond): Define macros using defmacro-special. * constobj.d (O(version)): Bump version number. (O(old_version)): Remove. * misc.d (SYSTEM::VERSION): Don't test for O(old_version) any more. * control.d (SYS::OLD-MACRO-FUNCTION): Remove function. * pathname.d (SYS::OLD-OPEN): Remove function. * record.d (CLOS::OLD-%ALLOCATE-INSTANCE): Remove function. * subrkw.d: Remove SYS::OLD-OPEN initialization. * eval.d (FUNTAB): Remove SYS::OLD-MACRO-FUNCTION, SYS::OLD-OPEN, CLOS::OLD-%ALLOCATE-INSTANCE. Add MACRO-FUNCTION, OPEN. Move SYS::%COPY-GENERIC-FUNCTION. (FUNTABR): Add CLOS::%ALLOCATE-INSTANCE. * compiler.lisp (funtab, c-DIRECT-FUNCTION-CALL): Update accordingly. 2000-05-30 Bruno Haible * pathname.d (MERGE-PATHNAMES): New variable called_from_make_pathname. Accept unbound slot values in this case. (MAKE-PATHNAME): If a :DEFAULTS argument is given, don't fill in default values. Call MERGE-PATHNAMES with magic arguments :wild #'make-pathname. 2000-05-30 Bruno Haible * makemake.in (install-bin): Use $(INSTALL_PROGRAM) or $(INSTALL_DATA) instead of "cp -p". Reported by Thomas Klausner . 2000-05-29 Bruno Haible * autoconf/aclocal.m4 (CL_PROG_INSTALL): Fix typo. Reported by Thomas Klausner . 2000-05-26 Bruno Haible * array.d (elt_move): Add "break" in switch statement. 2000-05-25 Bruno Haible * makemake.in (MSVCDIR): Change value. (TOUCH): On Win32, permit touch to fail. (iconv.h, iconv.lib): Fix win32 rules. (lisp${LEXE}): Depend on ${XCL_ICONVLIB}. (impnotes.html, clisp.html): On Win32, don't use sed. (distrib): On Win32, postprocess impnotes.html and clisp.html. 2000-05-23 Bruno Haible * autoconf/aclocal.m4 (CL_CANONICAL_HOST): Determine host_cpu, host_vendor, host_os correctly if $host has more than two hyphens. 2000-05-21 Bruno Haible * type.lisp (canonicalize-type): Treat STREAM and subclasses like CLOS classes, not like other built-in classes. (subtypep): Remove special code for STREAM and subclasses. 2000-05-21 Bruno Haible * init.lisp (LOAD): Add :external-format argument and conditionally pass it to OPEN. 2000-05-20 Bruno Haible * type.lisp (canonicalize-type): Recognize the encodings UTF-16 and UTF-7 as covering all of Unicode. 2000-05-20 Bruno Haible * type.lisp (subtype-integer): Inline the canonicalize-type call. 2000-05-20 Bruno Haible * sequence.d (SYSTEM::COERCED-SUBSEQ): New function. * encoding.d (CONVERT-STRING-FROM-BYTES, CONVERT-STRING-TO-BYTES): New functions. 2000-05-17 Bruno Haible * reploop.lisp (break-loop): terpri to *debug-io*, not *error-output*. 2000-05-16 Sam Steingold * reploop.lisp (break-loop): terpri *debug-io* even when it is not interactive. 2000-05-16 Sam Steingold * stream.d (sec_usec, socket_connect): treat NIL as unbound 2000-05-15 Sam Steingold * init.lisp (defun): emit `c-defun' for not inlined functions too 2000-05-15 Sam Steingold * socket.d (H_ERRMSG): fix duplicate test for NO_DATA. 2000-05-15 Sam Steingold * makemake.in: fix the previous patch. 2000-05-12 Martin Atzmueller * makemake.in: link clhs in the build-directory to the right place. 2000-05-11 Sam Steingold * stream.d (socket_status): use HANDLE_SET & HANDLE_ISSET macros. 2000-05-09 Sam Steingold * stream.d (sec_usec): new helper function. (socket_wait): use it. (socket_status): new Lisp function: interface to select(3). (stream_listen): listen properly on binary streams too. * constsym.d, subr.d: add LISP:SOCKET-STATUS. 2000-05-09 Sam Steingold * disassem.lisp (disassemble-machine-code): do not call the pager when running under Emacs. 2000-05-03 Guilherme Manika * makemake.in (install-bin): Fix duplicate \$(install_root). 2000-04-25 Bruno Haible * spvw.d (print_license): Add paragraph pointing to copyright.html. 2000-04-18 Bruno Haible * lispbibl.d: On BeOS, define UTF8_CHS, not ISOLATIN_CHS. * encoding.d (encoding_from_name): If UTF8_CHS is defined, use CHARSET:UTF-8. 2000-04-14 Bruno Haible * autoconf/aclocal.m4 (CL_PROG_HLN): Redirect ln's error output. 2000-04-13 Bruno Haible Support NO_TYPECODES on m68k. * lispbibl.d (oint_type_*, oint_data_*): Define differently on m68k-linux. (subr_): Add a dummy field to force size a multiple of 4. (TheMachineCode): After shifting right, add the missing leftmost bits. * spvw.d (main): When determining the heap bounds, compute 'end' with garcol_bit set to 0, even if garcol_bit_o < oint_addr_len-1. * encoding.d (nls_table) [NO_TYPECODES]: Force variables of this type, defined in nls_*.c, to be 4-aligned. 2000-04-04 Sam Steingold * init.lisp (*source-file-types*): add #".cl" (search-file ): do not call `reverse' (load): swap `*compiled-file-types*' and `*source-file-types*' accordingly. 2000-04-05 Bruno Haible * io.d (eof_handling): eof-value defaults to NIL. * stream.d (READ-BYTE, READ-INTEGER, READ-FLOAT): Likewise. 2000-04-04 Bruno Haible * unix.d (O_BINARY): Undefine on BeOS. 2000-04-03 Martin Atzmueller * _impnotes.html: documented the (abbreviated) keyword-commands for the debugger. * reploop.lisp (commands1): fix a typo 2000-04-03 Bruno Haible * lispbibl.d (addressbus_mask) [UNIX_OSF]: Define to 0xFFFFFF01FFFFFFFFUL instead of 0xFFFFFFC1FFFFFFFFUL. 2000-04-02 Bruno Haible * clhs.lisp (*browsers*): Add support for w3m. 2000-04-02 Bruno Haible * stream.d (finish_tty_output, force_tty_output): Ignore errno value after calling fsync() on BeOS. * lispbibl.d (STACK_register): Don't define on BeOS. (oint_type_*, oint_data_*): Define differently on BeOS. * socket.d (SERVENT_TO_STACK, LISP:SOCKET-SERVICE-PORT): Don't define if UNIX_BEOS. BeOS5 lacks getservent() and getservbyport(). * spvw.d (main): On BeOS, add :BEOS to *features*. * beossock.lisp: New file. * init.lisp: On BeOS, load beossock.lisp. * makemake.in (LPARTS): Add beossock. * gettext/po/Makefile.devel (LISPSOURCES): Add beossock. * autoconf/aclocal.m4 (CL_GETHOSTNAME, CL_TCPCONN): For the prototypes of gethostname and inet_addr, on BeOS, include and . 2000-04-02 Bruno Haible Allow building on filesystems lacking symlinks and hard links. * autoconf/acgeneral.m4 (AC_OUTPUT_LINKS): If "ln" fails, try "cp -p". * autoconf/aclocal.m4 (CL_PROG_CP): Rename from CL_CP. (CL_PROG_LN, CL_PROG_LN_S): New macros. (CL_PROG_HLN): Rename from CL_PROG_LN. Rename cache variable to cl_cv_prog_hln. AC_SUBST HLN instead of LN. * configure.in: Update. * lndir (link): If "ln" fails, try "cp -p". * makemake.in (HLN): Rename from LN. Use @HLN@ instead of @LN@. (LN_S): Rename from LN. (init): Don't create linkkit. (linkkit): New rule. (modular): Depend on linkkit. (UnicodeData.txt): cd into directory before linking. (clhs.txt): Likewise. Simplify the symlink. Omit if building in-place. * clisp-link.in (link): If "ln" fails, try "cp -p". Redirect stderr to /dev/null. (create-module-set): If "ln" fails, try "cp -p". * Makefile.devel (src/gettext/configure, src/gettext/config.h.in): Update dependencies. 2000-04-02 Bruno Haible * Makefile.devel (src--distrib): Create a single tar.gz file. (SOURCES): Add clisp.spec, modules, readline, sigsegv, libiconv, all of doc. 2000-04-02 Bruno Haible * autoconf/aclocal.m4 (CL_TERMCAP): When both libtermcap and libncurses exist, prefer the latter. 2000-03-12 Bruno Haible Add support for S390 CPU. * lispbibl.d (S390): New macro. 2000-03-31 Bruno Haible Rename all *.lsp files to *.lisp. * Makefile.devel, configure: Update. * _README.en, _README.de, _README.es: Update. * _clisp.1, _clisp.html, _clisp.c, _impnotes.html: Update. * constobj.d (O(source_file_type)): Change to #".lisp". * cfg*.lisp (editor-tempfile): Return "lisptemp.lisp". * edit.lisp (editor-tempfile): Likewise. * compiler.lisp (compile-file, compile-file-pathname): Use ".lisp" as default pathname type. * defs1.lsp (default logical pathname translations): Map ".LISP" to ".lisp". * init.lsp (*source-file-types*): Set to (#".lisp" #".lsp"). * clisp-link.in: Update. * makemake.in: Update. * gettext/po/{Makefile.devel,clisp-xgettext}: Update. * acorn/swap-ext.pl: Update. * nextapp/Lisp/Coordinator.m: Update. * os2/{convert.bax,interpreted.in}: Update. * modules/bindings/linuxlibc5/Makefile: Update. * modules/bindings/linuxlibc6/Makefile: Update. * modules/clx/mit-clx/{Makefile*,README.CLISP,link.sh}: Update. * modules/clx/new-clx/{Makefile.in,README,link.sh.in,clx.f, clx-ini.lisp,clx.lisp,demos/sokoban.lisp}: Update. * modules/regexp/{Makefile.in,README,configure.in}: Update. * modules/wildcard/{Makefile.in,configure.in}: Update. * modules/postgresql642/Makefile: update 2000-03-30 Bruno Haible * lispbibl.d (hz): Undefine. 2000-03-30 Bruno Haible * stream.d (oconv_unshift_output_unbuffered_) (oconv_unshift_output_buffered_): Remove junk after #undef. 2000-03-29 Sam Steingold concatenated-stream-streams compiles with ANSI now * stream.d (concatenated_stream_streams): return `strm_concat_list', not `strm_concat_totallist' 2000-03-28 Bruno Haible * lispbibl.d: Change distribution of *_frame_info values: merge CBLOCK_frame_info and CTAGBODY_frame_info into CBLOCK_CTAGBODY_frame_info. Change CALLBACK_frame_info so that it has skip2_bit set to 0. (callback_bit_t): Change meaning and value. (fun_bit_t): Change value. (cframe_bit_t, nested_bit_t): Swap values. * eval.d (unwind): Update. * debug.d (print_stackitem): Update. For a CBLOCK_frame, print the block name, not the entire block cons. 2000-03-28 Bruno Haible * clisp-link.in: Always pass "-norc" flag to lisp.run. 2000-03-23 Bruno Haible * clisp-link.in (create-module-set): Remove generation of variables wfiles_o and wfile_list. 2000-03-21 Sam Steingold * inspect.lsp: use a vector instead of a hash for inspected objects. * clhs.lsp (*browsers*): support more browsers * makemake.in: fix installation of clhs.txt 2000-03-20 Sam Steingold * modules/clx/new-clx/Makefile.in: (CLISP): call clisp with '-norc -q' (clx.d): `e2d' bug workaround: remove ^e_$ 2000-03-19 Bruno Haible * autoconf/aclocal.m4 (CL_STRERROR): New macro. * configure.in: Call it. * unixconf.h.in (HAVE_STRERROR): New macro. * unix.d (strerror): New declaration. * lispbibl.d (init_errormsg_table): Remove declaration. * errunix.d (sys_nerr, sys_errlist): Don't declare if HAVE_STRERROR. (strerror) [!HAVE_STRERROR]: New function. (errormsg_table): Remove variable. (init_errormsg_table): Remove function. (get_errormsg): New function. (OS_error_internal, errno_out): Use get_errormsg instead of errormsg_table. * spvw.d (main): Don't call init_errormsg_table. 2000-03-14 Sam Steingold Integrated inspect * inspect.lsp: new file * init.lsp: load inspect * makemake.in (LPARTS): add inspect 2000-03-13 Bruno Haible * lispbibl.d: Add BeOS support. Based on patch by Alexis Rivera Rios . * unix.d: Likewise. * autoconf/aclocal.m4 (CL_READLINK): Check the return type as well; it may be 'int' or 'ssize_t'. Define RETREADLINKTYPE. * unixconf.h.in (RETREADLINKTYPE): New macro. * unix.d (readlink): Use it. * autoconf/aclocal.m4 (CL_GETHOSTNAME): Try 'unsigned int' as well. * autoconf/aclocal.m4 (RL_SELECT, CL_SELECT): Include . Try 'struct fd_set' as well. 2000-03-13 Bruno Haible * compiler.lsp (compile-file): Don't pass a third argument to the "~%~D error~:P, ~D warning~:P" format string. * lisparit.d: Don't use invalid syntax "## ". * posixmath.d: Don't use invalid syntax "## ". (POSIX:BOGOMIPS): Set mv_count after computing value1, not before. * clhs.lsp: The code lives in package SYSTEM, not LISP. Bind *package* while reading clhs.txt. Verify that the COMMON-LISP symbol is an exported one. * lndir: Fix defaultIFS, broken by Sam's previous patch 1999-12-23. * nls_iso8859_8.c: Regenerate using newest unicode.org table. * cc_sparc.il: Remove obsolete file. 2000-03-08 Bruno Haible * Makefile.devel, configure, makemake.in: Drop oldoldreadline and oldreadline. 2000-03-08 Bruno Haible * spvw.d (main): Emit warning if run without -B command line argument. 2000-03-08 Sam Steingold * stream.d (socket-server): treat NIL as unbound. 2000-03-08 Bruno Haible Remove DOS (EMUNIX && !EMUNIX_PORTABEL, DJUNIX, WATCOM) ports. * errdjgpp.d: Remove file. * lispbibl.d: Remove support for DOS ports. (OS2): Rename from DOSPC. (EMUNIX_PORTABEL): Remove macro, assume it defined whenever EMUNIX is defined. (DJUNIX, WATCOM): Remove macros. (PATHNAME_MSDOS, PATHNAME_EXT83): Remove macro. * msdos.d: Likewise. * aridecl.d, arilev0.d, arilev1.d, constobj.d, constsym.d, error.d, errunix.d, genclisph.d, hashtabl.d, pathname.d, spvw.d, spvw_memfile.d, spvw_sigint.d, spvw_sigwinch.d, stream.d, time.d: Update. * cfgdos.lsp, complete.lsp, defs1.lsp, describe.lsp, edit.lsp, format.lsp, init.lsp, keyboard.lsp, macros2.lsp, runprog.lsp: Remove DOS feature dependencies. * makemake.in: Remove support for dos, dosdjgpp, doswatcom. (INCLUDEDIR): Remove variable. * gettext/po/Makefile.devel (DSOURCES): Remove errdjgpp. * FILES.1: Update. 2000-03-08 Martin Atzmueller * posix.lsp (resolve-host-ipaddr): use :addrtype everywhere (hostent): define struct-slot "addrtype" instead of "addr-type" 2000-03-07 Bruno Haible * describe.lsp (describe-object) [FUNCTION]: If the function's name names a macro, recommend (DISASSEMBLE (MACRO-FUNCTION 'name)) instead of (DISASSEMBLE #'name). Reported by Tijs van Bakel . 2000-03-07 Bruno Haible * stream.d (make_terminal_stream_, rl_memory_abort): Use rl_gnu_readline_p instead of rl_present_p. (init_streamvars): Call _rl_enable_paren_matching. * noreadline.d (rl_gnu_readline_p): Rename from rl_present_p. 2000-03-03 Sam Steingold * clhs.lsp (browse-url): expanded error message. 2000-03-02 Sam Steingold * clos.lsp (slot-names): new function. * describe.lsp (describe-slotted-object): use it. (list-length-dotted): new function. (describe-object): use it. 2000-03-01 Sam Steingold * clhs.lsp, clhs.txt: new files. * init.lsp: load clhs. 2000-02-29 Sam Steingold * loop.lsp (destructure-vars, destructure-type): use tail recursion. 2000-02-28 Martin Atzmueller * reploop.lsp: new and shorter debugger/stepper/main commands; ('error :e) command for printing the error-message again; ('backtrace-l, :bl, 'frame-limit, :fl) implement something similar to the "print-frame-limit"-issue in the TODO list. Translate the comments. 2000-02-18 Sam Steingold Implement the ANSI CL `with-compilation-unit' macro. * compiler.lsp (with-compilation-unit): new macro. (*c-top-call*): new variable. (c-report-problems, c-reset-globals): new functions. (compile-file): use them. (init.lsp, defs3.lsp): export `with-compilation-unit'. 2000-03-06 Bruno Haible * Version 2000-03-06 released. 2000-03-06 Bruno Haible * unix.d: Use clock_t instead of CLOCK_T. * encoding.d: Include . * hashtabl.d (hashcode4_atom): Add default case to switch statement. 2000-03-06 Bruno Haible * dutch.lsp: New file, from Tijs van Bakel . * init.lsp: Load it. * makemake.in (LPARTS): Add dutch. * spvw_language.d (language_dutch): New macro. (init_language_from): Test for values NEDERLANDS and DUTCH. (init_language): Deal with language_dutch. 2000-03-03 Bruno Haible * encoding.d (charset_range): Define only if #ifdef UNICODE. (init_encodings): Initialize O(internal_encoding) only if #ifdef UNICODE. * stream.d (FILE-STRING-LENGTH): If UNICODE is not defined, assume min_bytes_per_char and max_bytes_per_char to be 1. 2000-03-03 Bruno Haible * stream.d (SOCKET-SERVER): In the error message, output the argument, not the symbol STREAM. 2000-03-03 Bruno Haible * defmacro.lsp (macro-call-error): Add missing ~S to English translation. * describe.lsp (describe-object): Fix English message. Reported by Tijs van Bakel . 2000-02-29 Bruno Haible * lispbibl.d (sbNvector_atype, bNvector_atype, type_bits_to_atype): New macros. * array.d (copy_sbvector, array_element_type, test_displaced): Use sbNvector_atype and bNvector_atype. * hashtabl.d (hashcode_bvector): Use sbNvector_atype. * sequence.d (get_seq_type): Use sbNvector_atype and bNvector_atype. 2000-02-25 Bruno Haible * makemake.in: Don't install emacs/*.el any more. 2000-02-22 Bruno Haible * arimips.d (subx_loop_down): If compiling for n32 ABI, the fifth argument comes in a register, not from the stack. 2000-02-18 Bruno Haible * lispbibl.d (oint_symbolflags_shift): Remove obsolete definition. 2000-01-23 Bruno Haible Permit setting *terminal-encoding* to an iconv based stream. * lispbibl.d (set_terminalstream_external_format): New declaration. * stream.d (set_terminalstream_external_format): New function. * encoding.d (SYSTEM::SET-FOREIGN-ENCODING): Call it. 2000-01-23 Bruno Haible * errunix.d (init_errormsg_table): Add EILSEQ. 2000-01-23 Bruno Haible * encoding.d (encoding_from_name): Recognize ISO-8859-3. 2000-01-23 Bruno Haible * configure: Create a libiconv subdirectory, link over the configure script, and run it with --enable-static --disable-shared. * win32msvc/INSTALL: Must pre-build libiconv. * makemake.in (USE_LIBICONV, XCL_ICONVLIB): New variables. (FILES): On Unix, add libiconv.a. (LIBS): Ad $XCL_ICONVLIB. (EVERY_INCLUDES_H): Add iconv.h. (iconv.h, libiconv.a): New targets. (clean1): Also remove libiconv.a. (clean4): Also remove iconv.h. * lispbibl.d (GNU_LIBICONV): Define always. Include "iconv.h". (max_bytes_per_chart): Increase to 8, for ISO-2022-CN[-EXT]. * stream.d: Treat GNU_LIBICONV like HAVE_ICONV. (CLISP_INTERNAL_CHARSET): If using GNU_LIBICONV, define to "UCS-2-INTERNAL". (iconv_init): New macro. (iconv_mblen): After iconv_open, call iconv_init. Treat E2BIG correctly. (iconv_mbstowcs): After iconv_open, call iconv_init. Eliminate gcc warning. (iconv_wcslen): After iconv_open, call iconv_init. Treat E2BIG correctly. (iconv_wcstombs): After iconv_open, call iconv_init. (iconv_range): Likewise. (ChannelStream_init): Likewise. * pseudofun.d: Treat GNU_LIBICONV like HAVE_ICONV. * constsym.d: Add MACINTOSH alias. Add symbols for newly imported encodings from libiconv. * encoding.d: Treat GNU_LIBICONV like HAVE_ICONV. (iconv_first_sym, iconv_last_sym, iconv_num_encodings): New macros. (MAKE-ENCODING): For iconv-based encodings, use max_bytes_per_chart, not 6. (init_encodings): Define CHARSET:MACINTOSH and all symbols corresponding to new imported encodings from libiconv. (encoding_from_name): Map "eucJP" etc. to the new encodings. * type.lsp (table filled by get-charset-range): Avoid filling the cache with large interval lists (comparatively easy to compute). * Makefile.devel (CONFIGURES): Add libiconv/configure. (libiconv/autoconf/aclocal.m4, libiconv/configure): New rules. 2000-01-23 Bruno Haible * utils/unicode/Makefile (ALL): Add nls_iso8859_16.c. (nls_iso8859_16.c): New rule. * nls_iso8859_16.c: New file. * encoding.d: Include nls_iso8859_16.c. (nls_tables): Add nls_iso8859_16. (encoding_from_name): Accept ISO-8859-16. * pseudofun.d (nls_iso8859_16_table): New entry. * makemake.in (NLS_INCLUDES): Add nls_iso8859_16. 2000-01-22 Bruno Haible * asmi386.sh: Terminate the here documents with EOF, not \EOF. 2000-01-15 Bruno Haible * modules/regexp/regexp.lsp (regexp-exec): Remove wrong declaration. 2000-01-12 Sam Steingold * modules/regexp/regexp.lsp (regexp-compile): use `assert' (regexp-exec): `assert' that `string' is a string 2000-01-10 Sam Steingold * posixmisc.d: new file * unixaux.d (sysinfo_, resource_usage_limits_): moved to posixmisc.d 1999-12-31 Bruno Haible * pathname.d (translate_version): Don't access Car(*subst) before checking whether consp(*subst). 1999-12-18 Bruno Haible * spvw_ctype.d (init_ctype): Recognize more language codes: "af" (afrikaans), "ca" (catalan), "eu" (basque), "fo" (faeroese), "ga" (irish), "gd" (scottish), "gl" (galician), "sq" (albanian), "eo" (esperanto), "mt" (maltese), "be" (byelorussian), "et" (estonian), "lt" (lithuanian), "lv" (latvian), "uk" (ukrainian). Recognize more aliases: "english", "slovenian", "macedonian", "serbian", "arabic". Change default: KOI8-R for "ru" (russian) instead of ISO-8859-5, ISO-8859-5 for "sr" instead of ISO-8859-2. 1999-12-18 Bruno Haible * utils/unicode/Makefile (ALL): Add nls_koi8_u.c. (nls_koi8_u.c): New rule. * nls_koi8_u.c: New file. * spvw_ctype.d (init_ctype): Accept KOI8-U. * encoding.d: Include nls_koi8_u.c. (nls_tables): Add nls_koi8_u. (encoding_from_name): Accept KOI8-U. * pseudofun.d (nls_koi8_u_table): New entry. * makemake.in (NLS_INCLUDES): Add nls_koi8_u. 1999-12-29 Sam Steingold * unixaux.d (sysinfo_): add _SC_THREAD_THREADS_MAX * posix.lsp (sysinfo): ditto 1999-12-28 Sam Steingold * posixmath.d: redefine `floor' correctly (to_double, N_D): use functions instead of macros * posix.lsp: `print-object' for `rlimit' and `user-data' * init.lsp: load posix after clos * eval.d: remove all syscalls * constpack.d: add package POSIX * spvw.d, package.d: remove POSIX 1999-12-23 Sam Steingold * subr.d, constsym.d: add `bogomips' and `resource_usage_limits_' * posix.lsp: export `bogomips' and `resource-usage-limits', reduce `sysinfo' * posixmath.d (bogomips): LISPFUNN now * unixaux.d (sysinfo): use uname(2) instead of sysinfo(2), (resource_usage_limits_): new LISPFUNN 1999-12-22 Sam Steingold * unixaux.d (sysinfo): new function * subr.d, constsym.d: add `sysinfo' * eval.d: remove the posix functions * init.lsp: load the new file posix.lsp * posix.lsp: new file * makemake.in (LPARTS): add posix * pathname.d (user_data_): require argument * posixmath.d (bogomips): new function * socket.d (resolve_host_ipaddr_): require argument 1999-12-21 Sam Steingold * posixmath.d: new file; erf(3m), bessel(3m) and gamma(3m) are now accessible in the package POSIX with --export-syscalls. * makemake.in, gettext/po/Makefile.devel: add `posixmath'. * lisparit.d: include posixmath.c. * subr.d, eval.d, constsym.d: add the functions. * constobj.d, package.d (init_packages), spvw.d (init_symbol_tab_2): add package POSIX. * socket.d (resolve_host_ipaddr): moved to POSIX. * pathname.d (file_stat, user_data): ditto. * compiler.lsp (c-DIRECT-FUNCTION-CALL): mention the arithmetic functions. (*deprecated-functions-list*): do not deprecate functions in POSIX. * init.lsp: export the functions from POSIX. 1999-12-07 Bruno Haible * stream.d (iconv_wcslen): At the end, call iconv with NULL input. (iconv_wcstombs): At the end of the standalone case, call iconv with NULL input. (oconv_unshift_output_unbuffered): New macro. (oconv_unshift_output_unbuffered_): New function. (finish_output_unbuffered, force_output_unbuffered, close_ochannel): Call oconv_unshift_output_unbuffered. (oconv_unshift_output_buffered): New macro. (oconv_unshift_output_buffered_): New function. (finish_output_buffered, close_buffered): Call oconv_unshift_output_buffered. 1999-12-07 Bruno Haible * autoconf/aclocal.m4 (CL_WORDS_LITTLEENDIAN): Update for autoconf-2.12. Use AC_CACHE_CHECK instead of AC_CHECK_VAL. 1999-12-07 Bruno Haible * autoconf/aclocal.m4 (CL_ICONV): Check for the iconv function twice, once in libc and once in libiconv, for OSF/1 and FreeBSD. Define LIBICONV. * makemake.in: Use @LIBICONV@ like @LIBTERMCAP@ and @LIBDL@. 1999-12-05 Bruno Haible * utils/unicode/ftp.unicode.org/UnicodeData.txt: Upgrade to Unicode version 3.0. 1999-12-05 Bruno Haible * utils/unicode/Makefile: Use plain-text tables instead of *.in files. * utils/unicode/nls_table.c: New file. * utils/unicode/nls_table.java, utils/unicode/nls_txt_to_in.java: Remove files. * utils/unicode/ftp.unicode.org/*.TXT: Remove files. 1999-12-04 Bruno Haible * stream.d (iconv_mbstowcs, iconv_wcstombs): When called from a stream, and when valid data is followed by invalid data (EILSEQ), return the converted valid data and don't signal an error yet. 1999-11-30 Sam Steingold * spvw.d (init_object_tab): add :SYSCALLS to *FEATURES* when EXPORT_SYSCALLS is defined. 1999-11-27 Bruno Haible * encoding.d (utf8_mblen, utf8_mbstowcs): Make the UTF-8 decoder "safe": Reject overlong byte sequences. 1999-11-27 Bruno Haible * lispbibl.d (char_width): New declaration. * charstrg.d (non_spacing_table_data, nonspacing_table_ind): New arrays. (char_width, CHAR-WIDTH, STRING-WIDTH): New functions. * stream.d (wr_ss_lpos): Call char_width instead of graphic_char_p. Don't assume every character increases the line position by 1. (write_char): Likewise. * io.d (pphelp_string_width): New function. (justify_end_eng, justify_end_weit): Use pphelp_string_width instead of the string's length. * compiler.lsp (subr-info): Add char-width and string-width. * describe.lsp (write-to-short-string): Use string-width instead of the string's length. * format.lsp (format-padded-string, format-justified-segments): Likewise. 1999-11-23 Bruno Haible * lispbibl.d (Array_type_simple_bit_vector): New macro. (simple_bit_vector_p, bit_vector_p): Use it. * spvw_typealloc.d (allocate_bit_vector): Likewise. 1999-11-20 Bruno Haible * asmi386.sh and others: Use temporary files for the sed scripts. GNU sed-2.05 concatenates multiple -e options to a single script with embedded newlines, GNU sed-3.02 does not. 1999-11-09 Bruno Haible * autoconf/acgeneral.m4 (AC_ARG_PROGRAM): Create `conftestsed' once only. 1999-11-25 Bruno Haible * pathname.d (directory_diff_ab): Set new_piece to (cons ':directory subdirs), not (list ':directory subdirs). 1999-11-08 Valeriy E. Ushakov * lispbibl.d (NEED_temp_mv_count, NEED_temp_value1): Define if SPARC && UNIX_NETBSD. 1999-11-10 Bruno Haible * lispbibl.d (TheSarray, TheSbvector, TheCodevec): Fix typo. 1999-11-04 Bruno Haible * modules/clx/mit-clx/clx.lsp (base-char): Don't redefine in CLISP. 1999-11-04 Bruno Haible * affi.d (affi_call_argsa): Treat simple 8/16/32-bit-vectors like non-simple ones. Use array_displace_check instead of iarray_displace_check. * stream.d (test_n_bytes_args): Use array_displace_check instead of iarray_displace_check. * sequence.d (READ-BYTE-SEQUENCE, WRITE-BYTE-SEQUENCE): Likewise. 1999-10-28 Bruno Haible * conditio.lsp (define-condition): Accept a :DEFAULT-INITARGS option. 1999-10-24 Bruno Haible * lispbibl.d (elt_reverse, elt_nreverse): New declarations. * array.d (elt_reverse, elt_nreverse): New functions. * sequence.d (REVERSE): For vectors, use elt_reverse. (NREVERSE): For vectors, use elt_nreverse. 1999-10-23 Bruno Haible * lispbibl.d (uint1_p, uint2_p, uint4_p): New macros. (fehler_index_range, fehler_store, elt_copy, elt_move, elt_fill): New declarations. * array.d (fehler_index_range): Make global. (fehler_store): New function, taken out of storagevector_store. (storagevector_store): Call it. (bit_copy, elt_copy_*_*, elt_copy): New functions. (elt_move_*, elt_move): New functions. (elt_fill): New function. (VECTOR-PUSH-EXTEND): Use the elt_copy_*_* functions. (ssbvector_push_extend): Use elt_copy_8Bit_8Bit. (make_storagevector): Use elt_fill. (reshape): Use elt_copy for speedup. * sequence.d (fehler_vector_index_range): New function. (copy_seqpart_into): For vectors, use elt_copy or elt_move. (MAKE-SEQUENCE, FILL): For vectors, use elt_fill. 1999-10-29 Sam Steingold * modules/regexp/regexp.lsp (with-loop-split): New macro. (regexp-compile, regexp-exec, regexp-split): New functions. (match-once, %match): Use `regexp-compile' and `regexp-exec'. (regexp-compile, regexp-exec, regexp-split, with-loop-split): Export. 1999-10-22 Sam Steingold * modules/clx/new-clx/demos/clx-demos.lsp (x-host-display): return 3 values (host, server, screen). Compile `qix' and `socoban' when compiling `clx-demos'. 1999-10-19 Bruno Haible * array.d (bit_op): Fix memory overrun bug. Require count > 0. (bit_up): Test for len==0 before calling bit_op. 1999-10-19 Bruno Haible * array.d (bit_compare): Fix memory overrun bug. Require count > 0. Optimize the case index1 == index2 mod 8. * lispbibl.d (bit_compare): Require count > 0. * predtype.d (equal): Test for len1==0 before calling bit_compare. 1999-10-19 Bruno Haible * lispbibl.d: Use __sun, not __sun__, as a test for Solaris. 1999-10-18 Bruno Haible * array.d (bit_compare, bit_op): Use `const'. 1999-10-18 Bruno Haible * array.d (bitpack, uint_bitpack, ...): Use 32-bit words if possible. 1999-10-18 Sam Steingold * modules/clx/new-clx/demos/clx-demos.lsp: new file. define the clx-demos package and load the other demos. (getenv): get the environment variable. (x-host-display): parse $DISPLAY. (x-open-display): open the display according to $DISPLAY. * modules/clx/new-clx/demos/qix.lsp (qix): use `x-open-display'. * modules/clx/new-clx/demos/sokoban.lsp (init-sokoban): use `x-open-display'. 1999-10-17 Bruno Haible Introduce new primitive types for simple vectors with element-type (UNSIGNED-BYTE n), n = 2,4,8,16,32. * lispbibl.d (STANDARD_8BIT_TYPECODES): Define sb2vector_type etc. and b2vector_type etc. Define case_sb2vector, case_ob2vector, case_b2vector etc. (case_array): Include case_b2vector etc. (Rectype_b2vector, Rectype_Sb2vector, etc.): New rectype values. (arrayflags_notbytep_bit): Remove. (Array_type_b2vector, Array_type_sb2vector, etc.): New macros. (TheSarray, TheSbvector): Add sb2vector_type etc. (TheCodevec): Needs only s8bvector_type. (TheIarray): Add b2vector_type etc. (TheVarobject, ThePointer): Add sb2vector_type, b2vector_type, etc. (vectorp, simplep, array_simplep, simple_string_p, stringp): Update for changed Rectype values. (simple_bit_vector_p, bit_vector_p): Take two arguments now. (byte_vector_p, general_byte_vector_p): Remove macros. (arrayp): Update for changed Rectype values. (cclosurep): Assume the codevector is an 8bit-vector. (case_Rectype_Sb2vector_above, case_Rectype_ob2vector_above) (case_Rectype_b2vector_above, etc.): New macros. (allocate_bit_vector): Take two arguments now. (DYNAMIC_BIT_VECTOR): Update. (allocate_byte_vector): Remove declaration. * spvw_objsize.d (size_sb2vector etc.): New macros. (objsize): Add cases for sb2vector, ob2vector, etc. (objsize_sb2vector etc.): New inline functions. (init_objsize_table): Add cases for sb2vector, ob2vector, etc. * spvw_global.d (init_mem_heaptypes): Add cases for sb2vector, ob2vector, etc. * spvw_genera1.d (walk_area): Add cases for ob2vector etc. and Rectype_b2vector, Rectype_Sb2vector etc. (build_old_generation_cache): Add cases for ob2vector etc. and Rectype_b2vector, Rectype_Sb2vector etc. * spvw_update.d (update_varobject): Add cases for ob2vector etc. and Rectype_b2vector, Rectype_Sb2vector etc. * spvw_garcol.d (gc_mark): Add cases for sb2vector, ob2vector, etc. and Rectype_b2vector, Rectype_Sb2vector etc. * spvw_typealloc.d (allocate_bit_vector): Take two arguments now. (allocate_handle): Update. * spvw_circ.d (get_circ_mark): Add cases for b2vector etc. and Rectype_b2vector etc. (get_circ_unmark): Likewise. (subst, subst_circ_mark, subst_circ_unmark): Likewise. * array.d (copy_sbvector): Make it work with any simple-[n]bit-vector. (allocate_byte_vector): Remove function. (iarray_displace, iarray_displace_check, array_displace_check): Remove special treatment of indirect byte-arrays. (storagevector_aref, storagevector_store): Update: storage-vectors are now always simple. (array_element_type): Update. (BIT, SBIT): Likewise. (bit_up): Simplify: Array_type_bvector now implies Atype_Bit. Don't set arrayflags_notbytep_bit. (VECTOR-PUSH-EXTEND): Use allocate_bit_vector in place of allocate_byte_vector. (allocate_bit_vector_0): Update. (make_ssstring): Don't set arrayflags_notbytep_bit. (make_ssbvector): Create an 8Bit vector. (ssbvector_push_extend): Update. (make_storagevector): Use allocate_bit_vector in place of allocate_byte_vector. (test_displaced): Update. (MAKE-ARRAY): Update. Don't set arrayflags_notbytep_bit. (reshape): Update. (SYS::MAKE-BIT-VECTOR): Update. * eval.d (get_closure): Create an 8Bit vector. (eval_closure, apply_closure, funcall_closure): Assume the codevector is an 8bit-vector. * record.d (SYS::CLOSURE-CODEVEC): Likewise. (SYS::MAKE-CODE-VECTOR): Create an 8bit-vector. (SYS::%MAKE-CLOSURE): Assume the codevector is an 8bit-vector. * hashtabl.d (hashcode_bvector): Remove special treatment of indirect byte-arrays. (hashcode3_atom): Treat sb2vector_type, b2vector_type etc. and Rectype_Sb2vector, Rectype_b2vector etc. (hashcode4_vector_2Bit etc.): Remove ->data indirection for storage vectors. (hashcode4_vector): Update. (hashcode4_atom): Treat b2vector_type etc. and Rectype_b2vector etc. (sxhash_atom): Likewise. * predtype.d (equal): Simplify: Array_type_bvector now implies Atype_Bit. (elt_compare_T_2Bit etc., elt_compare_Bit_2Bit etc. etc.): Remove ->data indirection for storage vectors. (elt_compare): Update. (equalp): Treat b2vector_type etc. and Rectype_b2vector etc. (BIT-VECTOR-P, SIMPLE-BIT-VECTOR-P): Update. (TYPE-OF, CLASS-OF): Simplify: case_obvector now implies Atype_Bit. Treat sb2vector etc. and ob2vector etc. and Rectype_Sb2vector etc. and Rectype_ob2vector etc. (COERCE): Update. Optimize treatment of result-type = ARRAY/VECTOR/ SIMPLE-ARRAY. (enum_hs_simple_2bit_vector etc., enum_hs_2bit_vector): New enum items. (enum_hs_byte_vector): Remove enum item. (heap_statistics_mapper): Update. Treat sb2vector etc. and ob2vector etc. and Rectype_Sb2vector etc. and Rectype_ob2vector etc. * init.lsp: Export simple-2bit-vector etc. and 2bit-vector etc. Don't export BYTE-VECTOR. * sequence.d (get_seq_type): Update. (READ-BYTE-SEQUENCE, WRITE-BYTE-SEQUENCE): Remove ->data indirection for storage vectors. * io.d (allocate_syntax_table): Allocate an 8Bit-vector. (init_reader): Don't set arrayflags_notbytep_bit. (test_dots, read_internal, uninterned_reader): Assume an 8bit-vector. (bit_vector_reader, array_reader, structure_reader, closure_reader): Update. (prin_object_dispatch): Treat b2vector like normal vector. (pr_orecord): Likewise. (pr_closure, pr_cclosure_codevector): Assume the codevector is an 8bit-vector. * encoding.d (string_to_asciz, string_to_asciz_): Create an 8bit-vector. * stream.d (make_unbuffered_stream, make_buffered_stream): Update. (rd_ch_terminal3): Assume ASCIZ-Strings are 8bit-vectors. (test_n_bytes_args): Simplify test for 8bit-vector. (SYS::READ-N-BYTES, SYS::WRITE-N-BYTES): Remove ->data indirection. (SYSTEM::BUILT-IN-STREAM-SET-ELEMENT-TYPE): Update. * lisparit.d (make_random_state): Update. * pathname.d (EXECUTE): Assume ASCIZ-Strings are 8bit-vectors. * foreign.d (convert_from_foreign_array_fill): Remove ->data indirection. (convert_to_foreign): Simplify test for 8/16/32bit-vector. Remove ->data indirection. * affi.d (affi_call_argsa, SYSTEM::MEM-READ, SYSTEM::MEM-WRITE-VECTOR): Update. Simplify test for 8/16/32bit-vector. 1999-10-17 Bruno Haible Make the TYPECODES model more extensible. * lispbibl.d (SUN4_29_1, SUN4_29_2, ACORN_1, ACORN_2, UNIX_SYSV_UHC_2): Remove definitions. (TYPECODES): Don't define if we can force alignof(subr_) = 4. (oint_type_mask, oint_addr_mask): Remove most old, hand-determined definitions. (TB7, ..., TB0): Never define TB5 to -1. (SUN3_TYPECODES, PACKED_TYPECODES, STANDARD_TYPECODES) (SIXBIT_TYPECODES, SEVENBIT_TYPECODES): Remove all. Replace with STANDARD_8BIT_TYPECODES. (BTB7, ..., BTB0): Define. (addressbus_mask): Use SUN4_29 instead of SUN4_29_1. (subr_): Force alignment 4 if necessary. (vectorp, simplep, array_simplep, arrayp): Update for new typecodes. * genclisph.d (subr_): Force alignment 4 if necessary. (vectorp, arrayp): Update for new typecodes. * spvw.d (init_subr_tab_1): If NO_TYPECODES, verify subr_ alignment. * spvw_memfile.d (memflags): Update. 1999-10-16 Bruno Haible * spvw_garcol.d (update): Insert braces to avoid gcc warning. 1999-10-16 Bruno Haible * arilev0.d (sign_of_sint32): For SPARC64, define using shifts. (sign_of_sint16): Likewise. (mulu16): For SPARC64, use the builtin "umul". (mulu16_): Like for SPARC, also for SPARC64. (mulu24): For SPARC64, use the builtin "umul". (mulu32_): Like for SPARC, also for SPARC64. (divu_3216_1616, divu_3232_3232, divu_6432_3232, divu_32_rest) (isqrt_64_32): Like for SPARC, also for SPARC64. * intlog.d (integerlength8, integerlength16, integerlength32, ord2_32): Don't use SPARC32 version for SPARC64. 1999-10-16 Bruno Haible * utils/unicode/Makefile: Add nls_jisx0201.c to the targets. In the iso-8859-* tables, don't make 0x80..0x9F invalid. Generate nls_koi8_r.c from the ftp.unicode.org table. * encoding.d: Include nls_jisx0201.c. (nls_tables): Add nls_jisx0201_table. (nls_last_sym, nls_num_encodings): Update. * pseudofun.d (nls_jisx0201_table): New entry. * makemake.in (NLS_INCLUDES): Add nls_jisx0201. 1999-10-15 Sam Steingold * modules/clx/new-clx/clx.f (get_font_info_and_display): fix a typo (xatom --> xatoms). 1999-10-06 Bruno Haible * stream.d (low_finish_output_unbuffered_socket) (low_force_output_unbuffered_socket) (low_clear_output_unbuffered_socket): Remove functions. (UnbufferedSocketStream_output_init): Use the equivalent pipe functions instead. Use low_write_unbuffered_pipe instead of low_write_unbuffered_handle. (low_flush_buffered_socket): Use low_flush_buffered_pipe instead of low_flush_buffered_handle. * errunix.d (init_errormsg_table): Change message for EPIPE. 1999-10-05 Sam Steingold * socket.d (ADDR_TO_STRING): new macro (HOSTENT_TO_STACK): use it 1999-09-30 Bruno Haible * genclisph.d (main): Define minus_bit, needed for minus_wbit. Define minus_wbit, needed for framecode. In end_callback, use `framecode' instead of `mtypecode'. Define uintP, needed for framebottomwordf1, needed for finish_frame, needed for begin_callback. 1999-09-23 Bruno Haible * compiler.lsp (c-GLOBAL-FUNCTION-CALL): When pushing forms onto *package-tasks*, quote the arguments only when necessary. 1999-09-20 Bruno Haible * io.d (SET-DISPATCH-MACRO-CHARACTER): Call up_case on sub_char. (GET-DISPATCH-MACRO-CHARACTER): Likewise. 1999-09-12 Bruno Haible * stream.d (UnbufferedStreamLow_pushfront_byte): Increment status by 1, not by 2. (rd_ch_terminal3): Before calling readline(), stuff the pre-read byte into readline's input buffer. 1999-09-12 Bruno Haible * aclocal.m4 (CL_CONNECT): For namelen, also try the type `socklen_t'. Needed on 64-bit Solaris. 1999-09-12 Bruno Haible * stream.d (iconv_wcslen, iconv_wcstombs): Call end_system_call() before signaling an error. 1999-09-12 Bruno Haible * lispbibl.d (fehler_uint8): Declare always, not only ifdef HAVE_FFI. * error.d (fehler_uint8): Define always, not only ifdef HAVE_FFI. * intelem.d (Q_to_I): Define if defined(intQsize), not only if defined(HAVE_FFI) && defined(intQsize). It's needed by DF_to_I. 1999-09-12 Bruno Haible * io.d (klammer_auf, klammer_zu, justify_start, justify_space) (justify_end_eng, justify_end_weit, indent_start, indent_end) (indentprep_start, indentprep_end, pr_enter1): Test for builtin_stream_p before accessing ->strmtype. * encoding.d (SYSTEM::SET-TERMINAL-ENCODING): Likewise. * stream.d (CONCATENATED-STREAM-STREAMS, TWO-WAY-STREAM-INPUT-STREAM) (TWO-WAY-STREAM-OUTPUT-STREAM, ECHO-STREAM-INPUT-STREAM) (ECHO-STREAM-OUTPUT-STREAM): Likewise. (SYSTEM::BUILT-IN-STREAM-SET-ELEMENT-TYPE): If the synonym stream's target is a Gray stream, recurse through (SETF STREAM-ELEMENT-TYPE). 1999-09-12 Bruno Haible * spvw_language.d (init_language): Use `ascii_alphanumericp' instead of `alphanumericp'. 1999-09-12 Bruno Haible * spvw_module.d (main_module): Fix type of declaration. Declare extern, to avoid a warning. 1999-09-12 Bruno Haible * arisparc64.d: Take advantage of the brz and brnz instructions. 1999-09-12 Bruno Haible * arisparc.d (orc2_loop_up): Use the `orn' instruction. 1999-09-12 Bruno Haible * aclocal.m4 (CL_CANONICAL_HOST_CPU, CL_CANONICAL_HOST_CPU_FOR_FFCALL): Tweak test for 64-bit sparc: cc defines `__sparcv9', whereas gcc defines `__arch64__'. * lispbibl.d (SPARC64): Likewise. 1999-09-12 Bruno Haible * spvw_memfile.d (loadmem): Before quitting, close handle if needed. (loadmem_from_handle): Before quitting, always close handle. 1999-08-17 Bruno Haible * aclocal.m4 (CL_SIGNAL_REINSTALL, CL_SIGACTION_REINSTALL): Enable `volatile' for gotsig. 1999-08-15 Bruno Haible * utils/varbrace.d: New file. * makemake.in (NEED_ANSIDECL): Remove variable. (VARBRACE): New Makefile variable. (UTILS, XDECL_FILTER, XDECL_DEPENDENCIES): Add `varbrace'. * spvw_memfile.d (loadmem_from_handle): Define this function always, not only on UNIX. * spvw_sigint.d (react_on_sigint): New function. (interrupt_handler, alarm_handler): Use it. Remove #if across function bodies. * utils/modprep.d (is_if): Check for "#ifndef" as well. 1999-08-15 Bruno Haible * ansidecl.d (char_out, next_token, handle_closing_token): Turn macros into inline function definitions. Speed doesn't matter here. 1999-08-14 Bruno Haible Assume size_t, pid_t, uid_t, gid_t, off_t are defined. * aclocal.m4 (CL_GETPWUID): Don't depend on AC_TYPE_UID_T. (CL_MMAP): Don't depend on AC_TYPE_SIZE_T, AC_TYPE_OFF_T. * configure.in: Don't call AC_TYPE_SIZE_T, AC_TYPE_PID_T, AC_TYPE_UID_T, AC_TYPE_OFF_T. * unixconf.h.in: Don't define size_t, pid_t, uid_t, off_t. No compiler expands __builtin_strcmp inline. * aclocal.m4 (CL_BUILTIN_STRCMP): Remove. * configure.in: Don't call CL_BUILTIN_STRCMP. * unixconf.h.in: Don't define HAVE_BUILTIN_STRCMP. * lispbibl.d (asciz_equal): Don't define as a macro. * spvw.d (asciz_equal): Define as a function always. Assume clock_t is defined. * aclocal.m4 (CL_CLOCK_T): Remove. * configure.in: Don't call CL_CLOCK_T. * unixconf.h.in: Don't define CLOCK_T. * acorn.d: Likewise. * time.d (get_run_time): Use clock_t instead of CLOCK_T. Assume mode_t is defined. * aclocal.m4 (CL_MKDIR): Don't determine MODE_T, use mode_t instead. (CL_OPEN): Use mode_t instead of MODE_T. Don't depend on CL_MKDIR. * unixconf.h.in: Don't define MODE_T. * unix.d: Use mode_t instead of MODE_T. * unixaux.d (nonintr_open): Likewise. Assume ISC and Minix are dead. * configure.in: Don't call AC_ISC_POSIX and AC_MINIX. * unixconf.h.in: Don't define _POSIX_SOURCE, _POSIX_1_SOURCE, _MINIX. Assume rename() is available. * aclocal.m4 (CL_RENAME): Don't test for rename. * unixconf.h.in: Don't define HAVE_RENAME. * unix.d: Assume rename exists. * unixaux.d (rename): Remove function. Assume exists. * aclocal.m4 (CL_ACCESSFLAGS, CL_OPENFLAGS, RL_TERM, CL_MEMSET) (CL_MALLOC, CL_FREE, CL_SIGPROCMASK, CL_SIGNAL_REINSTALL) (CL_SIGNAL_UNBLOCK, CL_SIGNAL_BLOCK_OTHERS, CL_SIGACTION_REINSTALL) (CL_SIGACTION_UNBLOCK, CL_ABORT, CL_GETENV, CL_PUTENV, CL_SETLOCALE) (CL_RLIMIT, CL_VFORK, CL_EXECV, CL_EXECL, CL_WAITPID, CL_RUSAGE) (CL_GETCWD, CL_CHDIR, CL_MKDIR, CL_RMDIR, CL_FSTAT, CL_STAT) (CL_LSTAT, CL_READLINK, CL_ELOOP, CL_OPENDIR, CL_CLOSEDIR, CL_OPEN) (CL_READ_WRITE, CL_WRITE, CL_CHMOD, CL_RENAME, CL_UNLINK, CL_IOCTL) (CL_SELECT, CL_SETITIMER, CL_LOCALTIME, CL_GETPWNAM, CL_GETPWUID) (CL_GETHOSTNAME, CL_GETHOSTBYNAME, CL_ADDRESS_RANGE, CL_MMAP) (CL_MPROTECT, CL_CODEEXEC, CL_SHMGET, CL_SHMAT, CL_SHMCTL) (CL_SHM_RMID, CL_DYNLOAD, CL_ICONV, CL_FILECHARSET): Assume exists. (CL_STDLIB_H): Remove. * configure.in: Don't call CL_STDLIB_H. * unixconf.h.in: Don't define HAVE_STDLIB_H. Assume exists. * aclocal.m4 (CL_STDDEF_H): Remove. * configure.in: Don't call CL_STDDEF_H. * unixconf.h.in: Don't define HAVE_STDDEF_H. Assume waitpid() is available. * aclocal.m4 (CL_WAITPID): Don't test for waitpid or . * unix.d: Assume waitpid exists. * unixaux.d (wait2): Likewise. * sigcld.d (end_want_sigcld): Likewise. * unixconf.h.in: Don't define HAVE_WAITPID and HAVE_SYS_WAIT_H. Assume memset() is available. * aclocal.m4 (CL_MEMSET): Don't test for memset. (CL_SIGACTION_REINSTALL, CL_SIGACTION_UNBLOCK): Assume memset exists. * spvw.d: Likewise. * unix.d: Likewise. * unixaux.d (install_signal_handler): Likewise. * unixconf.h.in: Don't define HAVE_MEMSET. * win32.d: Likewise. * configure.in: Remove AC_C_CONST call. * unixconf.h.in (const): Don't define. * aclocal.m4 (CL_RAISE): Fix harmless typo. * aclocal.m4 (CL_RLIMIT): Prefer RLIMIT_RESOURCE_T="int" to RLIMIT_RESOURCE_T="enum __rlimit_resource". 1999-08-14 Bruno Haible * stream.d (check_float_eltype, READ-FLOAT, WRITE-FLOAT): New functions. * lispbibl.d (c_float_to_FF, FF_to_c_float, c_double_to_DF) (DF_to_c_double): Declare always, not only if HAVE_FFI. * flo_konv.d (c_float_to_FF, FF_to_c_float, c_double_to_DF) (DF_to_c_double): Define always, not only if HAVE_FFI. * floatpri.lsp (write-float-decimal): Rename from write-float. * lisparit.d (print_float): Call sys::write-float-decimal instead of sys::write-float. * type.lsp (canonicalize-type): Call typespec-error if the argument is not a valid typespec. 1999-08-07 Bruno Haible * aridecl.d (FF_exp_low, FF_exp_mid, FF_exp_high): Always choose the IEEE values. (DF_exp_low, DF_exp_mid, DF_exp_high): Likewise. 1999-08-07 Bruno Haible * modules/clx/new-clx/demos/qix.lsp (draw-qix): Don't ignore nlines. Improve herald message. 1999-08-07 Bruno Haible * pathname.d (PARSE-NAMESTRING): Don't make strong assumptions about the algorithm employed by nreconc. Fixes a bug parsing "~/foo/". 1999-08-07 Bruno Haible * makemake.in (install_root): New variable. (installdirs, install-bin, install-man, install-doc, uninstall-bin) (uninstall-man,): Prepend $(install_root) to every installation directory. 1999-07-31 Bruno Haible * spvw_ctype.d (init_ctype): Accept "he" as a new name for "iw". 1999-07-28 Bruno Haible * makemake.in (BINARY_DISTRIB): Also define on HP-UX 10. 1999-07-26 Bruno Haible * pathname.d (init_pathnames) [WIN32_NATIVE]: Follow documented calling convention for GetVersionInfoEx. * misc.d (MACHINE-VERSION) [WIN32_NATIVE]: Likewise. 1999-07-26 Jörg Höhle * screen.lsp (generic-stream-read-char-will-hang-p) (generic-stream-clear-input): Define the methods on keyboard-controller, not screen-controller. 1999-07-22 Bruno Haible * Version 1999-07-22 released. 1999-07-21 Bruno Haible * eval.d (interpret_bytecode_) [MC680X0]: Fix syntax error in S_operand_ignore_ macro. * charstrg.d (stringof): Change dotimesC into dotimesL. 1999-07-20 Bruno Haible * init.lsp (load): Put back the call to ENGLISH. Necessary for internationalization. 1999-07-20 Bruno Haible * aclocal.m4 (CL_RAISE): New macro. * unixconf.h.in (HAVE_RAISE): New macro. * configure.in: Call it. * unix.d (raise): Declare only if HAVE_RAISE is defined. * spvw_sigpipe.d (sigpipe_handler): Use kill(getpid(),...) if HAVE_RAISE is not defined. 1999-07-20 Bruno Haible * makemake.in (distrib): If BINARY_DISTRIB is defined, distribute clisp-link, linkkit, lisp.a etc. nevertheless, because we don't know whether the user has a C compiler or not. 1999-07-19 Bruno Haible * record.d (CLOS::%ALLOCATE-INSTANCE): Fix typo in error message. 1999-07-19 Bruno Haible * asmi386.sh: New optional argument -no-C. * Makefile.devel (src/ari80386.msvc.c, src/sp80386.msvc.c): Pass option -no-C to asmi386.sh. 1999-07-19 Bruno Haible * makemake.in (clisp.html): Substitute CLHSROOT, like in impnotes.html. 1999-07-19 Bruno Haible * stream.d (wr_ch_unbuffered_dos, wr_ch_buffered_dos): Output crlf only when obj is #\Newline. 1999-07-19 Bruno Haible * misc.d (MACHINE-VERSION) [WIN32]: On Win95, use info.dwProcessorType. 1999-07-18 Bruno Haible * makemake.in (XCFLAGS): Add "-fno-gcse" when using gcc-2.95 on Sparc. 1999-07-18 Bruno Haible * spvw.d (usage): Reorder command line options. Split into groups. 1999-07-17 Bruno Haible * lispbibl.d (SPARC64): New macro. Treat SPARC64 mostly like DECALPHA and MIPS64. * arisparc64.d: New file. * spsparc64.d: New file. * arilev0.d (mulu16, mulu32, mulu32_unchecked, divu_3216_1616) (divu_3216_3216, divu_3232_3232, divu_6432_3232): Provide implementations for SPARC64, consistently with arisparc64.d. * arilev1.d [SPARC64]: Include arisparc64 instead of arisparc. * makemake.in (cpu): Possibly set to sparc64. (ARI_ASMD, ARI_ASMS): Possibly add arisparc64. (SP_ASMD, SP_ASMS): Possibly add spsparc64. * FILES.1: Mention arisparc64, spsparc64, arimips64. 1999-07-17 Bruno Haible Remove support for K&R Sparc cc. * makemake.in: If TSYS = sun4 and not compiling with GNU C, assume SunPRO C. Drop dependencies and rules for cc_sparc.il. * cc_sparc.il: Remove file. * FILES.1: Don't mention cc_sparc.il. 1999-07-17 Bruno Haible * autoconf/aclocal.m4 (CL_WORDS_LITTLEENDIAN): Test for `__sparc__', because gcc-2.95 on SparcLinux defines only `__sparc__', not `sparc'. * lispbibl.d: Likewise. 1999-07-17 Bruno Haible * autoconf/aclocal.m4 (CL_CANONICAL_HOST_CPU) (CL_CANONICAL_HOST_CPU_FOR_FFCALL): Distinguish "sparc" and "sparc64" according to the C compiler, not the uname result. 1999-07-17 Bruno Haible * makemake.in: Treat gcc version 3.* like gcc version 2.95. 1999-07-17 Bruno Haible * arisparc.d (compare_loop_up) [COUNTER_LOOPS]: Bug fix. (shiftright_loop_up): Save 1 cycle if count==0. 1999-07-15 Jörg Höhle * affi.d (SYSTEM::MEM-WRITE): No need to check for integerp(wert), it is done later during conversion. * socket.d (socket_getpeername): Fix the length argument to gethostbyaddr. 1999-07-15 Bruno Haible * record.d (FINALIZE): Call coerce_function. 1999-07-09 Jörg Höhle * stream.d (SOCKET-STREAM-HANDLE): Use TheSocket(), not TheHandle(). 1999-07-08 Bruno Haible * stream.d (low_clear_input_unbuffered_handle) [WIN32]: Set the ignore_next_LF flag after eating a CR. (clear_input_unbuffered) [WIN32]: Don't reset the ignore_next_LF flag. 1999-07-08 Bruno Haible * win32aux.d (interruptible_active): New variable. (temp_interrupt_handler): Query it and set it to FALSE. (DoInterruptible): Set it to TRUE only while the thread is running. 1999-07-08 Bruno Haible * misc.d (MACHINE-VERSION) [WIN32]: Use the info.wProcessorLevel field only on WinNT. 1999-07-06 Bruno Haible Don't access objects in memory through `oint*' pointers. * spvw_mark.d (mark, unmark, marked): Use as_object/as_oint conversions instead of oint* memory access. * spvw_update.d (update_STACKs): Use as_oint conversion instead of oint* memory access. * spvw_garcol.d (gc_mark): Change type of `dies_' to `object*'. (gc_mark_stack, alive): Use as_oint conversion instead of oint* memory access. (gc_morris3, update, update_stackobj): Use as_object/as_oint conversions instead of oint* memory access. * spvw_memfile.d (update, loadmem_update): Likewise. * eval.d (nest_var, funcall_iclosure): Likewise. * control.d (make_variable_frame, LET, LET*, SYMBOL-MACROLET) (MULTIPLE-VALUE-BIND): Likewise. 1999-07-04 Bruno Haible * utils/gcc-cccp/cccp.c (output_line_command): In the filename being output, convert backslashes to double backslashes. 1999-07-04 Bruno Haible Make sure the default-file-encoding is set to ISO-8859-1 during building, even if the user has set a different LC_CTYPE variable. * spvw.d (usage): Add -E option. (argv_encoding_file, argv_encoding_pathname, argv_encoding_terminal) (argv_encoding_foreign, argv_encoding_misc): New variables. (main): Add -E option. * _clisp.c (main): Handle -E option. * makemake.in (interpreted.mem, *.fas, lispinit.mem, lispinit2.mem) (testsuite, $(MODULES)): Together with option "-norc", pass "-Efile ISO-8859-1". * encoding.d (encoding_from_name): New function, extracted from init_dependent_encodings. Also accept ISO-8859-10/13/14/15. (init_dependent_encodings): Call it. Respect the values of argv_encoding_file, argv_encoding_pathname, argv_encoding_terminal, argv_encoding_foreign, argv_encoding_misc. 1999-07-04 Bruno Haible Fix interpretation of LC_* and LANG environment variables. * spvw_ctype.d (init_ctype): Treat empty environment values like unset environment variables. LANG is not supposed to contain colons. The encoding can be followed by other suffixes. 1999-07-04 Bruno Haible * lispbibl.d (GENERATIONAL_GC): Don't define on IRIX. 1999-07-04 Bruno Haible * makemake.in (NLS_INCLUDES): Add nls_iso8859_10, nls_iso8859_13. * encoding.d: Include them. (nls_tables): Refer to them. * pseudofun.d: Likewise. 1999-06-25 Sam Steingold * describe.lsp (apropos): print the macro for symbol-macro, no evaluation. (describe-object): ditto. Also, describe CAR & CDR for a simple cons. 1999-06-24 Bruno Haible Don't use Unicode API on Win32. It does not work on Win95. * lispbibl.d, win32.d, spvw.d, spvw_debug.d, spvw_language.d, spvw_memfile.d, encoding.d, charstrg.d, pathname.d, stream.d, misc.d, error.d, errwin32.d, win32aux.d: Revert most of 1999-06-20 patch. 1999-06-23 Bruno Haible * pathname.d (asciz_dir_to_pathname_): Change declaration of pathbuf. * errwin32.d (OS_error_internal_body): Fix compilation error. 1999-06-20 Bruno Haible Try to solve startup problems on Win95. * spvw.d (main) [TRIVIALMAP_MEMORY]: Call prepare_zeromap with shrinkp=FALSE. 1999-06-20 Bruno Haible Determine the initial encoding by examining the user's locale. * lispbibl.d (init_dependent_encodings): New declaration. * spvw_ctype.d: New file. * spvw.d: Include always. Include spvw_ctype.d. (main): Remove LC_CTYPE code, instead call `init_ctype'. Later, call `init_dependent_encodings'. * encoding.d (init_dependent_encodings): New function, moved out of init_encodings. default-file-encoding and the others depend on locale_charset. (init_encodings): Call init_dependent_encodings. * makemake.in (SPVW_INCLUDES): Add spvw_ctype. * gettext/po/Makefile.devel (DSOURCES): Add spvw_ctype. 1999-06-20 Bruno Haible Use Unicode API on Win32. * lispbibl.d (wchar, WLITERAL): New macros. (wgetenv): New macro. (wasciz_out, wasciz_length): New declaration. (wasciz_equal, wwasciz_equal): New declaration. (n_char_to_string): Rename from make_string. (n_wchar_to_string): New declaration. (wasciz_to_string): New declaration. (with_string_w0, with_sstring_w0): New macros. (n_chart_to_wchar): New declaration. * win32.d (wgetenv): New macro. * spvw.d (wasciz_length, wasciz_equal, wwasciz_equal): New functions. (program_name): Change type to `wchar*'. (loadmem): Change declaration. (usage): Call wasciz_out instead of asciz_out. (main): On Win32 with UNICODE, rename to `wmain'. Change type of argv to `wchar* []'. Change types of argv_lisplibdir, argv_memfile, argv_init_files, argv_compile_files, argv_package, argv_expr, argv_execute_file, argv_execute_args, argv_language, argv_localedir, argv_init_files, argv_compile_files to use `wchar' instead of `char'. Use wasciz_equal, wasciz_to_string, wasciz_out and WLITERAL where appropriate. * spvw_debug.d (wasciz_out): New function. * spvw_language.d (init_language, init_language_from): Change declarations. (init_language_from): Use wasciz_equal instead of asciz_equal. (init_language): Use wgetenv instead of getenv where appropriate. * spvw_memfile.d (loadmem): Change declaration. Use wasciz_equal instead of asciz_equal where appropriate. * encoding.d (n_char_to_string): Rename from make_string. (n_char_to_string_): Rename from make_string_. (n_wchar_to_string_): New function. (asciz_to_string, asciz_to_string_): Update. (wasciz_to_string_): New function. * charstrg.d (n_chart_to_wchar): New function. * pathname.d (make_directory, delete_directory) (change_current_directory, delete_existing_file) (delete_file_if_exists, delete_file_before_rename) (rename_existing_file, rename_file_to_nonexisting): Change declaration. (asciz_dir_to_pathname): Change declaration. Use n_wchar_to_string instead of make_string. (good_drive): Use wchar instead of char. (default_drive): Return wchar instead of uintB. Use wchar instead of char. (default_directory_of): Use wchar instead of char. (assure_dir_exists): Likewise. Use n_wchar_to_string instead of make_string. (change_default): Use wchar instead of char. (access0): Change declaration. (file_exists): Use wchar instead of char. (directory_exists, DELETE-FILE, rename_file): Likewise. (create_new_file, open_input_file, open_output_file): Change declaration. (create_backup_file): Change declaration. Use wchar instead of char. (open_file): Use wchar instead of char. (extract): Use n_char_to_string instead of make_string. (directory_search_1subdir): Use wchar instead of char. (directory_search_scandir): Use n_char_to_string instead of make_string. Use wchar instead of char. Use wasciz_to_string instead of asciz_to_string. (DIRECTORY): Use n_char_to_string instead of make_string. (MAKE-DIR, DELETE-DIR, ENSURE-DIRECTORIES-EXIST): Use wchar instead of char. (init_pathnames): Use n_char_to_string instead of make_string. Use wchar instead of char. Use wgetenv instead of getenv. (FILE-WRITE-DATE, SHELL): Use wchar instead of char. (argv_lisplibdir): Change declaration. * stream.d (make_keyboard_stream): Use wchar instead of char. (create_input_pipe): Change declaration. (MAKE-PIPE-INPUT-STREAM): Update. (create_output_pipe): Change declaration. (MAKE-PIPE-OUTPUT-STREAM): Update. (create_io_pipe): Change declaration. (MAKE-PIPE-IO-STREAM): Update. * misc.d (SYS::GETENV): Use wchar instead of char. On Win32 with UNICODE, use _wgetenv. Use wasciz_to_string instead of asciz_to_string. (SYS::REGISTRY): Use wchar instead of char. * error.d (write_errorasciz, write_errorwasciz): New functions. * erramiga.d (OS_error_internal): Use write_errorasciz instead of write_errorstring. * errdjgpp.d (OS_error_internal): Likewise. * errunix.d (OS_error_internal): Likewise. * errwin32.d (OS_error_info): Remove type. (OS_error_info_callback): New type. (get_OS_error_info): Take a callback and call it, instead of returning the result in a structure. Use wchar instead of char. (OS_error_internal_body): New function, split out of OS_error_internal. Call write_errorasciz and write_errorwasciz instead of write_errorstring. (SOCK_error): Call write_errorasciz instead of write_errorstring. (errno_out_body): New function, split out of errno_out. Call wasciz_out. * rexx.d (rexx_getmsg): Use n_char_to_string instead of make_string. * win32aux.d (init_win32): Call non-Unicode versions of OemToChar and CharToOem. * genclisph.d (n_char_to_string): Rename from make_string. 1999-06-20 Bruno Haible Don't force building clisp.dvi on non-Unix OSes. * makemake.in (MANUALS): Remove clisp.dvi. (manual): Add it, on Unix only. (manualx): Add it, on non-Unix only. (install-doc, uninstall-man): Treat it like $(MANUALS). 1999-06-20 Bruno Haible * cfgacorn.lsp, cfgamiga.lsp, cfgdos.lsp, cfgwin32.lsp (*clhs-root-default*): Assign default value. * makemake.in (config.lsp): Emit "echo ... >> config.lsp" only for Unix. 1999-06-18 Bruno Haible * stream.d (low_flush_buffered_socket): Call sock_write, not full_write. 1999-06-18 Bruno Haible * stream.d (create_input_pipe): New function. (MAKE-PIPE-INPUT-STREAM): Call it. (create_output_pipe): New function. (MAKE-PIPE-OUTPUT-STREAM): Call it. (create_io_pipe): New function. (MAKE-PIPE-IO-STREAM): Call it. 1999-06-18 Bruno Haible * socket.d (inet_addr): Don't declare on WIN32. (setsockopt): Remove second declaration. (SOCKET-SERVICE-PORT): On WIN32, use a replacement for getservent(). 1999-06-18 Bruno Haible * makemake.in (callback.h): Copy also vacall_r.h and trampoline_r.h. 1999-06-18 Bruno Haible * lispbibl.d (GETTEXT): Define also if not using GNU_GETTEXT. 1999-06-18 Bruno Haible * places.lsp (MACRO-FUNCTION): Ignore `env'. 1999-06-18 Bruno Haible * stream.d (strm_keyboard_len): Define as strm_len, not 0. (make_keyboard_stream): Don't add strm_len to strm_keyboard_len, it is already included. 1999-06-17 Bruno Haible * lispbibl.d (malloc, free): Remove declarations. (malloca, freea): Move declarations. (DRIVER_frame_data): Remove type. * spvw_alloca.d (malloc, free): New declarations. * aridecl.d (HAVE_NUM_STACK, NUM_STACK, NUM_STACK_bound) (NUM_STACK_normal): Remove declarations. (num_stack_need, num_stack_need_1): Remove obsolete code. Add `unused' to avoid gcc warnings. (NUM_STACK_normal, arith_ueberlauf, compare_NUM_STACK_bound): Remove. (SAVE_NUM_STACK, RESTORE_NUM_STACK. num_stack_need) (num_stack_need_1): New definitions, using malloca/freea. * intlog.d (I_I_logior_I, I_I_logxor_I, I_I_logand_I, I_I_logeqv_I) (I_I_lognand_I, I_I_lognor_I, I_I_logandc2_I, I_I_logorc2_I) (I_lognot_I): Defer RESTORE_NUM_STACK until done with the temporary digit sequence. (I_I_ash_I): Do RESTORE_NUM_STACK before error. * intplus.d (DS_1_plus, DS_minus1_plus): Do RESTORE_NUM_STACK before error. (I_1_plus_I, I_minus1_plus_I): Defer RESTORE_NUM_STACK until done with the temporary digit sequence. (I_I_plus_I, I_minus_I, I_I_minus_I): Likewise. Do RESTORE_NUM_STACK before error. * intbyte.d (lb_extract): Move SAVE_NUM_STACK and defer RESTORE_NUM_STACK until done with the temporary digit sequence. (mkf_extract): Likewise. * intmal.d (UDS_square_UDS): Do RESTORE_NUM_STACK before error. (I_square_I): Move SAVE_NUM_STACK and defer RESTORE_NUM_STACK until done with the temporary digit sequence. (UDS_UDS_mal_UDS): Do RESTORE_NUM_STACK before error. (I_I_mal_I): Move SAVE_NUM_STACK and defer RESTORE_NUM_STACK until done with the temporary digit sequence. * intdiv.d (UDS_divide_): Move SAVE_NUM_STACK and defer RESTORE_NUM_STACK until done with the temporary digit sequence. (I_I_divide_I_I): Defer SAVE_NUM_STACK until needed. Defer RESTORE_NUM_STACK until done with the temporary digit sequence. * intgcd.d (I_I_gcd_I) [1]: Defer RESTORE_NUM_STACK until done with the temporary digit sequence. (I_I_gcd_I) [3]: Likewise. (I_I_xgcd_I_I_I) [3]: Do RESTORE_NUM_STACK before side return. * intsqrt.d (UDS_sqrt_): Defer RESTORE_NUM_STACK until done with the temporary digit sequence. (I_isqrt_I, I_sqrtp): Move SAVE_NUM_STACK and defer RESTORE_NUM_STACK until done with the temporary digit sequence. (I_rootp): Defer RESTORE_NUM_STACK until done with the temporary digit sequence. * intread.d (DIGITS_to_I): Defer RESTORE_NUM_STACK until done with the temporary digit sequence. * dfloat.d (DF_DF_durch_DF): Defer RESTORE_NUM_STACK until done with the temporary digit sequence. (DF_sqrt_DF): Likewise. * lfloat.d (LF_ftruncate_LF, LF_futruncate_LF, LF_fround_LF): Defer RESTORE_NUM_STACK until done with the temporary digit sequence. (LF_LF_plus_LF): Do RESTORE_NUM_STACK before error or return. (LF_square_LF): Move SAVE_NUM_STACK and defer RESTORE_NUM_STACK until done with the temporary digit sequence. Do RESTORE_NUM_STACK before error or return. (LF_LF_mal_LF): Likewise. (LF_LF_durch_LF): Likewise. (LF_sqrt_LF): Likewise. (LF_to_I): Move SAVE_NUM_STACK. * realrand.d (I_random_I): Move SAVE_NUM_STACK and defer RESTORE_NUM_STACK until done with the temporary digit sequence. * lisparit.d (mal_10_plus_x): Defer RESTORE_NUM_STACK until done with the temporary digit sequence. Do RESTORE_NUM_STACK before error. (decimal_string): Defer RESTORE_NUM_STACK until done with the temporary digit sequence. * eval.d (unwind): No need to reset NUM_STACK when reaching a DRIVER_frame. * debug.d (driver): No need to save current NUM_STACK in the frame. (break_driver): No need to save and restore NUM_STACK. * control.d (SYS::DRIVER): No need to save current NUM_STACK in the frame. * spvw.d: No need any more for include "aridecl.c". (main): Remove teile_NUM_STACK, assume it is 0. 1999-06-17 Bruno Haible * intlog.d (I_I_ash_I): Restrict begin/end_arith_call() to the case where it is needed. * intbyte.d (lb_extract): Restrict begin/end_arith_call() to the case where it is needed. * intmal.d (I_square_I): Move begin_arith_call() until after num_stack_need. * intgcd.d (I_I_gcd_I) [3]: Move begin_arith_call() until after num_stack_need. (I_I_xgcd_I_I_I) [3]: Likewise. * intsqrt.d (UDS_sqrt_): Move begin_arith_call() until after num_stack_need. (I_rootp): Likewise. * lfloat.d (LF_LF_plus_LF): Move begin_arith_call() until after num_stack_need. (LF_sqrt_LF): Restrict begin/end_arith_call() to the case where it is needed. * realelem.d (R_R_gleich): Restrict begin/end_arith_call() to the case where it is needed. * lisparit.d (mal_10_plus_x): Restrict begin/end_arith_call(). 1999-06-17 Bruno Haible * intelem.d (FN_to_NDS_nocopy, I_to_NDS_nocopy): Expand into more efficient code. (FN_to_NDS_nocopy_): New macro. (BN_to_NDS_nocopy): Add `unused' to avoid gcc warnings. * intmal.d (I_I_mal_I): Put brace around I_to_NDS_nocopy. * intdiv.d (I_I_divide_I_I): Put brace around I_to_NDS_nocopy. * intsqrt.d (I_rootp): Put brace around I_to_NDS_nocopy. 1999-06-16 Bruno Haible * spvw_sigsegv.d (stackoverflow_handler): Restore the STACK on Solaris and OSF/1 as well. * lispbibl.d: After sigsegv.h is included, undefine DS, SP, EAX. 1999-06-16 Bruno Haible * lispbibl.d (UNIX_OPENBSD): New macro. * eval.d (interpret_bytecode_): Use hairy gas assembler syntax only on Linux and *BSD, never on other OSes. 1999-06-16 Bruno Haible * eval.d (interpret_bytecode_): Use "\n\t" as assembler statement separator instead of ";". 1999-06-16 Bruno Haible * describe.lsp (describe-object): Put back i18n call around punctuation strings. * socket.d (resolve_host_ipaddr): Likewise. 1999-06-13 Bruno Haible * lispbibl.d, genclisph.d: Prepare for __GNUC__ == 3. 1999-06-15 Bruno Haible * compiler.lsp (macroexpand-1): Do not pass ENV to `macro-function'. (c-form): Do not pass ENV to `macro-function'. * places.lsp (MACRO-FUNCTION): Add optional, ignored env argument. * control.d (SYSTEM::OLD-MACRO-FUNCTION): New function. * eval.d (FUNTAB): Use it instead of MACRO-FUNCTION. * compiler.lsp (funtab): Likewise. * sequence.d (test_count_arg): Simplify. 1999-06-10 Sam Steingold * describe.lsp (describe-object): dump `ENGLISH' before ".". * socket.d (resolve_host_ipaddr): correct the order of arguments in the `fehler' call. * init.lsp (*load-level*): new variable. (load): use it to indent the verbose printout nicely. 1999-06-10 Sam Steingold * list.d (nreconc): be as smart about `nreconc' as we are about `nreverse'. 1999-06-09 Sam Steingold * misc.d (set-ansi): set `*coerce-fixnum-char-ansi*', `*sequence-count-ansi*', and `*print-pathnames-ansi*'. * constsym.d: add `*coerce-fixnum-char-ansi*', `*sequence-count-ansi*', and `*print-pathnames-ansi*'. * spvw.d: add `*coerce-fixnum-char-ansi*', `*sequence-count-ansi*', and `*print-pathnames-ansi*'. * sequence.d (test_count_arg): check `*sequence-count-ansi*'. * io.d (pr_orecord): check `*print-pathnames-ansi*'. * charstrg.d (coerce_char): check `*coerce-fixnum-char-ansi*'. * places.lsp: add documentation for `*ansi*'. 1999-06-09 Sam Steingold Implement the ANSI CL Issue MACRO-FUNCTION-ENVIRONMENT:YES * control.d (macro_function): optional second argument. * subr.d (macro_function): ditto. * compiler.lsp (macroexpand-1): pass ENV to `macro-function' (subr-info): optional second argument of `macro-function'. (c-form): pass ENV to `macro-function'. 1999-06-08 Sam Steingold * describe.lsp (apropos-do-more): new function. (apropos): use it. (describe-object package): `*describe-nesting*' should be checked for being 0, not 1. 1999-06-08 Bruno Haible * compiler.lsp (*toplevel-environment*, *toplevel-denv*): Move variables... * init.lsp (*toplevel-environment*, *toplevel-denv*): ... to here. 1999-06-08 Bruno Haible * intparam.d (printf_underscored): Change argument type to `const char*'. 1999-06-08 Bruno Haible * init.lsp (defun): Don't use get-funname-symbol, to avoid bootstrapping problems. 1999-06-07 Bruno Haible SOCK_error() generates an error of type `os-error'. * errwin32.d (SOCK_error): use `simple_os_error'. 1999-06-06 Bruno Haible Make DEFUN behave the same way w.r.t. inlining, whether executing compiled or interpreted. * compiler.lsp (compile-form-in-toplevel-environment): New function. * init.lsp (load): Call it, don't pass nil as %denv% to compile-form. (defun): Save the lambdabody for inline compilation also when running interpreted. 1999-06-06 Bruno Haible New command-line option "-w". * spvw.d (usage): Mention "-w". (argv_wait_keypress): New variable. (main): Set it if option "-w" is given. (quit): If argv_wait_keypress, emit a message and call WAIT-KEYPRESS. * _clisp.c (main): Accept "-w". * keyboard.lsp (wait-keypress): New function. 1999-06-06 Bruno Haible * describe.lsp (describe-object): Treat FOREIGN-FUNCTION, SYMBOL-MACRO, ENCODING. 1999-06-06 Bruno Haible Make DESCRIBE more robust against interruptions. * describe.lsp (describe-stream): New stream class. (stream-*): New methods on describe-stream. (describe-slotted-object): Omit all *describe-nesting* indentations. Add *print-indent-lists* to tabpos. Call describe with stream, not *standard-output*. (describe-object): Omit all *describe-nesting* indentations. Call describe with stream, not *standard-output*. (describe-object) [PACKAGE]: Tweak spacing. (describe1): New function. (describe): Bind *describe-nesting* and *describe-done* instead of setting them. In top-level calls, create a describe-stream. (describe-signature): Omit all *describe-nesting* indentations. 1999-06-06 Bruno Haible * room.lsp (room, space-tabulate): Use *print-right-margin* instead of sys::*prin-linelength* when it is non-NIL. * describe.lsp (describe): Likewise. * compiler.lsp (compile-file): Likewise. 1999-06-06 Bruno Haible * describe.lsp (describe-slotted-object, describe-object, describe) (describe-signature): Fix amount of indentation white space. (describe): Bind *describe-nesting* instead of setting it. This ensures it goes back to 0 after describe signalled an error. 1999-06-05 Bruno Haible * io.d (READ-CHAR-STATUS): Remove function. (READ-CHAR-WILL-HANG-P): New function. * stream.d (listen_generic): Call GENERIC-STREAM-READ-CHAR-WILL-HANG-P instead of GENERIC-STREAM-READ-CHAR-STATUS. (stream_listen): Call STREAM-READ-CHAR-WILL-HANG-P instead of STREAM-READ-CHAR-STATUS. * gstream.lsp (stream-read-char-status): Remove function. (stream-read-char-will-hang-p): New function. (generic-stream-read-char-status): Remove function. (generic-stream-read-char-will-hang-p): New function. * screen.lsp (generic-stream-read-char-status@screen-controller): Remove method. (generic-stream-read-char-will-hang-p@screen-controller): New method. 1999-06-05 Bruno Haible * describe.lsp (apropos-list, *apropos-do-more*, apropos): Move. 1999-06-04 Bruno Haible * cfgwin32.lsp (clhs-root): Don't signal an error if value not defined in registry. 1999-06-04 Sam Steingold * makemake.in: setq `*clhs-root-default*' in config.lsp. * cfgunix.lsp (clhs-root): new function. (*clhs-root-default*): new variable. * cfgacorn.lsp, cfgamiga.lsp, cfgdos.lsp, cfgsunux.lsp, cfgwin32.lsp: Likewise. 1999-06-01 Bruno Haible * trace.lsp (untrace1): Don't use replace-in-fenv here either. 1999-06-01 Bruno Haible * makemake.in (READLINELIB): Don't pass option "-r" to $(MAKE) for building in subdirectory. It doesn't work with Irix 6.5 `make' because readline/Makefile.in uses implicit rules. 1999-06-01 Bruno Haible * lispbibl.d (Encoding): Add enc_towcs_error, enc_tombs_error slots. (encoding_length): Update. * encoding.d (uni32_mblen, uni32be_mbstowcs, uni32le_mbstowcs) (utf8_mblen, utf8_mbstowcs): Error handling respects enc_towcs_error. (nls_asciiext_mblen, nls_asciiext_wcslen): New functions. (nls_mblen, nls_mbstowcs, nls_asciiext_mbstowcs): Error handling respects enc_towcs_error. (nls_wcslen, nls_wcstombs, nls_asciiext_wcstombs): Error handling respects enc_tombs_error. (MAKE-ENCODING): Two new keyword arguments. Fully initialize newly allocated encoding. (init_encodings): Fully initialize newly allocated encodings. Stuff in nls_asciiext_mblen, nls_asciiext_wcslen where appropriate. Pass two more unbounds to C_make_encoding. * stream.d (test_external_format_arg): Pass two more unbounds to C_make_encoding. (iconv_mblen, iconv_mbstowcs): EILSEQ treatment respects enc_towcs_error. (iconv_wcslen, iconv_wcstombs): EILSEQ treatment respects enc_tombs_error. * pseudofun.d: Add nls_asciiext_mblen, nls_asciiext_wcslen. * type.lsp (canonicalize-type, encoding-charset): Update sys::%record-ref argument. 1999-06-01 Bruno Haible * aclocal.m4 (CL_CANONICAL_HOST_CPU, CL_CANONICAL_HOST_CPU_FOR_FFCALL): Canonicalize alpha variants to alpha. 1999-05-30 Bruno Haible * makemake.in (CFILES): Don't include $UNICODE_INCLUDES $NLS_INCLUDES. (init): Instead, add them to the `init' target. 1999-05-30 Bruno Haible Libtoolify avcall and callback. * foreign.d: Include avcall.h and callback.h. * makemake.in (foreign): Depend on avcall.h and callback.h. (avcall.h, libavcall.a, callback.h, libcallback.a): Create by doing "make install-lib" in the subdirectory. (clean1): Remove libavcall.* and libcallback.*. (clean4): Remove avcall.h and callback.h. 1999-05-30 Bruno Haible * asmi386.hh (DECLARE_FUNCTION): New macro. (INSN2MOVX): Fix bug with ANSI C preprocessors. (ALIGN): Don't put parentheses. For Solaris/x86. * asmi386.sh: Introduce C(...) macro calls. Recognize more jumps. Introduce DECLARE_FUNCTION(...) macro calls. 1999-05-30 Bruno Haible * makemake.in (sigsegv.h, libsigsegv.a): Do "make install-lib" instead of "make install". (clean1): On Win32, remove sigsegv.lib, not libsigsegv.*. 1999-05-30 Sam Steingold Bruno Haible Implement ALLOCATE-INSTANCE. * record.d (clos::old-%allocate-instance): Rename from clos::%allocate-instance. (clos::%allocate-instance): New function, with &rest arguments. (do_allocate_instance): New function. Remove unneeded if_classp check. (clos::%initialize-instance): Adapt to new format of *make-instance-table* entries. (clos::%make-instance): Likewise. Call do_allocate_instance, or the effective method for allocate-instance if it is not the default one. * eval.d (FUNTAB): clos::old-%allocate-instance replaces clos::%allocate-instance. * compiler.lsp (funtab, c-DIRECT-FUNCTION-CALL): Likewise. * init.lsp: Export allocate-instance. * defs3.lsp: Likewise. * clos.lsp: Likewise. (*dynamically-modifiable-generic-function-names*): Add `allocate-instance'. (|#'allocate-instance|): New variable. (std-add-method, std-remove-method): When changing allocate-instance, call note-ai-change. (note-i-meta-change, note-ai-change): New functions. (valid-make-instance-keywords): Add the ALLOCATE-INSTANCE keywords. (make-instance-table-entry1): New function. (make-instance-table-entry2): Return 2 values. (initialize-instance@standard-object): Adapt to new format of *make-instance-table* entries. (initial-initialize-instance): Create new-style *make-instance-table* entry. (allocate-instance): New generic function. (initial-make-instance): Call the effective method for allocate-instance. Create new-style *make-instance-table* entry. 1999-05-29 Bruno Haible * makemake.in: Change a few occurrences of ${NEXT_M} to ${NEXT_}. 1999-05-29 Bruno Haible Make --with-unicode the default. * makemake.in (info_help): Mention --without-unicode instead of --with-unicode. (XCFLAGS, UNICODE_INCLUDES, NLS_INCLUDES): Test $with_nounicode instead of $with_unicode. * configure: Don't pass --with-unicode to makemake. * Makefile.devel (*/makefile*): Create without --with-unicode. 1999-05-27 Bruno Haible * type.lsp: (def-atomic-type, def-compound-type): New macros. (c-typep-alist1, c-typep-alist2, c-typep-alist3): Fill here. * compiler.lsp: Not here. 1999-05-27 Bruno Haible * makemake.in (clean1): Remove libsigsegv.la. (clean4): Remove libintl.h, sigsegv.h. (clean5): Remove ANNOUNCE, GNU-GPL, SUMMARY, version.h, NEWS, clisp.gif, MAGIC.add, ccmp2c, modprep. 1999-05-27 Bruno Haible * makemake.in (clean1, clean2): Don't remove wlisp* and wsuite*. 1999-05-25 Bruno Haible * makemake.in (sigsegv.h, libsigsegv.a): Generate by calling "make install" in the subdirectory, not through symlinks. 1999-05-24 Bruno Haible * configure.in: Add check for groff. * makemake.in (GROFF): New variable. (htmldir, dvidir): New Makefile variables. (ROFF_MAN, ROFF_DVI): Set if $GROFF is nonempty. (ROFF_DVI): Don't define if $GROFF is empty. (clisp.dvi): Create if and only if $GROFF is nonempty. (MANUALS): Include clisp.dvi if and only if $GROFF is nonempty. (installdirs): Create $(htmldir) and $(dvidir) instead of $(mandir)/html. (install-man): Clean up dependencies. Use $(htmldir) and $(dvidir) instead of $(mandir)/html. Install clisp.dvi and clreadline.dvi if appropriate. (uninstall-man): Use $(htmldir) and $(dvidir) instead of $(mandir)/html. Also remove clisp.dvi and clreadline.dvi. (distrib): Distribute clisp.dvi if and only if $GROFF is nonempty. (clean1): Also remove clisp.dvi. * _distmakefile (htmldir, dvidir): New variables. (install-man): Install clisp.1 without modifications. Also install clisp.html, clisp.dvi, clreadline.html, clreadline.dvi. 1999-05-24 Bruno Haible * configure: In avcall and callback, do "make minicheck" instead of "make check". 1999-05-24 Bruno Haible * macros2.lsp (check-type): Don't quote the string argument. * conditio.lsp (check-type): Likewise. 1999-05-23 Bruno Haible * makemake.in (distrib): Reorganize. Distribute the data/ directory and its contents. Distribute the `full' linking set also if BINARY_DISTRIB is set. 1999-05-23 Bruno Haible Make `clisp' an executable, also in the case of UNIX_BINARY_DISTRIB. * _clisp.c [UNIX_BINARY_DISTRIB] (room_for_lisplibdir, room_for_localedir): New arrays. (LISPLIBDIR, LOCALEDIR): New definitions, pointing into the arrays. * utils/hardcode.c: New file. * _distmakefile: Treat UNIX_BINARY_DISTRIB like other UNIX platforms. (install): Create `clisp' as an executable, using `hardcode', not as a shell script. * makemake.in (BINARY_DISTRIB): Also define on HP-UX 11. (GOOD_SH): Remove definition. (distrib): Distribute `clisp' and `hardcode'. * spvw.d (main, usage): Option -K is now available on all Unix platforms. * configure.in: Remove call to CL_SHELLARGS. * unixconf.h.in (UNIX_USE_KSH, UNIX_BROKEN_SH): Remove definitions. 1999-05-23 Bruno Haible * makemake.in (install-bin): Copy base/ and full/ using cp, not tar, because they contain symbolic links. 1999-05-23 Bruno Haible Make modules.o part of every linking set, including `base'. * makemake.in (lisp.a): Don't include modules.o. (modular): Depend on modules.o. (base): Link over modules.o. (distmakefile): Add modules.o to the BASE_LIBS and BASE_FILES substitution. (distrib): Link over modules.o into $(TOPDIR)/base. * clisp-link.in (add-module-set): Check that the linking set contains a file `modules.o'. (add-module-sets): Likewise. When no new modules, copy modules.o in any case. (run): Check that the linking set contains a file `modules.o'. 1999-05-23 Bruno Haible * makemake.in (distmakefile): Don't set $wlibs, not needed any more. 1999-05-20 Bruno Haible * spvw.d (initmem): Don't call SYS::SET-ANSI (no need, doesn't work). 1999-05-16 Bruno Haible * intlog.d (integerlength32) [RS6000]: Use new or old mnemonics depending on OS. 1999-05-16 Bruno Haible Libtoolify sigsegv. * autoconf/libtool.m4: New file, from libtool-1.2. 1999-05-16 Bruno Haible For Linux 2.0.x with glibc2.0. * aclocal.m4 (CL_SIGALTSTACK): Define HAVE_SIGALTSTACK only if the sigaction flags macro SA_ONSTACK is also defined. 1999-05-13 Gilbert Baumann * sequence.d (READ-CHAR-SEQUENCE): Changed calls to `iarray_displace_check' to `array_displace_check'. Adjusted return value: The first position not written is returned. (WRITE-CHAR-SEQUENCE): Likewise, uses `array_displace_check' now. (WRITE-BYTE-SEQUENCE): In case of (VECTOR (UNSIGNED-BYTE 8)) use another indirection via '->data' before calling 'read_byte_array'. (READ-BYTE-SEQUENCE): Likewise. Additionally the first position not written is returned. 1999-05-13 Bruno Haible * spvw.d (init_symbol_values): Don't call a function here, too early. (initmem): Call SYS::SET-ANSI here. 1999-05-13 Bruno Haible * lispbibl.d (stream_fd): Move declaration. * stream.d (stream_fd): Move function. 1999-05-13 Bruno Haible Followup to Sam's 1999-04-07 patch. * eval.d (check_for_illegal_keywords): Remove misplaced symbolp test. * defmacro.lsp (analyze-key): Use symbolp instead of keywordp. * compiler.lsp (test-argument-syntax): Likewise. (kvalue-form-index): Likewise. * conditio.lsp (expand-restart-case): Likewise. * error.d (SYSTEM::CERROR-OF-TYPE, SYSTEM::ERROR-OF-TYPE): Likewise. 1999-05-13 Bruno Haible Followup to Sam's 1999-04-07 patch. * eval.d (eval1): Treat arrays as self-evaluating in all cases. * compiler.lsp (l-constantp, c-constantp, c-constant-value): Treat arrays as constants. 1999-05-08 Bruno Haible * trace.lsp (trace1): No need to use replace-in-fenv. (replace-in-fenv): Remove function. 1999-05-12 Sam Steingold * format.lsp (format-integer): (format nil "~@d" 0) => "+0" 1999-05-12 Sam Steingold * loop.lsp (expand-loop): put `then-form' into `stepafter' even when it's the same constant as `first-form'. 1999-05-09 Bruno Haible * aclocal.m4 (CL_SIGNAL_UNBLOCK, CL_SIGNAL_BLOCK_OTHERS) (CL_SIGACTION_UNBLOCK): Perform the test if either POSIX or BSD signal mask primitives are available. Otherwise, SIGACTION_NEED_UNBLOCK would not be defined on Solaris. 1999-05-07 Sam Steingold * describe.lsp (*apropos-do-more*): new variable. (apropos): use it. 1999-05-07 Sam Steingold * spvw.d (usage): mention -K regardless of "UNIX_BINARY_DISTRIB". 1999-05-07 Bruno Haible Support for Apple's MacOS X Server. * aclocal.m4 (CL_RLIMIT): Include before . * lispbibl.d (unix): Define if __MACH__ is defined. (RS6000): Define if __ppc is defined. (UNIX_RHAPSODY): New macro. (__const): Define as const, not empty. * unix.d: Include before . Treat UNIX_RHAPSODY like UNIX_NEXTSTEP. * intlog.d (integerlength32): Don't use the cntlz instruction on UNIX_RHAPSODY. 1999-05-07 Bruno Haible * clos.lsp (same-specializers-p): New function. (specializers-agree-p): Use it. (dispatching-arg-p, single-dispatching-arg, dispatching-arg-type): New functions. (no-applicable-method, no-primary-method): Signal a type-error if there is only one dispatching argument. 1999-05-03 Sam Steingold * pathname.d (file_stat): use `built_in_stream_open_p' instead of `open_stream_p'. 1999-05-02 Bruno Haible * aclocal.m4 (CL_SIGALTSTACK): New macro. * lispbibl.d (NOCOST_SP_CHECK): Define whenever sigsegv.h defines HAVE_STACK_OVERFLOW_RECOVERY, not only on WIN32_NATIVE. (near_SP_overflow) [UNIX]: New declaration. * spvw.d (near_SP_overflow): New function. * spvw_fault.d (handle_fault): Add `verbose' argument. If it is 1, don't print error messages. * spvw_sigsegv.d (sigsegv_handler): Add `serious' argument. (stackoverflow_handler): Add `scp' argument. Bring back STACK to a sane value. 1999-05-01 Bruno Haible Make SYS::%GENERIC-FUNCTION-LAMBDA self-contained. * misc.d (SYS::VERSION), constobj.d: Bump version number. * record.d (SYS::%COPY-GENERIC-FUNCTION): New function. * eval.d (FUNTAB): Add it. * compiler.lsp (funtab): Likewise. (subr-info): Likewise. (c-FNODE-FUNCTION): Generate different code for generic functions. (create-fun-obj): The venv of generic functions is now inside consts[0], from the beginning. * clos.lsp (install-dispatch): Simplify. 1999-05-01 Bruno Haible * conditio.lsp: Add SYS::PRINT-CONDITION to clos::*dynamically-modifiable-generic-function-names*. 1999-05-01 Bruno Haible * stream.d (get_synonym_stream): Argument must be a variable. (rd_by_array_synonym, wr_by_array_synonym, rd_ch_array_synonym) (wr_ch_array_synonym, close_synonym, read_line_synonym): Update. 1999-05-01 Bruno Haible * lispbibl.d (stream_get_read_eval, stream_set_read_eval): New declarations. * stream.d (read_byte, read_byte_array, write_byte, write_byte_array) (read_char, unread_char, peek_char, read_char_array, write_char) (write_char_array, var_stream): Treat instances of FUNDAMENTAL-STREAM correctly. (listen_generic): Change error message. (terminal_raw, STREAM-EXTERNAL-FORMAT) (SYSTEM::SET-STREAM-EXTERNAL-FORMAT, interactive_stream_p) (read_line, stream_listen, clear_input, finish_output, force_output) (clear_output, get_line_position, stream_line_number): Treat instances of FUNDAMENTAL-STREAM correctly. (stream_get_read_eval, stream_set_read_eval): New functions. (SYS::ALLOW-READ-EVAL): Use them. * io.d (read_eval_reader, load_eval_reader): Use stream_get_read_eval. (READ-CHAR-NO-HANG): Treat instances of FUNDAMENTAL-STREAM correctly. (pr_enter_1, pr_orecord, pr_subr): Use stream_get_read_eval. * compiler.lsp (c-DIRECT-FUNCTION-CALL): Remove SYSTEM::LINE-POSITION from list of side-effect-free functions. * gstream.lsp (fundamental-stream): Add a slot. (fundamental-character-stream, fundamental-binary-stream) (fundamental-character-input-stream) (fundamental-character-output-stream) (fundamental-binary-input-stream, fundamental-binary-output-stream): New classes. (stream-element-type): Add method on fundamental-character-stream. (stream-read-char, stream-unread-char, stream-read-char-no-hang) (stream-peek-char, stream-listen, stream-read-char-status) (stream-read-char-sequence, stream-read-line, stream-clear-input) (stream-write-char, stream-line-column, stream-start-line-p) (stream-write-char-sequence, stream-write-string, stream-terpri) (stream-fresh-line, stream-finish-output, stream-force-output) (stream-clear-output, stream-advance-to-column, stream-read-byte) (stream-read-byte-sequence, stream-write-byte) (stream-write-byte-sequence): New generic functions. * describe.lsp (describe-object): Call open-stream-p, since input-stream-p and output-stream-p don't tell whether a stream is open. 1999-05-01 Bruno Haible Allows streams to have an unknown line position. * lispbibl.d (get_line_position): Can trigger GC. Can return NIL. * stream.d (get_line_position): Likewise. (MAKE-STRING-OUTPUT-STREAM): Allow LINE-POSITION argument to be NIL. * io.d (pr_enter_1): Update. * format.lsp (format-tabulate): If the stream's line position is unknown, output 2 spaces. (do-format-justification): If the stream's line position is unknown, assume it is 0. * compiler.lsp (disassemble-closure): If the stream's line position is unknown, output 2 spaces. 1999-05-01 Bruno Haible * lispbibl.d (stream_line_number): Can trigger GC. * stream.d (stream_line_number): Likewise. * io.d (read_delimited_list): Update. 1999-05-01 Bruno Haible * clos.lsp (install-dispatch): Don't assume the preliminary function has a VENV. Generic functions without any method don't have one. 1999-05-01 Bruno Haible * init.lsp (cerror): Don't go into an interactive reploop if *break-driver* is not yet set. This permits typing (load "init.lsp") in an interactive lisp.run. 1999-05-01 Bruno Haible * config.guess, config.sub: Upgrade to newest version from GNU CVS. 1999-04-29 Bruno Haible * gstream.lsp (fundamental-stream, fundamental-input-stream) (fundamental-output-stream): New classes. (close, open-stream-p, stream-element-type) ((setf stream-element-type)): Add methods on fundamental-stream. * lispbibl.d (instanceof): New macro. (streamp): Use it. * stream.d (input_stream_p, output_stream_p): New macros. (test_input_stream, test_output_stream): Use them. (INPUT-STREAM-P, OUTPUT-STREAM-P): Likewise. (SYS::%DEFGRAY): New function. 1999-04-27 Bruno Haible * lispbibl.d (builtin_stream_close): Rename from stream_close. * stream.d (close_synonym): Call CLOSE instead of stream_close. (low_flush_buffered_handle, make_file_stream): Update. (SYSTEM::BUILT-IN-STREAM-OPEN-P): Rename from OPEN-STREAM-P. Stricter argument check. (SYSTEM::BUILT-IN-STREAM-ELEMENT-TYPE): Rename from STREAM-ELEMENT-TYPE. Stricter argument check. (SYSTEM::BUILT-IN-STREAM-SET-ELEMENT-TYPE): Rename from SYSTEM::SET-STREAM-ELEMENT-TYPE. Stricter argument check. (builtin_stream_close): Rename from stream_close. (close_some_files): Update. (SYSTEM::BUILT-IN-STREAM-CLOSE): Rename from CLOSE. Stricter argument check. * debug.d (LOAD): Update. * misc.d (MACHINE-TYPE, MACHINE-VERSION): Update. * pathname.d (DELETE-FILE): Update. * spvw_memfile.d (WRITE, savemem): Update. * eval.d (FUNTAB): Update. * compiler.lsp (funtab, subr-info, c-DIRECT-FUNCTION-CALL): Likewise. * init.lsp (load): Call sys::built-in-stream-close instead of close. * gstream.lsp: Exports symbols from the Gray proposal. (close, open-stream-p, stream-element-type) ((setf stream-element-type)): New generic functions. * places.lsp (stream-element-type): Remove defsetf. Distinguish built-in and other streams. * lispbibl.d (builtin_stream_p): Rename from streamp. (streamp): New macro. (socket_stream-p): Use builtin_stream_p instead of streamp. * pathname.d (as_file_stream, PARSE-NAMESTRING, TRUENAME) (PROBE-FILE, DELETE-FILE, RENAME-FILE, OPEN, FILE-WRITE-DATE) (FILE-AUTHOR, FILE-STAT): Use builtin_stream_p instead of streamp. * stream.d (SYS::SYNONYM-STREAM-P, SYS::BROADCAST-STREAM-P) (SYS::CONCATENATED-STREAM-P, SYS::TWO-WAY-STREAM-P) (SYS::ECHO-STREAM-P, SYSTEM::STRING-INPUT-STREAM-INDEX) (GET-OUTPUT-STREAM-STRING, SYS::STRING-STREAM-P) (SYSTEM::BUFFERED-INPUT-STREAM-INDEX, SYS::FILE-STREAM-P) (check_window_stream, low_close_pipe, SOCKET-SERVER) (test_socket_stream, check_open_file_stream): Use builtin_stream_p instead of streamp. (SYNONYM-STREAM-SYMBOL, BROADCAST-STREAM-STREAMS) (CONCATENATED-STREAM-STREAMS, TWO-WAY-STREAM-INPUT-STREAM) (TWO-WAY-STREAM-OUTPUT-STREAM, ECHO-STREAM-INPUT-STREAM) (ECHO-STREAM-OUTPUT-STREAM, GENERIC-STREAM-CONTROLLER) (SYS::LISTEN-BYTE, test_n_bytes_args): Use builtin_stream_p in the first place, and streamp only for the error message. (GENERIC-STREAM-P, SYS::TERMINAL-RAW): Use builtin_stream_p. * predtype.d (SYS::BUILT-IN-STREAM-P): New function. 1999-04-29 Wolfgang Jenkner * control.d (make_variable_frame): Treat special-declared variables like special-proclaimed ones. 1999-04-29 Bruno Haible * aclocal.m4 (TCPCONN): Always include before . 1999-04-26 Bruno Haible Fix a jmp_buf alignment problem on Irix 6.5. * foreign.d (alignof): Remove macro. * lispbibl.d (alignof): Move to here. (sp_jmp_buf_incr, sp_jmp_buf_to_jmp_buf, setjmpspl, longjmpspl): New macros. (jmpbufsize): Add sp_jmp_buf_incr. (sp_jmp_buf): New type. (finish_entry_frame): Use setjmpspl. (enter_frame_at_STACK): Use longjmpsl. (DRIVER_frame_data): Use sp_jmp_buf instead of jmp_buf. * control.d (BLOCK, TAGBODY, CATCH, UNWIND-PROTECT): Use sp_jmp_buf instead of jmp_buf. * eval.d (invoke_handlers, funcall_iclosure, eval, eval_no_hooks) (JMPBUF_on_SP): Use sp_jmp_buf instead of jmp_buf. 1999-04-26 Bruno Haible * clos.lsp (*allow-mixing-metaclasses*): New variable. (initialize-instance-standard-class, make-instance-built-in-class) (initialize-instance-structure-class): Don't check the metaclass of the direct superclasses if *allow-mixing-metaclasses* is true. 1999-04-26 Bruno Haible * reploop.lsp: Set *use-clcs* to t here. * conditio.lsp: Not here. 1999-04-25 Bruno Haible * stream.d (listen_generic): Make an error message internationalizable. 1999-04-25 Bruno Haible * conditio.lsp (break): Use ANSI CL `:format-control' initarg. 1999-04-25 Bruno Haible Make read_line recurse through some kinds of streams. * lispbibl.d (read_line): New declaration. * stream.d (read_line_synonym, read_line_twoway, read_line): New functions. * io.d (READ-LINE): Call read_line. Put back the buffer after copying it, not before. 1999-04-25 Bruno Haible * stream.d (wr_ch_terminal2, wr_ch_array_terminal2) [MSDOS]: Define as the _unbuffered_dos variant. 1999-04-25 Bruno Haible Remove obsolete stream primitive `wr_ss'. * lispbibl.d (Stream): Remove strm_wr_ss field. * io.d (write_sstring_ab): New function, remove macro. * stream.d (wr_ss_Pseudofun): Remove type definition. (wr_ss): Remove macro. (wr_ss_dummy, wr_ss_dummy_nogc): Remove functions. (close_dummys): Don't set strm_wr_ss field. (wr_ss_synonym): Remove function. (make_synonym_stream): Don't set strm_wr_ss field. (wr_ch_array_broad): Optimize. (wr_ss_broad): Remove function. (make_broadcast_stream): Don't set strm_wr_ss field. (make_concatenated_stream): Likewise. (wr_ss_twoway): Remove function. (make_twoway_stream, make_echo_stream): Don't set strm_wr_ss field. (MAKE-STRING-INPUT-STREAM): Likewise. (wr_ss_str_out): Remove function. (make_string_output_stream): Don't set strm_wr_ss field. (SYSTEM::MAKE-STRING-PUSH-STREAM): Likewise. (wr_ss_pphelp): Remove function. (make_pphelp_stream): Don't set strm_wr_ss field. (MAKE-BUFFERED-INPUT-STREAM, MAKE-BUFFERED-OUTPUT-STREAM): Likewise. (wr_ch_array_generic): Rename from wr_ss_generic. (MAKE-GENERIC-STREAM): Don't set strm_wr_ss field. (wr_ss_unbuffered_unix, wr_ss_unbuffered_mac, wr_ss_unbuffered_dos): Remove functions. (fill_pseudofuns_unbuffered): Don't set strm_wr_ss field. (wr_ss_buffered_unix, wr_ss_buffered_mac, wr_ss_buffered_dos): Remove functions. (fill_pseudofuns_buffered): Don't set strm_wr_ss field. (make_keyboard_stream, make_terminal_stream_): Likewise. (wr_ch_array_terminal1): Rename from wr_ss_terminal1. (wr_ch_array_terminal2): Rename from wr_ss_terminal2. (wr_ch_array_terminal3): Rename from wr_ss_terminal3 (make_terminal_stream_): Don't set strm_wr_ss field. (MAKE-WINDOW, make_printer_stream, make_socket_stream): Likewise. * pseudofun.d: Update. 1999-04-25 Bruno Haible Make write_char_array recurse through any kind of stream. * lispbibl.d (write_char_array): Change calling convention. * stream.d (wr_ch_array_Pseudofun): Change type definition. (wr_ch_array_error): Change calling convention. (wr_ch_array_dummy): Likewise. Loop, calling write_char. (write_char_array): Change calling convention. (wr_ch_array_synonym): Likewise. (wr_ch_array_broad0, wr_ch_array_broad1): Remove functions. (wr_ch_array_broad): New function. (make_broadcast_stream): Use it. (wr_ch_array_twoway): Change calling convention. (rd_ch_array_echo): Update. (wr_ch_array_str_out): New function. (make_string_output_stream): Use it. (wr_ch_array_pphelp): New function. (make_pphelp_stream): Use it. (wr_ch_array_unbuffered_unix): Change calling convention. (wr_ss_unbuffered_unix): Update. (wr_ch_array_unbuffered_mac): Change calling convention. (wr_ss_unbuffered_mac): Update. (wr_ch_array_unbuffered_dos): Change calling convention. (wr_ss_unbuffered_dos): Update. (wr_ch_array_buffered_unix): Change calling convention. (wr_ss_buffered_unix): Update. (wr_ch_array_buffered_mac): Change calling convention. (wr_ss_buffered_mac): Update. (wr_ch_array_buffered_dos): Change calling convention. (wr_ss_buffered_dos): Update. (wr_ss_terminal3): Update. * sequence.d (WRITE-CHAR-SEQUENCE): Update. * lisparit.d (print_integer): Update. Use DYNAMIC_STRING macro. * pseudofun.d: Update. Make read_char_array recurse through any kind of stream. * lispbibl.d (read_char_array): Change calling convention. * stream.d (rd_ch_array_Pseudofun): Change type definition. (rd_ch_array_error): Change calling convention. (rd_ch_array_dummy): Likewise. Loop, calling read_char. (read_char_array): Change calling convention. (rd_ch_array_synonym): Likewise. (rd_ch_array_concat): Likewise. Treat general case. (rd_ch_array_twoway): Change calling convention. (rd_ch_array_echo): New function. (make_echo_stream): Use it. (rd_ch_array_str_in): Change calling convention. (rd_ch_array_unbuffered, rd_ch_array_buffered): Likewise. * sequence.d (READ-CHAR-SEQUENCE): Update. * pseudofun.d: Update. Make write_byte_array recurse through any kind of stream. * lispbibl.d (write_byte_array): Change calling convention. * stream.d (wr_by_array_Pseudofun): Change type definition. (wr_by_array_error): Change calling convention. (wr_by_array_dummy): Likewise. Loop, calling write_byte. (write_byte_array): Change calling convention. (wr_by_array_synonym): Likewise. (wr_by_array_broad0, wr_by_array_broad1): Remove functions. (wr_by_array_broad): New function. (make_broadcast_stream): Use it. (wr_by_array_twoway): Change calling convention. (rd_by_array_echo): Update. (wr_by_array_iau8_unbuffered, wr_by_array_iau8_buffered): Change calling convention. (SYS::WRITE-N-BYTES): Update. (WRITE-INTEGER): Use DYNAMIC_BIT_VECTOR. Update. * sequence.d (WRITE-BYTE-SEQUENCE): Update. * pseudofun.d: Update. Make read_byte_array recurse through any kind of stream. * lispbibl.d (read_byte_array): Change calling convention. * stream.d (rd_by_array_Pseudofun): Change type definition. (rd_by_array_error): Change calling convention. (rd_by_array_dummy): Likewise. Loop, calling read_byte. (read_byte_array): Change calling convention. (rd_by_array_synonym): Likewise. (rd_by_array_concat): Likewise. Treat general case. (rd_by_array_twoway): Change calling convention. (rd_by_array_echo): New function. (make_echo_stream): Use it. (rd_by_array_iau8_unbuffered, rd_by_array_iau8_buffered): Change calling convention. (SYS::READ-N-BYTES): Update. (READ-INTEGER): Use DYNAMIC_BIT_VECTOR. Update. * sequence.d (READ-BYTE-SEQUENCE): Update. * pseudofun.d: Update. 1999-04-25 Bruno Haible * aclocal.m4 (CL_ADDRESS_RANGE): Also determine the stack address range. * unixconf.h.in (STACK_ADDRESS_RANGE): New macro. * lispbibl.d (STACK_ADDRESS_RANGE): Provide a default value. (bias_type_pointer_object): New macro, moved here from spvw_allocate.d. (DYNAMIC_BIT_VECTOR, FREE_DYNAMIC_BIT_VECTOR, DYNAMIC_STRING) (FREE_DYNAMIC_STRING): New macros. * spvw_allocate.d (bias_type_pointer_object): Remove macro. 1999-04-24 Bruno Haible * compiler.lsp (c-form-table): Treat LDB, LDB-TEST, MASK-FIELD, DPB, DEPOSIT-FIELD specially. (c-constant-byte-p, c-LDB, c-LDB-TEST, c-MASK-FIELD, c-DPB) (c-DEPOSIT-FIELD): New functions. * compiler.lsp (c-FORMAT): Only insert a FORMATTER call if FORMATTER is not defined locally. 1999-04-24 Bruno Haible * describe.lsp (describe-object): `type-of' does not need `sys::'. 1999-04-24 Bruno Haible * intlog.d (I_I_logand_I): Optimize the case when either operand is a positive fixnum, O(1) instead of O(N). (I_I_lognand_I): Likewise. (I_I_logandc2_I): Likewise for the first operand. 1999-04-24 Bruno Haible * lispbibl.d (make_HANDLER_frame): Fix compilation problem. 1999-04-24 Bruno Haible * io.d (READ-CHAR-STATUS): Rename from SYS::REAL-LISTEN. * stream.d (listen_generic): Call GENERIC-STREAM-READ-CHAR-STATUS instead of GENERIC-STREAM-LISTEN. Remove backward compatibility hack. * gstream.lsp (generic-stream-read-char-status): Rename from generic-stream-listen. * screen.lsp: Likewise. 1999-04-24 Bruno Haible * lispbibl.d (ssstring_append_extend): New declaration. * array.d (ssstring_append_extend): New function. * stream.d (wr_ss_str_out, wr_ss_pphelp): Use it. 1999-04-22 Bruno Haible * array.d (iarray_displace): Rename from notsimple_displace. (storagevector_aref): Rename from datenvektor_aref. (storagevector_store): Rename from datenvektor_store. (iarray_dims_sizes): Rename from array_dims_sizes. (make_storagevector): Rename from make_datenvektor. * io.d (pr_vector, pr_array_elt_t, pr_array): Update. 1999-04-22 Bruno Haible * macros2.lsp (space): Also print timing data, like TIME does. 1999-04-27 Sam Steingold * describe.lsp (describe): wrap `describe-object' in `unwind-protect'. (describe-object): fix printing indentation. 1999-04-22 Bruno Haible * lispbibl.d: Port to m68k-linux with ELF. 1999-04-18 Bruno Haible * defs2.lsp (defpackage): Allow duplicates in each of the export/import/... lists, but still require these lists to be disjoint. 1999-04-18 Bruno Haible * places.lsp (push, pushnew): Evaluate the item form before the place's subforms. 1999-04-14 Bruno Haible * autoconf/aclocal.m4 (CL_GLOBAL_CONSTRUCTORS): Add check whether ctor/dtor needs to be exported. 1999-04-13 Bruno Haible * stream.d (rd_ch_array_buffered): Increment the stream's index and position appropriately. 1999-04-13 Sam Steingold * modules/postgresql642/link.sh (have_libcrypt): do not quote ${CC}. 1999-04-12 Bruno Haible * makemake.in (data, UnicodeData.txt): New rules. (lisp${LEXE}): Depend on it. (installdirs): Create $(lisplibdir)/data. (install-bin): Install [data/]UnicodeData.txt. (uninstall-bin): Remove it. * _distmakefile (install-bin): Install data/UnicodeData.txt. * describe.lsp (describe-object) (character): Call unicode-attributes. (unicode-data-file, unicode-attributes-line, unicode-attributes): New functions. 1999-04-12 Bruno Haible Add command-line option specifying $(lisplibdir). * _clisp.c (main): New option "-B". * spvw.d (main, usage): Likewise. * pathname.d (argv_lisplibdir): New variable. (SYS::LIB-DIRECTORY): New function. * makemake.in: Pass "-B" option to all invocations of lisp.run. 1999-04-12 Bruno Haible * makemake.in (installdirs): Create $(lisplibdir)/linkkit. (install-bin): Fix syntax error introduced on 1999-04-04. 1999-04-12 Bruno Haible * stream.d (init_streamvars): Set _rl_comment_begin. 1999-04-12 Bruno Haible * compiler.lsp (c-FORMAT): Use c-constantp, not constantp, and c-constant-value. 1999-04-12 Sam Steingold * macros3.lsp (with-collect): new macro. 1999-04-09 Bruno Haible * type.lsp (type-expand): Fix the second return value. 1999-04-08 Sam Steingold * compiler.lsp (c-FORMAT): check for a constant, not just a string. 1999-04-07 Sam Steingold * control.d (constantp): arrays are constants too. 1999-04-07 Sam Steingold Implement ANSI CL issue KEYWORD-ARGUMENT-NAME-PACKAGE:ANY. * eval.d (get_closure, check_for_illegal_keywords): accept symbols as keywords. * compiler.lsp (analyze-lambdalist): accept symbols as keywords. 1999-04-07 Sam Steingold * compiler.lsp (c-FORMAT): signal an error when the stream argument is missing. * describe.lsp (describe-object): call `documentation'. 1999-04-06 Sam Steingold --- *ANSI* is a symbol macro now. * constsym.d: add `:ansi-cl', `ansi' and `set_ansi'. * subr.d: add `ansi' and `set_ansi'. * constobj.d: add `ansi'. * places.lsp: define *ANSI*. * init.lsp: export *ANSI*. * spvw.d: call `set_ansi' instead of setting *ANSI*. * misc.d (ansi, set_ansi): new LISPFUNNs. --- Fix `export-syscalls' damaged by recent patches. * socket.d (resolve_host_ipaddr): replace `fehler_string_int' with `fehler_string_integer'. * pathname.d (user_data): ditto. Also, `fehler_pathname_descriptor' --> `fehler_pathname_designator'. (file_stat): use `stream_fd' instead of `strm_ochannel'. * stream.d (file_stat): remove. (stream_fd): add. * lispbibl.d: declare `stream_fd'. --- fix `describe' * describe.lsp (describe): set `*describe-done*' and `*describe-nesting*' instead of binding. Print empty arglist as (), not NIL. 1999-04-05 Bruno Haible Stop storing german and french translations in the source files. * german.lsp, french.lsp: New files. * makemake.in (LPARTS): Add them. * init.lsp: Load them. * *.d, *.lsp: Remove german and french translations. * compiler.lsp: Define macro ENGLISH instead of DEUTSCH. * lispbibl.d (DEUTSCH, FRANCAIS): Remove macros. (ENGLISH): Simplify. (language_deutsch, language_francais): Remove macros. (GETTEXT): New macro. * genclisph.d (main): Update. * constobj.d (LISPOBJ_L, LISPOBJ_LS): Simplify. * erramiga.d (lang3, lang1): Simplify. * errdjgpp.d (lang3, lang1): Likewise. * spvw_language.d (language_deutsch, language_francais): Define only if GNU_GETTEXT. (init_languages_from): Treat de and fr only if GNU_GETTEXT. (init_language) [!GNU_GETTEXT]: Don't treat de and fr. 1999-04-05 Bruno Haible * io.d (right_margin): Update translations. 1999-04-04 Bruno Haible * foreign1.lsp (DEF-C-CALL-OUT, DEF-C-CALL-IN): Use language :STDC, not old :C any more. 1999-04-04 Bruno Haible Changes to the distribution structure on Unix: - The default linking set is moved into subdirectory `base'. - Both `base' and `full' are installed. - All the documentation is installed. * _clisp.c (main): New option "-K". Drop option "-F". * _clisp.1: Document option "-K". * _clisp.html: Likewise. * spvw.d (usage): Mention "-K". (main): Accept and ignore "-K". * _distmakefile (fromdir): Remove variable. (linkingsets): New variable. (docdir, lispdocdir): New variables. (all): Depend on all lisp.runs. (install): Depend on install-doc. (install-bin): Copy all linking sets entirely. Copy clisp-link and linkkit as well. (install-doc): New target. * makemake.in: $(lispdocdir) replaces $(docdir). Define $(docdir) and $(lispdocdir) in all cases. Make `base' a directory containing symlinks, not a symlink. `full' depends on `base'. `install' depends on `install-doc'. New target `install-doc'. `installdirs' creates the `base' directory and the doc directories. `install-bin' copies the linking sets `base' and `full', and clisp-link and linkkit as well. `install-man' installs all readmes and manual files. 1999-04-04 Bruno Haible * modules/clx/new-clx/link.sh: Add -L/usr/X11R6/lib -lX11 to NEW_LIBS. Necessary since 1999-03-08 change. * modules/clx/new-clx/clx.f (pathname_encoding, misc_encoding): New macros. (with_stringable_0): Add an encoding argument. (get_font, get_xatom_general, enum_error, make_xatom) (XLIB:OPEN-DISPLAY): Use misc_encoding. (XLIB:DISPLAY-AUTHORIZATION-DATA, XLIB:DISPLAY-AUTHORIZATION-NAME): Allocate empty string via allocate_string. (XLIB:DISPLAY-VENDOR, XLIB:DISPLAY-HOST): Use misc_encoding. (general_draw_text): If UNICODE, use the -16 variant functions. (XLIB:OPEN-FONT, XLIB:FONT-PATH, XLIB:FONT-PATH-SETTER) (XLIB:LIST-FONT-NAMES, XLIB:LIST-FONTS, XLIB:FONT-PROPERTIES): Use misc_encoding. (XLIB:TEXT-EXTENTS, XLIB:TEXT-WIDTH): If UNICODE, use the -16 variant functions. (XLIB:ALLOC-COLOR, XLIB:LOOKUP-COLOR, XLIB:ATOM-NAME) (XLIB:GET-PROPERTY, XLIB:LIST-PROPERTIES, XLIB:LIST-EXTENSIONS) (XLIB:QUERY-EXTENSION): Use misc_encoding. (XPM:READ-FILE-TO-PIXMAP): Use pathname_encoding. * modules/postgresql642/postgresql.lsp: Comments. Don't need to include . (PGnotify): Use foreign type ffi:character, not ffi:char. (pqbool): Use foreign type ffi:char, not ffi:character. * modules/postgresql642sql.lsp (sql-error): Condition type is SQL-ERROR, not SQL. * modules/postgresql642/link.sh: Link with -lcrypt only if this library exists. 1999-04-04 Bruno Haible * _README: Refer to _README.en unconditionally. * makemake.in: Don't refer to `README.en'. `README' is enough. 1999-04-04 Bruno Haible Since make_machine and make_machine_code are different on some platforms... * pseudofun.d (LPSEUDOCODE): New macro, replaces PSEUDOFUN. (XPSEUDOCODE, XPSEUDODATA): New macros, replace XPSEUDO. (LCODE_PSEUDO_*, XCODE_PSEUDO_*, XDATA_PSEUDO_*): New macros. * lispbibl.d (pseudofun_tab): Remove. (pseudocode_tab, pseudodata_tab): New variables. * spvw.d (pseudocode_anz, pseudodata_anz): New macros. (pseudofun_anz): Change definition. (pseudofun_tab): Define as local variable. (main): Initialize pseudofun_tab from pseudocode_anz, pseudodata_anz. * spvw_memfile.d (loadmem_update): Compare objects, not Pseudofuns. * stream.d (pseudofun_tab): Remove. (pseudocode_tab, pseudodata_tab): New variables. 1999-04-04 Bruno Haible * control.d (test_env): Accept NIL, denoting the global environment. 1999-04-04 Bruno Haible * makemake.in (installdirs, install-bin, install-man): Make sure the directories $(prefix) and $(exec_prefix) exist. * _distmakefile (install-bin, install-man): Likewise. 1999-04-04 Bruno Haible * stream.d (make_file_stream): Fix the STACK offsets used to fill in truename and pathname of unbuffered streams. 1999-04-04 Bruno Haible * stream.d (SYS::MAKE-SOCKET-STREAM, init_streamvars): Pass a proper encoding to make_unbuffered_stream, not the symbol :UNIX. 1999-04-04 Bruno Haible * conditio.lsp: Export simple-condition-format-control. (coerce-to-condition): Use :format-control. (simple-condition): Use $format-control. * defs3.lsp: Export simple-condition-format-control, not simple-condition-format-string. 1999-04-04 Bruno Haible * stream.d (make_pipe_output_stream, make_pipe_input_stream) (make_pipe_stream): Revert 1999-03-26 patch. 1999-04-04 Bruno Haible * socket.d (atoi): Remove declaration. (SERVENT_TO_STACK): Add `tmp' local variable. (SOCKET-SERVICE-PORT): Don't accept symbols, only strings and integers, as service-name. Don't call fehler_string_integer for non-fixnums. Use with_string_0 instead of TheAsciz(string_to_asciz(. Fix placement of begin_system_call()/end_system_call(). * subr.d: Keep in sync. * constsym.d: Likewise. 1999-04-04 Bruno Haible * stream.d (FILE-STAT): Move to pathname.d. * pathname.d (fehler_pathname_designator): Rename from fehler_pathname_descriptor. (as_file_stream): global -> local. Update. (fehler_file_stream_unnamed): global -> local. (PARSE-NAMESTRING): Update. (unix_user_pwd): Fix treatment of error in getpwuid call. (init_pathnames): Restore comments. (USER-DATA, FILE-DATA): Move here, before the EMX "#undef stat". * subr.d: Keep in sync. * constsym.d: Likewise. 1999-04-04 Bruno Haible * constobj.d (O(type_string_integer)): Rename from O(type_gensym_arg). * symbol.d (GENSYM): Update. * lispbibl.d (fehler_string_integer): Rename from fehler_string_int. * error.d (fehler_string_integer): Rename from fehler_string_int. Use O(type_string_integer). Fix error message. Update translations. 1999-04-04 Bruno Haible * describe.lsp (describe-slotted-object): Define code in package SYSTEM, not package CLOS. (describe-object): Likewise. Reindent. (describe-object T): Treat FSUBR here. (describe-object FUNCTION): Not here. (describe-object CONS): De-obfuscate list-length determination. (describe-object SYMBOL): Bind *print-escape* and *print-readably* only around the necessary code. Update translations. Terminate sentence with a dot. (describe-object PACKAGE): Keep "." internationalizable. Update translations. Don't sort L if all we need is its length. (describe): Update translations. (apropos-list): Reindent. 1999-04-04 Bruno Haible Change the type of FSUBRs (was COMPILED-FUNCTION, but ANSI CL specifies that COMPILED-FUNCTION is a subtype of FUNCTION). * predtype.d (COMPILED-FUNCTION-P): For FSUBRs, return NIL. (TYPE-OF): For FSUBRs, return SPECIAL-OPERATOR. (CLASS-OF): Undo 1999-03-18 patch. (enum_hs_special_operator): Rename from enum_hs_special_oper. (heap_statistics_mapper): Update. * defs2.lsp (function-lambda-expression): No need to call functionp. 1999-04-03 Bruno Haible * conditio.lsp (export): Mention `os-error' right after `file-error'. 1999-04-03 Bruno Haible * init.lsp (export): Mention `with-package-iterator' right after `do-all-symbols', because that's where it is located in CLtL2. * defs3.lsp (export): Likewise. * defs1.lsp (with-package-iterator): Check all the symboltypes. Remove duplicates among them. 1999-04-03 Bruno Haible * savemem.lsp (saveinitmem): Reindent. Declare *command-index* special, because it is not defvar'ed at this point. 1999-04-03 Bruno Haible * loop.lsp (expand-loop) (collect/append/nconc): Generate forward- consing code only for named accumulation variables. Revert to the old backward-consing code for unnamed accumulation variables. (expand-loop) (accu-vars-nil, accu-vars-0): Kill use of `pushnew', `push' and `delete-duplicates' is more efficient. 1999-04-03 Bruno Haible * constsym.d (*merge-pathnames-ansi*): New variable. * spvw.d (init_symbol_values): Initialize it to NIL. (main): Set it to T, if option -a given. * pathname.d (MERGE-PATHNAMES): If *merge-pathnames-ansi*, concatenate two relative directories. Ignore *ansi*. 1999-04-03 Bruno Haible * makemake.in (impnotes.html): Only replace followed by a slash. 1999-04-03 Bruno Haible * makemake.in: Accept option --with-export-syscalls, instead of --export-syscalls. 1999-04-03 Bruno Haible * makemake.in: Undo hack for missing rluserman.dvi. 1999-04-03 Bruno Haible * clisp.spec: Remove the "--with-unicode=no" hint. It is a bad idea. 1999-03-30 Jörg Höhle * rexx.d (rexx_getmsg): return (handle command :RESULT) if ARexx OPTIONS RESULTS requested on incoming command. 1999-04-01 Bruno Haible Improve handling of /proc/self/fd/* files on Linux. * pathname.d (possible_symlink, my_readlink): New functions. (realpath): Call possible_symlink before readlink. (if_HAVE_LSTAT): New macro. (assure_dir_exists) [UNIX]: Use it. Convert namestring to asciz once only. Call possible_symlink before S_ISLNK and readlink. 1999-03-19 Bruno Haible * Makefile.devel: Add rules for three files in the ffcall/callback/vacall_r/ directory. 1999-03-26 Sam Steingold * stream.d (make_pipe_stream): new function: merged make_pipe_input_stream and make_pipe_output_stream. (make_pipe_output_stream, make_pipe_input_stream): use it. 1999-03-22 Sam Steingold * pathname.d (merge-pathnames): be ANSI CL compliant when lisp:*ansi* is non-nil. (unix_user_pwd): extracted from init_pathnames(). (init_pathnames): use unix_user_pwd(). (user_data): moved here from stream.d; use unix_user_pwd(). 1999-03-20 Sam Steingold Add PostgreSQL interface. New module: postgresql. * modules/postgresql/postgresql.lsp: bindings. * modules/postgresql/sql.lsp: example of use. * makemake.in: add postgresql. 1999-03-20 Sam Steingold * describe.lsp (describe-object): handle foreign functions correctly. 1999-03-19 Sam Steingold * savemem.lsp (saveinitmem): bind +/-/* to nil instead of setting them to nil. Also, bind sys::*command-index* to 0. 1999-03-18 Sam Steingold * compiler.lsp (*deprecated-functions-list*): new variable. (note-function-used): use it. * describe.lsp (describe-object): warn about deprecated functions. * predtype.d (class-of): fsubr is a function, not T. * constobj.d: print SPECIAL-OPERATOR instead of SPECIAL-FORM. * io.d (pr_fsubr): comment fix. * ../modules/clx/new-clx/clx.lsp: push keyword :clx-ansi-common-lisp into `*features*' instead of the symbol. 1999-03-17 Bruno Haible * aclocal.m4 (CL_ICONV): Add check for iconv prototype. * unixconf.h.in (ICONV_CONST): New macro. * unix.d (iconv): Use ICONV_CONST. 1999-03-17 Bruno Haible * stream.d (CLISP_INTERNAL_CHARSET): For HP-UX, set it to "ucs2". 1999-03-17 Sam Steingold * describe.lsp (describe-object): handle CLOS classes in a `standard-object' method. Describe the value of the `weak-pointer'. * stream.d (file_stat): fix time handling. 1999-03-16 Sam Steingold * describe.lsp (describe-object): replace `standard-object' with T. 1999-03-16 Bruno Haible * defs1.lsp (package-iterator-function): New function, taken out of with-package-iterator. (with-package-iterator): Adjust, add error message. 1999-03-16 Bruno Haible * encoding.d (nls_mbstowcs, nls_asciiext_mbstowcs, nls_wcstombs) (nls_asciiext_wcstombs, nls_range): Use TheMachine, not ThePseudofun. Vital for hppa. (init_encodings): Use make_machine, not P. Vital for hppa. Initialize O(internal_encoding) always to ISO-8859-1, independently of the platform. If HPROMAN8_CHS is defined, use it for the other encodings, instead of ASCII. 1999-03-16 Sam Steingold implement `with-package-iterator'. * defs1.lsp (with-package-iterator): new ANSI CL macro. * defs3.lsp, init.lsp: export it. 1999-03-16 Sam Steingold * socket.d (is_number): remove. (resolve_host_ipaddr): return all hosts on NIL arg. * stream.d (user_data): return the current user with no args. * _impnotes.html: document this. 1999-03-16 Bruno Haible * stream.d (rd_ch_terminal2): Restructure this function. Call rd_ch_unbuffered, in order to respect the stream's encoding. When EOF has been reached, no need to set strm_rd_ch_last, the caller already does this. (lisp_completion_matches): Do filename completion also after #P". (rd_ch_terminal3): Restructure this function. Respect the stream's encoding. When EOF has been reached, no need to set strm_rd_ch_last, the caller already does this. 1999-03-15 Bruno Haible * lispbibl.d: Test for `__linux__', not `linux', so that even when compiling with "-ansi -pedantic" the incompatible _setjmp/_longjmp functions are avoided. 1999-03-15 Bruno Haible Make it possible again to compile with "gcc -x c++". * aclocal.m4 (CL_CC_GCC): Define GCC_X_NONE. * intparam.d (main7): Use %lX instead of %X for a `long'. (main8): Adapt for C++. * configure: Don't configure in readline subdir if compiling in C++ mode. * utils/modprep.d: Define `inline' to empty when compiling with "gcc -ansi -pedantic". (String_equalsIgnoreCase): Don't use `isascii', it is not portable. * io.d (unicode_attribute, graphic_char_p): Remove the macros. The global definition in charstrg.d is sufficient. (syntax_table_put): Cast one branch of the conditional expression to void, to make this valid C++. * stream.d (host_data_fetcher): New type. (publish_host_data): Adjust declaration, for increased type safety. * charstrg.d (string_search): Change for being valid C++. * foreign.d (alignof): Provide alternate definition, valid C++. (convert_to_foreign): Cast converter_malloc result to char*. * avl.d (AVL(AVLID,least), AVL(AVLID,move)): Change K&R C declaration into ANSI C declaration. 1999-03-14 Sam Steingold * stream.d: remove `stream_fd'; moved `file_stat' and `user_data' here. * pathname.d: rename `fehler_thing' to `fehler_pathname_descriptor'. export it, `as_file_stream', `fehler_file_stream_unnamed'. * socket.d (resolve_host_ipaddr): handle IPv6 addresses. 1999-03-14 Sam Steingold OS_error() generates an error of type `os-error'. * erramiga.d, errdjgpp.d, errunix.d, errwin32.d (OS_error): use `simple_os_error'. * lispbibl.d (conditiontype): add `os_error'. * constsym.d: add `simple_os_error' symbol. * error.d: handle `simple_os_error'. * conditio.lsp: add `os-error' and `simple-os-error'. 1999-03-14 Bruno Haible * lispbibl.d (strm_encoding): New macro. * stream.d (strm_encoding): Comment out. * encoding.d (SYS::[SET-]DEFAULT-FILE-ENCODING) (SYS::[SET-]PATHNAME-ENCODING, SYS::[SET-]TERMINAL-ENCODING) (SYS::[SET-]FOREIGN-ENCODING, SYS::[SET-]MISC-ENCODING): New functions. * init.lsp: Export *default-file-encoding*, *pathname-encoding*, *terminal-encoding*, *misc-encoding*. * places.lsp (*default-file-encoding*, *pathname-encoding*) (*terminal-encoding*, *misc-encoding*): New settable symbol-macros. * foreign1.lsp (ffi:*foreign-encoding*): New settable symbol-macro. * affi1.lsp (affi:*foreign-encoding*): New settable symbol-macro. 1999-03-14 Bruno Haible * defs2.lsp (define-symbol-macro, check-not-special-variable-p): Move to macros2.lsp. * macros2.lsp (define-symbol-macro, check-not-special-variable-p): Moved here from defs2.lsp. 1999-03-14 Bruno Haible * stream.d (test_socket_server): New argument check_open. When it is TRUE, check that the handle is non-NIL. (SOCKET-SERVER-CLOSE): After closing, set the handle to NIL. When the handle is NIL, do nothing. (SOCKET-SERVER-PORT, SOCKET-SERVER-HOST): Update. (SOCKET-ACCEPT, SOCKET-WAIT): Call test_socket_server with check_open=TRUE. * io.d (pr_orecord): For closed socket-servers, print a "CLOSED " prefix. 1999-03-13 Bruno Haible * encoding.d (init_encodings): Define some more aliases. 1999-03-13 Bruno Haible * encoding.d (fehler_uni32_invalid, uni32_mblen, uni32be_mbstowcs) (uni32le_mbstowcs, uni32_wcslen, uni32be_wcstombs, uni32le_wcstombs): New functions. (init_encodings): Initialize the Unicode-32 encodings. * pseudofun.d: Update. * type.lsp (canonicalize-type): Add charset:unicode-32-big-endian and charset:unicode-32-little-endian to the list of types equivalent to CHARACTER. 1999-03-13 Bruno Haible * lispbibl.d (conditiontype): Add charset_type_error. * conditio.lsp (charset-type-error, simple-charset-type-error): New condition types. (%defclcs call): Add simple-charset-type-error. * constsym.d (simple_*_error): Add simple_charset_type_error. * error.d (end_error): Treat simple_charset_type_error like simple_type_error. * encoding.d (fehler_unencodable): Signal an error of type charset_type_error. 1999-03-13 Bruno Haible Integrate types and encodings. * lispbibl.d (Encoding): Add enc_range field. (encoding_length): Increment by 1. (Encoding_range): New macro. (stringof): New declaration. * charstrg.d (stringof): New function. * encoding.d (all_range, nls_range): New functions. (iconv_range): Declare. (MAKE-ENCODING): Initialize the enc_range field. (fehler_encoding, SYS::CHARSET-TYPEP, SYS::CHARSET-RANGE): New functions. (init_encodings): Initialize the enc_range field. * stream.d (iconv_mblen): Optimize and make consistent with iconv_mbstowcs. (iconv_wcslen): Optimize and make consistent with iconv_wcstombs. (iconv_wcstombs): Don't loop until outsize==0. The caller may have given a larger buffer than necessary. (iconv_range): New function. * pseudofun.d: Update. * type.lsp (typep): Accept an encoding as a type. (canonicalize-type, subtypep): Likewise. (charset-subtypep): New function. 1999-03-13 Bruno Haible * encoding.d (SYS::ENCODINGP): New function. * type.lsp: Implement typep for type ENCODING. (subtypep): Treat ENCODING as an elementary type. * compiler.lsp (c-typep-alist1): Implement typep for type ENCODING. 1999-03-13 Bruno Haible * spvw_genera2.d (gc_mark_old_generation): Add braces, to avoid egcs warning. * spvw_genera3.d (update_old_generation): Likewise. 1999-03-12 Bruno Haible * lispbibl.d (conditiontype): Add reader_error. * conditio.lsp (simple-reader-error): New condition type. (%defclcs call): Add simple-reader-error. * constsym.d (simple_*_error): Add simple_reader_error. * io.d (signal_reader_error): New function. (read_internal): Protect calls to read_rational and read_float with a handler for ARITHMETIC-ERROR. 1999-03-12 Bruno Haible * lispbibl.d (make_HANDLER_frame, make_HANDLER_entry_frame) (unwind_HANDLER_frame): New macros. * eval.d (invoke_handlers): Distinguish handler frames with a bytecoded handler and handler frames with a C function as handler. 1999-03-12 Bruno Haible * format.lsp (format-character): Don't print the name of printable characters. 1999-03-12 Sam Steingold * subr.d: arglists for `socket_service_port' and `resolve_host_ipaddr'. * stream.d (socket_service_port): moved from here to socket.d * pathname.d (user_data): use `fehler_string_int'. * socket.d (resolve_service): remove. (socket_service_port): moved here. optional second arg - protocol. return all services as a list when called with no arguments. (resolve_host_ipaddr): when called with no args, localhost is returned. * error.d (fehler_string_int): new function. * lispbibl.d (fehler_string_int): declare. 1999-03-11 Bruno Haible * encoding.d: Make UNICODE-16 an alias for UNICODE-16-BIG-ENDIAN. * constsym.d: Rename the CPxxx-MS symbols to CPxxx. 1999-03-11 Bruno Haible * encoding.d: Add the HP-ROMAN8 character set. 1999-03-11 Bruno Haible * stream.d (FILE-STRING-LENGTH): Depend on the stream's encoding. Don't look at the strm_wr_ch pointer. 1999-03-11 Bruno Haible * pathname.d (directory_search_scandir): Avoid calling stat() if the given wildcard mask excludes a given directory entry. 1999-03-10 Bruno Haible Fix a bug: clear-input did not kill the EOF condition in terminal2 and terminal3 streams. * stream.d (clear_input_keyboard): Use ls_avail_p. (clear_input_terminal2): Call clear_input_unbuffered, don't call clear_tty_input directly. Use ls_avail_p. (clear_input_terminal3): Likewise. 1999-03-10 Bruno Haible Finish implementing the iconv-based encodings. * lispbibl.d (Encoding): Add a stream argument to the enc_mbstowcs and enc_wcstombs fields. (Encoding_mbstowcs, Encoding_wcstombs): Update. (cstombs): Pass nullobj as stream. * error.d (write_errorstring): Likewise. * foreign.d (convert_from_foreign_array_fill, convert_from_foreign): Likewise. * affi.d (SYSTEM::MEM-READ): Likewise. * encoding.d (MAKE-ENCODING, make_string, asciz_to_string) (string_to_asciz): Move to the end of the file. (fehler_unencodable): Declare as global. (uni16be_mbstowcs, uni16le_mbstowcs, uni16be_wcstombs) (uni16le_wcstombs, utf8_mbstowcs, utf8_wcstombs, java_mbstowcs) (java_wcstombs, nls_mbstowcs, nls_asciiext_mbstowcs, nls_wcstombs) (nls_asciiext_wcstombs): Add an unused stream argument. (iconv_mblen, iconv_mbstowcs, iconv_wcslen, iconv_wcstombs) (fehler_iconv_invalid_charset): Move to stream.d. * stream.d (strm_channel_extrafields_struct): Add iconvdesc, oconvdesc fields. (ChannelStream_iconvdesc, ChannelStream_oconvdesc): New macros. (CLISP_INTERNAL_CHARSET): New macro. (fehler_iconv_invalid_charset, iconv_mblen, iconv_mbstowcs) (iconv_wcslen, iconv_wcstombs): New functions, moved to here from encoding.d. If the stream is passed, use the iconvdesc, oconvdesc fields. (ChannelStream_init, ChannelStream_fini): New functions. (rd_ch_unbuffered, listen_unbuffered, rd_ch_array_unbuffered): Pass the stream to the mbstowcs function. (close_ichannel): Call ChannelStream_fini. (wr_ch_unbuffered_unix, wr_ch_array_unbuffered_unix) (wr_ch_unbuffered_mac, wr_ch_array_unbuffered_mac) (wr_ch_unbuffered_dos, wr_ch_array_unbuffered_dos): Pass the stream to the wcstombs function. (close_ochannel): Call ChannelStream_fini. (make_unbuffered_stream): Call ChannelStream_init. (rd_ch_buffered, rd_ch_array_buffered): Pass the stream to the mbstowcs function. (wr_ch_buffered_unix, wr_ch_array_buffered_unix, wr_ch_buffered_mac) (wr_ch_array_buffered_mac, wr_ch_buffered_dos) (wr_ch_array_buffered_dos): Pass the stream to the wcstombs function. (make_buffered_stream): Call ChannelStream_init. (closed_buffered): Erase the old iconv descriptors. (close_buffered): Call ChannelStream_fini. (make_keyboard_stream): Add O(terminal_encoding), and call ChannelStream_init. (make_terminal_stream_): Call ChannelStream_init. (SYSTEM::SET-STREAM-EXTERNAL-FORMAT): Call ChannelStream_fini and ChannelStream_init. * pseudofun.d: Update. 1999-03-10 Bruno Haible Support for IPv6 sockets. * aclocal.m4 (CL_TCPCONN): Add checks for IPv4 and IPv6 facilities. Add checks for `inet_pton' and `inet_ntop' functions. * unixconf.h.in (CL_TCPCONN): Conditionally define HAVE_IPV4, HAVE_IPV6, IPV6_NEED_LINUX_IN6_H, HAVE_INET_PTON, HAVE_INET_NTOP. * lispbibl.d (UNIXCONN, TCPCONN): Define here, not in socket.d. Make SOCKET_STREAMS depend on TCPCONN. (host_data): Remove the `host' field. Make the `hostname' field large enough for IPv6. Change the `truename' field into an array, so it does not need to point to static or temporary data. (MAXHOSTNAMELEN): Define. * win32.d: Define HAVE_IPV4, don't define HAVE_IPV6. * stream.d (publish_host_data): Test hd.truename for being "", not NULL. Allocate the temporary string on the stack, instead of malloc. * misc.d (MACHINE-INSTANCE): Moved to socket.d. * socket.d: Don't define UNIXCONN, TCPCONN, SOCKET_STREAMS here. Don't define MAXHOSTNAMELEN here. (get_hostname): New macro. (ipv4_ntop, ipv6_ntop): New macros. (MACHINE-INSTANCE): Moved here from socket.d. Consider h->h_addrtype instead of blindly assuming it's AF_INET. Use ipv4_ntop macro for building the dotted address string, instead of doing it by hand. (CLOSESOCKET): Only define if UNIXCONN || TCPCONN. (saving_sock_errno): New macro. (all_digits_dots): New function, for distinguishing IPv4 addresses and FQDNs. The old method of looking at the first character is no longer valid. (with_hostname): New function, taken out of connect_to_x_server. Support IPv6. Compare the inet_addr() return value with (uint32)(-1), not (unsigned long)(-1) [matters for 64-bit platforms]. (connect_to_x_via_ip): New function, taken out of connect_to_x_server. (connect_to_x_server): Use with_hostname and connect_to_x_via_ip. Use get_hostname. (memset, bzero, bcopy): Remove declarations. (fill_hostname): Remove function, obsoleted by ipv4_ntop. (sockaddr_max): New type. (socket_getlocalname_aux): New function, taken out of socket_getlocalname. Don't need to bzero() the result. Support IPv6. (socket_getlocalname): Use socket_getlocalname_aux. Return the true host name instead of "localhost". (socket_getpeername): Don't need to bzero() the result. Support IPv6. If truename unknown, return it as "" instead of NULL. (bindlisten_via_ip): New function, taken out of create_server_socket. Close the socket in case of failure. (create_server_socket): Use with_hostname and bindlisten_via_ip. Don't need to bzero() the addr. Use the true host name instead of "localhost". After calling getsockname(), support IPv6. Make the final getsockname() after listen(), not before. Don't need to bzero() the result. (accept_connection): Support IPv6. (connect_via_ip): New function, taken out of create_client_socket. If connect() fails, save errno during closesocket. (create_client_socket): Don't need to bzero() the sockaddr. Use with_hostname and connect_via_ip. 1999-03-09 Bruno Haible * makemake.in (XCFLAGS): When compiling for sparc, use -fno-schedule-insns, in order to avoid egcs-1.1.1 bug which miscompiles the division routine and causes an XGCD test failure. 1999-03-09 Bruno Haible * aclocal.m4 (CL_TERM): When `struct winsize' is not defined in , check whether it is defined in . * unixconf.h.in (WINSIZE_NEED_SYS_PTEM_H): Rename from NEED_SYS_PTEM_H. (WINSIZE_NEED_SYS_IOCTL_H): New macro. * unix.d: Use both. 1999-03-10 Sam Steingold * configure: new option --export-syscalls. * makemake.in: ditto. * constsym.d, subr.d: add `RESOLVE-HOST-IPADDR', `FILE-STAT' and `USER-DATA'. * pathname.d: add `file_stat' and `user_data'. * socket.d: add `resolve_host_ipaddr'. * stream.d: add `stream_fd'. 1999-03-09 Bruno Haible Make it possible to build clisp when neither libtermcap nor libncurses is available. * configure: Optionally pass/recommend --with-no-termcap-ncurses for makemake. * makemake.in (XCFLAGS): Optionally add -DNO_TERMCAP_NCURSES. * lispbibl.d: If NO_TERMCAP_NCURSES is defined, don't define KEYBOARD and SCREEN. * spvw_sigwinch.d (update_linelength): Respect NO_TERMCAP_NCURSES. 1999-03-09 Bruno Haible * stream.d: Include also in the case of NO_READLINE, in order to declare `strcpy' and `strcat'. 1999-03-11 Sam Steingold * loop.lsp (expand-loop): do not nreverse for collect/nconc/append. 1999-03-09 Bruno Haible Remove the graphics stuff. * graph.d: Remove file. * gettext/po/Makefile.devel (DSOURCES): Remove graph. * unix.d (geteuid, setreuid): Remove declarations. * makemake.in (LIBS): Don't add -lgraph and -lvideo on EMX. (CPARTS): Remove graph. (lisp.exe rule): Don't use emx options -aim or -acmi. * lispbibl.d (GRAPHICS, GRAPHICS_SWITCH): Remove definitions. (switch_text_mode): Remove declaration. * spvw.d (main): Don't drop setuid-root privilege. Don't call switch_text_mode. * stream.d (low_read_unbuffered_handle, low_listen_unbuffered_handle) (low_read_array_unbuffered_handle, low_write_unbuffered_handle) (low_write_array_unbuffered_handle, rd_ch_terminal2) (rd_ch_terminal3, out_char): Don't call switch_text_mode. 1999-03-08 Bruno Haible * configure: Don't tell the user to do "cd .". 1999-03-08 Bruno Haible * graph.d (GRAPHICS_X, GRAPHICS_SUN): Remove unfinished code. * makemake.in: Don't link with ${X_LIBS}, but keep the Makefile variable for possible future use. * clisp-link.in: Likewise. 1999-03-08 Bruno Haible * pathname.d: Include . 1999-03-08 Bruno Haible * aclocal.m4 (CL_FPU_CONTROL): Fix the "checking for" messages. 1999-03-08 Bruno Haible * aclocal.m4 (CL_MEMSET): Undefine memset, so we get correct types with glibc-2.1. 1999-03-10 Sam Steingold * clos.lsp: moved `describe-slotted-object' and `describe-object' from here to describe.lsp. * describe.lsp: moved the bulk from `describe' to `describe-object'. add variables `*describe-nesting*' and `*describe-done*'. `describe' now calls `describe-object' and is ANSI compliant. 1999-03-07 Bruno Haible * readline/: Upgrade to readline-4.0. * configure: Also copy readline/shlib/. 1999-03-05 Bruno Haible * genclisph.d (main): Modify immediate_number_p, charp, integerp, fixnump, posfixnump, floatp, short_float_p according to 1999-02-02 lispbibl.d patch. 1999-03-05 Bruno Haible * Rename newnewreadline to readline, newreadline to oldreadline, readline to oldoldreadline. * Makefile.devel, configure, makemake.in: Update. 1999-03-03 Bruno Haible * stream.d (SOCKET-SERVICE-PORT): When not found, return NIL instead of -1. 1999-03-02 Bruno Haible Handle SIGPIPE on Unix. * spvw_sigpipe.d: New file. * spvw.d: Include it. (main): Call install_sigpipe_handler. * makemake.in (SPVW_INCLUDES): Add spvw_sigpipe. * gettext/po/Makefile.devel (DSOURCES): Add spvw_sigpipe. Split line into multiple pieces, to avoid 1023 character line length limit of patch-2.1. * lispbibl.d (writing_to_subprocess): New declaration. * stream.d (low_flush_buffered_pipe): New function. (BufferedPipeStreamInit): New macro. (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM) (MAKE-PIPE-IO-STREAM): Use it. (low_write_unbuffered_pipe, low_write_array_unbuffered_pipe): New functions. (UnbufferedPipeStream_output_init): Use them. * error.d (begin_error, tast_break): Set writing_to_subprocess=FALSE. * unix.d (raise): New declaration. * msdos.d (raise): Likewise. * acorn.d (raise): Likewise. * errunix.d (EPIPE): Improve error messages. 1999-03-01 Sam Steingold * spvw.d: remove :IEEE-FLOATING-POINT from *features*. Use `pushnew' instead of `nconc'. 1999-02-28 Bruno Haible * lispbibl.d (subr_argtype_t): New enumeration items subr_argtype_1_3, subr_argtype_2_3. * spvw.d (subr_argtype): Use them. * eval.d (eval_subr, apply_subr, funcall_subr): Treat them. * stream.d (SYSTEM::SET-STREAM-ELEMENT-TYPE): Stricter restrictions. (check_multiple8_eltype, test_endianness_arg): New functions. (READ-INTEGER, WRITE-INTEGER): New functions. * compiler.lsp (subr-info): Add them. 1999-02-28 Bruno Haible Allow #0Y to occur on standard input. * stream.d (SYSTEM::SET-STREAM-EXTERNAL-FORMAT): Accept an optional direction argument. If it is given, recurse properly. * io.d (closure_reader): Call it with direction :INPUT. 1999-02-28 Bruno Haible * io.d (syntax_table_get_notinline): Swap arguments to gethash(). 1999-02-28 Bruno Haible * compiler.lsp (compile-file): Create the .fas and .lib files in UTF-8. 1999-02-28 Bruno Haible Reader macro for switching the stream's encoding. * constobj.d (O(charset_package)): New variable. * package.d (init_packages): Create # and initialize O(charset_package). * constpack.d: Remove # here. * spvw.d (init_symbol_tab_2): New enum item enum_charset_index. * io.d (closure_reader): Accept "#0Y charset" syntax. 1999-02-28 Bruno Haible * charstrg.d (char_name): Return #\Uxxxx as a name for every Unicode character. (name_char): Accept #\Uxxxx as a name for any Unicode character. * io.d (char_reader): Remove #\Uxxxx recognition code, now done by `name_char'. (pr_character): For graphic standard characters, don't look up the name. 1999-02-28 Bruno Haible Improve error checking in parse-namestring. * pathname.d (legal_namechar): Don't accept Unicode characters which are not 1 byte in the pathname_encoding. 1999-02-28 Bruno Haible Use the system's iconv() function if available. * aclocal.m4 (CL_ICONV): New macro. * configure.in: Call it. * unixconf.h.in (HAVE_ICONV): New macro. * unix.d: Declare iconv_open, iconv, iconv_close. * encoding.d (MAKE-ENCODING): Accept strings as well. (iconv_mblen, iconv_mbstowcs, iconv_wcslen, iconv_wcstombs): New functions. * pseudofun.d: Add them. * stream.d (test_external_format_arg): Accept strings as well. 1999-02-28 Bruno Haible * configure: Recommend --with-unicode. * makemake.in (*/makefile*): Pass --with-unicode to makemake. 1999-02-28 Bruno Haible * macros2.lsp (with-output-to-printer): Declare arg as IGNORE. 1999-02-28 Bruno Haible Introduce space-efficient immutable strings. * lispbibl.d (Rectype_Imm_SmallSstring): New enumeration item. (Rectype_mdarray, Rectype_Sbvector, Rectype_bvector, Rectype_Svector) (Rectype_vector, Rectype_Sstring, Rectype_string) (Rectype_Imm_Sstring): Rearrange and define rectype_unused1 so as to get fast type checks. (HAVE_SMALL_SSTRING): New macro. (small_sstring_, SmallSstring): New types. (Array_type_sstring): Treat Rectype_Imm_SmallSstring like Rectype_Imm_Sstring. (TheSmallSstring): New macro. (vectorp, simplep, array_simplep, general_vector_p, simple_string_p) (stringp, byte_vector_p, arrayp): Update and optimize. (if_recordp): Treat Rectype_Imm_SmallSstring like Rectype_Imm_Sstring. (case_Rectype_Sstring_above, case_Rectype_string_above) (case_Rectype_array_above): Likewise. (allocate_imm_small_string): New declaration. (with_string_0, with_sstring_0, with_string, with_sstring): Update for unpack_string_ro change. Use unpack_sstring_alloca. (chartcopy, scintcopy): New declarations. (SstringDispatch): New macro. (unpack_sstring_alloca): New macro. (unpack_string_ro): One more argument, change return type. (coerce_normal_ss, coerce_imm_normal_ss): New declarations. (test_string_limits_rw): Remove declaration. (stringarg): New structure type. (test_string_limits_ro): Change calling convention. (string_eqcomp, string_eqcomp_ci): New declarations. * genclisph.d (main): Update vectorp, general_vector_p, simple_string_p, stringp, byte_vector_p, arrayp. * spvw_objsize.d (size_small_sstring): New macro. (objsize): Treat Rectype_Imm_SmallSstring. * spvw_update.d (update_varobject): Treat Rectype_Imm_SmallSstring like Rectype_Imm_Sstring. * spvw_genera1.d (walk_area, build_old_generation_cache): Likewise. * spvw_garcol.d (gc_mark): Likewise. * spvw_typealloc.d (allocate_imm_small_string): New function. * charstrg.d (chartcopy, scintcopy): New functions. (unpack_string_ro): Define always. One more argument, change return type. (string_gleich, string_equal): Mostly rewritten. (copy_string, coerce_imm_ss): Mostly rewritten. (coerce_normal_ss, coerce_imm_normal_ss): New functions. (coerce_char): Update, treat small strings too. (CHAR, SCHAR): Likewise. (test_string_limits_ro): Change calling convention. (test_string_limits_rw): Change calling convention, make local. (test_2_stringsym_limits): Change calling convention. (string_eqcomp, string_comp): Change calling convention. Rewritten, treat small strings too. (STRING=, STRING/=, STRING<, STRING>, STRING<=, STRING>=): Rewritten. (string_eqcomp_ci, string_comp_ci): Change calling convention. Rewritten, treat small strings too. (STRING-EQUAL, STRING-NOT-EQUAL, STRING-LESSP, STRING-GREATERP) (STRING-NOT-GREATERP, STRING-NOT-LESSP): Rewritten. (eqcomp_fun): Change function type. (string_search): Change calling convention. Treat len1==0 outside of the loop. (SYS::SEARCH-STRING=, SYS::SEARCH-STRING-EQUAL): Mostly rewritten. (NSTRING-UPCASE, NSTRING-DOWNCASE, NSTRING-CAPITALIZE): Rewritten. (subsstring, SUBSTRING, string_concat): Treat small strings too. * array.d (datenvektor_aref): Treat small strings too. (datenvektor_store): Treat Rectype_Imm_SmallSstring like Rectype_Imm_Sstring. (VECTOR-PUSH-EXTEND): Treat small strings too. (ssstring_push_extend, ssstring_extend): Use chartcopy. * predtype.d (equal): Use string_eqcomp. (elt_compare_T_Char): Treat small strings too. (elt_compare_Char_Char): Use string_eqcomp_ci. * hashtabl.d (hashcode_string): Treat small strings too. (hashcode3_atom): Treat Rectype_Imm_SmallSstring like Rectype_Imm_Sstring. (hashcode4_vector_Char): Treat small strings too. * package.d (string_hashcode): Treat small strings too. * encoding.d (string_to_asciz): Call unpack_sstring_alloca, but call unpack_string_ro only once. (string_to_asciz_): Update. * sequence.d (WRITE-CHAR-SEQUENCE): Call unpack_sstring_alloca. * stream.d (wr_ss_dummy, wr_ss_dummy_nogc): Treat small strings too. (rd_ch_str_in, rd_ch_array_str_in): Likewise. (MAKE-STRING-INPUT-STREAM): Update. (wr_ss_str_out, wr_ss_pphelp): Treat small strings too. (rd_ch_buff_in): Likewise. (wr_ss_generic): Call unpack_sstring_alloca. (wr_ss_unbuffered_unix, wr_ss_unbuffered_mac, wr_ss_unbuffered_dos) (wr_ss_buffered_unix, wr_ss_buffered_mac, wr_ss_buffered_dos): Likewise. (lisp_completion): Call unpack_sstring_alloca. Use O(terminal_encoding). (wr_ss_terminal3): Call unpack_sstring_alloca. Treat small strings too. (FILE-STRING-LENGTH): Treat small strings too. * io.d (PARSE-INTEGER): Treat small strings too. (write_sstring_case, pr_symbol_part, pr_sstring_ab): Likewise. (pr_orecord): Treat Rectype_Imm_SmallSstring like Rectype_Imm_Sstring. (write_string_up): Update. * lisparit.d (read_integer): Call unpack_sstring_alloca. (decimal_string): Use chartcopy. * foreign.d (convert_to_foreign): Call unpack_sstring_alloca. * affi.d (affi_call_argsa, SYSTEM::MEM-WRITE-VECTOR): Likewise. * pathname.d (subst_coerce_normal_ss): New function. (test_optional_host): Use coerce_normal_ss instead of coerce_ss. (PARSE-NAMESTRING): When thing is a symbol, do the case conversion on the :start/:end delimited part, not on the entire symbol-name. Accept small strings too, convert them to normal strings. (MAKE-PATHNAME): Call coerce_normal_ss on the device, name and type. Call subst_coerce_normal_ss on the directory. 1999-02-27 Bruno Haible * package.d (correct_packname): Convert the package name to an immutable string. (init_packages): Use immutables strings as package names and nicknames. * symbol.d (GENSYM): Make the symbol name immutable. 1999-02-27 Bruno Haible Bug fix for NEXTAPP model. * stream.d (lisp_completion): Call begin_error here. (lisp_completion_matches): Not here. 1999-02-25 Bruno Haible * socket.d (create_server_socket): Cast setsockopt argument. * modules.d (_NEXT_NULL): New macro. 1999-02-25 Bruno Haible * makemake.in: Fix bug in parsing of --hyperspec argument. * makemake.in (XCC_DLOPENABLE_EXE_FLAG): Pass -export-dynamic to the linker only if the linker is GNU ld. 1999-02-22 Bruno Haible * clos.lsp, init.lsp: Do export GENERIC-LABELS and GENERIC-FLET here. 1999-02-22 Bruno Haible * compiler.lsp (compile-file): Output the SYSTEM::VERSION form in upper case. * unix/MAGIC.add: Revert last change. 1999-02-21 Bruno Haible Convert dotimesL with loop variables into dotimespL. * affi.d (bytecopy): Use dotimespL. Assume length > 0. (SYSTEM::MEM-READ): Use dotimespL instead of dotimesL. * array.d (reshape): Likewise. * charstrg.d (string_gleich, string_equal, SUBSTRING): Likewise. * control.d (PSETQ): Likewise. * error.d (convert_simple_condition): Likewise. * eval.d (sym_value, setq, sym_function, nest_env): Likewise. * encoding.d (make_string_, ascii_to_string): Likewise. * graph.d (gr_text): Likewise. * io.d (test_potential_number_syntax, test_number_syntax, test_dots) (upcase_token, uninterned_reader, bit_vector_reader) (write_sstring_case, klammer_zu): Likewise. * record.d (CLOS::ALLOCATE-STD-INSTANCE, CLOS::%ALLOCATE-INSTANCE) (CLOS::%MAKE-INSTANCE): Likewise. * spvw.d (main): Likewise. * foreign.d (convert_from_foreign_array_fill, convert_to_foreign): Likewise. * hashtabl.d (clrhash): Likewise. * intread.d (DIGITS_to_I): Likewise. * pathname.d (common_case, test_optional_host, all_digits) (parse_logical_pathnamestring, legal_name_or_type, legal_name) (legal_type, MAKE-PATHNAME, has_wildcards, has_word_wildcards) (SYSTEM::DYNLOAD-MODULES): Likewise. * predtype.d (heap_statistics_result): Likewise. * stream.d (wr_ss_terminal3): Likewise. * spvw_debug.d (mem_hex_out): Likewise. * spvw_typealloc.d (allocate_vector): Likewise. Convert dotimesC with loop variables into dotimespC. * affi.d (affi_call_argsa): Use dotimespC instead of dotimesC. * arilev1i.d (shiftleft_loop_down, shiftleftcopy_loop_down) (shiftright_loop_up): Likewise. * array.d (array_dimensions, array_dims_sizes, ARRAY-IN-BOUNDS-P) (bit_up): Likewise. * eval.d (get_closure, funcall_iclosure, match_subr_key) (match_cclosure_key, apply_closure, funcall_subr, funcall_closure): Likewise. * charstrg.d (string_concat): Likewise. * misc.d (MACHINE-INSTANCE): Likewise. * control.d (LET, LET*, SYMBOL-MACROLET): Likewise. * foreign.d (FFI::%ELEMENT): Likewise. * hashtabl.d (hashcode4_atom): Likewise. * lisparit.d (=, /=, <, >, <=, >=): Likewise. * record.d (CLOS::%SHARED-INITIALIZE, CLOS::%REINITIALIZE-INSTANCE) (do_initialize_instance, CLOS::%MAKE-INSTANCE): Likewise. * predtype.d (equalp): Likewise. * sequence.d (CONCATENATE): Likewise. * spvw.d (for_all_subrs, for_all_constobjs, init_subr_tab_1) (init_object_tab_1, init_other_modules_1, init_module_2, main) (dynload_modules): Likewise. * spvw_typealloc.d (allocate_xrecord_): Likewise. * stream.d (test_input_stream_args, test_output_stream_args) (clear_linepart, save_line_old): Likewise. 1999-02-20 Bruno Haible Introduce immutable strings. * lispbibl.d (Rectype_Imm_Sstring): New enumeration item. (Array_type_sstring): Include it. (strmflags_immut_bit_B): New macro. (vectorp, simplep, array_simplep, general_vector_p, simple_string_p) (stringp, byte_vector_p, arrayp, if_recordp): Update. (case_Rectype_Sstring_above, case_Rectype_string_above): Include Rectype_Imm_Sstring. (allocate_imm_string): New declaration. (with_string_0, with_string): Use unpack_string_ro. (unpack_string_ro, unpack_string_rw): New declarations, replace unpack_string. (coerce_imm_ss): New declaration. (test_string_limits_ro, test_string_limits_rw): New declarations, replace test_string_limits. (fehler_sstring_immutable): New declaration. (check_sstring_mutable): New macro. * spvw_update.d (update_varobject): Treat Rectype_Imm_Sstring like Rectype_Sstring. * spvw_garcol.d (gc_mark): Likewise. * spvw_genera1.d (walk_area, build_old_generation_cache): Likewise. * spvw_typealloc.d (allocate_imm_string): New function. * error.d (fehler_sstring_immutable): New function. * array.d (datenvektor_store): In case of Rectype_Imm_Sstring, signal an error. * charstrg.d (unpack_string_rw): Rename from unpack_string. Add calls to check_sstring_mutable. (unpack_string_ro): New function. (string_gleich, string_equal, copy_string): Use unpack_string_ro instead of unpack_string. (coerce_imm_ss): New function. (coerce_char): Use unpack_string_ro instead of unpack_string. (test_index_arg): Return the index, not the new charptr. (CHAR, SCHAR): Update. (SYS::STORE-CHAR): Update. Call unpack_string_rw instead of unpack_string. (SYS::STORE-SCHAR): Update. Add check_sstring_mutable call. (test_string_limits_ro): Rename from test_string_limits. Use unpack_string_ro instead of unpack_string. (test_string_limits_rw): New function. (test_2_stringsym_limits): Use unpack_string_ro instead of unpack_string. (NSTRING-UPCASE, NSTRING-DOWNCASE, NSTRING-CAPITALIZE): Use test_string_limits_rw instead of test_string_limits. (SUBSTRING, string_concat): Use unpack_string_ro instead of unpack_string. * stream.d (strmflags_immut_bit_B, strmflags_immut_B): New macros. (make_twoway_stream, make_echo_stream): Inherit the immut_B from the input stream. (rd_ch_str_in, rd_ch_array_str_in): Use unpack_string_ro instead of unpack_string. (MAKE-STRING-INPUT-STREAM): Use test_string_limits_ro instead of test_string_limits. (rd_ch_buff_in): Likewise. Use unpack_string_ro instead of unpack_string. (make_unbuffered_stream, make_buffered_stream): Put strmflags_immut_B into the strmflags if asked for. (FILE-STRING-LENGTH): Use unpack_string_ro instead of unpack_string. * io.d (string_reader): Create an immutable string, if the stream allows this. (uninterned_reader): Likewise. (PARSE-INTEGER): Use test_string_limits_ro instead of test_string_limits. (pr_orecord): Treat Rectype_Imm_Sstring like Rectype_Sstring. (write_string_up): Use test_string_limits_ro instead of test_string_limits. * affi.d (affi_call_argsa): Use unpack_string_ro instead of unpack_string. (SYSTEM::MEM-READ): Use unpack_string_rw instead of unpack_string. (SYSTEM::MEM-WRITE-VECTOR): Use unpack_string_ro instead of unpack_string. * package.d (string_hashcode): Use unpack_string_ro instead of unpack_string. (intern): Make the symbol-name strings immutable if possible. (shadow): Likewise. (MAKE-SYMBOL): Likewise. (test_names_args): Make the package-name and package-nicknames strings immutable if possible. * spvw.d (init_symbol_tab_2): Make the symbol-name strings immutable if possible. * pathname.d (PARSE-NAMESTRING): Use test_string_limits_ro instead of test_string_limits. * encoding.d (string_to_asciz): Use unpack_string_ro instead of unpack_string. * foreign.d (convert_to_foreign): Use unpack_string_ro instead of unpack_string. * hashtabl.d (hashcode_string): Use unpack_string_ro instead of unpack_string. (hashcode3_atom): Treat Rectype_Imm_Sstring like Rectype_Sstring. * sequence.d (READ-CHAR-SEQUENCE): Treat an empty string specially. Then call unpack_string_rw instead of unpack_string. (WRITE-CHAR-SEQUENCE): Treat an empty string specially. Then call unpack_string_ro instead of unpack_string. 1999-02-20 Bruno Haible Make room in the strmflags. * stream.d (strmflags_i_B, strmflags_ia_B, strmflags_ib_B) (strmflags_ic_B): Remove macros. (decoded_eltype): kind==eltype_ch implies size==0. (test_eltype_arg): When setting eltype_ch, set size = 0. (strm_channel_extrafields_struct): bitsize is now unconditional. (close_ichannel, close_ochannel): Test for bitsize > 0. (make_unbuffered_stream): Set ChannelStream_bitsize in all cases. Don't set strmflags_i... (position_file_i_buffered): Dispatch on bitsize, not flags. (logical_position_file_start, logical_position_file) (logical_position_file_end): Likewise. (fill_pseudofuns_buffered): Likewise. (make_buffered_stream): Set ChannelStream_bitsize in all cases. Don't set strmflags_i... (buffered_flush_everything): Dispatch on bitsize, not flags. (closed_buffered): Test for bitsize > 0. (SYSTEM::SET-STREAM-ELEMENT-TYPE): Simplify accordingly. 1999-02-20 Bruno Haible Make BASE-CHAR equivalent to CHARACTER. * lispbibl.d (small_char_int_len): Rename from base_char_int_len. (small_char_int_limit): Rename from base_char_int_limit. (scint): Rename from bcint. (small_char_code_limit): Rename from base_char_code_limit. (base_char_int_len, base_char_code_limit): New macros. (base_char_p): Define only when needed. (small_char_p): New macro. * charstrg.d (SYSTEM::BASE-CHAR-P): Define only when needed. * spvw.d (init_object_tab): Add :BASE-CHAR=CHARACTER to *features*. * io.d: Update. * defs2.lsp (dispatch-reader): Don't use base-char-p and base-char-code-limit. (designator): Depend upon :BASE-CHAR=CHARACTER. (base-char-designator-p): Define only when needed. * type.lsp (BASE-CHAR, EXTENDED-CHAR, canonicalize-type): Depend upon :BASE-CHAR=CHARACTER. * compiler.lsp (c-typep-alist1, c-typep-alist2): Treat BASE-CHAR and EXTENDED-CHAR depending upon :BASE-CHAR=CHARACTER. 1999-02-20 Bruno Haible Improve the speed of NLS charset conversions. * utils/unicode/nls_table.java: Emit a value for is_ascii_extension. * encoding.d (nls_table): New field `is_ascii_extension'. (nls_asciiext_mbstowcs, nls_asciiext_wcstombs): New functions. (init_encodings): Choose them if possible. * pseudofun.d (nls_asciiext_mbstowcs, nls_asciiext_wcstombs): New declarations. 1999-02-20 Bruno Haible * stream.d (init_streamvars): Avoid gcc warning. 1999-02-19 Sam Steingold * defs3.lsp, clos.lsp, init.lsp: do not export `generic-flet', `generic-labels'. * _impnotes.html is now HTML 3.2 compliant. 1999-02-19 Bruno Haible * makemake.in: Improve parsing of --hyperspec argument. 1999-02-18 Sam Steingold * affi.txt, ansicl.txt, cltl2.txt, foreign.txt, module.txt, vgagraph.txt: remove. 1999-02-17 Bruno Haible * makemake.in: Improve parsing of --hyperspec argument. 1999-02-17 Sam Steingold * spvw.d: user ascii* instead of asciz* for constant string when initializing *features*. * _impnotes.txt, impnotes.html: remove. * _impnotes.html: new file. * makemake.in, ../configure: new option --hyperspec. 1999-02-12 Sam Steingold * socket.d (create_client_socket): port is unsigned int. * stream.d: declare `create_client_socket' appropriately. 1999-02-17 Bruno Haible * pseudofun.d: Enclose all XPSEUDOs in #ifdef UNICODE. 1999-02-16 Bruno Haible Unicode support. * makemake.in (--with-unicode): New command line option. (XCFLAGS): Conditionally add -DUNICODE. (UNICODE_INCLUDES, NLS_INCLUDES): New variables. (CFILES): Add them. Symlink them. (depends): Add $UNICODE_INCLUDES for charstrg. Add $NLS_INCLUDES for encoding. * lispbibl.d (CHART_STRUCT): Don't define on m68k and arm CPUs. (char_int_len): Define as 16 for UNICODE. (Encoding) [UNICODE]: Add more fields. (encoding_length): Change value. (encoding_xlength): New macro. (Encoding_mblen, Encoding_mbstowcs, Encoding_wcslen) (Encoding_wcstombs, cslen, cstombs): New macros. (allocate_encoding): Use encoding_xlength. (make_string): Add an encoding argument. (asciz_to_string, string_to_asciz): Likewise. (ascii_to_string): New function. (with_string_0, with_sstring_0, with_string, with_sstring): Add an encoding argument. (pseudofun_): Remove type. (Pseudofun): Change definition. (P): New macro, moved here from stream.d. (max_bytes_per_chart): New macro. * genclisph.d (main): Remove `asciz_to_string' declaration. Add `ascii_to_string' declaration. * modules/clx/new-clx/e2d.c (care_about_packages): Use ascii_to_string instead of asciz_to_string. * constpack.d (LISPPACK_B): Use ascii_to_string instead of asciz_to_string. (charset): New package. * constsym.d (CHARSET:...): New symbols. * constobj.d (O(internal_encoding), O(pathname_encoding), O(terminal_encoding), O(foreign_encoding), O(misc_encoding)): New variables. * spvw.d (make_string, asciz_to_string, string_to_asciz): Moved out to encoding.d. (fehler_notreached): Use ascii_to_string instead of asciz_to_string. (fehler_code_alignment): Use O(terminal_encoding). (init_symbol_tab_2): Export symbols in package CHARSET as well. Use ascii_to_string instead of asciz_to_string. (init_object_tab): Add :UNICODE to features_initstring. Use ascii_to_string instead of asciz_to_string. Use O(internal_encoding). (init_module_2): Use O(internal_encoding). (print_license, print_banner): Use O(internal_encoding). (main): Use O(internal_encoding) and O(pathname_encoding) and O(misc_encoding). Use ascii_to_string. (fehler_dlerror): Use O(misc_encoding) and O(internal_encoding). * spvw_language.d (localized_string, localized_object): Use S(iso8859_1). * spvw_memfile.d (memflags): Depends on UNICODE. (loadmem_update): Use the Pseudofun type instead of void*. * encoding.d (MAKE-ENCODING): Accept constant symbols for the :charset argument. Copy the trailing encoding_xlength bytes too. (make_string): Moved here from spvw.d. Add encoding argument. (asciz_to_string): Likewise. (ascii_to_string): New function. (string_to_asciz): Moved here from spvw.d. Add encoding argument. (hex_table): New variable. (fehler_unencodable): New function. (uni16_mblen, uni16be_mbstowcs, uni16le_mbstowcs, uni16_wcslen) (uni16be_wcstombs, uni16le_wcstombs): New functions. (fehler_utf8_invalid1, fehler_utf8_invalid2, fehler_utf8_invalid3) (utf8_mblen, utf8_mbstowcs, utf8_wcslen, utf8_wcstombs): New functions. (java_mblen, java_mbstowcs, java_wcslen, java_wcstombs): New functions. (nls_table): New struct type. (nopage): New constant array. (nls_*.c): New include files. (nls_first_sym, nls_last_sym, nls_num_encodings): New macros. (nls_tables): New constant array. (nls_mblen, nls_mbstowcs, nls_wcslen, nls_wcstombs): New functions. (init_encodings): Entirely rewritten. * pseudofun.d (PSEUDOFUN_C): Rename from PSEUDOFUN_B. (PSEUDOFUN_B): New macro. (XPSEUDO_A, XPSEUDO_B, XPSEUDO_C): New macros. New XPSEUDO declarations for the functions and tables defined in encoding.d. * charstrg.d (nop_page): New variable. (up_case, down_case): Add UNICODE support. (uni_attribute.c): New include file. (unicode_attribute): New macro. (alphap): Add UNICODE support. (numericp): New macro. (alphanumericp): Add UNICODE support. (graphic_char_p): Add UNICODE support. (SYSTEM::BASE-CHAR-P): Fix comparison with base_char_code_limit. (DIGIT-CHAR-P): Add UNICODE support. * predtype.d (TYPE-OF): Fix comparison with base_char_code_limit. * package.d (init_packages): Use ascii_to_string instead of asciz_to_string. * io.d (unicode_attribute, graphic_char_p): New macros. (allocate_perchar_table, perchar_table_get, perchar_table_put) (copy_perchar_table): Add UNICODE support. (allocate_syntax_table, syntax_table_get, syntax_table_put): Move macros. Add UNICODE support. (orig_syntax_table): Size is only base_char_code_limit. Add UNICODE support. (orig_syntax_table_get): New macro. (orig_readtable, copy_readtable_contents): Add UNICODE support. (SET-SYNTAX-FROM-CHAR): Permit syntax_table_put to call GC. (SET-MACRO-CHARACTER): Likewise. (MAKE-DISPATCH-MACRO-CHARACTER): Likewise. (attribute_table): Size is only base_char_code_limit. Add UNICODE support. (attribute_of): Add UNICODE support. (char_reader): Declare code as uintL, so it can hold value up to 10*char_code_limit. Recognize #\uxxxx syntax. (PARSE-INTEGER): Use orig_syntax_table_get instead of accessing orig_syntax_table directly. (pr_orecord): For Rectype_Encoding, also print the charset symbol. * defs2.lsp (dispatch-reader): Modify to match changes in the perchar_table_get macro. * pathname.d (asciz_dir_to_pathname): Add an encoding argument. (PARSE-NAMESTRING): Use O(misc_encoding). (default_directory_of, directory_truename, default_directory) (canonicalise_filename, canonicalise_dirname, assure_dir_exists): Use O(pathname_encoding). (change_default): Likewise. (file_exists, directory_exists): Likewise. (DELETE-FILE, rename_file, create_backup_file, open_file): Likewise. (extract, subdirs, subfiles, with_stat_info) (directory_search_1subdir, directory_search_hashcode) (directory_search_direntry_ok, directory_search_scandir, DIRECTORY): Likewise. (MAKE-DIR, DELETE-DIR, ENSURE-DIRECTORIES-EXIST): Likewise. (init_pathnames): Use O(pathname_encoding) and O(misc_encoding). (FILE-WRITE-DATE, FILE-AUTHOR): Use O(pathname_encoding). (EXECUTE): Use O(pathname_encoding) and O(misc_encoding). (SHELL): Use O(misc_encoding). (SYSTEM::DYNLOAD-MODULES): Use O(pathname_encoding). (SYSTEM::PROGRAM-NAME): Likewise. * stream.d (P): Move to lispbibl.d. (test_external_format): Accept constant symbols. (strm_unbuffered_extrafields_struct): Extend the meaning of status. Rename field `lastbyte' to `bytebuf'. (UnbufferedStream_lastbyte): Remove macro. (UnbufferedStream_bytebuf): New macro. (UnbufferedStreamLow_push_byte, UnbufferedStreamLow_pushfront_byte) (UnbufferedStreamLow_pushfront_bytes, UnbufferedStreamLow_pop_byte): New macros. (low_read_unbuffered_handle): Use UnbufferedStreamLow_pop_byte and UnbufferedStreamLow_push_byte. (low_listen_unbuffered_handle): Use UnbufferedStreamLow_push_byte. (low_read_array_unbuffered_handle): Use UnbufferedStreamLow_pop_byte in a loop. (rd_ch_unbuffered): Add UNICODE support. (listen_unbuffered): Likewise. Use UnbufferedStreamLow_pushfront_byte. (rd_ch_array_unbuffered): Add UNICODE support. (wr_ch_unbuffered_unix, wr_ch_array_unbuffered_unix): Likewise. (wr_ch_unbuffered_mac, wr_ch_array_unbuffered_mac): Likewise. (wr_ch_unbuffered_dos, wr_ch_array_unbuffered_dos): Likewise. (rd_ch_buffered, rd_ch_array_buffered): Likewise. (wr_ch_buffered_unix, wr_ch_array_buffered_unix): Likewise. (wr_ch_buffered_mac, wr_ch_array_buffered_mac): Likewise. (wr_ch_buffered_dos, wr_ch_array_buffered_dos): Likewise. (finish_output_buffered): Use O(pathname_encoding). (make_key_event): Use ascii_to_string instead of asciz_to_string. (lisp_completion): Use O(terminal_encoding). (rd_ch_terminal3): Use O(terminal_encoding). (wr_ch_terminal3): Call wr_ch_unbuffered_unix, instead of direct `write' call. (wr_ss_terminal3): Call wr_ch_array_unbuffered_unix, instead of direct `full_write' call. (make_terminal_stream_): Initialize the encoding. Use O(pathname_encoding). (init_term): Use O(misc_encoding). (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM) (MAKE-PIPE-IO-STREAM): Use O(misc_encoding). (low_read_unbuffered_socket): Use UnbufferedStreamLow_pop_byte. (low_listen_unbuffered_socket): Use UnbufferedStreamLow_push_byte. (low_read_array_unbuffered_socket): Use UnbufferedStreamLow_pop_byte in a loop. (SYS::MAKE-SOCKET-STREAM, SOCKET-SERVER, SOCKET-CONNECT): Use O(misc_encoding). (SOCKET-SERVICE-PORT): Use S(ascii). (publish_host_data): Use O(misc_encoding). (make_terminal_io): Use ascii_to_string instead of asciz_to_string. (init_streamvars): Likewise. (SYSTEM::SET-STREAM-ELEMENT-TYPE): Use UnbufferedStreamLow_push_byte. (pseudofun_tab): Include pseudofun.c once more. * error.d (write_errorstring): Add UNICODE support. Use O(internal_encoding). * misc.d (LISP-IMPLEMENTATION-VERSION): Use ascii_to_string instead of asciz_to_string. (MACHINE-TYPE, MACHINE-VERSION, MACHINE-INSTANCE): Use O(misc_encoding). Use ascii_to_string instead of asciz_to_string. (SYSTEM::GETENV, SYSTEM::REGISTRY): Use O(misc_encoding). * rexx.d (REXX-PUT): Use with_sstring and O(misc_encoding). (rexx_getmsg): Use O(misc_encoding). (REXX-REPLY): Use with_string and O(misc_encoding). No need to call coerce_ss. * graph.d (SYS::GRAPH-INIT): Use ascii_to_string instead of asciz_to_string. (SYS::GRAPH-TEXT): Use with_string and an encoding corresponding to the font. * foreign.d (register_foreign_variable, register_foreign_function): Use O(internal_encoding). (convert_from_foreign_array_fill, convert_from_foreign): Add UNICODE support. Use O(foreign_encoding). (convert_to_foreign): Add UNICODE support. Use O(foreign_encoding). (open_library): Use O(misc_encoding). * affi.d (affi_callit): Use O(foreign_encoding). (affi_call_argsa): Add UNICODE support. Use O(foreign_encoding). (SYS::MEM-READ, SYSTEM::MEM-WRITE-VECTOR): Likewise. 1999-02-16 Bruno Haible * stream.d (init_streamvars): Initialize the keyboard stream after the standard streams, not before them. 1999-02-15 Bruno Haible * autoconf/aclocal.m4 (CL_IREG_FLOAT_RETURN): New macro. 1999-02-14 Bruno Haible * utils/unicode/: New directory. * uni_upcase.c, uni_downcase.c, uni_attribute.c, nls_*.c: New files, automatically generated by utils/unicode/ tools. 1999-02-14 Bruno Haible * compiler.lsp (compile-toplevel-form): Put a newline on *fasoutput-stream* after the form, not before it. (compile-file): Put a newline after the first form, and none before closing *fasoutput-stream*. 1999-02-13 Bruno Haible * lispbibl.d (with_sstring): Assign a value to lenvar. 1999-02-13 Bruno Haible Introduce encodings. * lispbibl.d (Rectype_Encoding): New enum value. (Encoding): New structure type. (encoding_length): New macro. (strm_file_name, strm_file_truename, strm_buffered_channel) (strm_pipe_pid, strm_x11socket_connect, strm_socket_port) (strm_socket_host): Offset by 1. (TheEncoding, encodingp, allocate_encoding): New macros. (init_encodings): New declaration. (make_file_stream): Change calling convention. * constobj.d (O(default_file_encoding)): New variable. * encoding.d: New file. * makemake.in (CPARTS): Add encoding.d. * gettext/po/Makefile.devel (DSOURCES): Add encoding.d. * spvw.d (initmem): Call init_encodings. * io.d (pr_orecord): Treat Rectype_Encoding. * predtype.d (TYPE-OF, CLOS:CLASS-OF): Treat Rectype_Encoding. (enum_hs_encoding): New enum value. (heap_statistics_mapper): Treat Rectype_Encoding. * stream.d (test_external_format_arg): New function. (strm_encoding): New macro. (strm_bitbuffer, strm_buffer, strm_isatty, strm_ichannel) (strm_ochannel, strm_field1, strm_field2, strm_channel_extrafields) (strm_channel_len): Offset by 1. (strm_unbuffered_extrafields_struct): New field ignore_next_LF. (UnbufferedStream_ignore_next_LF): New macro. (rd_ch_unbuffered): Perform CR/LF->NL and CR->NL conversion. (listen_unbuffered): Likewise. (clear_input_unbuffered): Update. (rd_ch_array_unbuffered): Perform CR/LF->NL and CR->NL conversion. (wr_ch_unbuffered_unix): Rename from wr_ch_unbuffered. (wr_ch_array_unbuffered_unix): Rename from wr_ch_array_unbuffered. (wr_ss_unbuffered_unix): Rename from wr_ss_unbuffered. (wr_ch_unbuffered_mac, wr_ch_array_unbuffered_mac) (wr_ss_unbuffered_mac): New functions. (wr_ch_unbuffered_dos, wr_ch_array_unbuffered_dos) (wr_ss_unbuffered_dos): New functions. (wr_ch_unbuffered_x, wr_ch_array_unbuffered_x, wr_ss_unbuffered_x): Remove macros. (fill_pseudofuns_unbuffered): Choose among the wr_*_unbuffered_{unix,mac,dos} functions. (make_unbuffered_stream): Change calling convention. Set the stream's encoding. (rd_ch_buffered): Perform CR/LF->NL and CR->NL conversion. (rd_ch_array_buffered): Likewise. (wr_ch_buffered_unix): Rename from wr_ch_buffered. (wr_ch_array_buffered_unix): Rename from wr_ch_array_buffered. (wr_ss_buffered_unix): Rename from wr_ss_buffered. (wr_ch_buffered_mac, wr_ch_array_buffered_mac, wr_ss_buffered_mac): New functions. (wr_ch_buffered_dos, wr_ch_array_buffered_dos, wr_ss_buffered_dos): New functions. (fill_pseudofuns_buffered): Choose among the wr_*_buffered_{unix,mac,dos} functions. (make_buffered_stream): Change calling convention. Set the stream's encoding. (make_file_stream): Change calling convention. Call test_external_format_arg. (strm_terminal_index): Offset by 1. (rd_ch_terminal1): Remove CR/LF->NL conversion, already done by rd_ch_unbuffered. (wr_ch_terminal1, wr_ss_terminal1): Update. (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM) (MAKE-PIPE-IO-STREAM): Call test_external_format_arg. (make_socket_stream): Change calling convention. (SOCKET-ACCEPT, SOCKET-CONNECT): Call test_external_format_arg. (make_terminal_io, init_streamvars): Update. (SYSTEM::SET-STREAM-ELEMENT-TYPE): Reset the ignore_next_LF flag. (STREAM-EXTERNAL-FORMAT): Rewritten. (SYSTEM::SET-STREAM-EXTERNAL-FORMAT): New function. (FILE-STRING-LENGTH): Update. * pseudofun.d: Update. * pathname.d (open_file): Change calling convention. (OPEN): Don't check the :external-format argument here. * places.lsp (stream-external-format): New defsetf. * macros2.lsp (with-output-to-printer, make-printer-stream): Accept a :external-format argument. 1999-02-11 Christian Jullien * time.d (get_run_time) [TIME_WIN32]: Add missing semicolon. 1999-02-10 Sam Steingold * spvw.d: add :ANSI-CL and :IEEE-FLOATING-POINT to *features* when invoked with "-a". * io.d: when lisp:*ansi* is non-nil, do not print pathnames with #S() when *print-readably* is non-nil. 1999-02-05 Bruno Haible * unixaux.d (full_read): Call handle_fault_range before the system call, in order to avoid EFAULT. (full_write): Likewise. * win32aux.d (lowlevel_full_read, full_write, lowlevel_sock_read) (lowlevel_sock_write): Likewise. 1999-02-05 Sam Steingold * spvw.d (usage): add the URL and replace "oder" with "or". 1999-02-03 Bruno Haible * intgcd.d (I_I_xgcd_I_I_I): Use C comments, not C++ comments. 1999-02-03 Bruno Haible * stream.d (publish_host_data): If hd.truename is NULL, use hd.hostname, not hd.truename. 1999-02-03 Bruno Haible * stream.d: Big renaming orgy. (strm_ichannel): was strm_ihandle. (strm_ochannel): was strm_ohandle. (strm_channel_extrafields): was strm_handle_extrafields. (strm_channel_len): was strm_handle_len. (strm_channel_extrafields_struct): was strm_handle_extrafields_struct. (strm_unbuffered_extrafields_struct): was strm_u_file_extrafields_struct. (ChannelStream_eltype): was HandleStream_eltype. (ChannelStream_isatty): was HandleStream_isatty. (ChannelStream_ichannel): was HandleStream_ihandle. (ChannelStream_ochannel): was HandleStream_ohandle. (ChannelStream_buffered): was HandleStream_buffered. (ChannelStreamLow_close): was HandleStreamLow_close. (ChannelStream_lineno): was HandleStream_lineno. (ChannelStream_bitsize): was HandleStream_bitsize. (UnbufferedStreamLow_read): was FileStreamLow_read. (UnbufferedStreamLow_listen): was FileStreamLow_listen. (UnbufferedStreamLow_clear_input): was FileStreamLow_clear_input. (UnbufferedStreamLow_read_array): was FileStreamLow_read_array. (UnbufferedStream_status): was FileStream_status. (UnbufferedStream_lastbyte): was FileStream_lastbyte. (UnbufferedStream_rawp): was FileStream_rawp. (UnbufferedStreamLow_write): was FileStreamLow_write. (UnbufferedStreamLow_write_array): was FileStreamLow_write_array. (UnbufferedStreamLow_finish_output): was FileStreamLow_finish_output. (UnbufferedStreamLow_force_output): was FileStreamLow_force_output. (UnbufferedStreamLow_clear_output): was FileStreamLow_clear_output. (wr_by_ixu_sub): was wr_by_ixu_file. (wr_by_ixs_sub): was wr_by_ixs_file. (low_read_unbuffered_handle): was file_low_read. (low_listen_unbuffered_handle): was file_low_listen. (low_clear_input_unbuffered_handle): was file_low_clear_input. (low_read_array_unbuffered_handle): was file_low_read_array. (rd_by_aux_iax_unbuffered): was rd_by_aux_iax_handle. (rd_by_iau_unbuffered): was rd_by_iau_handle. (rd_by_ias_unbuffered): was rd_by_ias_handle. (rd_by_iau8_unbuffered): was rd_by_iau8_handle. (rd_by_array_iau8_unbuffered): was rd_by_array_iau8_handle. (rd_ch_unbuffered): was rd_ch_handle. (listen_unbuffered): was listen_handle. (clear_input_unbuffered): was clear_input_handle. (rd_ch_array_unbuffered): was rd_ch_array_handle. (UnbufferedHandleStream_input_init): was HandleStream_input_init. (UnbufferedHandleStream_input_init_amiga): was HandleStream_input_init_amiga. (close_ichannel): was close_ihandle. (low_write_unbuffered_handle): was file_low_write. (low_write_array_unbuffered_handle): was file_low_write_array. (low_finish_output_unbuffered_handle): was file_low_finish_output. (low_force_output_unbuffered_handle): was file_low_force_output. (low_clear_output_unbuffered_handle): was file_low_clear_output. (wr_by_aux_ia_unbuffered): was wr_by_aux_ia_handle. (wr_by_iau_unbuffered): was wr_by_iau_handle. (wr_by_ias_unbuffered): was wr_by_ias_handle. (wr_by_iau8_unbuffered): was wr_by_iau8_handle. (wr_by_array_iau8_unbuffered): was wr_by_array_iau8_handle. (wr_ch_unbuffered): was wr_ch_handle. (wr_ch_array_unbuffered): was wr_ch_array_handle. (wr_ss_unbuffered): was wr_ss_handle. (wr_ch_unbuffered_x): was wr_ch_handle_x. (wr_ch_array_unbuffered_x): was wr_ch_array_handle_x. (wr_ss_unbuffered_x): was wr_ss_handle_x. (finish_output_unbuffered): was finish_output_handle. (force_output_unbuffered): was force_output_handle. (clear_output_unbuffered): was clear_output_handle. (UnbufferedHandleStream_output_init): was HandleStream_output_init. (close_ochannel): was close_ohandle. (strm_buffered_channel): was strm_file_handle. (strm_buffered_bufflen): was strm_file_bufflen. (strm_buffered_buffer): was strm_file_buffer. (strm_buffered_extrafields_struct): was strm_file_extrafields_struct. (strm_i_buffered_extrafields_struct): was strm_i_file_extrafields_struct. (BufferedStream_channel): was FileStream_handle. (BufferedStream_buffer): was FileStream_buffer. (BufferedStreamLow_fill): was FileStreamLow_fill. (BufferedStreamLow_flush): was FileStreamLow_flush. (BufferedStream_buffstart): was FileStream_buffstart. (BufferedStream_eofindex): was FileStream_eofindex. (BufferedStream_index): was FileStream_index. (BufferedStream_modified): was FileStream_modified. (BufferedStream_regular): was FileStream_regular. (BufferedStream_blockpositioning): was FileStream_blockpositioning. (BufferedStream_position): was FileStream_position. (BufferedStream_bitindex): was FileStream_bitindex. (BufferedStream_eofposition): was FileStream_eofposition. (handle_lseek): was file_lseek. (low_fill_buffered_handle): was b_file_fill. (low_flush_buffered_handle): was b_file_finish_flush. (BufferedHandleStream_init): was HandleStream_init. (buffered_full_flush): was b_file_full_flush. (buffered_half_flush): was b_file_half_flush. (buffered_flush): was b_file_flush. (buffered_nextbyte): was b_file_nextbyte. (buffered_eofbyte): was b_file_eofbyte. (buffered_writebyte): was b_file_writebyte. (position_file_buffered): was position_b_file. (read_byte_array_buffered): was read_byte_array_b_file. (write_byte_array_buffered): was write_byte_array_b_file. (rd_ch_buffered): was rd_ch_ch_file. (listen_buffered): was listen_ch_file. (rd_ch_array_buffered): was rd_ch_array_ch_file. (write_byte_buffered): was write_b_file. (wr_ch_buffered): was wr_ch_ch_file. (wr_ch_array_buffered): was wr_ch_array_ch_file. (wr_ss_buffered): was wr_ss_ch_file. (position_file_i_buffered): was position_i_file. (rd_by_aux_iax_buffered): was rd_by_aux_iax_file. (rd_by_aux_ibx_buffered): was rd_by_aux_ibx_file. (rd_by_aux_icx_buffered): was rd_by_aux_icx_file. (rd_by_iau_buffered): was rd_by_iau_file. (rd_by_ias_buffered): was rd_by_ias_file. (rd_by_ibu_buffered): was rd_by_ibu_file. (rd_by_ibs_buffered): was rd_by_ibs_file. (rd_by_icu_buffered): was rd_by_icu_file. (rd_by_ics_buffered): was rd_by_ics_file. (rd_by_iau8_buffered): was rd_by_iau8_file. (rd_by_array_iau8_buffered): was read_byte_array_iau8_file. (wr_by_aux_ia_buffered): was wr_by_aux_ia_file. (wr_by_aux_ib_buffered): was wr_by_aux_ib_file. (wr_by_aux_ic_buffered): was wr_by_aux_ic_file. (wr_by_iau_buffered): was wr_by_iau_file. (wr_by_ias_buffered): was wr_by_ias_file. (wr_by_ibu_buffered): was wr_by_ibu_file. (wr_by_ibs_buffered): was wr_by_ibs_file. (wr_by_icu_buffered): was wr_by_icu_file. (wr_by_ics_buffered): was wr_by_ics_file. (wr_by_iau8_buffered): was wr_by_iau8_file. (wr_by_array_iau8_buffered): was write_byte_array_iau8_file. (logical_position_file_start): was position_file_start. (logical_position_file): was position_file. (logical_position_file_end): was position_file_end. (buffered_flush_everything): was file_flush. (finish_output_buffered): was finish_output_file. (force_output_buffered): was force_output_file. (closed_buffered): was closed_file. (close_buffered): was close_file. (UnbufferedPipeStream_input_init): was PipeStream_input_init. (low_finish_output_unbuffered_pipe): was pipe_low_finish_output. (low_force_output_unbuffered_pipe): was pipe_low_force_output. (low_clear_output_unbuffered_pipe): was pipe_low_clear_output. (UnbufferedPipeStream_output_init): was PipeStream_output_init. (low_read_unbuffered_socket): was socket_low_read. (low_listen_unbuffered_socket): was socket_low_listen. (low_clear_input_unbuffered_socket): was socket_low_clear_input. (low_read_array_unbuffered_socket): was socket_low_read_array. (UnbufferedSocketStream_input_init): was SocketStream_input_init. (low_write_unbuffered_socket): was socket_low_write. (low_write_array_unbuffered_socket): was socket_low_write_array. (low_finish_output_unbuffered_socket): was socket_low_finish_output. (low_force_output_unbuffered_socket): was socket_low_force_output. (low_clear_output_unbuffered_socket): was socket_low_clear_output. (UnbufferedSocketStream_output_init): was SocketStream_output_init. (listen_socket): Remove function. (low_fill_buffered_socket): was b_socket_fill. (low_flush_buffered_socket): was b_socket_finish_flush. (BufferedSocketStream_init): was SocketStream_init. * lispbibl.d (strm_buffered_channel): was strm_file_handle. * pseudofun.d: Update. * pathname.d: Update. * spvw_memfile.d: Update. 1999-02-02 Bruno Haible * lispbibl.d (oint_type_{shift,len,mask}, oint_data_{shift,len,mask}): New definitions for Sparc-Linux. (garcol_bit_o): Move definition. (imm_type_shift): New macro. (fixnum_type, sfloat_type, char_type, read_label_type, system_type) (sign_bit_t, immediate_number_p, charp, read_label_p, systemp) (if_realp, if_rationalp, integerp, fixnump, posfixnump, floatp) (short_float_p): Use it. (FB5, FB4, FB3, FB2, FB1): Depend on garcol_bit_o. 1999-02-02 Bruno Haible * hashtabl.d (sxhash_atom): Use `bitm' instead of `bit', in case oint_type_len==32. 1999-02-02 Sam Steingold * clisp.spec: update 'release' with each build. 1999-02-02 Bruno Haible * makemake.in (LPARTS): Add back config.lsp. 1999-02-02 Bruno Haible Implement unbuffered file-streams, and buffered pipes and socket streams. * lispbibl.d (strmtype_twoway_socket): New enum value. (strm_twoway_socket_input): New macro. (make_file_stream): Change calling convention. * error.d (OS_filestream_error): Use the truename only for file streams, as opposed to pipe and socket streams. * stream.d (test_buffered_arg): New function. (strm_handle_extrafields_struct): New field low_close. (HandleStreamLow_close): New macro. (low_close_handle): New function. (close_ihandle, close_ohandle): Call HandleStreamLow_close(stream). (strm_file_extrafields_struct): New fields low_fill, low_flush, regular, blockpositioning. (FileStreamLow_fill, FileStreamLow_flush, FileStream_regular) (FileStream_blockpositioning): New macros. (b_file_fill): New function. (HandleStream_init): New macro. (b_file_full_flush): Use FileStream_blockpositioning and FileStreamLow_flush. (b_file_half_flush): Likewise. (b_file_nextbyte): Use FileStream_blockpositioning and FileStreamLow_fill. (position_b_file): Use FileStream_blockpositioning. (position_file_end): Likewise. If no repositioning is needed, call lseek only once. (make_buffered_stream): New function. (make_file_stream): Change calling convention. Rewritten to call make_buffered_stream. Deal with buffered, handle_regular, handle_fresh. Support :APPEND for unbuffered streams as well. (finish_output_file): Call fsync or close/open on regular files only. If no repositioning is needed, don't call position_b_file. (close_file): Call HandleStreamLow_close(stream). (strm_pipe_in_other, strm_pipe_out_other): Remove macros. (strm_pipe_other): New macro. (low_close_pipe): New function. (close_pipe_in, close_pipe_out): Remove functions. (MAKE-PIPE-INPUT-STREAM): Call test_buffered_arg. Call either make_unbuffered_stream or make_buffered_stream. Set the HandleStreamLow_close function. (MAKE-PIPE-OUTPUT-STREAM): Likewise. (MAKE-PIPE-IO-STREAM): Likewise. (low_close_socket): New function. (close_socket): Remove function. (SYSTEM::MAKE-SOCKET-STREAM): Set the HandleStreamLow_close function. (b_socket_fill, b_socket_finish_flush): New functions. (SocketStream_init): New macro. (strm_twoway_socket_input, strm_twoway_socket_output): New macros. (low_close_socket_nop): New function. (make_socket_stream): Change signature. Call either make_unbuffered_stream, or make_buffered_stream and allocate a two-way-socket stream. Set the HandleStreamLow_close function. (SOCKET-SERVER): Deal with both strmtype_socket and strmtype_twoway_scoket. Check that the stream argument is open. (SOCKET-ACCEPT, SOCKET-CONNECT): Call test_buffered_arg. (test_socket_stream): Optionally check that the stream argument is open. (SOCKET-STREAM-PORT, SOCKET-STREAM-HOST): Update. (publish_host_data, SOCKET-STREAM-HANDLE): Update. (make_terminal_io): Remove the file positioning code, now done by make_file_stream. (init_streamvars): Set the HandleStreamLow_close function. (STREAM-ELEMENT-TYPE, SYSTEM::SET-STREAM-ELEMENT-TYPE) (interactive_stream_p): Treat strmtype_twoway_socket. (stream_close): Treat pipes and sockets like file streams. Treat strmtype_twoway_socket. (stream_listen, clear_input): Treat strmtype_twoway_socket. (finish_output, force_output, clear_output): Likewise. (get_line_position): Likewise. (stream_isbuffered): Treat pipes and sockets like file streams. Treat strmtype_twoway_socket. * io.d (pr_stream): Print a "buffered"/"unbuffered" for pipes and sockets as well. Treat strmtype_twoway_socket. * pathname.d (open_file): Change calling convention. (OPEN): Update. 1999-02-01 Sam Steingold * defs2.lsp (with-standard-io-syntax): set `*print-right-margin*'. 1999-01-30 Bruno Haible Split user1.lsp and user2.lsp into pieces. * init.lsp: Change loading order. First room.lsp and saveinitmem.lsp, then the language stuff up to conditio.lsp, then the user interface and all kinds of extensions. (cerror): Moved here from user1.lsp. * defs1.lsp (fbound-string): Moved here from user2.lsp. (*error-handler*): Moved here from user1.lsp. * room.lsp: New file. (room-format, room, %space1, %space2, %space, space-format) (space-tabulate): Moved here from user2.lsp. * savemem.lsp: New file. (%saveinitmem, saveinitmem): Moved here from user2.lsp. * compiler.lsp (*toplevel-environment*, *toplevel-denv*, eval-env): Moved here from user1.lsp. * conditio.lsp (break): Integrate with non-CLCS code from user1.lsp. (*break-on-warnings*, batchmode-break-driver): Moved here from user1.lsp. * keyboard.lsp: New file. (*keyboard-input*, with-keyboard, exec-with-keyboard): Moved here from user1.lsp. * runprog.lsp: New file. (execute, run-shell-command, run-program): Moved here from user2.lsp. * query.lsp: New file. (y-or-n-p, y-or-n, yes-or-no-p, yes-or-no): Moved here from user1.lsp. * reploop.lsp: New file. (*prompt*, main-loop, break-loop, step et al.): Moved here from user1.lsp. * dribble.lsp: New file. (dribble): Moved here from user2.lsp. * complete.lsp: New file. (completion): Moved here from user2.lsp. * describe.lsp: New file. (apropos-list, apropos, describe): Moved here from user2.lsp. * edit.lsp: New file. (*editor*, editor-name, editor-tempfile, edit-file, ed, uncompile): Moved here from user2.lsp. * user1.lsp: Remove file. * user2.lsp: Remove file. * makemake.in (LPARTS): Update. * gettext/po/Makefile.devel (LSPSOURCES): Likewise. 1999-01-30 Bruno Haible * Makefile.devel (win32msvc/makefile.msvc4, win32msvc/makefile.msvc5) (acorn/makefile.cc, acorn/makefile.gcc): Fix rule. 1999-01-29 Sam Steingold * spvw.d (print_banner): do not cut the copyright on narrow screens. 1999-01-28 Bruno Haible Mutable STREAM-ELEMENT-TYPE. * stream.d (fill_pseudofuns_unbuffered): New function. (make_unbuffered_stream): Call it. Always initialize lineno. (fill_pseudofuns_buffered): New function. (make_file_stream): Call it. Always initialize lineno. (SYSTEM::SET-STREAM-ELEMENT-TYPE): New function. * places.lsp (stream-element-type): New defsetf. 1999-01-27 Bruno Haible Treat pipe and socket streams like unbuffered file streams. * stream.d (check_unbuffered_eltype): New function. (strm_pipe_in_handle): Replace with strm_ihandle. (rd_ch_pipe_in, rd_ch_array_pipe_in, rd_by_pipe_in) (rd_by_array_pipe_in): Remove macros. (PipeStream_input_init): New macro. (close_pipe_in): Update. (listen_pipe_in): Remove macro. (MAKE-PIPE-INPUT-STREAM): Check the :ELEMENT-TYPE argument. Call make_unbuffered_stream. (strm_pipe_out_handle): Replace with strm_ohandle. (wr_ch_pipe_out, wr_ch_array_pipe_out, wr_ss_pipe_out) (wr_by_pipe_out, wr_by_array_pipe_out): Remove macros. (pipe_low_finish_output, pipe_low_force_output) (pipe_low_clear_output): New functions. (PipeStream_output_init): New macro. (close_pipe_out): Update. (MAKE-PIPE-OUTPUT-STREAM): Check the :ELEMENT-TYPE argument. Call make_unbuffered_stream. (MAKE-PIPE-IO-STREAM): Likewise. (socket_low_finish_output, socket_low_force_output) (socket_low_clear_output): Define always. (SocketStream_output_init): Use them in all cases. (SYS::MAKE-SOCKET-STREAM): Call make_unbuffered_stream. (make_socket_stream): Change signature. Call make_unbuffered_stream. (SOCKET-ACCEPT, SOCKET-CONNECT): Check the :ELEMENT-TYPE argument. (STREAM-ELEMENT-TYPE): Treat pipe and socket streams like file streams. (stream_listen, clear_input, finish_output, force_output) (clear_output): Likewise. * pseudofun.d: Update. * io.d (pr_stream): For pipe and socket stream, print the element-type as well. 1999-01-27 Bruno Haible * stream.d (make_buffered_stream): Rename from make_unbuffered_stream. Change the calling convention. Don't call isatty. Don't store the strm_field1/strm_field2 values. Don't call HandleStream_input_init, HandleStream_output_init here. Don't add the stream to O(open_files). (make_file_stream): Update. Call isatty only for :INPUT or :IO streams. Store the strm_field1/strm_field2 values here. Call HandleStream_input_init, HandleStream_output_init here. Add the stream to O(open_files). (init_streamvars): Update. Store the strm_field1/strm_field2 values here. Call HandleStream_output_init here. 1999-01-27 Bruno Haible Simplify the element-type handling. * stream.d (eltype_kind, decoded_eltype): New types. (test_eltype_arg): Moved. Changed signature. (canon_eltype): New function. (strmtype_ch_file, strmtype_iu_file, strmtype_is_file): Remove macros. (make_unbuffered_file_stream): Changed signature. (make_file_stream): Use a decoded_eltype. Call canon_eltype. (init_streamvars): Update. 1999-01-27 Sam Steingold * spvw.d (print_banner): update copyright statements. (print_license): new function. (main): call print_banner and print_license. 1999-01-27 Bruno Haible * spvw.d (print_banner): Make the menorah more kosher. 1999-01-27 Bruno Haible * spvw.d (usage): Tweak message. 1999-01-26 Sam Steingold * Makefile.devel: do not use `utils/move-if-change'. * utils/move-if-change: Remove file. 1999-01-26 Sam Steingold MT-safe get_real_time: * time.d (get_real_time): take pointer argument; no internal statics. * lisparit.d: fix calls to `get_real_time'. * lispbibl.d: fix declaration of `get_real_time'. 1999-01-25 Sam Steingold * spvw.d (main): expand --help, add --license, remove trailing whitespace. (print_banner): New function. (argv_license): New variable. (copyright_notice): Remove. 1999-01-25 Bruno Haible * lispbibl.d (strm_file_name, strm_file_truename, strm_file_handle) (strm_pipe_pid, strm_x11socket_connect, strm_socket_port) (strm_socket_host): Offset by 1. * stream.d (strm_bitbuffer): New macro, replaces strm_file_bitbuffer. (strm_isatty, strm_ihandle, strm_ohandle, strm_field1, strm_field2): Offset by 1. (strm_field3): Remove macro. (strm_handle_extrafields_struct): New field bitsize. (HandleStream_bitsize): New macro, replaces FileStream_bitsize. (rd_by_iu_I, rd_by_is_I): Update. (wr_by_aux_ix): Rename from wr_by_ix. (wr_by_ixu_file, wr_by_ixs_file): Update. (rd_by_aux_iax_handle, rd_by_iau_handle, rd_by_ias_handle): New functions. (rd_by_iau8_handle): Rename from rd_by_handle. (rd_by_array_iau8_handle): Rename from rd_by_array_handle. (close_ihandle): Free the bitbuffer. (wr_by_aux_ia_handle, wr_by_iau_handle, wr_by_ias_handle): New functions. (wr_by_iau8_handle): Rename from wr_by_handle. (wr_by_array_iau8_handle): Rename from wr_by_array_handle. (close_ohandle): Free the bitbuffer. (make_unbuffered_file_stream): Add arguments type, eltype_size. Create a stream with proper element type, not (OR CHARACTER INTEGER). (strm_i_file_extrafields_struct): Remove field bitsize. (strm_file_bitbuffer, FileStream_bitsize): Remove macros. (position_i_file): Update. (rd_by_aux_iax_file): Rename from rd_by_iax_file. Update. (rd_by_aux_ibx_file): Rename from rd_by_ibx_file. Update. (rd_by_aux_icx_file): Rename from rd_by_icx_file. Update. (rd_by_iau_file, rd_by_ias_file, rd_by_ibu_file, rd_by_ibs_file) (rd_by_icu_file, rd_by_ics_file): Update. (rd_by_iau8_file): New function, for symmetry with the unbuffered case. (wr_by_aux_ia_file): Rename from wr_by_ia. Update. (wr_by_aux_ib_file): Rename from wr_by_ib. Update. (wr_by_aux_ic_file): Rename from wr_by_ic. Update. (wr_by_iau_file, wr_by_ias_file, wr_by_ibu_file, wr_by_ibs_file) (wr_by_icu_file, wr_by_ics_file): Update. (wr_by_iau8_file): New function, for symmetry with the unbuffered case. (position_file, position_file_end): Update. (make_file_stream): For the unbuffered case, accept any bitsize which is a multiple of 8. Use {rd,wr}_by_iau8_file when possible. (strm_terminal_index, strm_terminal_outbuff): Change. (terminalcase): Update. (rd_by_pipe_in, rd_by_array_pipe_in): Update. (wr_by_pipe_out, wr_by_array_pipe_out): Update. (SYS::MAKE-SOCKET-STREAM, SYS::LISTEN-BYTE, test_n_bytes_args) (make_socket_stream, init_streamvars): Update. * pseudofun.d: Update accordingly. * stream.d (rd_by_*, wr_by_*): Move some functions. * pseudofun.d: Update accordingly. 1999-01-24 Bruno Haible Optimize read-byte and write-byte for integer streams of type ia. * stream.d (read_byte_array_b_file): Don't update the position. (write_byte_array_b_file): Likewise. (wr_ch_array_ch_file): Increment the position here. (rd_by_iu_I, rd_by_is_I): Assume the bitbuffer contents is in little endian order. (rd_by_iax_file): Fill bitbuffer in little endian order. Use read_byte_array_b_file for speed. (rd_by_icx_file): Fill bitbuffer in little endian order. (wr_by_ia): Fill bitbuffer in little endian order. Use write_byte_array_b_file for speed. (wr_by_ic): Fill bitbuffer in little endian order. (wr_by_ixu_file, wr_by_ixs_file): Assume the bitbuffer contents is in little endian order. (read_byte_array_iau8_file, write_byte_array_iau8_file): Increment the position here. 1999-01-24 Bruno Haible * pathname.d (OPEN): Add keyword argument :BUFFERED. (SYS::OLD-OPEN): Temporary hack, in order to preserve binary compatibility. * stream.d (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM) (MAKE-PIPE-IO-STREAM): Add keyword arguments :ELEMENT-TYPE, :EXTERNAL-FORMAT, :BUFFERED. (SOCKET-ACCEPT, SOCKET-CONNECT): Likewise. * eval.d (FUNTAB): Replace OPEN with SYS::OLD-OPEN. * compiler.lsp (funtab): Likewise. (subr-info): Update. 1999-01-24 Bruno Haible * stream.d (make_socket_stream): Fix a potential GC crash: host was not GC-safe. 1999-01-24 Bruno Haible Prepare for making socket streams either binary or character, not both. * stream.d (SYS::LISTEN-BYTE): New function. * modules/clx/mit-clx/depdefs.lsp (:have-listen-byte): Define conditionally. * modules/clx/mit-clx/dependent.lsp (buffer-read-default): Use sys::listen-byte if available. 1999-01-24 Bruno Haible Handle-streams and socket-streams now use a byte-oriented low-level layer. * stream.d (clear_tty_input) [AMIGAOS]: Define. (strm_u_file_extrafields_struct): Add low-level function pointers. (FileStreamLow_read, FileStreamLow_listen) (FileStreamLow_clear_input, FileStreamLow_read_array) (FileStreamLow_write, FileStreamLow_write_array) (FileStreamLow_finish_output, FileStreamLow_force_output) (FileStreamLow_clear_output): New macros. (fehler_interrupt): New function. (file_low_read, file_low_listen, file_low_clear_input) (file_low_read_array): New functions. (rd_by_handle, rd_by_array_handle, rd_ch_handle, listen_handle) (clear_input_handle, rd_ch_array_handle): Rewritten from scratch. Much nicer now that the ugly machine-dependent stuff is in the low-level layer. (HandleStream_input_init, HandleStream_input_init_data): New macros. (file_low_write, file_low_write_array, file_low_finish_output) (file_low_force_output, file_low_clear_output): New functions. (wr_by_handle, wr_by_array_handle, wr_ch_handle, wr_ch_array_handle) (finish_output_handle, force_output_handle, clear_output_handle): Rewritten from scratch. Much nicer too. (HandleStream_output_init): New macro. (make_unbuffered_file_stream, make_keyboard_stream) (make_terminal_stream_, MAKE-PIPE-INPUT-STREAM) (MAKE-PIPE-OUTPUT-STREAM, MAKE-PIPE-IO-STREAM): Use the HandleStream_*_init macros. (socket_low_read, socket_low_listen, socket_low_clear_input) (socket_low_read_array) [WIN32_NATIVE]: New functions. (SocketStream_input_init): New macro. (socket_low_write, socket_low_write_array, socket_low_finish_output) (socket_low_force_output, socket_low_clear_output) [WIN32_NATIVE]: New functions. (SocketStream_output_init): New macro. (rd_ch_socket, rd_ch_array_socket, wr_ch_socket, wr_ch_array_socket) (wr_ss_socket, rd_by_socket, rd_by_array_socket, wr_by_socket) (wr_by_array_socket): Remove functions. (listen_socket): Define as a macro. (rd_ch_x11socket, listen_x11socket, rd_ch_array_x11socket) (wr_ch_x11socket, wr_ch_array_x11socket, wr_ss_x11socket) (rd_by_x11socket, rd_by_array_x11socket, wr_by_x11socket) (wr_by_array_x11socket, close_x11socket): Remove macros. (SYS::MAKE-SOCKET-STREAM): Update. Use the HandleStream_*_init macros. (test_n_bytes_args): Update. (SYS::READ-N-BYTES): Simplify by calling read_byte_array. Upon EOF, issue an error message instead of endless loop. (SYS::WRITE-N-BYTES): Simplify by calling write_byte_array. (make_socket_stream): Update. Use the HandleStream_*_init macros. (stream_close, stream_listen): Update. * pseudofun.d (*_x11socket, *_socket): Remove. 1999-01-24 Bruno Haible Introduce symbolic codes for the `listen' return value. * lispbibl.d (ls_avail, ls_eof, ls_wait): New macros. (ls_avail_p, ls_eof_p, ls_wait_p): New macros. * stream.d (listen_concat, listen_str_in, listen_buff_in) (listen_handle, listen_ch_file, listen_keyboard, listen_terminal) (listen_terminal2, listen_terminal3, listen_socket, stream_listen): Use the new ls_* macros. * io.d (LISTEN, READ-CHAR-NO-HANG): Likewise. * debug.d (read_form): Likewise. 1999-01-23 Bruno Haible Merge handle streams and file streams. Add line number information to unbuffered file streams as well. * lispbibl.d (strmtype_handle): Remove enum value. (if_strm_file_p): Remove macro. (stream_isbuffered): New declaration. * stream.d (strm_handle_extrafields_struct): New field lineno. (HandleStream_lineno): New macro. (rd_ch_handle, listen_handle, rd_ch_array_handle): When reading a newline, increment lineno. (make_unbuffered_file_stream): Change the stream type from strmtype_handle to strmtype_file. Initialize lineno. (strm_ch_file_extrafields_struct): Remove structure. (FileStream_lineno): Remove macro. (rd_ch_ch_file, rd_ch_array_ch_file, make_file_stream): Update. (SYS::FILE-STREAM-P): Update. (SYS::TERMINAL-RAW) [AMIGAOS]: Update. (STREAM-ELEMENT-TYPE, interactive_stream_p, stream_close) (stream_listen, clear_input, finish_output, force_output) (clear_output): Update. (FILE-POSITION): For unbuffered streams, return NIL, no error. (FILE-LENGTH): Likewise. (stream_isbuffered): New function. (stream_line_number): Update. * io.d (pr_stream): Update. * pathname.d (as_file_stream, openp): Update. * predtype.d (TYPE-OF, CLOS:CLASS-OF, heap_statistics_mapper): Update. Start merging handle-streams and file-streams. * lispbibl.d (strm_eltype, strm_file_handle): Change. * stream.d (strm_eltype, strm_isatty, strm_ihandle, strm_ohandle): Change. (strm_buffer, strm_field1, strm_field2, strm_field3): New macros. (strm_handle_extrafields): New macro. (strm_handle_len): Change. (strm_handle_extrafields_struct, strm_u_file_extrafields_struct): New structure types. (HandleStream_eltype, HandleStream_isatty, HandleStream_ihandle) (HandleStream_ohandle, HandleStream_buffered, FileStream_status) (FileStream_lastbyte, FileStream_rawp): New macros. (close_handle): Remove macro. (make_unbuffered_file_stream): Rename from make_handle_stream. Allocate room for an unbuffered handle stream. Initialize the buffered, status, rawp fields. (strm_file_name, strm_file_truename, strm_file_handle) (strm_file_buffer, strm_file_bitbuffer): Change. (strm_file_extrafields, strm_file_length): Remove macros. (strm_file_extrafields_struct): Inherit from strm_handle_extrafields_struct. (FileStream_buffstart, FileStream_eofindex, FileStream_index) (FileStream_modified, FileStream_position, FileStream_lineno) (FileStream_bitsize, FileStream_bitindex, FileStream_eofposition): Update. (make_file_stream): Allocate room for a buffered handle stream. Initialize the buffered field. (strm_keyboard_buffer, strm_keyboard_keytab, strm_keyboard_len): Change. (strm_keyboard_xlen): New macro. (make_keyboard_stream): Allocate room for an unbuffered handle stream. Initialize the buffered, status, rawp fields. (strm_terminal_inbuff, strm_terminal_index, strm_terminal_outbuff): Change. (strm_terminal1_len, strm_terminal2_len, strm_terminal3_len): Remove macros. (strm_terminal_len): New macro. (terminalcase): Rewritten. (make_terminal_stream_): Allocate room for an unbuffered handle stream. Initialize the buffered, status, rawp fields. (SYS::TERMINAL-RAW) [AMIGAOS]: Update. (strm_pipe_pid): Change. (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM) (MAKE-PIPE-IO-STREAM): Allocate room for an unbuffered handle stream. Initialize the buffered, status, rawp fields. (strm_x11socket_connect): Change. (SYS::MAKE-SOCKET-STREAM): Allocate room for an unbuffered handle stream. Initialize the buffered, status, rawp fields. (strm_socket_port, strm_socket_host): Change. (make_socket_stream): Allocate room for an unbuffered handle stream. Initialize the buffered, status, rawp fields. (init_streamvars): Update. (stream_close): Call either close_ihandle or close_ohandle. 1999-01-23 Bruno Haible * stream.d (regular_handle_p) [UNIX]: Treat block devices like regular files. 1999-01-23 Bruno Haible * stream.d: Move the file-streams next to the handle-streams. 1999-01-23 Bruno Haible * lispbibl.d (make_file_stream): Change declaration and calling convention. * stream.d (make_handle_stream): Change calling convention. (test_eltype_arg): New function. (make_file_stream): Change calling convention. Check the :element-type argument here. (make_terminal_io, init_streamvars): Update. * pathname.d (open_file): Change calling convention. (OPEN): Update. Don't check the :element-type argument here. 1999-01-23 Bruno Haible Support for unbuffered file streams on all platforms. * lispbibl.d (HANDLES): Remove macro, assume it to be defined to 1. (case_strmtype_file): Remove macro. (if_strm_file_p): Update. * spvw_memfile.d (memflags): Assume HANDLES to be 1. * stream.d: Likewise. * pseudofun.d: Likewise. * io.d (pr_stream): Likewise. * predtype.d: Update. 1999-01-23 Bruno Haible * lispbibl.d (strmtype_ch_file, strmtype_iu_file, strmtype_is_file): Remove enum values. (strmtype_file): New enum value. (strm_eltype): New stream field. (strm_file_name, strm_file_truename, strm_pipe_pid) (strm_x11socket_connect, strm_socket_port, strm_socket_host): Offset by 1. (strm_ch_file_lineno): Remove obsolete macro. (if_strm_bfile_p): Remove macro. (case_strmtype_file): Update. (strmtype_ch_file, strmtype_iu_file, strmtype_is_file): Define for the sake of make_file_stream. * stream.d (strm_eltype): New stream field. (strm_handle_rawp, strm_handle_len): Offset by 1. (make_handle_stream): Expect the element-type on the stack. (strm_file_name, strm_file_truename, strm_file_extrafields) (strm_file_length): Offset by 1. (make_file_stream): Construct and fill in the element-type. (strm_pipe_pid): Offset by 1. (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM) (MAKE-PIPE-IO-STREAM): Update. (strm_x11socket_connect): Offset by 1. (SYS::MAKE-SOCKET-STREAM): Update. (strm_socket_port, strm_socket_host): Offset by 1. (make_socket_stream): Update. (init_streamvars): Pass element type to make_handle_stream. (STREAM-ELEMENT-TYPE): For strmtype_file and strmtype_handle, fetch the strm_eltype field. (interactive_stream_p, stream_close, closed_all_files) (stream_listen, finish_output, force_output, clear_output) (check_open_file_stream, stream_line_number): Update. * io.d (pr_stream): Change printing of file and handle stream to include buffered/unbuffered and the element-type. 1999-01-23 Bruno Haible * lispbibl.d (Stream): New fields strm_rd_by_array, strm_wr_by_array, strm_rd_ch_array, strm_wr_ch_array. * stream.d (rd_by_array_Pseudofun, wr_by_array_Pseudofun) (rd_ch_array_Pseudofun, wr_ch_array_Pseudofun): New types. (rd_by_array, wr_by_array, rd_ch_array, wr_ch_array): New macros. (rd_by_error): Rename from rd_by_dummy. (rd_by_array_error, rd_by_array_dummy): New functions. (wr_by_error): Rename from wr_by_dummy. (wr_by_array_error, wr_by_array_dummy): New functions. (rd_ch_error): Rename from rd_ch_dummy. (rd_ch_array_error, rd_ch_array_dummy): New functions. (wr_ch_error): Rename from wr_ch_dummy. (wr_ch_array_error, wr_ch_array_dummy): New functions. (read_byte_array, write_byte_array, read_char_array) (write_char_array): Rewritten to call the stream's corresponding pseudofunction. (close_dummys): Update. (rd_by_array_synonym, wr_by_array_synonym, rd_ch_array_synonym) (wr_ch_array_synonym): New functions. (make_synonym_stream): Update. (wr_by_array_broad0, wr_by_array_broad1, wr_ch_array_broad0) (wr_ch_array_broad1): New functions. (make_broadcast_stream): Update. (rd_by_array_concat, rd_ch_array_concat): New functions. (make_concatenated_stream): Update. (wr_by_array_twoway, wr_ch_array_twoway): New functions. (rd_by_array_twoway, rd_ch_array_twoway): New functions. (make_twoway_stream, make_echo_stream): Update. (rd_ch_array_str_in): New function. (MAKE-STRING-INPUT-STREAM): Update. (make_string_output_stream, SYSTEM::MAKE-STRING-PUSH-STREAM): Update. (make_pphelp_stream): Update. (MAKE-BUFFERED-INPUT-STREAM, MAKE-BUFFERED-OUTPUT-STREAM): Update. (MAKE-GENERIC-STREAM): Update. (rd_ch_array_handle, rd_by_array_handle, wr_by_array_handle): New functions. (wr_ch_array_handle): Rename from write_char_array_handle. (wr_ss_handle): Update. (wr_ch_array_handle_x): New macro. (make_handle_stream): Update. (rd_ch_keyboard) [NEXTAPP]: Update. (make_keyboard_stream, make_terminal_stream_, make_window): Update. (read_byte_array_b_file): New function. (rd_ch_array_ch_file): New function. (wr_ch_array_ch_file): Rename from write_char_array_ch_file. (wr_ss_ch_file): Update. (read_byte_array_iau8_file): New macro. (write_byte_array_iau8_file): Update. (make_file_stream): Update. (make_printer_stream): Update. (rd_ch_array_pipe_in, rd_by_array_pipe_in): New macros. (MAKE-PIPE-INPUT-STREAM): Update. (wr_ch_array_pipe_out, wr_by_array_pipe_out): New macros. (MAKE-PIPE-OUTPUT-STREAM): Update. (MAKE-PIPE-IO-STREAM): Update. (rd_ch_array_socket): New function. (wr_ch_array_socket): Rename from write_char_array_socket. (wr_ss_socket): Update. (rd_by_array_socket, wr_by_array_socket): New functions. (rd_ch_array_x11socket, wr_ch_array_x11socket, rd_by_array_x11socket) (wr_by_array_x11socket): New macros. (SYS::MAKE-SOCKET-STREAM, make_socket_stream): Update. * pseudofun.d: Update accordingly. 1999-01-23 Bruno Haible Implement weak-pointers. * lispbibl.d (Rectype_Weakpointer): New enum value. (Weakpointer): New type. (weakpointer_length, weakpointer_xlength): New macros. (TheWeakpointer, weakpointerp, allocate_weakpointer): New macros. * constobj.d (O(all_weakpointers)): New variable. (O(all_finalizers), O(pending_finalizers)): Initial value 0, not NIL. * spvw.d (init_object_tab_1): Initialize O(all_weakpointers), O(all_finalizers), O(pending_finalizers) to 0. * spvw_update.d (update_weakpointers, update_weakpointers_mod): New macros. * spvw_garcol.d (gar_col_normal): Walk O(all_weakpointers). O(all_finalizers) and O(pending_finalizers) end with 0, not NIL. Call update_weakpointers_mod. (gar_col_done): O(pending_finalizers) ends with 0, not NIL. (gar_col_compact, move_conses): Call update_weakpointers_mod. * spvw_memfile.d (savemem, loadmem): Call update_weakpointers. * record.d (MAKE-WEAK-POINTER, WEAK-POINTER-P, WEAK-POINTER-VALUE): New functions. * io.d (pr_orecord): Treat Rectype_Weakpointer. * predtype.d (TYPE-OF, CLOS:CLASS-OF): Treat Rectype_Weakpointer. (enum_hs_weakpointer): New enum value. (heap_statistics_mapper): Treat Rectype_Weakpointer. * compiler.lsp (subr-info): Add make-weak-pointer, weak-pointer-p, weak-pointer-value. * user2.lsp (describe): Treat WEAK-POINTER. 1999-01-23 Bruno Haible * lispbibl.d (gcinvariant_object_p) [TYPECODES]: New macro. * record.d (FINALIZE): No need to allocate a finalizer for an eternally alive object. 1999-01-23 Bruno Haible * spvw_garcol.d (alive) [NO_TYPECODES]: Treat immediate values correctly, instead of crashing. 1999-01-23 Bruno Haible * stream.d (listen_handle) [WIN32]: When a keyboard event is pending, read a character in order to test whether to return :INPUT-AVAILABLE of :EOF. 1999-01-23 Bruno Haible * stream.d (strm_concat_list2): Remove macro. (strm_concat_totallist): New macro. (rd_by_concat, rd_ch_concat, pk_ch_concat, listen_concat): Simplify. (make_concatenated_stream, CONCATENATED-STREAM-STREAMS): Simplify. 1999-01-23 Bruno Haible * debug.d (read_form): After EOF, call clear_input on istream, not on the concatenated-stream. This fixes a strange REP loop behaviour on Win32. 1999-01-23 Bruno Haible * spvw.d (main): If no memfile is specified, option "-norc" is implied. 1999-01-23 Bruno Haible * comment5.d (main): Remove a gcc warning. 1999-01-23 Bruno Haible * lispbibl.d (strmtype_*): Change the order of stream types. * io.d (pr_stream): Likewise. * stream.d: Move the OS dependent stream stuff after the portable stuff. (STREAM-ELEMENT-TYPE): Change the order of stream types. (interactive_stream_p, stream_close, stream_listen, clear_input) (finish_output, force_output, clear_output): Likewise. 1999-01-23 Bruno Haible Change the string element type from `uintB' to `chart' (an abstract equivalent of `cint'). * lispbibl.d (OBJECT_STRUCT): Define macro. (chart): New type. (as_cint, as_chart): New macros. (code_char, char_code): Convert from/to chart now, instead of cint. (chareq, charlt, chargt): New macros. (ascii, ascii_char): New macros. (sstring_): Change element type to `chart'. (with_string_0, with_sstring_0, with_string, with_sstring): Update. (ssstring_push_extend): Change declaration. (up_case, down_case, alphanumericp, graphic_char_p, unpack_string) (char_name, test_string_limits, nstring_upcase, nstring_downcase) (nstring_capitalize): Likewise. (write_ascii_char): Update. (read_char_array, write_char_array): Change delaration. * genclisph.d (chart): New type. (as_cint, as_chart): New macros. (code_char, char_code): Convert from/to chart now, instead of cint. * spvw.d (make_string, string_to_asciz, main): Update. * spvw_objsize.d (size_sstring): Update. * charstrg.d (up_case, down_case, alphap, alphanumericp) (graphic_char_p, unpack_string, string_gleich, string_equal) (copy_string, coerce_char, char_name, STANDARD-CHAR-P, UPPER-CASE-P) (LOWER-CASE-P, BOTH_CASE-P, DIGIT-CHAR-P, CHAR-CODE, CODE-CHAR) (DIGIT-CHAR, CHAR-INT, INT-CHAR, test_index_arg, CHAR, SCHAR) (SYSTEM::STORE-CHAR, SYSTEM::STORE-SCHAR, test_string_limits) (test_1_stringsym_limits, test_2_stringsym_limits, string_eqcomp) (string_comp, STRING=, STRING/=, STRING<, STRING>, STRING<=) (STRING>=, string_eqcomp_ci, string_comp_ci, STRING-EQUAL) (STRING-NOT-EQUAL, STRING-LESSP, STRING-GREATERP) (STRING-NOT-GREATERP, STRING-NOT-LESSP, string_search) (SYS::SEARCH-STRING=, SYS::SEARCH-STRING-EQUAL, MAKE-STRING) (nstring_upcase, NSTRING-UPCASE, STRING-UPCASE, nstring_downcase) (NSTRING-DOWNCASE, STRING-DOWNCASE, nstring_capitalize) (NSTRING-CAPITALIZE, STRING-CAPITALIZE, subsstring, SUBSTRING) (string_concat): Update * io.d (RM_anzahl, DRM_anzahl): Remove, replace with char_code_limit. (allocate_syntax_table, syntax_table_get, syntax_table_put): New macros. (allocate_perchar_table, perchar_table_get, perchar_table_put) (copy_perchar_table): New macros. (orig_syntax_table, orig_readtable, copy_readtable_contents) (copy_readtable, SET-SYNTAX-FROM-CHAR, SET-MACRO-CHARACTER) (GET-MACRO-CHARACTER, MAKE-DISPATCH-MACRO-CHARACTER) (test_disp_sub_char, SET-DISPATCH-MACRO-CHARACTER) (GET-DISPATCH-MACRO-CHARACTER, read_char_syntax, wpeek_char_syntax) (wpeek_char_eof, attribute_table): Update. (attribute_of): New macro. (read_token_1, token_info, test_potential_number_syntax) (test_number_syntax, upcase_token, case_convert_token, read_macro) (lpar_reader, line_comment_reader, comment_reader, char_reader) (radix_2, bit_vector_reader, vector_reader, hexziffer) (closure_reader, unix_executable_reader, READ-LINE, PARSE-INTEGER) (write_sstring_case, klammer_zu, pr_enter_1, pr_symbol_part) (pr_character, pr_sstring_ab, pr_list_splice, pr_list_nsplice) (pr_sbvector_ab): Update. * stream.d (wr_ss_dummy, wr_ss_dummy_nogc, wr_ss_lpos, write_char) (rd_ch_handle, listen_handle, wr_ch_handle, write_char_array_handle) (key_event): Update. (key_ascii, key_special): New macros. (listen_keyboard, rd_ch_keyboard, add_keybinding): Update. (keybinding): Take only one argument. (make_keyboard_stream, lisp_completion, rd_ch_terminal) (rd_ch_terminal1, rd_ch_terminal2, rd_ch_terminal3, wr_ch_terminal3) (wr_ss_terminal3, wr_ch_window, rd_ch_ch_file, wr_ch_ch_file) (write_char_array_ch_file, rd_ch_str_in, wr_ss_str_out) (wr_ch_pphelp, wr_ss_pphelp, rd_ch_buff_in, wr_ch_buff_out) (wr_ch_printer, rd_ch_socket, listen_socket, wr_ch_socket) (write_char_array_socket, read_char_array, write_char_array) (FILE-STRING-LENGTH): Update. * pathname.d (common_case, legal_logical_word_char, legal_hostchar) (test_optional_host, equal_pathchar, legal_namechar) (singlewild_char_p, slashp, parse_logical_word, all_digits) (parse_logical_pathnamestring, parse_name_or_type, split_name_type) (PARSE-NAMESTRING, legal_logical_word, legal_name_or_type) (legal_name, legal_type, MAKE-PATHNAME, has_wildcards) (has_word_wildcards, wildcard_match_ab, wildcard_diff_ab) (translate_nametype_aux, use_default_dir, OSdirnamestring, SHELL): Update. * array.d (VECTOR-PUSH-EXTEND, ssstring_push_extend, ssstring_extend) (make_datenvektor): Update. * hashtabl.d (hashcode_string, hashcode4_char, hashcode4_vector_Char): Update. * package.d (string_hashcode): Update. * predtype.d (equal, elt_compare_T_Char, elt_compare_Char_Char) (equalp): Update. * sequence.d (MAKE-SEQUENCE, READ-CHAR-SEQUENCE, WRITE-CHAR-SEQUENCE): Update. * debug.d (read_form): Update. * error.d (write_errorstring): Update. * lisparit.d (read_float, print_integer, print_float, decimal_string): Update. * intprint.d (DIGITS, UDS_to_DIGITS): Update. * intread.d (DIGITS_to_I): Update. * foreign.d (convert_from_foreign_array_fill, convert_from_foreign) (convert_to_foreign): Update. * affi.d (affi_call_argsa, SYSTEM::MEM-READ) (SYSTEM::MEM-WRITE-VECTOR): Update. 1999-01-21 Sam Steingold * user2.lsp (signature-to-list, arglist): new functions. (describe-signature): use `signature-to-list'. 1999-01-19 Bruno Haible For being able to use a C++ compiler in place of a C compiler. * acgeneral.m4 (AC_HAVE_LIBRARY, AC_CHECK_SIZEOF): Declare `main' with return type `int'. * acspecific.m4 (AC_PROG_CC_WORKS, AC_DIR_HEADER, AC_TYPE_GETGROUPS) (AC_FUNC_CLOSEDIR_VOID, AC_FUNC_FNMATCH, AC_FUNC_GETPGRP) (AC_FUNC_SETPGRP, AC_FUNC_VFORK, AC_FUNC_WAIT3, AC_FUNC_ALLOCA) (AC_FUNC_UTIME_NULL, AC_FUNC_STRCOLL, AC_FUNC_SETVBUF_REVERSED) (AC_FUNC_MEMCMP, AC_C_CHAR_UNSIGNED, AC_INT_16_BITS) (AC_LONG_64_BITS, AC_C_BIGENDIAN, AC_SYS_RESTARTABLE_SYSCALLS): Likewise. * aclocal.m4 (CL_CC_WORKS, CL_CXX_WORKS, CL_SHELLARGS) (CL_PCC_STRUCT_RETURN, CL_SMALL_STRUCT_RETURN, CL_LONGLONG) (CL_LONGDOUBLE, CL_SIGNAL_REINSTALL, CL_SIGNAL_UNBLOCK) (CL_SIGNAL_BLOCK_OTHERS, CL_SIGACTION_REINSTALL) (CL_SIGACTION_UNBLOCK, CL_ELOOP, CL_IOCTL, CL_TIMES_CLOCK) (CL_ADDRESS_RANGE, CL_MMAP, CL_MPROTECT, CL_CODEEXEC, CL_SHM) (CL_SHM_RMID, CL_FILECHARSET, CL_CHAR_UNSIGNED) (CL_WORDS_LITTLEENDIAN): Likewise. 1999-01-18 Bruno Haible * acgeneral.m4, acspecific.m4: Upgrade to autoconf-2.13. * config.guess, config.sub: Likewise. * aclocal.m4 (CL_ALLOCA): Test for _MSC_VER and alloca being a macro. Use ${ac_objext}. * lispbibl.d (alloca): Put _MSC_VER test before the others, conforming with CL_ALLOCA. 1999-01-12 Bruno Haible * spvw.d (copyright_notice): Use a long string, because gcc stores an array of strings in reverse order. 1999-01-12 Bruno Haible * spvw_garcol.d (gar_col_compact): Conditionalize declaration. 1999-01-12 Bruno Haible * intgcd.d (I_I_xgcd_I_I_I): Now really ensure the 2nd and 3rd value are of minimum absolute value. 1999-01-15 Sam Steingold * clos.lsp (*gf-warn-on-replacing-method*): new variable. (std-add-method): use it. 1999-01-13 Sam Steingold * clos.lsp (*gf-warn-on-removing-all-methods*): new variable. (do-defgeneric): use it. (*warn-if-gf-already-called*): new variable. (warn-if-gf-already-called): use it. 1999-01-11 Bruno Haible * spvw.d (main): Option --version implies -norc. A batch file argument implies -norc as well. 1999-01-10 Michael Somos * spvw_garcol.d: Move the "#undef update_stackobj". 1999-01-10 Bruno Haible * aclocal.m4 (CL_FILECHARSET): Generate formula with &&-connected terms enclosed in parentheses, to avoid gcc warning. * time.d (SYS::DEFAULT-TIME-ZONE): Add parentheses, to avoid gcc warning. * intbyte.d (ldb_extract_test): Add braces, to avoid gcc warning. * spvw_circ.d (get_circ_mark): Likewise. 1999-01-10 Bruno Haible * lispbibl.d: (write_schar): Remove. (write_code_char, write_ascii_char): New macros. * debug.d: Update all callers of write_schar. * error.d: Likewise. * eval.d: Likewise. * io.d: Likewise. * lisparit.d: Likewise. * stream.d (wr_ss_dummy, wr_ss_dummy_nogc): Likewise. 1999-01-09 Bruno Haible * lispbibl.d (string_to_asciz, TheAsciz): ASCIZ strings are now simple-bit-vectors, not strings. * genclisph.d (TheAsciz): Update. * spvw.d (string_to_asciz): Allocate a bit vector, not a string. * pathname.d (EXECUTE): Update, don't call string_concat. * stream.d (rd_ch_terminal3): Update. (finish_output_file): Use with_sstring_0 instead of TheAsciz. (MAKE-PIPE-INPUT-STREAM, MAKE-PIPE-OUTPUT-STREAM) (MAKE-PIPE-IO-STREAM): Update. 1999-01-09 Bruno Haible with_sstring and with_sstring_0 must not be called in a loop which is executed a lot of times, otherwise SP overflow danger. * pathname.d (subdirs): Change argument from char* to simple-string. (subfiles, directory_search_1subdir, directory_search_hashcode) (directory_search_direntry_ok, directory_search_scandir): New functions, moved out of the body of directory_search. (allsubdirs, directory_search): Update. Minimize the use of heap-allocated ASCIZ strings. * constobj.d (O(null_string)): Remove. * spvw.d (init_object_tab): Update. * pathname.d (asciz_dir_to_pathname): Make a temporary copy in the stack instead of destructively modifying the argument. (OSnamestring): Rename from namestring_asciz. Now returns a simple- string without trailing zero byte. (assure_dir_exists): Avoid destructive modifications of a string. Use with_sstring_0 instead of TheAsciz. (default_directory) [AMIGAOS]: Release break_sem_4 in case of error. (assure_dir_exists) [AMIGAOS]: Likewise. (assure_dir_exists) [UNIX]: Allocate the readlink buffer in the stack. (canonicalise_filename) [RISCOS]: Use with_sstring_0 instead of TheAsciz. (canonicalise_dirname) [RISCOS]: Likewise. (prepare_create) [non-RISCOS]: Define as empty. (change_default): Use with_sstring_0 instead of TheAsciz. (file_exists): Use with_sstring_0. (directory_exists): Avoid destructive modifications of a string. Use with_sstring_0 instead of TheAsciz. (DELETE-FILE): Use with_sstring_0 instead of TheAsciz. (rename_file): Likewise. (create_backup_file): New function. (open_file): Call it. Use with_sstring_0 instead of TheAsciz. (directory_search): Use with_sstring_0 instead of TheAsciz. (shorter_directory): Now returns a simple-string without trailing zero byte. (MAKE-DIR, DELETE-DIR): Use with_sstring_0 instead of TheAsciz. (ENSURE-DIRECTORIES-EXIST, FILE-WRITE-DATE, FILE-AUTHOR): Likewise. (EXECUTE): Call string_to_asciz to compensate for assure_dir_exists change. (SHELL): Use with_sstring_0 instead of TheAsciz. * pathname.d (PARSE-NAMESTRING): Don't create an ASCIZ string in the heap. Use macro with_sstring_0 instead of TheAsciz. (OSdirnamestring): Rename from OSnamestring. (assure_dir_exists, change_default, directory_exists) [PATHNAME_AMIGAOS]: Use macro with_sstring_0 instead of TheAsciz. (stat_for_search): New function. (subdirs): Change argument from ASCIZ string to char*. (allsubdirs, directory_search): Use with_sstring_0. * lispbibl.d (with_sstring_0, with_sstring): New macros. * pathname.d (check_stat_directory): New macro. (directory_search): Use it. * pathname.d (READDIR_*): New macros. (subdirs, directory_search): Use them. 1999-01-07 Sam Steingold * clisp.spec: this is the first truly working version. (fixed doc files and full version installation). 1999-01-07 Bruno Haible * unix.d: Don't declare memset if it's a macro. * spvw.d: Likewise. * socket.d: Likewise. 1999-01-07 Sam Steingold * bindings/linuxlibc6/linux.lsp: commented out *gammaf?_*. 1999-01-07 Bruno Haible * pathname.d (create_new_file, open_input_file, open_output_file): New functions. (open_file): Use them. 1999-01-07 Bruno Haible * stream.d (write_byte_array_b_file): New function, rename from write_byte_array_iau8_file. (write_char_array_ch_file, write_byte_array_b_file): Use it. 1999-01-06 Bruno Haible Fix a compilation problem on new glibc2 systems. * aclocal.m4 (CL_FPU_CONTROL): Check for fpu_control_t too. * unixconf.h.in (HAVE_FPU_CONTROL_T): New macro. * spvw.d (main): Don't call __setfpucw if the control word can be initialized statically. * unixaux.d: Initialize the control word statically if possible. 1999-01-06 Bruno Haible * makemake.in (lisplibdir): Change to $(libdir)/clisp. * _distmakefile (lisplibdir): Likewise. * clisp.spec: Change installation directory. 1999-01-06 Bruno Haible When getwd and getcwd both exist, prefer getcwd. * aclocal.m4 (CL_GETWD): Remove macro. (CL_GETCWD): First, check for getcwd. * configure.in (CL_GETWD): Remove call. * unixconf.h.in (HAVE_GETWD): Remove. (HAVE_GETCWD): New macro. * unix.d: Test for HAVE_GETCWD, not HAVE_GETWD. * spvw_language.d (init_language): Revert last patch. 1999-01-04 Sam Steingold * socket.d (socket_getlocalname): declare return value to be pointer to host_data, not const char. 1999-01-04 Bruno Haible * aclocal.m4 (CL_CANONICAL_HOST): Set ac_aux_dir before the cache check. 1999-01-03 Bruno Haible * lispbibl.d (subsstring): New declaration. * charstrg.d (subsstring): New function. * pathname.d (split_name_type, PARSE-NAMESTRING, wildcard_diff_ab) (translate_nametype_aux): Use it. 1999-01-03 Bruno Haible * lispbibl.d (make_ssbvector, ssbvector_push_extend): New declarations. * array.d (make_ssbvector, ssbvector_push_extend): New functions. * io.d (get_buffers): The second buffer is a ssbvector. (read_token_1, test_potential_number_syntax, test_dots) (case_convert_token, read_internal): Likewise. (string_reader): Use the first buffer, not the second. (uninterned_reader): The second buffer is a ssbvector. (READ-LINE): Use the first buffer, not the second. (pr_symbol_part): The second buffer is a ssbvector. 1999-01-03 Bruno Haible * pathname.d (make_directory): Move function, make inline. (delete_directory, change_current_directory, delete_existing_file) (delete_file_if_exists, delete_file_before_rename) (rename_existing_file, rename_file_to_nonexisting): New functions. (change_default): Use change_current_directory. (access0): Make inline. (FILE_EXISTS_TRIVIAL): New macro. (DELETE-FILE): Use FILE_EXISTS_TRIVIAL and delete_file_if_exists. (rename_file): Use rename_file_to_nonexisting. (open_file): Use delete_file_before_rename, rename_existing_file, delete_existing_file. (DELETE-DIR): Use delete_directory. 1999-01-03 Bruno Haible allocate_handle can call GC! * stream.d (make_keyboard_stream, make_terminal_stream_) (finish_output_file): Call allocate_handle() at GC-safe moments. 1999-01-03 Bruno Haible * constsym.d (char-code-limit, base-char-code-limit): New symbols. * spvw.d (init_symbol_values): Initialize them. * init.lsp: export char-code-limit. * defs1.lsp (char-code-limit, base-char-code-limit): Remove variables. 1999-01-03 Bruno Haible * stream.d (strm_file_buffer): A byte vector instead of a string. (b_file_finish_flush, b_file_nextbyte, b_file_eofbyte) (write_char_array_ch_file, write_byte_array_iau8_file): Access a byte vector instead of a string. (make_file_stream): Allocate a byte vector instead of a string. 1999-01-03 Bruno Haible * lispbibl.d (decimal_string): New declaration. * lisparit.d (decimal_string): New function. (SYS::DECIMAL-STRING): Call it. * pathname.d (nametype_namestring_parts, version_diff): Likewise. 1999-01-03 Bruno Haible * lispbibl.d (stream_line_number): New declaration. * stream.d (stream_line_number): New function. (SYS::LINE-NUMBER): Call it. * io.d (read_delimited_list, pr_stream): Likewise. 1999-01-03 Bruno Haible Speed up exponentiation. * intmal.d (UDS_square_UDS): New macro. (square_2loop_down, square_2bigloop_down, I_square_I): New functions. (I_I_expt_I): Use I_square_I. * intsqrt.d (I_rootp): Use I_square_I. * rational.d (RA_square_RA): New function. * lfloat.d (LF_square_LF): New function. * flo_rest.d (SF_square_SF, FF_square_FF, DF_square_DF): New macros. (F_square_F): New functions. * realelem.d (R_square_R): New function. (R_I_expt_R): Use R_square_R. * realtran.d (pi_F_float_F): Use LF_square_LF. (GEN_F_atanx, GEN_F_sinx, R_cos_sin_R_R, F_expx_F, R_cosh_sinh_R_R): Use F_square_F. * compelem.d (N_square_N): New function. (SFC_durch_SFC): Use SF_square_SF. (FFC_durch_FFC): Use FF_square_FF. (DFC_durch_DFC): Use DF_square_DF. (LFC_durch_LFC): Use LF_square_LF. (N_durch_N): Use RA_square_RA. (SF_SF_hypot_SF): Use SF_square_SF. (FF_FF_hypot_FF): Use FF_square_FF. (DF_DF_hypot_DF): Use DF_square_DF. (LF_LF_hypot_LF): Use LF_square_LF. (R_R_hypot_R): Use RA_square_RA. * comptran.d (N_I_expt_N): Use N_square_N. (R_R_atanh_R_R): Use R_square_R. (R_R_asinh_R_R): Use F_square_F, N_square_N. (N_acos_N, N_acosh_N): Use F_square_F. * lisparit.d (*): Call N_square_N for squaring. 1999-01-03 Bruno Haible DEFSTRUCT with option :INCLUDE should not define accessors which were already defined in a superclass DEFSTRUCT. * init.lsp (remove-old-definitions): Also remprop SYSTEM::DEFSTRUCT-READER. * places.lsp (define-setf-expander, defsetf): Also remprop SYSTEM::DEFSTRUCT-WRITER. * defstruc.lsp (ds-make-accessors): One more argument. Check property SYSTEM::DEFSTRUCT-READER. (ds-make-defsetfs): One more argument. Check property SYSTEM::DEFSTRUCT-WRITER. (defstruct): Update. 1999-01-03 Bruno Haible * conditio.lsp: Export STYLE-WARNING. (STYLE-WARNING): New condition type. * defs3.lsp: Export STYLE-WARNING. * compiler.lsp (*style-warning-count*): New variable. (c-style-warn): New function. (ignore-check): Call c-style-warn instead of c-warn. (c-CASE): Likewise. (compile-lambda): Bind *style-warning-count*. (compile, compile-file): Bind *style-warning-count*. Return three values depending on *style-warning-count*. 1999-01-02 Bruno Haible * lispbibl.d (I_to_uint8, I_to_sint8, I_to_uint16, I_to_sint16) (I_to_uint32, I_to_sint32): Define always. * predtype.d (elt_compare_T_T, elt_compare_T_Char, elt_compare_T_Bit) (elt_compare_T_2Bit, elt_compare_T_4Bit, elt_compare_T_8Bit) (elt_compare_T_16Bit, elt_compare_T_32Bit, elt_compare_Char_Char) (elt_compare_Bit_Bit, elt_compare_Bit_2Bit, elt_compare_Bit_4Bit) (elt_compare_Bit_8Bit, elt_compare_Bit_16Bit, elt_compare_Bit_32Bit) (elt_compare_2Bit_2Bit, elt_compare_2Bit_4Bit, elt_compare_2Bit_8Bit) (elt_compare_2Bit_16Bit, elt_compare_2Bit_32Bit) (elt_compare_4Bit_4Bit, elt_compare_4Bit_8Bit) (elt_compare_4Bit_16Bit, elt_compare_4Bit_32Bit) (elt_compare_8Bit_8Bit, elt_compare_8Bit_16Bit) (elt_compare_8Bit_32Bit, elt_compare_16Bit_16Bit) (elt_compare_16Bit_32Bit, elt_compare_32Bit_32Bit, elt_compare): New functions. (equalp): Rewrite the comparison code for arrays, to ignore the array element type. * realelem.d (hashcode4_uint32): New function. (hashcode4_uint4): New array. * hashtabl.d (hashcode4_string): Remove function. (hashcode4_char, hashcode4_vector_T, hashcode4_vector_Char) (hashcode4_vector_Bit, hashcode4_vector_2Bit, hashcode4_vector_4Bit) (hashcode4_vector_8Bit, hashcode4_vector_16Bit) (hashcode4_vector_32Bit, hashcode4_vector): New functions. (hashcode4_atom): For arrays, return a hash code independent of the array element type. For characters, multi-dimensional arrays, pathnames, and records, return a hash code consistent with EQUALP. 1999-01-01 Bruno Haible * pathname.d (host_match): Treat muster=NIL as wild. (device_match): Likewise. (nametype_match_aux): Rename from nametype_match. (subdir_match): Adjust. (directory_match): Treat muster=(:RELATIVE) as wild. (nametype_match): New function. (version_match): Treat muster=NIL as wild. (host_diff): Treat muster=NIL as wild. (device_diff): Likewise. Produce NIL instead of "". (nametype_diff_aux): Rename from nametype_diff. Produce NIL instead of "". (subdir_diff): Adjust. Produce NIL instead of "". (directory_diff_ab): Produces lists prefixed with :DIRECTORY. (directory_diff): Treat muster=(:RELATIVE) as wild. (nametype_diff): New function. (version_diff): Treat muster=NIL as wild. Always produce a result. Produce NIL instead of "". (translate_host): Treat muster=NIL as wild. (translate_device): Likewise. Accept NIL instead of "". (translate_nametype_aux): Rename from translate_nametype. Accept NIL instead of "". (translate_subdir): Adjust. (translate_directory): Treat muster=(:RELATIVE) as wild. Accept lists prefixed with :DIRECTORY. (translate_nametype): New function. (translate_version): Treat muster=NIL as wild. Accept NIL instead of "". Always consume an item. * defs1.lsp (set-logical-pathname-translations for SYS): Simplify. 1998-11-22 Bruno Haible * lispbibl.d (STRM_WR_SS): Assume to be 1. (PSEUDOFUNSS): Remove definition. * pseudofun.d: Use PSEUDOFUN instead of PSEUDOFUNSS. * array.d, io.d, stream.d, spvw_memfile.d: Assume STRM_WR_SS is 1. 1998-11-21 Bruno Haible Avoid a Purify(TM) warning. * intbyte.d (ldb_extract): Only access newMSDptr[0] if really needed. 1998-12-31 Bruno Haible * defs1.lsp (union, nunion, intersection, nintersection) (set-difference, nset-difference): Rewrite to use iteration instead of recursion. 1998-12-31 Bruno Haible * loop.lsp (expand-loop): Fix bug introduced by 1998-12-21 patch. 1998-12-22 Bruno Haible * intgcd.d (I_I_xgcd_I_I_I): Ensure the 2nd and 3rd value are normalized to be of minimum absolute value. 1998-12-22 Bruno Haible * aclocal.m4 (CL_IOCTL): Allow the second argument of ioctl to be of type `void*'. * unixconf.h.in (IOCTL_ARGUMENT_T): New definition. * unix.d (ioctl, nonintr_ioctl): Change declarations. (IOCTL_ARGUMENT_T): New definition. * unixaux.d (nonintr_ioctl): Likewise. 1998-12-21 Sam Steingold * spvw_language.d (init_language): use `getcwd' instead of `getwd'. 1998-12-21 Bruno Haible * makemake.in: Don't remove full/* for DOS,OS/2, as it doesn't exist. On Unix, create the full/ directory during `make installdirs'. 1998-12-21 Bruno Haible * stream.d (FILE-POSITION): Accept any integer >= 0, < 2^32, not only fixnums. 1998-12-21 Bruno Haible * stream.d (SOCKET-SERVER, publish_host_data): Remove call to undeclared function `bzero'. Pass 3rd argument to `create_server_socket'. * socket.d (create_server_socket, socket_getpeername) (socket_getlocalname): Move to here. (create_server_socket): Port is passed as argument, not in hd->port. 1998-12-21 Bruno Haible * loop.lsp (expand-loop): Generalize 1998-11-05 patch: The FOR FROM/TO/BY clauses can come in any order. Make sure the order of evaluation is preserved. 1998-12-20 Sam Steingold * _clisp.c (main): accept an '-F' argument to run the full version of CLISP (with modules). * spvw.d (usage): mention -F. * makemake.in: install the full CLISP version too. * _distmakefile: ditto. 1998-12-18 Bruno Haible * makemake.in (clean7): Add "rm -f -r bindings clx queens regexp wildcard". 1998-12-18 Bruno Haible * lispbibl.d (strm_len): Correct definition, was one too large if not compiling with gcc. (stream_xlength, Stream_xlength): New macros. (allocate_stream): One more argument. * spvw_typealloc.d (allocate_stream): Likewise. * stream.d (make_handle_stream, make_keyboard_stream) (make_terminal_stream_, SYS::MAKE-WINDOW): One more argument to `allocate-stream'. (strm_file_extrafields_struct, strm_ch_file_extrafields_struct) (strm_i_file_extrafields_struct): New structures. (strm_file_buffstart): Remove macro. (FileStream_buffstart): New macro. (strm_file_eofindex): Remove macro. (FileStream_eofindex, eofindex_all_valid, eofindex_all_invalid): New macros. (strm_file_index): Remove macro. (FileStream_index): New macro. (modified_flag, set_modified_flag, reset_modified_flag): Remove macros. (FileStream_modified): New macro. (strm_file_position): Remove macro. (FileStream_position): New macro. (strm_ch_file_lineno): Remove macro. (FileStream_lineno): New macro. (strm_file_bitsize): Remove macro. (FileStream_bitsize): New macro. (strm_file_bitindex): Remove macto. (FileStream_bitindex): New macro. (strm_file_eofposition): Remove macro. (FileStream_eofposition): New macro. (strm_file_buffer, strm_file_bitbuffer): Change. (b_file_finish_flush, b_file_half_flush, b_file_flush) (b_file_nextbyte, b_file_eofbyte, b_file_writebyte, position_b_file) (rd_ch_ch_file, write_b_file, write_char_array_ch_file) (position_i_file, rd_by_iax_file, rd_by_ibx_file, rd_by_icx_file) (wr_by_ia, wr_by_ib, wr_by_ic, wr_by_ixu_file, wr_by_ixs_file) (write_byte_array_iau8_file, position_file_start, position_file) (position_file_end): Use new macros. (make_file_stream): One more argument to `allocate_stream'. Use new macros. (file_flush, finish_output_file, closed_file): Use new macros. (make_synonym_stream, make_broadcast_stream) (make_concatenated_stream, make_twoway_stream, make_echo_stream) (MAKE-STRING-INPUT-STREAM, make_string_output_stream) (SYSTEM::MAKE-STRING-PUSH-STREAM, make_pphelp_stream) (MAKE-BUFFERED-INPUT-STREAM, MAKE-BUFFERED-OUTPUT-STREAM) (make_printer_stream, MAKE-PIPE-INPUT-STREAM) (MAKE-PIPE-OUTPUT-STREAM, MAKE-PIPE-IO-STREAM) (SYS::MAKE-SOCKET-STREAM, make_socket_stream, MAKE-GENERIC-STREAM): One more argument to `allocate_stream'. (STREAM-ELEMENT-TYPE, read_byte_array, write_byte_array) (read_char_array, FILE-POSITION, FILE-LENGTH, SYS::LINE-NUMBER): Use new macros. * io.d (pr_stream): Adjust printing of character streams. 1998-12-18 Bruno Haible * makemake.in (echol): Partially revert the 1998-10-14 change. The Openstep hack doesn't work on Solaris. 1998-12-16 Sam Steingold * bindings/linuxlibc6/linux.lsp: replace _IO_std* with _IO_std*_. 1998-12-15 Bruno Haible * lispbibl.d (host_data): Adjust type definition to be valid C++. 1998-12-15 Sam Steingold * constsym.d: add `SOCKET-STREAM-LOCAL', rename `SOCKET-STREAM-PEER-HOST' to `SOCKET-STREAM-PEER'. * subr.d: ditto. * socket.d (create_server_socket, socket_getpeername) (socket_getlocalname): use `host_data' structure instead of statics. (fill_hostname): new function (rename from `ip_to_string'). (socket_getlocalname): new function (rename from `socket_getmyname'). * stream.d (socket_server): use `host_data' structure. (publish_host_data): new function. (socket_stream_peer, socket_stream_local): use it. * _impnotes.txt, impnotes.html: document the changes. * lispbibl.d: add `typedef host_data'. 1998-12-15 Sam Steingold * makemake.in: add --fsstnd options `redhat' and `debian'. 1998-12-15 Bruno Haible * configure: Don't lndir modules/CVS over to src/CVS. * configure: Don't pass the --fsstnd argument to src/configure. 1998-12-11 Sam Steingold * socket.d (create_server_socket): take 2 arguments, pointer to unsigned int (port) and SOCKET. (ip_to_string): new function. (socket_getmyname): new function. * constsym.d: add `SOCKET-SERVER-HOST'. * subr.d: ditto. * io.d (pr_orecord): print host of `SOCKET-SERVER'. * lispbibl.d (struct *Socket_server): new field: host. (socket_stream_p): new predicate. * stream.d (socket_server): accept socket-stream as the optional argument. (socket_server_host): new function. 1998-12-08 Bruno Haible * makemake.in (MODULES): New variables. Accept --with-module=MODULE syntax. * configure: Update. 1998-11-20 Bruno Haible * stream.d (read_byte_array, read_char_array): When reading from handle-streams, use `full_read' not `read', because `full_read' handles EFAULT gracefully. 1998-11-07 Bruno Haible * lispbibl.d (base_char_int_len, base_char_int_limit, bcint) (base_char_code_limit, base_char_p): New definitions. * charstrg.d (SYS::BASE-CHAR-P): New function. * predtype.d (TYPE-OF): May return [SIMPLE-]BASE-STRING instead of [SIMPLE-]STRING, and BASE-CHAR instead of CHARACTER. (COERCE): Treat BASE-CHAR, BASE-STRING, SIMPLE-BASE-STRING. * sequence.d (valid_type): Treat BASE-STRING, SIMPLE-BASE-STRING. * defs1.lsp (base-char-code-limit): Define. * defs2.lsp (designator): Recognize (DESIGNATOR BASE-CHAR). * type.lsp: New types BASE-CHAR, EXTENDED-CHAR, BASE-STRING, SIMPLE-BASE-STRING. (canonicalize-type): Force STANDARD-CHAR to be a subtype of BASE-CHAR. * compiler.lsp (*declaration-types*): Add base-char, base-string, extended-char, simple-base-string. (c-typep-alist1): Add base-string, simple-base-string. (c-typep-alist2): Add base-char, extended-char. (c-typep-alist3): Add base-string, simple-base-string. * init.lsp: Export base-char, base-string, extended-char, simple-base-string. * defs3.lsp: Likewise. 1998-11-05 Sam Steingold * loop.lsp (expand-loop): allow `by' to precede `upto' &c. 1998-11-05 Sam Steingold * type.lsp (canonicalize-type): handle `SIGNED-BYTE' and `UNSIGNED-BYTE', thus recognize them as subtypes of `INTEGER'. 1998-11-01 Bruno Haible Replace STRING-CHAR with CHARACTER. * array.d (eltype_code): No need to test for STRING-CHAR, the SUBTYPEP test catches it. Test for subtype of CHARACTER, not STRING-CHAR. (datenvektor_store): Test for CHARACTER, not STRING-CHAR. (array_element_type): Return CHARACTER, not STRING-CHAR. (VECTOR-PUSH-EXTEND): Test for CHARACTER, not STRING-CHAR. (make_datenvektor): Likewise. * charstrg.d (coerce_char): Use code_char instead of int_char. (STANDARD-CHAR-P, GRAPHIC-CHAR-P): Use char_code instead of char_int. (STRING-CHAR-P): Always return T. (ALPHA-CHAR-P, UPPER-CASE-P, LOWER-CASE-P, BOTH-CASE-P, DIGIT-CHAR-P) (ALPHANUMERICP, CHAR-UPCASE, CHAR-DOWNCASE, CHAR-INT): Use char_code instead of char_int. (INT-CHAR): Use code_char instead of int_char. (CHAR-NAME): Use char_code instead of char_int. (test_newchar_arg, test_stringsymchar_arg): Test for CHARACTER, not STRING-CHAR. (MAKE-STRING): No need to test for STRING-CHAR, the SUBTYPEP test catches it. Test for CHARACTER, not STRING-CHAR. * error.d (fehler_string_char): Remove, replace by fehler_char. * foreign.d (convert_from_foreign_array_alloc): Make an array of element type CHARACTER, not STRING-CHAR. (convert_to_foreign): Test for CHARACTER, not STRING-CHAR. * genclisph.d (main): Simplify code_char and char_code. Remove string_char_p. Replace char_string_char by check_char. * io.d (SET-SYNTAX-FROM-CHAR, SET-MACRO-CHARACTER, GET-MACRO-CHARACTER) (MAKE-DISPATCH-MACRO-CHARACTER, test_disp_sub_char, read_char_syntax) (wpeek_char_syntax, wpeek_char_eof, read_macro): Test for CHARACTER, not STRING-CHAR. (char_reader): Use code_char instead of int_char. Simplify. (array_reader): Use CHARACTER, not STRING-CHAR. (READ-DELIMITED-LIST, READ-LINE): Test for CHARACTER, not STRING-CHAR. (pr_character): Use char_code instead of char_int. * lispbibl.d (char_int_len): Set to 8, not 16. (char_code_shift_c, char_code_len_c, char_code_mask_c): Remove. (char_code_limit, code_char, char_code): Simplify. (Atype_Char): Rename from Atype_String_Char. (strmtype_ch_file): Remove. (strmtype_ch_file): Rename from strmtype_sch_file. (string_char_p): Remove. (fehler_string_char): Remove declaration. (check_char): Replaces check_string_char. (read_char_array): Rename from read_schar_array. (write_char_array): Rename from write_schar_array. * pathname.d (OPEN): Accept element type CHARACTER, synonymous to STRING-CHAR. No need to test for subtype of STRING-CHAR, subtype of CHARACTER catches it. * predtype.d (COERCE): No need to check for STRING-CHAR after coercion to CHARACTER. * stream.d (write_char): Use char_code instead of char_int. (fehler_wr_string_char): Remove. (wr_ch_handle): Test for CHARACTER, not STRING-CHAR. (write_char_array_handle): Rename from write_schar_array_handle. (wr_ch_terminal, wr_ch_terminal3, wr_ch_window): Test for CHARACTER, not STRING-CHAR. (char_size, rd_ch_ch_file, listen_ch_file, wr_ch_ch_file): Remove. (rd_ch_ch_file): Rename from rd_ch_sch_file. (listen_ch_file): Rename from listen_sch_file. (wr_ch_ch_file): Rename from wr_ch_sch_file. (write_char_array_ch_file): Rename from write_schar_array_sch_file. (wr_ss_ch_file): Rename from wr_ss_sch_file. (position_file, position_file_end, make_file_stream): Simplify. (wr_ch_str_out): Test for CHARACTER, not STRING-CHAR. (MAKE-STRING-OUTPUT-STREAM): No need to test for STRING-CHAR, the SUBTYPEP test catches it. (wr_ch_str_push, wr_ch_pphelp, wr_ch_buff_out, wr_ch_printer) (wr_ch_socket): Test for CHARACTER, not STRING-CHAR. (write_char_array_socket): Rename from write_schar_array_socket. (STREAM-ELEMENT-TYPE): Return CHARACTER instead of STRING-CHAR. For the keyboard stream, return T. (read_char_array): Rename from read_schar_array. Test for CHARACTER, not STRING-CHAR. (write_char_array): Rename from write_schar_array. (FILE-STRING-LENGTH): Test for CHARACTER, not STRING-CHAR. Simplify. * compiler.lsp (c-typep-alist1): Add STRING-CHAR. (c-typep-alist2): Remove STRING-CHAR. * defs2.lsp (dispatch-reader): Test for CHARACTER, not STRING-CHAR. (read-sequence, write-sequence): Don't test for STRING-CHAR, that's not a used stream element type any more. (designator): Use char-code-limit instead of char-int-limit. Remove definition of type (DESIGNATOR STRING-CHAR). Use CHARACTER instead of STRING-CHAR. * format.lsp (digit-string): Create with element type CHARACTER, not STRING-CHAR. * init.lsp (load): Call open with element type CHARACTER, not STRING-CHAR. * type.lsp (STRING-CHAR): Make synonymous to CHARACTER. (upgraded-array-element-type): No need to test for STRING-CHAR, the SUBTYPEP test catches it. Return CHARACTER, not STRING-CHAR. (canonicalize-type): Simplify STANDARD-CHAR and STRING-CHAR. Element type of SIMPLE-STRING and STRING is CHARACTER, not STRING-CHAR. * user2.lsp (shell-quote): Create with element type CHARACTER, not STRING-CHAR. 1998-11-01 Bruno Haible Remove font and bits attributes of characters. * lispbibl.d (char_bits_*, char_font_*, char_*_c): Remove definitions. * io.d (char_reader): Font must be 0, bitnames are not supported any more. (pr_character): Remove support for font and bitnames. * constobj.d (charname_hyper_*): Remove extra character names for keys. (bitnamekw_*): Remove bitnames. * charstrg.d (charname_table_extra): Remove definition. (charname_table_codes): Remove extra characters. (name_char): Don't test for extra characters. (CHAR-BITS, CHAR-FONT, MAKE-CHAR): Remove functions. (test_font_arg, test_bits_arg, test_bitname_arg): Remove. (CODE-CHAR, DIGIT-CHAR): Remove the optional font and bits arguments. (CHAR-BIT, SET-CHAR-BIT): Remove functions. * eval.d (FUNTAB): Remove CHAR-BITS, CHAR-FONT, MAKE-CHAR, CHAR-BIT, SET-CHAR-BIT. * compiler.lsp (funtab): Remove CHAR-BITS, CHAR-FONT, MAKE-CHAR, CHAR-BIT, SET-CHAR-BIT. (subr-info): Remove CHAR-BITS, CHAR-FONT, MAKE-CHAR, CHAR-BIT, SET-CHAR-BIT, update for CODE-CHAR, DIGIT-CHAR. (c-DIRECT-FUNCTION-CALL): Remove CHAR-BITS, CHAR-FONT, MAKE-CHAR, CHAR-BIT. * format.lsp (format-character): Remove handling of font and bits. * user2.lsp (describe): Likewise. * xcharin.lsp: New file. * makemake.in (LPARTS): Add xcharin. * defs1.lsp (char-font-limit, char-bits-limit, char-int-limit) (char-control-bit, char-meta-bit, char-super-bit, char-hyper-bit): Moved to xcharin.lsp. * init.lsp: Load xcharin. * defs3.lsp: Don't export COMMON, STRING-CHAR, CHAR-FONT-LIMIT, CHAR-BITS-LIMIT, CHAR-CONTROL-BIT, CHAR-META-BIT, CHAR-SUPER-BIT, CHAR-HYPER-BIT, STRING-CHAR-P, CHAR-BITS, CHAR-FONT, MAKE-CHAR, INT-CHAR, CHAR-BIT, SET-CHAR-BIT. * stream.d (key_event): New structure type. (make_key_event): New function. (char_control_c, char_meta_c, char_super_c, char_hyper_c): Define. (scancode_table): Use key_event data. (listen_keyboard): Call make_key_event and make-char. (rd_ch_keyboard): Likewise. (add_keybinding): Rename from keybinding. (keybinding): New macro. (make_keyboard_stream): Use key_event data. (wr_ch_terminal1): Leave a #error for Jorg to fix. * type.lsp (upgraded-array-element-type): Treat CHARACTER as synonym of STRING-CHAR. * array.d (eltype_code): Likewise. 1998-10-31 Bruno Haible * stream.d (MAKE-STRING-OUTPUT-STREAM): Replace optional argument by keyword arguments :ELEMENT-TYPE and :LINE-POSITION. * compiler.lsp (subr-info): Update for MAKE-STRING-OUTPUT-STREAM. * format.lsp (format-case-conversion, format-justification) (formatter-main-1): Pass keywords to MAKE-STRING-OUTPUT-STREAM. * macros2.lsp (with-output-to-string): Add keyword argument :ELEMENT-TYPE. 1998-10-31 Bruno Haible * charstrg.d (MAKE-STRING): Add keyword argument :ELEMENT-TYPE. * compiler.lsp (subr-info): Update for MAKE-STRING. 1998-10-31 Bruno Haible * pathname.d (OPEN): Add keyword argument :EXTERNAL-FORMAT. * stream.d (STREAM-EXTERNAL-FORMAT): New function. * eval.d (FUNTAB): Add stream-external-format. * compiler.lsp (funtab): Add stream-external-format. (subr-info): Update for OPEN and STREAM-EXTERNAL-FORMAT. * init.lsp: Export STREAM-EXTERNAL-FORMAT from package LISP. * defs3.lsp: Export STREAM-EXTERNAL-FORMAT from package COMMON-LISP. 1998-10-31 Bruno Haible * constobj.d (O(version)): Bump version number. 1998-10-31 Bruno Haible * editor.lsp: Remove file. * makemake.in (LPARTS): Adjust. 1998-10-22 Bruno Haible * charstrg.d (coerce_char): An integer is coercible to a charact