-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNEWS
9641 lines (9370 loc) · 534 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
;;;; -*- coding: utf-8; fill-column: 78 -*-
changes relative to sbcl-2.3.8:
* enhancement: stack allocation via DYNAMIC-EXTENT now applies to all values
that a variable can take on (for example via SETQ), not just the initial
binding. This permits for example building complex or recursive structures
on the stack more easily via iteration. See the updated manual entry for
more details.
* minor incompatible change: some SB-POSIX interfaces adhere to the spec
that a NULL result from the C library is an error if and only if errno
was altered by the call. SYSCALL-ERROR will be signaled if so.
changes in sbcl-2.3.8 relative to sbcl-2.3.7:
* enhancement: a mark-region parallel garbage collector is available as a
build-time option; it can be enabled by adding
`--without-gencgc --with-mark-region-gc`
to the build command line. (Thanks to Hayley Patton)
* enhancement: Stack allocation via DYNAMIC-EXTENT is now possible for
conditionals even when not all branches are stack-allocatable. Previously
all branches needed to be stack-allocatable for the otherwise-inaccessible
subparts to get stack allocated.
* platform support:
** on Mac OS X Sonoma, loading the memory image no longer fails.
(lp#2029430, reported by cladur)
** on Darwin, we no longer reimplement nanosleep().
** on PPC64, undefined function errors now work.
** on ARM64/OpenBSD, enable the GCC TLS feature. (thanks to Sébastien
Marie)
** when building the system, only display a reasonable amount of timing
precision. (thanks to Philipp Marek)
* bug fix: handling of inlining functions compiled to return unboxed values
no longer crashes the compiler. (lp#2029020, reported by Pascal
J. Bourguignon)
* bug fix: the source location for code executed within a top-level
(EVAL-WHEN (:COMPILE-TOPLEVEL) ...) form is now more useful.
* bug fix: address a race between user threads cancelling finalizers and the
finalizer thread executing them. (lp#2029306)
* bug fix: complex division returns the same value when evaluated inline and
out-of-line. (lp#2030097)
* bug fix: the pretty-printer no longer deletes syntactically-significant
whitespace immediately preceding a newline. (lp#1985814, reported by Mark
David)
* optimization: the compiler is more aware of the result type of the
NUMERATOR function.
* optimization: EQUAL and EQUALP compile to more efficient code when the two
arguments are known to be of the same nullable type.
* optimization: converting bignums to floats uses no intermediate memory.
changes in sbcl-2.3.7 relative to sbcl-2.3.6:
* minor incompatible change: MACROLET macro functions are now compiled with
(SPEED 1), leading to fewer efficiency notes being emitted when compiled
in otherwise high-SPEED environments.
* minor incompatible change: when coalescing list data, the file compiler
respects substructure equality more accurately, with the side-effect of
coalescing along CDR chains as well as CARs. (lp#2025086)
* minor incompatible change: FUNCTION type declarations for local variables
generate assertions around their use when called.
* platform support
** on OpenBSD, the regression test suite expectations have been updated.
(lp#2026809, thanks to Sebastien Marie)
** on OpenBSD, the data limit is now 1GB. (lp#2027536, thanks to
Sebastien Marie)
** on Darwin with the SB-FUTEX feature, do not use unpaired
mach_thread_self() syscalls, avoiding resource leaks when creating
threads.
** on 64-bit RISCV, add support for some REM-by-multiplication
optimizations.
** on Windows, work around a C compiler bug relating to SYSV_ABI.
* bug fix: FILE-POSITION on string output streams no longer crashes or
causes arbitrary memory overwrites. (lp#1839040)
* bug fix: the compiler no longer constant-folds POSITION to NIL if the
START or END arguments are not valid.
* optimization: the compiler derives types of &KEY arguments in local calls.
(lp#655562)
* optimization: type tests of values of known union type can be faster if
the type being tested for has a non-trivial intersection with the known
type.
* optimization: the low-level implementation of NUMBERP, REALP and RATIONALP
has been improved on x86-64 and arm64.
* optimization: the compiler removes known-NIL arguments from calls to
APPEND and NCONC, and empty sequences from calls to CONCATENATE.
* optimization: checks for symbols being bindable are now memoized, speeding
up compiled uses of PROGV.
* optimization: SLOT-VALUE on STRUCTURE-OBJECTs with non-constant slot-name
argument is faster.
changes in sbcl-2.3.6 relative to sbcl-2.3.5:
* platform support:
** restore building contribs on riscv; (lp#2002930)
** shorter constant-loading sequences on riscv;
** on OpenBSD, map the stack without executable permission (thanks to
Sébastien Marie)
** Restore OpenBSD/arm64 for OpenBSD 7.3 (lp#2024003, reported by Robert
Palm)
* bug fix: AREF on multidimensional arrays with the wrong number of indices
now signals an error. (lp#2022327, reported by EU)
* bug fix: the nature of NIL as both STRING and SEQUENCE is correctly handled
in the compiler's handling of string functions. (lp#2023118, reported by
Patrick Poitras)
* bug fix: the sb-bsd-sockets tests no longer fail on systems configured
without IPv6. (reported by Will Senn)
* bug fix: the compiler no longer transforms into incompletely-known functions
(lp#1824351)
* optimization: better (the word-sized-type (ASH word-sized word-sized))
when the result can overflow. For arm64 and x86-64.
* optimization: better unoptimized calls to CEILING, FLOOR.
* optimization: functions that involve coercing floats now cons less.
For arm64 and x86-64.
* optimization: array displacement to simple arrays is slightly faster.
(reported by Shubhamkar Ayare)
changes in sbcl-2.3.5 relative to sbcl-2.3.4:
* enhancement: Unicode support has been updated to support version 15.0.0 of
the Unicode standard, including addition of characters and their collation
keys, and refinements to grapheme-, word- and line-breaking algorithms.
* new contrib module: an interface to perf, a performance-analysing tool for
Linux. (thanks to Luke Gorrie and Philipp Marek)
* platform support:
** on x86-64, prefer using the LEAVE instruction rather than MOV/POP at
function epilogue to restore RSP/RBP.
** support SB-FUTEX on OpenBSD. (thanks to Elijah Stone)
** support SB-FUTEX on Darwin/arm64. (thanks to Elijah Stone)
** fix compilation with clang on Windows. (lp#2018601, thanks to Andrew)
* bug fix: inspecting objects with unbound slots produces output that is less
confusable with the string "unbound". (thanks to Nicolas Martyanoff)
* optimization: make TN-REFs doubly-linked, allowing faster deletion.
(lp#2018124, reported by Matt Kaufmann)
* optimization: MAPCAN/MAPCON are less accidentally quadratic. (thanks to
Gleefre)
* optimization: improved arithmetic operations in the form of
(the word-sized-type (-+* word-sized word-sized)) when the result can
overflow. For arm64 and x86-64.
changes in sbcl-2.3.4 relative to sbcl-2.3.3:
* enhancement: attempts to call non-callable objects can now provide
USE-VALUE restarts on x86-64 and arm64.
* bug fix: ioctl() (both in SBCL's internals and through SB-POSIX) was
broken on ARM64/Darwin. (reported by fiddlerwoaroof)
* platform support:
** support for cross-compiling the system to Android has been added;
(thanks to Gleefre)
** include likely absolute paths for gmp and mpfr on ARM64/Darwin; (thanks
to Elias Lawson-Fox)
** include another absolute path for mpfr on Windows; (thanks to Ari
Projansky)
** the PROMISE-COMPILE feature from the SB-CONCURRENCY contrib is now
available on all threaded platforms;
* optimization: VALUES-LIST performs less redundant work on x86-64 and
ARM64.
changes in sbcl-2.3.3 relative to sbcl-2.3.2:
* enhancement: LET-bound anonymous closures declared dynamic extent can now
be stack allocated, just like closures bound with FLET or
LABELS. Otherwise-inaccessible closure subparts of objects declared
dynamic extent can now also be stack allocated
* optimization: many standard CL functions which take functional arguments
will automatically stack allocate any downward funarg closures.
* optimization: better arithmetic between signed and unsigned words on arm64.
* optimization: reduce consing when doing arithmetic resulting in small (3
words or fewer) bignums.
* bug fix: miscompilation of some additions of signed and unsigned words on
x86-64. (lp#2008673)
* bug fix: loading the SB-SIMPLE-STREAMS contrib no longer incompatibly
overwrites CL:OPEN's function type. (lp#2008811)
* bug fix: implement the special-case automatic function definition for
PCL's slot accessor functions in the SB-EVAL interpreter. (lp#2008922,
reported by Jonathan Braud)
* bug fix: allow the build to succeed under SBCLs older than 2.0.0 in the
event that the host emits STYLE-WARNINGs while compiling the
cross-compiler. (lp#2009493, reported by Kirill)
* bug fix: restore compilation on ARM64 with OpenBSD. (lp#2009585, reported
by okflo)
* bug fix: compiling a HANDLER-BIND with a function undefined at
compile-time produces a compile-time STYLE-WARNING. (lp#2010176)
* bug fix: support files bigger than 4GB on ARM64/Linux, *BSD. (lp#2011453,
reported by Yan)
* bug fix: it is now possible to run sb-simd tests on systems without AVX2.
(lp#2011923, thanks to Sergio Durigan Junior)
* bug fix: miscompilation of some conditional moves. (lp#2012312, reported
by Patrick Poitras)
* bug fix: SB-GMP no longer signals a TYPE-ERROR when raising a ratio base
to a negative integer exponent. (lp#2012577, thanks to Ari Projansky)
* bug fix: warn the user when they have declared a structure or
standard-object slot of :TYPE NIL.
changes in sbcl-2.3.2 relative to sbcl-2.3.1:
* incompatible change: the :ORDER long-form-option in
DEFINE-METHOD-COMBINATION accepts NIL as well as :MOST-SPECIFIC-FIRST and
:MOST-SPECIFIC-LAST. A value of NIL implies no particular ordering of the
methods, and so disables checks of multiple methods with the same
specializers in that group.
* bug fix: evaluate the :ORDER long-form-option in DEFINE-METHOD-COMBINATION
properly, avoiding an infinite loop in DEFINE-METHOD-COMBINATION if the
:ORDER argument leads to a cycle of compile-time constants.
* bug fix: better compile time on chains of conditionals which have gaps in
integer ranges. (lp#1992349, reported by Mykola Matvyeyev)
* bug fix: type derivation of VECTOR-LENGTH leading to wrong type handling
for MEMBER types involving vectors. (lp#2004094)
* bug fix: equality constraint propagation in the presence of constants
could cause code to be not deleted when it should have been. (lp#2006487)
* bug fix: better compile time when the compiler needs to perform checks to
see if fixnum or word computations result in overflow. (lp#2007741)
* bug fix: miscompilation on ARM64. (lp#2007758, reported by Stephen
Westfold)
* optimization: on x86-64, use SIMD instructions for UTF-8 buffer decoding;
* various type-driven optimizations:
** comparisons of rationals with constant ratios or floats;
** comparisons of unsigned-bytes with fixnums;
** comparisons of fixnums with constant powers of two;
** equality of numbers with integers too large to be exactly represented
as floats;
** arithmetic operations on a mixture of signed and unsigned word-sized
quantities;
changes in sbcl-2.3.1 relative to sbcl-2.3.0:
* sb-graph has been removed. To visualize IR1 in sbcl, it is recommended to
use the function IR1-TO-DOT (which only survives the final tree shake if
the feature :sb-devel is enabled at build time).
* platform support:
** implement some peephole optimizations on arm64;
** support float traps on arm64;
* bug fix: package-manipulation operations within fasls work as expected in
the absence of explicit block compilation requests. (lp#2000004, reported
by Shubhamkar Ayare)
* bug fix: incorrect type simplification of certain CONS types.
(lp#1999352, reported by Paul Dietz)
* bug fix: method combination group selection interprets the symbol * as
a wildcard element within proper qualifier-pattern lists. (reported by
Maciej Katafiasz and by Daniel Kochmański)
* bug fix: &WHOLE can be used without error in define-method-combination
arguments lambda lists. (reported by Daniel Kochmański)
* bug fix: bogus debug variables generated for closure variables whose value
cell had not yet been allocated could cause segfaults and gc crashes
(reported by _death on #sbcl)
* bug fix: handling of float NaNs in two-arg numeric comparison functions is
more consistent with the required semantics in IEEE 754 when comparing
with rationals.
* bug fix: ensure that the hide-packages test passes even when the system
retains internal cross-reference metadata. (lp#2002896, reported by 3b)
* bug fix: don't trip an internal assertion in weak hash tables with
finalizers. (lp#1998064)
* optimization: load-time only code is no longer retained at runtime when
functions close over top level bindings.
* optimization: GO and RETURN-FROM now elide out-of-extent tag checks when
the compiler can prove it's safe even on high safety.
* optimization: addition of a fixnum to a bignum generates less garbage.
* optimization: in many cases, type inference and code generation is
improved for and around numerical comparison functions.
changes in sbcl-2.3.0 relative to sbcl-2.2.11:
* enhancement: support for SLOT-VALUE and friends has been extended to
structure and condition instances.
* enhancement: the error message for invalid array index conditions is clearer.
(lp#1999337, reported by Hadrien Lacour)
* minor incompatible change: COMPILED-FUNCTION-P now returns false for
generic functions.
* minor incompatible change: the compiler emit STYLE-WARNING conditions for
FIND and POSITION where the item sought can never be present in the
sequence.
* optimization: support computing the remainder of a constant division by
multiplication.
* optimization: faster out of line float truncation routines.
* optimization: faster RATIONAL on 64-bit platforms.
* optimization: more compact testing of widetags on x86-64 and arm64.
* bug fix: type intersections of RATIONAL ranges with (NOT INTEGER) are
computed more consistently. (lp#1998008)
* bug fix: fix miscompilation of integer/fixnum comparisons where both
arguments are on the stack.
changes in sbcl-2.2.11 relative to sbcl-2.2.10:
* platform support:
** arm64: allow the use of CLISP as a build host. (lp#1996942, reported
by Andrew Patterson)
* enhancement: improvements to constraint propagation around comparison
functions.
* optimization: conditional move VOPs can work on boxed values and
produce less consing.
* optimization: NUNION and UNION are generally faster.
* bug fix: slot-makunbound-using-class can be redefined without redefining
the other slot methods. (lp#1956621, reported by Michał Herda)
* bug fix: GETHASH on a table created without ":synchronized t" when run
concurrently in multiple threads could have returned incorrect results.
* bug fix: build of contributed modules assumed that 'cat' was always
in /bin/cat on POSIX systems. (lp#1995224, reported by Kasper Gałkowski)
* bug fix: INSPECT on an (ARRAY NIL) no longer hangs. (lp#1995639, reported
by Michał Herda)
* bug fix: Fix miscompilation of FILE-STRING-LENGTH when the first argument
has a known FILE-STREAM type. (lp#1995881)
changes in sbcl-2.2.10 relative to sbcl-2.2.9:
* platform support:
** win32: improved handling of stack overflow exceptions. (lp#1302866)
** Mac OS X: enforce stronger alignment when building the runtime.
(lp#1991485, reported by Yan)
** arm64: support for building the system without the sb-unicode feature
(i.e. with 8-bit characters) is restored.
* bug fix: do not elide the GC store barrier in closures. (lp#1982608,
reported by Andrew Berkley)
* bug fix: make sb-introspect tests pass when the system is built without
support for source locations. (lp#1635349, reported by Tomas Hlavaty)
* bug fix: erroneous assumption that the format-control of a simple condition
was a string. (lp#1803727)
* bug fix: compiler consistency failure in modular arithmetic widening.
(lp#1990715)
* bug fix: provide a stub for a helper function (lp#1992316)
changes in sbcl-2.2.9 relative to sbcl-2.2.8:
* platform support:
** fix build on Darwin platforms with -fno-common. (lp#1980570, thanks to
Sergei Trofimovich)
** include /usr/local paths when building on FreeBSD. (lp#1981112,
reported by William G Lederer)
** several micro-optimizations on x86-64, including: better use of
INC/SUB, better SAP+, shorter KEYWORDP, better argument count
verification
** arm64: better KEYWORDP, better argument count verification
** fix build on 32-bit Windows. (lp#1988534, thanks to Alexis Rivera)
** x86-64: WITH-PINNED-OBJECTS can pin constants. (lp#1989037)
* bug fix: make sb-simd build in compiler-only SBCL. (thanks to Tonas
Hlavaty)
* bug fix: SB-SPROF:WITH-PROFILING now returns the value of its body (as was
advertised in its documentation).
* bug fix: catch malformed LET* forms in DEFMETHOD bodies. (lp#1988880,
reported by Patrick Poitras)
* enhancement: better source form tracking for atoms in LET bindings.
* optimization: reader character macro lookup is simpler and faster.
* optimization: FILL-POINTER (and its setter) are more compact.
changes in sbcl-2.2.8 relative to sbcl-2.2.7:
* minor incompatible change: support for 32-bit x86/Darwin has been removed.
* bug fix: fix miscompilation related to empty infinite loops preceded by
conditional expressions. (lp#1986810, reported by Artyom Bologov)
* bug fix: fix gc invariant violations. (lp#1983218, reported by Marius
Gerbershagen; lp#1983248, reported by Vasily Postnicov)
* bug fix: use CC to compile SBCL as a shared library. (lp#1976148,
reported by Pierre Neidhardt)
* bug fix: don't crash the system completely if RUN-PROGRAM fails to create
a pipe. (lp#1979841, reported by Thor Kristofferson)
* bug fix: be more disciplined about use of C system includes. (lp#1981799,
reported by Mark Evenson)
* bug fix: STRING/= returning wrong results for some cases when :END1/:END2
were not compile-time constants. (lp#1983284)
* bug fix: compile-time checking of :START and :END keyword arguments to
FILL is more complete.
* optimization: adjacent type tests on the same value are more compact
(arm64, x86-64).
* optimization: the compiler can inline COPY-STRUCTURE in more cases.
* optimization: type checks for non-simple arrays are shorter.
* optimization: printing strings (as Lisp data) is faster.
changes in sbcl-2.2.7 relative to sbcl-2.2.6:
* minor incompatible change: the compiler emits full WARNINGs for undefined
references to variables in TYPE and DYNAMIC-EXTENT declarations, and for
SETQ of an undefined variable. (This was the historic behaviour for
everything except the DYNAMIC-EXTENT case, which used to emit a
STYLE-WARNING, but these diagnostics got lost in a refactoring since
sbcl-2.2.2)
* minor incompatible change: literal objects (strings, in particular)
in compiled code may at the discretion of the runtime be placed in
read-only memory. Violations of CLHS 3.7.1 could produce memory faults.
If ":PURIFY NIL" is given to SAVE-LISP-AND-DIE then no read-only memory
will be used.
* enhancement: Unicode support has been updated to support version 10.0.0 of
the Unicode standard, including addition of characters and refinements to
breaking and collation algorithms.
* bug fix: AVX is no longer used for loading simd-pack-256 constants.
(lp#1928097)
* bug fix: fix building the manual when some contribs are blocked or
otherwise disabled. (lp#1979821, thanks to Robert Schiele)
* bug fix: fix type derivation of sequence functions with highly-specific
declared argument types. (lp#1980292, reported by James Kalenius)
* bug fix: internal error when optimizing chains of conditionals in local
functions. (lp#1981607, reported by Pasha K)
* bug fix: fix comparison of negative floats with bignums.
* optimization: faster TRUNCATE with float arguments.
* optimization: EQUALP hashing of large floating point values should
generate less garbage.
changes in sbcl-2.2.6 relative to sbcl-2.2.5:
* minor incompatible change: support for 32-bit x86 on macOS has been
removed.
* new contrib: sb-simd, to provide a convenient interface for SIMD
programming on x86-64. (Thanks to Marco Heisig and other sb-simd
contributors)
* enhancement: core compression now uses zstd instead of zlib. (lp#1881089)
* enhancement: provide compiler warnings for specialized array type
mismatches in CONCATENATE.
* enhancement: provide compiler warnings for bad sequence bounding index
designator arguments to sequence functions.
* enhancement: The sb-mpfr contrib now allows coercion from MPFR-FLOATs
to CL:RATIONAL. (Thanks to Robert Smith)
* bug fix: fix compilation failure related to declaiming types of constants.
(lp#1977726, reported by Pierre Neidhardt)
* bug fix: fix race condition in CLOS optimized constructors. (lp#1951341)
* bug fix: fix too-eager elision of allocation barriers when initializing
closure and structure objects.
* optimization: fasl files are now usually smaller (up to 10% on default
policy) and may load faster, especially on high debug.
* optimization: faster string comparisons on arm64, x86-64.
* optimization: faster [n]string-down/upcase on arm64, x86-64.
* optimization: faster [n]reverse for 8- and 32-bit element vectors on
arm64, x86-64.
* optimization: faster type tests for (CONS (EQL symbol)) on x86-64.
changes in sbcl-2.2.5 relative to sbcl-2.2.4:
* minor incompatible change: SB-EXT:*DERIVE-FUNCTION-TYPES* being NIL now
means that function calls will strictly only use type information from
proclaimed ftypes. The previous behavior (still the default) of using
derived type information from the same file is specified with :SAME-FILE.
(lp#1393302)
* minor incompatible change: RENAME-FILE now overwrites the target file on
Windows too, making its behaviour consistent with other platforms.
* minor incompatible change: inlining of local function is inhibited if
policy DEBUG = 3.
* platform support:
** single-stepping is now supported on 64-bit PowerPC platforms. (thanks
to Thomas Fitzsimmons)
** the :SB-LINKABLE-RUNTIME feature is now supported on 32-bit and 64-bit
PowerPC platforms. (thanks to Thomas Fitzsimmons)
* optimization: improved type derivation of REDUCE with some known reducing
functions.
* enhancement: debug source locations now work correctly for top level forms
with policy DEBUG = 1, as well as for block compiled files.
* enhancement: TRACE now supports tracing macro functions, compiler-macro
functions, individual methods and local functions. See the user manual for
more details. (lp#375314)
* bug fix: fix integer comparisons on x86-64 and arm64 (lp#1971088, reported
by Guillaume LE VAILLANT)
* bug fix: coverage instrumentation behaves correctly with respect to
non-local exits.
* bug fix: ftype proclamations now take effect immediately during block
compilation.
* bug fix: block compilation of top-level closures now work. (lp#1931730,
reported by Sean Maher)
* bug fix: streams opened from RUN-PROGRAM but left unclosed because of a
non-local exit no longer cause unrelated streams to be closed later.
changes in sbcl-2.2.4 relative to sbcl-2.2.3:
* enhancement: better constraint propagation in the compiler. Specifically,
the compiler can now derive the type of X in control flow join situations
such as
(LAMBDA (X) (ECASE (1 ...) (2 ...)) X)
or
(LAMBDA (X) (ETYPECASE (INTEGER ...) (SYMBOL ...)) X)
instead of forgetting all information about X after the E(TYPE)CASE.
* optimization: inlined functions enclosed in local macro definitions no
longer save their entire lexical environment, reducing unnecessary
memory retention.
* optimization: faster (< integer fixnum) comparisons (ARM64 and x86-64).
* platform support:
** RUN-PROGRAM is faster on Linux and FreeBSD if close_range(2) is
available.
* bug fix: block compilation now interacts more correctly with the creation
of new packages.
* bug fix: internal compiler error in array reference
optimizer. (lp#1966624)
changes in sbcl-2.2.3 relative to sbcl-2.2.2:
* minor incompatible change: SB-THREAD:MUTEX-OWNER may return :THREAD-DEAD
if the apparent owner either exited nearly instantly after releasing the
mutex (and is not now the owner), or died and never released it.
* minor incompatible change: building the system with the simple semi-space
copying collector is no longer supported.
* minor incompatible change: support for PPC/Darwin has been removed.
* platform support:
** fix regressions in threads on RISC-V. (lp#1962598)
** threads are now enabled by default on RISC-V.
** The generational garbage collector is now supported on MIPS.
* optimization: fasls containing standard object literals are now smaller
and load more efficiently.
* optimization: faster arithmetic (*-+) on word-sized integers when the
result is not known to fit into a word (ARM64 and x86-64).
* bug fix: EQness of constants is now always preserved when block compiling.
changes in sbcl-2.2.2 relative to sbcl-2.2.1:
* platform support:
** all architectures now share the coverage mark instrumentation
implementation, meaning that performance now equals what had been
implemented only on x86 architectures.
** fixed a performance regression on x86-64 from changes in AVX2 register
handling. (lp#1960081, reported by Michael Kappert)
** fixed a garbage collection bug on ppc64 manifesting in occasional
corruption on threaded programs. (lp#1959338, lp#1952973)
** micro-optimizations in type tests for (SIGNED-BYTE 64).
* enhancement: improved handling of source locations for some classes
of compile time and runtime errors.
* enhancement: better source locations for structure accessors.
* bug fix: SB-COVER now always instruments top level forms correctly.
* bug fix: muffling conditions now works correctly on higher debug settings.
* bug fix: local muffling declarations now scope correctly with respect to
undefined variable warnings.
* optimization: calls to STRING= can now return NIL more quickly on strings
of unequal length.
changes in sbcl-2.2.1 relative to sbcl-2.2.0:
* incompatible change: DEFINE-ALIEN-CALLBACK, which has never been exported
from a public package, has been deleted. It is superseded by
SB-ALIEN:DEFINE-ALIEN-CALLABLE.
* minor incompatible change: compiler warnings are emitted on more
provably-erroneous code involving sequence functions on specialized
arrays.
* platform support:
** support getting thread IDs on FreeBSD. (thanks to Felix Lange)
** faster function call sequence on arm64.
** the built-in buffer size for file streams is increased to 8KB.
* enhancement: provide a restart for method lambda list mismatches that
fmakunbounds the generic function.
* enhancement: provide a USE-VALUE restart around type errors signalled from
(SETF SLOT-VALUE).
* enhancement: when UPDATE-INSTANCE-FOR-DIFFERENT-CLASS (or -REDEFINED-)
undergoes a non-local exit, restore the instance to its original state.
(thanks to Michał phoe Herda)
* enhancement: the :SYNCHRONIZED keyword argument to MAKE-HASH-TABLE is no
longer experimental.
* bug fix: fix an erroneous compiler tranform for (EXPT SINGLE-FLOAT
INTEGER). (lp#1958061, thanks to Vasily Postnicov)
* bug fix: disassembly of closures is more likely to show the relevant code
if more than one closure closes over the same environment. (lp#1956870,
reported by Michał phoe Herda)
* bug fix: RUN-PROGRAM with :IF-EXISTS :APPEND no longer signals an error if
the output does not exist. (lp#1958569, thanks to Ingo Krabbe)
* optimization: reorder basic blocks to have loop code fall through more
often. (thanks to Hayley Patton)
* optimization: sequences larger than the buffer size are written to streams
without going through a buffering stage. (reported by Philipp Marek)
changes in sbcl-2.2.0 relative to sbcl-2.1.11:
* platform support:
** support for FreeBSD on 64-bit arm platforms has been added.
** the :SB-LINKABLE-RUNTIME build-time feature is now supported on 32-bit
and 64-bit arm platforms, and on the FreeBSD operating system.
** bug fix: correct encoding for vmovsd. (lp#1953483, reported by Marco
Heisig)
** bug fix: support ABIv1 callbacks on big-endian ppc64. (lp#1900343,
thanks to Thomas Fitzsimmons)
** bug fix: don't misuse mprotect() in dynamic space on Windows.
(lp#1955723, reported by 3b)
* enhancement: catch type mismatches for REPLACE, SUBSTITUTE, MAKE-ARRAY
with :INITIAL-CONTENTS.
* optimization: printing symbols is around 10% faster than previously.
* bug fix: don't use the current type of non-returning functions when
redefining them in another file. (lp#1953214, reported by Nicolas Hafner)
* bug fix: eliminate stack cleanups more conservatively. (lp#1954330,
reported by Daniel Kochmański)
* bug fix: check consistently in tests for the existence of VOPs.
(lp#1952896, reported by Sébastien Villemot)
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)
changes in sbcl-2.1.10 relative to sbcl-2.1.9:
* incompatible change: simd-pack without a specific element-type is no
longer treated as containing integers. A type must be supplied for VOPs to
work on such values.
* minor incompatible change: the list form of the FUNCTION type specifier
does not allow * as any argument type, but does allow * as a placeholder
for wholly unspecified arguments when specifying the value(s) type.
* minor incompatible change: the default (Lisp) toplevel option parser
throws an error if it encounters an option which was intended to be used
and removed by the C runtime. (lp#1945081, reported by Luke Gorrie)
* new feature: there is now a defined interface for defining foreign
callable functions, which can be used for passing callbacks to foreign
functions or for calling Lisp code from the foreign world as a shared
library (preliminary support). See the revised manual section "Calling
into Lisp From C" for more details.
* enhancement: arg-count mismatches in self-calls in defmethod are reported.
(lp#1912436, reported by 3b)
* enhancement: the SB-CLTL2 contrib now returns type information for
generated structure accessors. (lp#1934859, reported by SATO shinichi)
* optimization: code generation is improved for modular arithmetic involving
signed operations.
* platform support:
** x86-64 machine code emitter crash when attempting to assemble some
vector instructions. (lp#1945975, thanks to Marco Heisig)
** conditional move instructions are now supported on arm64.
** a number of new peephole optimizations have been implemented on arm64.
** arm64 on Darwin now uses gcc-compatible thread-local storage.
* bug fix: compiler notes are no longer emitted when compiling FORMATTER
forms, including when implicitly triggered on a constant string argument
to FORMAT. (lp#1946246, reported by SATO shinichi)
* bug fix: a compiler error when attempting to compile a call to AREF with
too many dimensions. (lp#1902985)
* bug fix: harmonize the behaviour of SLOT-BOUNDP on non-standard-objects
between the various ways in which it can be called. (lp#732229, reported
by Zach Beane)
* bug fix: FTRUNCATE and similar functions are now more careful about
deriving facts about the sign of zero they might return. (lp#1732009,
reported by Paul Dietz)
changes in sbcl-2.1.9 relative to sbcl-2.1.8:
* minor incompatible change: the experimental DEFCAS macro has been removed.
* minor incompatible change: finalizing classes with slots with duplicate
symbol-names will only emit a warning if either slot name is an exported
symbol. (lp#1943559)
* platform support:
** the debugger is better able to display SIMD packs. (thanks to Marco
Heisig)
** fix a bug in zeroing YMM registers. (thanks to Marco Heisig)
** fix instruction definitions for SSE blend and shuffle vector
instructions. (thanks to Marco Heisig)
** handle heap corruption exceptions in our exception handler on win64.
** improve WAIT-UNTIL-FD-USABLE on Windows, reducing busy-looping.
(thanks to Fabio Almeida)
* bug fix: EQUALP hash tables whose keys contain arrays containing floats should
behave correctly. (lp#1942424, reported by Nicolas Neuss)
changes in sbcl-2.1.8 relative to sbcl-2.1.7:
* minor incompatible change: the experimental DEFINE-CAS-EXPANDER macro has
been removed.
* minor incompatible change: the hooks in *INIT-HOOKS* are called before
starting the finalizer or other non-user threads. (thanks to Sean Whitton)
* platform support:
** many improvements to code generation on arm64.
** avoid slow forms of the bit test instructions BT, BTS, BTR on x86-64.
** fix a bug in loading large core files on the Apple M1/arm64. (thanks
to Mayank Manjrekar)
** fix a bug in loading core loading on the Apple M1/arm64. (reported by
Eric Timmons)
* enhancement: the block-compiler is more robust to files with intermingled
compile-time and load-time effects. The semantics of the block-compiler
remain not-entirely ANSI compatible. (thanks to Sean Maher)
* enhancement: (CAS SAP-REF-<x>) and CAS on alien integers is implemented on
ppc64 and x86-64, working towards fixing lp#1894057
* bug fix: fix OPEN-STREAM-P on streams closed by saving a core.
(lp#1938433, reported by Guillaume LE VAILLANT)
* bug fix: remove a spurious warning from COERCE. (lp#1920931, reported by
Andrew Berkley)
* bug fix: remove a warning from inlining SET-EXCLUSIVE-OR. (lp#1936470,
reported by Jerome Abela)
changes in sbcl-2.1.7 relative to sbcl-2.1.6:
* incompatible change: on certain platforms (currently just x86-64),
dynamic-extent arrays specialized on character and numeric types and
created without either :INITIAL-ELEMENT or :INITIAL-CONTENTS will reflect
previous contents of the stack instead of #\null (or 0) in all elements.
* minor incompatible change: SB-SPROF:START-PROFILING no longer silently
does nothing if the clock is already running. It instead stop and restarts
with the newly provided options, and warns.
* minor incompatible change: the system attempts to refer to the supplied
pathname in compiler diagnostics, if relevant, rather than the truename.
* enhancement: new contrib module sb-graph producing graphical
visualizations of Intermediate Representations of SBCL compilation data
structures.
* platform support:
** improved code generation for unary minus in modular contexts on arm64.
** make the disassembler annotations slightly more robust on arm64.
** release space back to the Operating System on Windows.
** improve the test for whether pages need to be committed on Windows.
* optimization: the type of (LOOP ... COLLECT ...), and the type of COLLECT
INTO variables, is derived as LIST. (lp#1934577, reported by SATO
shinichi)
changes in sbcl-2.1.6 relative to sbcl-2.1.5:
* minor incompatible change: COMPILE-FILE does not merge the input file's
pathname-directory into the output path if :OUTPUT-FILE was specified
and has a directory that is not :UNSPECIFIC.
* platform support:
** improvements to unwind code generation on arm64.
** on x86-64, accept three operands for vshufpd. (reported by Bela
Pecsek)
** on x86-64, improvements to use of popcount
** improve exception handling on 64-bit Windows. (thanks to Luis Borges
de Oliveira)
* bug fix: allow use of macros with improper argument list. (lp#1929623,
thanks to Sean Maher)
* bug fix: COERCE no longer attempts to guess what the user meant if they
provide a type specifier of a union of types other than STRING.
(lp#1929614)
* bug fix: print a single trailing zero after the decimal point for FORMAT
~E if there are no digits remaining to be printed and the width allows it.
(lp#883520)
changes in sbcl-2.1.5 relative to sbcl-2.1.4:
* minor incompatible change: on x86-64, the backend instruction encoders for
movzx and for string opcodes have changed their semantics.
* platform support:
** compatibility: support the latest MinGW on x86. (lp#1923325, thanks to
Alexis Rivera)
** bug fix: on x86-64, fix instruction encoding for TEST on RIP-relative
addresses. (lp#1925808, reported by Shinmera on #sbcl, thanks also to
3b)
** bug fix: on x86-64, loading all-1s into an AVX2 register no longer
causes an error. (lp#1928516, thanks to Marco Heisig)
** bug fix: on arm64, improve disassembly of ADD with constant 0 as MOV
** enhancement: on arm64, support debugger commands RETURN-FROM-FRAME and
RESTART-FRAME more efficiently.
** enhancement: on x86-64, add support for vshuf* AVX2 instructions.
(reported by Bela Pecsek)
** optimization: faster function calls on arm64.
** optimization: (SETF SBIT) is faster on x86-64.
* bug fix: INTEGER-DECODE-FLOAT was computing the wrong answer for denormal
double floats. (lp#1926383, reported by Stavros Macrakis)
* bug fix: RANDOM on a floating point argument now does not cons. (reported
by Tito Latini)
* bug fix: fix a compiler crash in type derivation of LOGTEST. (lp#1928243)
* bug fix: fix a compiler failure when a declared function type contains a
literal structure with a valid MAKE-LOAD-FORM method. (lp#1929160, thanks
to Yurii Hryhorenko)
* optimization: FBOUNDP on a constant symbol is now faster.
* optimization: file compilation now produces smaller fasls for files which
reference package literals.
* optimization: derive the type of calls to FLOAT-SIGN.
changes in sbcl-2.1.4 relative to sbcl-2.1.3:
* platform support:
** work around address-space randomization causing instability on new
versions of MinGW. (lp#1921141)
* bug fix: RANDOM on floats returns values strictly less than the float
argument.
* bug fix: compiler error on x86-64 resulting from attempting to zero a
memory location with xor. (reported by Eric Marsden)
* optimization: extended loops updating iteration variables with THEN can
perform specialized arithmetic for those updates.
* optimization: in some cases, the jump table resulting from a compilation
of TYPECASE is simpler.
* optimization: on x86-64, IF BOUNDP followed by SYMBOL-VALUE can elide some
memory loads and tests.
changes in sbcl-2.1.3 relative to sbcl-2.1.2:
* minor incompatible change: support for the :SB-SAFEPOINT-STRICTLY,
:SB-THRUPTION, and :SB-WTIMER build features has been removed
* platform support:
** support for :SB-CORE-COMPRESSION on Darwin/ARM64
** support ARM v8.1 atomic and compare-and-swap instructions
** x86, x86-64: microoptimizations in multiple type-checking routines
* bug fix: structures and conditions are now TYPEP all classes in the class
precedence list of their class. (reported by Luis Oliveira)
* bug fix: derivation of the result type from subtraction sometimes
erroneously excluded zero. (lp#1916895)
* bug fix: reduce the number of places where the system permissively accepts
the symbol * as a type specifier where it should not be accepted.
(lp#1860919)
* bug fix: the code-walker used by the system's implementation of CLOS can
handle defuns declared inline. (reported by Don Cohen)
* optimization: EQUALP on specialized vectors and arrays is faster.
* optimization: support routines for EQUALP hash tables generate less garbage.
changes in sbcl-2.1.2 relative to sbcl-2.1.1:
* platform support:
** support for ARM64 macOS;
** improvement in coverage mark implementation on non-x86oid backends,
approaching the existing x86oid support;
** more empirically-robust retrieval of the program counter from illegal
instruction traps on SPARC;
** retain fewer dead objects when saving cores with precise collectors.
* incompatible change: MAP-ALL-SAMPLES and MAP-TRACE-SAMPLES
are no longer present in the SB-SPROF contrib module.
* minor incompatible change: SB-SPROF:WITH-PROFILING defaults to all
threads. SB-SPROF:START-PROFILING no longer accepts a :SAMPLING keyword.
* enhancement: the sb-introspect contrib now supports finding the lambda
lists of method combinations. (thanks to Didier Verna)
* enhancement: short-form DEFSETF now stores a source-location.
* bug fix: canonical unions of CONS types were being incorrectly computed.
(lp#1912863, reported by James Kalenius)
* bug fix: better understanding of array simplicity (or otherwise) in the
type system. (lp#1903241)
* bug fix: unions of rational and integer types now have a single canonical
form, allowing more correct reasoning about them in the type system.
* bug fix: less likely to overclaim certainty about type equality of union
types. (lp#1916040)
* bug fix: HANDLER-BIND evaluates the forms producing handler functions only
once. (lp#1916302, reported by Christophe Junke)
* optimization: FIND on constant sequences can be compiled into a jump
table, in a similar manner to POSITION
* optimization: the compiler's awareness of numeric contagion rules for
operations on pairs of floating point numbers is improved. (lp#1914094,
thanks to Andrew Berkley)
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 reading or writing 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()