GCL 2.6.12 RELEASE NOTES
Greetings! The GCL team is happy to announce the release of version
2.6.12, the latest achievement in the 'stable' (as opposed to
'development') series. Please see http://www.gnu.org/software/gcl for
downloading information.
This release was largely motivated to accelerate closure construction
and compiler hash table performance for ACL2(h). Along the way,
support was added for ACL2 static-consing, making GCL at present one
of two lisps offering this optimization for very large and heavy jobs.
This release also features a TAGS target in make, a variety of
compiler speed improvements, an overhaul and standardization of the
error, conditions, and restart systems, protection of system and fork
from SIGPROF, and getc/putc from SIGINT, faster l2 list functions and
nani/address, proper handling of missing objdump and generic TMP
environment variables, processing of mismatched fast-link calls slowly
without error, ppc64le and aarch64 fixes, support for the
si::*link-list* fast-linking diagnostic, more robust segfault
trapping, and full pathname fixes to the unradomize/re-exec
mechanism.
From the git log:
- compiler::*warn-on-multiple-fn-definitions* to suppress proclaim conflicts
- fix signed integer comparison error in values error reporting
- get full self path before unrandomize to robustify exec
- start debug levels at 1
- print package prefixes in sys-proclaim.lisp
- break dbl-backtrace loop on nil ihs from next-stack-frame
- allow multiple segfault catches in segmentation_catcher
- fix process-args for nil format-arguments
- export ansi error symbols to cltl1, removing segfault in error
- lintian for mac
- break-resume
- unknown reloc diagnostic output for elf
- fedora aarch64 relocs
- cast for mingw fileno
- move errors used in C code to cltl1
- remove noise from assert, fix etypecase
- update lsp and cmpnew sys-proclaims
- use building lisp to make sys-proclaim.lisp
- export all conditions symbols in gcl_export.lsp
- eliminate serror package from pcl/sys-package.lisp
- more specific-error removals
- eliminate serror package
- update sys-proclaims
- compiler lintian fixes
- eliminate specific-error
- C code error semantics from master, centralize on Icall_gen_error_handler
- one ansi-compat version of case macros in cltl1
- clcs cleanup, centralize lisp errors in gcl_serror, move restart to cltl1
- collect interpreted function statistic in si::*link-list*
- include limits.h in mingw.h to get PATH_MAX (fixme)
- update minvers
- revert type-filter change, unknown types return t for now
- support for R_PPC64_REL32
- static function pointers only on ppc64 big endian elfv1 abi
- align frs_jumpbuf at double object alignment (fix ppc64le maxima)
- reloc externals off of plt entries for ppc64le
- configure error on missing alignment attributes
- simplify clcs-break-level
- rely on nil si::*quit-tags* to enforce without-interrupts
- remove recursive error block
- type-filter returns '* for unknown types, more sensible proclaims
- allow mismatched arg/ret fastlink calls to proceed slowly
- wrap getc/putc in BEGIN/END_NO_INTERRUPT
- solidify readline Control-C interrupts
- preliminary read interrupt handling
- open filenames with ~ designating home dir
- merging in comp_perf
- avoid revappend in loop expansion
- merging in comp_perf
- merging in test
- multi_cons macro
- fast nani/address
- fix symbol-value opt
- fix mreverse typo
- faster l2 list functions in gcl_listlib.lsp
- opts for symbol-value and acons
- more reverse typos
- fix mreverse typo
- more reverse -> nreverse
- more fast anonymous funcalls
- protect getc and putc from Control-C, non-restartable system calls
- better break-quit message to synch with without-interrupts
- fix get-temp-dir for directory environment variables
- handle tmp links in get-temp-dir
- only run objdump when available
- mingw msystem typo
- merging in comp_perf
- fast-linkable ihs-top
- make-defpackage-form moved to :si
- refresh lsp and cmpnew sys-proclaim.lisp
- only cmp-expand-macro when necessary
- some reverse -> nreverse optimizations in compiler
- merging in comp_perf
- run traditional error-set in ansi
- merging in comp_perf
- don't run memoize-hash-equal to check data vectors by default
- faster adjust-array
- faster anonymous funcalls
- remove closure in get-inline-info
- compile #+ and #-
- side-step make-array in make-info
- global variables for hash table defaults
- merging in prof_block
- prof_block typos
- hash-table-rehash-{size,threshold}
- merging in prof_block
- block profiling timer during system and fork
- merging in export-no-interrupts
- update break-quit for gcl-top-restart
- update without-interrupts to reset conditions::*restart-clusters*
- truncate restarts at null *quit-tag*
- support for nil *quit-tag* in break-quit
- return error stack pointers within current bounds
- merging in rturbo-oorder-aobj2
- merging in ordinary-order-add-object2
- merging in ordinary-order
- move add-init forms from t2defmacro to t3defmacro
- merging in rturbo-oorder-aobj2
- merging in ordinary-order-add-object2
- merging in ordinary-order
- clear t2defun/t3defun compiler warnings
- merging in rturbo-oorder-aobj2
- merging in ordinary-order-add-object2
- merging in add-object2
- remove *rev-objects*
- merging in rturbo-oorder-aobj2
- merging in relocatable-turbo
- turbo_closure typo
- merging in export-no-interrupts
- without-interrupts typo
- si::static-inverse-cons
- without-interrups
- check interrupts only at END_NO_INTERRUPT
- merging in relocatable-turbo
- relblock for turbo array
- merging in add-object2
- use hash table to add objects in pass 2
- sharp-comma init moved to t3
- vararg returns nil in wt-if-proclaimed
- add TAGS taget
- t3ordinary
- make functions in t3init-fun after level2 code processing
- run top-level load forms after all functions have been initialized