Tags: catull/sbcl
Tags
changes in sbcl-2.1.1 relative to sbcl-2.1.0:
* platform support:
** restore non-threaded NetBSD builds;
** adjust how the finalizer thread is started; (lp#1906571, lp#1907872)
** fix the encoding of PEXTR on x86-64;
* minor incompatible change: emit warnings for list iteration forms when the
object being iterated over is known not to be a list. (lp#1908819,
reported by Michael Fiano)
* bug fix: detect 2 or 1 as an invalid number of arguments passed to
optimized slot writing or reading effective method respectively.
(lp#1909659, reported by Michal Herda)
* bug fix: division by zero errors were in some cases not being signalled.
(lp#1910098, reported by il71)
* bug fix: erroneous coercions in the type system could lose precision.
(lp#1910294)
* bug fix: literal (read-time evaluated) NaNs in source code no longer cause
compiler crashes. (lp#1909881, reported by Michal Herda)
* bug fix: detect more erroneous syntax in method bodies. (lp#1912362,
reported by Paul M. Rodriguez)
* optimization: the compiler's understanding of EXPT is improved, reducing
the introduction of COMPLEX types. (lp#1908830, reported by Michael Fiano)
* optimization: the compiler is better at computing numeric contagion when
(COMPLEX FLOAT) types are involved.
* micro-optimizations:
** moving from slightly-bigger-than-fixnum ranges is more efficient on x86-64;
** encode character comparisons with smaller operands on x86-64;
** truncating (and related operations) on floats can be inlined in more
cases on 64-bit platforms;
** rounding can use specialized instructions on ARM64 and on x86-64 when
SSE4 is available;
changes in sbcl-2.1.0 relative to sbcl-2.0.11:
* minor incompatible change: the MAKE-EA internal function, used in the
assembler, has been removed (affecting some libraries defining their own
Virtual Operations)
* new feature: SB-EXT:PRIMITIVE-OBJECT-SIZE can be used to interrogate the
low-level size in memory of objects. (lp#1636910, reported by anquegi)
* platform support:
** pass required -std argument to the compiler on Solaris (lp#1885751,
thanks to Jesse Off)
** better treatment of non-ASCII program arguments on Windows (lp#1907970,
reported by Timofei Shatrov)
** implement the improved TYPEP with structure types on all other
supported platforms (32-bit PowerPC, ARM, ARM64, MIPS, SPARC, RISC-V)
* enhancement: stream dispatch (to vanilla ANSI / Gray / Simple variants) has
been rewritten and optimized, fixing a number of bugs including:
** performance of WRITE-SEQUENCE on composite streams (lp#309136)
** handling of CLOSE on SYNONYM-STREAM (lp#1904257, reported by Richard M
Kreuter)
** handling of CLOSE on BROADCAST-STREAM with no components (lp#1904722,
reported by Richard M Kreuter)
** loading SB-SIMPLE-STREAMS breaks functionality of other stream classes
(lp#1908132)
** some excessive consing in READ-LINE
* enhancements related to RUN-PROGRAM:
** improved the documentation related to the ARGS argument (lp#806733,
reported by mon_key)
** added a PRESERVE-FDS argument
* bug fix: ensure that TYPE-OF returns something even on internal instances,
which may become visible in the debugger. (lp#1908261, reported by
Philipp Marek)
* bug fix: iteration variables established by standard forms should always
be considered used by the compiler. (lp#719585, reported by Roman
Marynchak)
* bug fix: don't allow compiler transformations to weaken the requirement
against extended (list-form) function names in FUNCALL and related
operators. (lp#310069)
* bug fix: improve automated version number generation in branches.
(lp#897867, thanks to Martin Cracauer)
* bug fix: add possibly-spurious futex wakes when unwinding from a call to
futex-wait, to avoid deadlocks from interrupted waits. (lp#1038034)
* bug fixes in the compiler:
** error on malformed DESTRUCTURING-BIND (lp#1738638)
** error on malformed SPECIAL declaration (lp#1740756)
** error from use of VALUES type in COERCE (lp#1887712)
** enforcement of FTYPE types involving &OPTIONAL (lp#1903932)
** checking for proper-list-ness before applying transforms (lp#1905512)
** compilation of LAMBDA form including a malformed DEFUN (lp#1906056)
** memory fault from VALUES-related handling in high DEBUG code
(lp#1906563)
** transforms handle explicit NIL arguments in :END arguments to SEARCH
(lp#1907924)
* bug fix: return COMPILED-FUNCTION for TYPE-OF on compiled functions.
(lp#1906583)
* some bugs were also closed in this release cycle as obsolete, having been
fixed by the passage of time or other change in the environment:
** floating point error reporting on OS X (lp#309454)
** load-shared-library not working from non-main threads on OS X (lp#592425)
* optimization: CONSTANTLY on constant arguments returns a more efficient
function. (lp#1852585)
* optimization: perform fewer Lisp/Alien representation conversions in
callbacks.
* optimization: perform fewer redundant widetag tests when doing type tests
of complicated union types.
* optimization: signed-integer division on machine-word sized operands is
now implemented using multiplication, affecting TRUNCATE, FLOOR, CEILING,
MOD and REM. (This optimization was already performed on unsigned-integer
division)
changes in sbcl-2.0.11 relative to sbcl-2.0.10:
* minor incompatible change: (ARRAY NIL (*)) is not a subtype of STRING,
as is consistent with a majority of maintained CL implementations.
* minor incompatible change: ARRAY-RANK-LIMIT is decreased from 65529 to 256
* optimization: TYPEP on structure types is faster and more compact on
x86[-64] and ppc64.
* optimization: LOGCOUNT is faster on arm64.
* optimization: SIGNUM can be inlined if its argument type is known.
(lp#1903533)
* bug fix: compiler crash in tail call handling. (lp#1903938)
* bug fix: crash in traceroot. (lp#1903419, reported by Michal Herda)
* bug fix: DESCRIBE called with a string as second argument no longer mutates
that string. (lp#1903901, reported by Michal Herda)
* bug fix: stack clobbering by 256-bit SIMD packs on x86-64. (lp#1901685,
reported by Marco Heisig)
changes in sbcl-2.0.10 relative to sbcl-2.0.9:
* minor incompatible change: the funarg given to SB-SPROF:MAP-TRACES
does not receive a wallclock time with each trace.
* minor incompatible change: INTERNAL-TIME-UNITS-PER-SECOND has been
increased to 10^6 on 64-bit architectures.
* minor incompatible change: SIGPIPE is ignored by default again. (lp#1897624)
* minor incompatible change: the system code compiled under the
:LINKAGE-TABLE feature is now unconditionally compiled in, and the
corresponding entry in *FEATURES* has been removed.
* enhancement: style-warnings are issued for variables which have an
assignment but no "for-value reference" (per CLHS glossary entry)
* bug fix: SB-CLTL2:MACROEXPAND-ALL did not expand MULTIPLE-VALUE-BIND
and MULTIPLE-VALUE-SETQ
* bug fix: CPUID-based feature detection had an index/mask confusion
(lp#1899239)
* bug fix: fix a deadlock on Windows (lp#1896802)
* bug fix: eliminate type errors when wall clocks go back (lp#1028026,
lp#1032111)
* bug fix: fix EOF handling in read-char-no-hang on concatenenated streams
(lp#690408, reported by Willem Broekema)
* bug fix: fix MAP-INTO on extended sequences (lp#1855375, thanks to James
Kalenius)
* bug fix: SB-GMP can now raise -1, 0 and 1 to the power of a bignum.
(thanks to Aaron Chen)
* bug fixes in tests:
** add a C function declaration (lp#1897627, thanks to Bob Felts)
** parse vmmap output more liberally (lp#1897722, reported by Bob Felts)
changes in sbcl-2.0.9 relative to sbcl-2.0.8:
* incompatible change: HPPA and DEC Alpha architecture
support has been removed.
* minor incompatible change: the compiler signals a warning at
compile-time when an initform of T, NIL or 0 does not match a
STANDARD-CLASS slot's declared type.
* minor incompatible change: the runtime no longer uses SIGPIPE internally,
so the signal is deliverable to user code as is customary. Ignoring the
signal - in lieu of the OS default of process termination - is obtainable
via (SB-SYS:ENABLE-INTERRUPT SB-UNIX:SIGPIPE :IGNORE).
* platform support:
** a number of obsolete portability layers (particularly on the Windows
platform) have been removed in favour of direct calling of the native
interfaces.
** RUN-PROGRAM now accepts a :WINDOW argument to control whether a
subprocess window should be displayed. (Thanks to Luis Borges de
Oliveira)
** the use of futexes implied by :SB-FUTEX is now implemented on FreeBSD.
* bug fix: SB-SPROF can distinguish between SBCL-internal assembly routines.
* bug fix: SB-SPROF has better output in its reports for anonymous
functions.
* optimization: CALL-NEXT-METHOD with supplied arguments in required
positions is now faster if the supplied arguments are EQL to the original
arguments.
changes in sbcl-2.0.8 relative to sbcl-2.0.7:
* platform support:
** added support for NetBSD/ARM64;
** threads on Linux now have OS-visible names;
** removed unnecessary emulation of pthread functions on Windows;
** work around a sigwait() bug on Mac OS X;
** allow safepoint build on Mac OS X, though it probably doesn't
work very well (reported by Chris Wagner, lp#1382811)
** removed stub support for HPUX.
* optimization: SB-THREAD:MAKE-THREAD is faster on most platforms.
* optimization: faster RATIONAL when the result is a RATIO.
* optimization: improved cross-type comparisons (float/ratio/bignum).
* bug fix: EQUALP on pathnames was wrong
* bug fixes: fix compiler issues in:
** COUNT (lp#1889391)
** VECTOR-LENGTH (lp#1888919)
** constant-folding (lp#1888384)
** FIND and POSITION (lp#1887316)
changes in sbcl-2.0.7 relative to sbcl-2.0.6:
* minor incompatible change: SB-THREAD:THREAD-OS-TID returns NIL for
a thread which has exited.
* minor incompatible change: OPEN no longer calls TRUENAME implicitly
on a string filespec prior to issuing an open() system call.
* minor incompatible change: PATHNAME is no longer a STRUCTURE-OBJECT.
* documentation: HASH-FUNCTION is a function designator. (lp#1888028,
reported by Jacek Zlydach)
* bug fix: eliminated a potential garbage-collector deadlock
when linking with TCMalloc.
* bug fix: foreign threads (those not made by SB-THREAD:MAKE-THREAD)
can not crash with a "GC_PENDING, but why?" error when returning
back from Lisp into the foreign caller.
* bug fix: sb-fasteval crashed trying to install a JIT-compiled
DEFSTRUCT accessor in a locked package.
* bug fix: removed misuse of putwc() which caused stdio streams
to drop characters.
* bug fix: the "maximum interrupt nesting depth exceeded" error
generated in the C runtime is significantly less likely to occur.
* bug fix: sb-sprof should no longer segfault from calling pthread_kill()
on a nonexistent thread.
* bug fix: a portability issue arising from various build hosts
(lp#1886255, reported by Pierre Neidhart)
* bug fix: spurious compiler warnings from REDUCE with :INITIAL-VALUE.
(lp#1885515, reported by Michael South)
* bug fix: an inconsistency between class hierarchies and the type system
under some circumstances involving redefinition. (lp#1886397, reported by
Atilla Lendvai)
* bug fix: the USE-VALUE restart for OPEN on non-existent files is more
likely to function as expected. (lp#1886587)
* bug fix: various invalid inputs to ROTATE-BYTE no longer cause compiler
errors. (lp#1887164, lp#1888152)
* optimization: PPC64 on linux uses the __thread annotation on C variables
in preference to pthread_setspecific() and pthread_getspecific().
changes in sbcl-2.0.6 relative to sbcl-2.0.5:
* planned incompatible change: the defined symbols in the Metaobject
Protocol, currently accessible from both SB-MOP and SB-PCL packages, will
in a later release be no longer exported from SB-PCL.
* platform support:
** better support for dynamic-extent on the SPARC architecture.
** bug fix for loading very large core files.
** bug fix for logior and logxor on PPC64.
* enhancement: EQUALP on structure instances uses code specialized
to each structure type, inlining comparison of non-pointer slots.
* enhancement: some standard operators, such as WITH-OUTPUT-TO-STRING and
CHANGE-CLASS, have been adapted to use dynamic-extent temporary objects,
and so cons less garbage on the heap.
* enhancement: read tables are more space- and speed efficient
* bug fix: stream conditions with dynamic-extent streams have the stream
replaced by a stub. (reported by Matt Kaufmann)
* bug fix: garbage collections triggered from foreign callbacks crashed.
(lp#1884403, reported by Andrew Kent)
* bug fix: compiler failure in compiling MAKE-LIST. (lp#1881349)
* bug fix: using the debugger from frames with calls to functions with
unsupplied optional arguments is less likely to cause heap corruption.
(lp#1883745)
changes in sbcl-2.0.5 relative to sbcl-2.0.4:
* platform support:
** experimental support for ARM32 and ARM64 on OpenBSD
** better musl libc support. (lp#1768368, thanks to Eric Timmons)
** more correct use of futexes on 64-bit Linux. (lp#1876825, reported by
Ilya Perminov)
** restore building on current Solaris. (lp#1881393, thanks to Shawn
Ellis)
* enhancement: CMUCL-style START-BLOCK and END-BLOCK declarations are now
supported for block compiling forms at a sub-file granularity.
* enhancement: IPv6 support in sb-bsd-sockets is enabled on Windows.
* minor change: *compile-print* now makes it more clear what block
compilation is actually doing. The default output is now slightly more
verbose as a result.
* bug fix: number keys in EQUALP hash tables are correctly hashed.
(lp#1878653, reported by Syll)
* bug fix: EQness is better preserved given partial sharing of list contents
in the file compiler. (lp#1583753, reported by Denis Budyak)
* bug fix: the peephole pass neglected to preserve jump table labels.
(lp#1876485)
* bug fix: fix compiler crash in block compilation merging of toplevel
lambdas. (lp#1865336, reported by il71)
* bug fix: sb-introspect's function-lambda-arglist is better at extracting
default values of nested macro arguments. (lp#1876194)
* bug fix: RESTART-BIND's body is an implicit progn, and so does not accept
declarations. (lp#1876303, reported by Michal Herda)
* optimization: EQUAL hash tables with keys involving structure-objects will
have fewer systematic collisions.
changes in sbcl-2.0.4 relative to sbcl-2.0.3:
* platform support:
** 32-bit RISC-V is now fully supported. Unlike other ports, its backend
is entirely shared with 64-bit RISC-V.
** native threads are now supported on RISC-V.
** fix and add some x86-64 vector instructions. (reported by Shubhamkar
Ayare)
** improve pointer representation on ppc64 for low-level performance
improvement.
** threads are more stable on big-endian ppc64
* enhancement: forward-referenced type tests can now be open-coded by using
block compilation. The result is that mutually referential defstructs are
now efficiently compiled in block compilation mode, superseding a lighter
mechanism that worked in fewer contexts. However, that lighter mechanism
has been removed, so for now, users who want to efficiently compile
mutually referential defstructs must explicitly opt-in using block
compilation.
* bug fix: defstructs with empty initforms in the sbcl source are now
explicitly intiialized with NIL, as that is undefined behavior under
ANSI. This helps cross compilation hosts which do not implicitly
initialize empty initform slots to NIL. (Thanks to Karsten Poeck)
* bug fix: backtracing through assembly routines now works properly on
RISC-V.
* bug fix: ASH no longer gets miscompiled in certain edge cases on RISC-V.
* bug fix: &MORE args have been slightly optimized and are more correct on
RISC-V.
* bug fix: unused local functions with &REST/&KEY/&OPTIONAL now also issue a
deletion note.
* bug fix: APPLY on a large list ("large" being in excess of 2k to 16k items
depending on the platform) can no longer crash the gencgc collector.
* bug fix: sb-concurrency FRLOCK algorithm has been corrected. (lp#1087955)
* bug fix: block compilation now respects inlining declarations better (like
CMUCL).
* optimization: hashing of structures with raw slots for EQUALP hash tables
has been improved.
PreviousNext