[Sbcl-announce] sbcl-2.1.11 released

0 views
Skip to first unread message

Christophe Rhodes

unread,
Nov 30, 2021, 1:18:24 PM11/30/21
to sbcl-a...@lists.sourceforge.net
Dear all,

I've released sbcl-2.1.11 and uploaded sources to SourceForge; binaries
for various platforms will hopefully trickle in over the next few days;
a list of significant changes in this release is appended below.

A couple of things from this month's development to draw your attention
to: firstly, the stronger assignment-conversion compiler transformations
will fire for example in common patterns in the implementation of state
machines using LABELS or complex iteration using tail-recursion. As a
specific example, consider

(defun foo (v)
(flet ((f (x) ...))
(bar (if (read) (f v) (f (+ v v))))))

Because the two calls to F share a return point (loosely, a
continuation), F can be fully inlined without increasing the code size.
For more details on this general class of optimization, read about
"contification" in the compiler literature. This implementation has
raised the stack use in the compiler a little, which caused at least one
application to fail to compile unexpectedly; if that happens, the
--control-stack-size runtime argument can be used to increase the stack
size from its default. We'll be looking at reducing the stack usage of
the compiler in the next development cycle.

Secondly, the system on x86-64 and ppc64 uses software card marking
rather than page protection and memory management to track writes of
younger data to older memory (needed to implement the generational
garbage collector). One effect of this should be to remove the large
number of mappings needed to track the different protection states by
the kernel, and in particular there should no longer be any need on
these platforms to raise the value of /proc/sys/vm/max_map_count.

Best wishes,

Christophe

changes in sbcl-2.1.11 relative to sbcl-2.1.10:
* minor incompatible change: *COMPILE-PRINT* now defaults to NIL. T gives
the old behavior of echoing top level forms. Users who want to see a
report of the phases of compilation can use *COMPILE-PROGRESS* and the
corresponding COMPILE-FILE :PROGRESS argument.
* optimization: The compiler assignment-converts functions much more
aggressively; local or non-entry block-compiled functions
which always return to the same place are automatically converted into the
equivalent loop or goto control structures.
* enhancement: on x86-64 and ppc64 platforms, the system uses inline
instructions rather than page protection to implement a store barrier for
the garbage collector.
* enhancement: improved reporting of code deletion notes.
* platform support:
** unbound-variable restarts for amd64 are now supported.
** bug fix: single-floats to foreign functions on 32-bit ARMel.
(lp#1950080, reported by Sebastien Villemot)
** bug fix: opening files with names containing non-ASCII characters on
Windows works better. (reported by Nikolay)
** bug fix: use fp_xsave to access the floating point flags and control
word in Haiku signal contexts. (Thanks to Al Hoang)
** bug fix: complex single-float support on riscv64.
** optimization: support for accessing elements of &rest args directly on
ppc64, mips, riscv.
** optimization: parse a /proc file rather than executing uname for
SOFTWARE-VERSION on Linux
* bug fix: fix crash from SB-COVER:RESET-COVERAGE. (lp#1950059, reported by
Gregory Czerniak)



_______________________________________________
Sbcl-announce mailing list
Sbcl-a...@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sbcl-announce
Reply all
Reply to author
Forward
0 new messages