-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
10198 lines (9912 loc) · 565 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 in sbcl-2.4.11 relative to sbcl-2.4.10:
* enhancement: define SB-EXT:*DEFAULT-SOURCE-EXTERNAL-FORMAT* as the
external format for reading source files (for direct use in LOAD and
COMPILE-FILE). On Windows, this defaults to an external format with CRLF
line-endings. (lp#720517, reported by Mark David)
* minor incompatible change: the documentation of
SB-SEQUENCE:MAKE-SEQUENCE-LIKE has been altered to match its
implementation regarding the (un)initialization of the sequence if neither
:INITIAL-CONTENTS nor :INITIAL-ELEMENT is provided.
* minor incompatible change: the outputs from SB-GROVEL no longer contain
calls to SB-GROVEL::DEFINE-FOREIGN-ROUTINE, but call
SB-ALIEN:DEFINE-ALIEN-ROUTINE directly; the definitions of some other
SB-GROVEL utilities has also changed.
* platform support:
** The system is more likely to build with the musl C library. (thanks to
Masatoshi SANO)
** It is possible to build 32-bit binaries on NetBSD/x86-64 systems.
(thanks to Masatoshi SANO)
** Stale big-endian ARM code in callbacks is no longer present.
(lp#2087866, reported by Rongcui Dong)
** Correct the encoding of the VPSHUFD AVX2 instruction. (reported by
Dmitry Ignatiev)
** Implement the PINSRQ SSE instruction and provide access to it in
SB-SIMD.
** Fix some signed/unsigned and 32-bit issues in the runtime leading to
problems with large --dynamic-space-size. (lp#2087986)
* bug fix: cross-reference information about structure accessors is
preserved when compilation policy requires it.
* bug fix: changing &ALLOW-OTHER-KEYS in a generic function's lambda list
needs to invalidate the effective methods cache. (reported by Robert
Strandh)
* bug fix: calling DISASSEMBLE on a method-function provides a more useful
disassembly.
* bug fix: PROCESS-CLOSE no longer leaks a zombie process.
* bug fix: interaction between SYMBOL-MACROLET and SPECIAL declarations is
handled more correctly in the code walker. (lp#1053198)
* bug fix: better scaling when compiling large numbers of calls to local
functions. (lp#1379661, reported by 3b and Burton Samograd)
* bug fix: allow the compiler to approximate types involving large bignums
or ratios with large numerator or denominator. (lp#2085637)
* bug fix: miscompilation of type tests involving STRUCTURE-OBJECT.
(lp#2088417)
* optimization: CONCATENATE with consing arguments can elide some of the
intermediate consing.
* optimization: the implementations of various external-formats have been
sped up.
* optimization: elide %SAP-ALIEN calls if all uses dereference the resulting
ALIEN object.
* optimization: faster (expt integer integer) when computing fixnum results.
* optimization: (ash unknown-integer right) can use modular arithmetic.
* optimization: (apply x ... list) avoids consing intermediate lists in more
situations.
* optimizations for arm64, x86-64:
** AREF on non-simple arrays with known element type is faster, along with
uses such as LOOP ACROSS, VECTOR-PUSH/POP/EXTEND.
** SIMD variants for POSITION for strings, 8 and 32 bit integer arrays.
** faster overflow checking for (the fixnum (+ fixnum fixnum))
changes in sbcl-2.4.10 relative to sbcl-2.4.9:
* minor incompatible change: SB-POSIX::POSIX-FORK is no longer exported from
SB-POSIX. (The interface function, SB-POSIX:FORK, remains exported).
* platform support:
** fix bugs in instruction encoding on RISC-V; (reported by Guillaume Le
Vaillant)
** fix the location of the linkage-table comment in disassembly on 64-bit
powerpc;
** elide allocation of empty number stack frames on arm64;
** fix crash on x86 platforms in compiling array dereferencing with
computed offsets with negative intermediate results. (lp#2084943)
* enhancement: the error message from standard object slot typecheck
functions in optimized constructors is clearer about the context of the
failed type check.
* enhancement: BREAK is no longer tail-called, even when in tail position.
* enhancement: on arm64 and x86-64, specialized entry points for functions
known to take or return fixed numbers of double floats are generated and
can be automatically called without boxing intermediate floats.
* bug fix: RUN-PROGRAM no longer leaks memory by referencing otherwise
unreachable stream instances.
* bug fix: exporting or unexporting symbols during package iteration no
longer causes any symbol to be visited more times than expected.
* bug fix: DISASSEMBLE preserves the comment marker across line-breaks for
long function or segment names. (lp#1889456, thanks to Fedorov Alexander)
* bug fix: the compiler no longer loops infinitely trying to compile
NOTINLINE calls to known functions with source transform definitions.
(lp#2085451, reported by Fedorov Alexander)
changes in sbcl-2.4.9 relative to sbcl-2.4.8:
* minor incompatible change: FIND, POSITION (and variants) now check :START
and :END arguments for validity as bounding index designators for list
sequences.
* platform support:
** improve support for Solaris and variants on x86 and x86-64. (thanks to
Masatoshi SANO)
** fix a bug in handling timeouts and interrupted system calls in
SB-UNIX:UNIX-SIMPLE-POLL. (lp#2078824, thanks to Michał phoe Herda)
** fix a bug in the lisp understanding of ssize_t under Windows.
** fix large constant encoding in RISC-V. (lp#2077307, reported by
Guillaume LE VAILLANT)
** more parsimonious low-level type tests on arm64.
** building from the result of git-archive should complete without error.
* bug fix: exporting a symbol during package iteration no longer skips other
symbols. (lp#2080387, reported by kbhit)
* optimization: improvements to EQ hash tables and associated hash functions.
* optimization: type checking of string and string-designator is more efficient.
* optimization: the compiler better understands the nature of the results of
CONCATENATE.
changes in sbcl-2.4.8 relative to sbcl-2.4.7:
* bug fix: the elftool utility finds a writeable directory in more
situations. (thanks to Shinmera)
* bug fix: SLOT-MAKUNBOUND does not attempt to dereference a PROGN variable
in the interpreter.
* bug fix: READ-SEQUENCE into displaced arrays with a non-zero offset now
writes to the right memory location.
* bug fix: fix some erroneous file position calculations in the editcore
utility (exposed by a change in the libzstd compression implementation).
* bug fix: do not break the build on STYLE-WARNINGs for earlier SBCL build
hosts. (lp#2064671, reported by Patrick Poitras)
* bug fix: various bug fixes for ppc64le (lp#2074275, reported by Claude R. C.)
* bug fix: address a rounding error in the TAN type deriver which led to a
miscompile in cl-pdf. (lp#2077100, reported by Gian Pierro Carrubba)
* bug fix: overoptimization of FIND with a :TEST of CHAR-EQUAL. (lp#2077539)
* optimization: detection of duplicate names in loaded code now scales
subquadratically.
* optimization: switch from Floyd's to Brent's cycle detection for lists.
* optimization: EQUAL on lists should be faster.
* optimization: fewer filesystem operations are performed when working out
what to LOAD.
* optimization: various microoptimizations on hash tables and
associated operations.
* optimization: strings are now hashed using FNV-1A, replacing Bob Jenkins'
one-at-a-time hash.
* optimization: fewer redundant validations of the sequence bounding indices
in POSITION on strings.
* optimization: many improvements to type derivation on the arguments to and
results of standard functions
* optimization: adding many (hundreds) methods to a generic function can be
done faster.
changes in sbcl-2.4.7 relative to sbcl-2.4.6:
* minor incompatible change: the compiler will emit optimization notes
related to complex type checks only at high SPEED optimization settings.
* minor incompatible change: the GET-FOREGROUND symbol is now exported from
the SB-THREAD package. (thanks to Philipp Marek)
* minor incompatible change: code objects are now printed with their ending
address as well as their start address.
* platform support:
** fix occasional saved core corruption on Win32. (reported by Luís
Borges de Oliveira)
** address some crashing cases in arena support. (reported by Andreas
Franke)
** fix a hard-coded path to `cp`. (thanks to Hraban Luyat)
** address relocation issues on PIC-flavoured arm64. (lp#2067153, thanks
to leafze)
** fix a crash in the arm64-dissassembler if a code component is missing.
** fix a crash on 32-bit musl libc systems. (reported by Will Sinatra)
** fix building with link-time optimization. (lp#2072800, reported by Eli
Schwartz)
** fix building with newer llvm. (lp#2071545, reported by Yan)
** mitigate the lack of gc-safety in SB-VM::REMOVE-STATIC-LINKS.
(lp#2045433)
* bug fix: COMPILE installs its second argument as the value of its non-null
NAME argument, even if the second argument was already compiled.
(lp#2071324, reported by Tim Bradshaw)
* bug fix: allow the hashing routines in sb-md5 to work on arrays with more
than 2^29 elements.
* bug fix: allow READ-SEQUENCE and WRITE-SEQUENCE to read and write files
bigger than 4GB.
* bug fix: READ-SEQUENCE returns the index of the first unmodified element
of its sequence. (reported by Janis Dzerins)
* optimization: various improvements to floating point rounding routines.
* optimization: PHASE called on the result of COMPLEX now elides the
intermediate COMPLEX object.
* optimization: the compiler is more aware of the types of COMPLEX, ATAN,
APPEND and NCONC.
changes in sbcl-2.4.6 relative to sbcl-2.4.5:
* enhancement: name conflicts resulting from colliding symbols in IMPORT and
USE-PACKAGE are resolved once for each name, rather than between pairwise
colliding symbols.
* enhancement: calls to structure constructors with type mismatches in
default initforms cause compile-time warnings.
* platform support:
** fix constant-folding of %log1p and %log2 on 32-bit x86.
** fix the encoding of popcntd on ppc64
* bug fix: EXPORT could be tricked into exporting two distinct symbols of
the same name from the same package.
* bug fix: two-argument calls to LOG with arguments of different precision
do not lose accuracy through insufficiently-precise intermediate values.
* bug fix: :NEWLINE options in *DEFAULT-EXTERNAL-FORMAT* are respected when
opening files. (reported by Marco Antoniotti)
* bug fix: extend type declarations for the iteration variable of DOLIST
with NULL during the evaluation of the result clause. (lp#942237)
* bug fix: #\uE0 (LATIN CAPITAL LETTER A WITH GRAVE) was incorrectly not
downcased with STRING-DOWNCASE. (lp#2067841, reported by Matt Kaufmann)
* bug fix: backquoted lists as arguments to MAKE-ARRAY were miscompiled.
(lp#2069345, reported by Dan Bothell)
* bug fix: resolve the circularity between the type system and the CLOS
metaobject protocol more robustly. (lp#2069502, reported by Jan Moringen)
* bug fix: misplaced tilde in a logical pathname error message.
(lp#2069995, thanks to Marco Heisig)
* optimization: various speedups to UTF-8 based external format streams and
other stream routines.
changes in sbcl-2.4.5 relative to sbcl-2.4.4:
* incompatible change: attempting to pass or return alien structs by value
now signals errors. Previously, such attempts would silently tend to
corrupt registers or memory; there is work in progress to allow such calls
conforming to the platform ABI. (thanks to Rongcui Dong)
* minor incompatible change: function debug info is compressed only if the
system is compiled with libzstd, rather than falling back to a pure-lisp
compression implementation.
* minor incompatible change: the compiler will warn in more cases when it
can detect incorrectly-typed arguments to FORMAT directives ~C and ~R
* minor incompatible change: strings are converted to a more compact
representation if possible before being used as docstrings.
* platform support:
** explicitly include stdlib.h where needed on OpenBSD. (thanks to
Sebastien Marie)
** make the editcore utility work on Windows. (thanks to Luís Borges de
Oliveira)
** fix memory initialization in RUN-PROGRAM on Windows.
** resolve a deadlock in %INTERRUPT-THREAD on Darwin. (lp#2062940,
reported by Yan)
** hang on startup under some terminal emulators on OS X 14.5.
(lp#2067313, reported by Richard M Kreuter)
* enhancement: when (> debug 1), try to find source locations for code
expanded from macros that copy their input forms.
* bug fix: the method-combination generic function caches were missing some
of the generic functions constructed during the PCL build itself.
(reported by Didier Verna)
* bug fix: SXHASH on equal PATHNAME objects could return different values in
different cores. (reported by Luís Borges de Oliveira)
* bug fix: spurious compiler warnings on SORT in some circumstances.
(lp#2065609, reported by William G Lederer)
* optimization: faster bignum addition and negation on arm64, x86-64.
* optimization: faster type tests for (unsigned-byte X) for X being
multiples of the platform word size, on arm64, x86-64.
changes in sbcl-2.4.4 relative to sbcl-2.4.3:
* minor incompatible change: after-GC hooks are now called in the finalizer
thread on threaded builds.
* platform support:
** on win32 on 64-bit systems, clear x87 state as well as SSE state after
an exception. (lp#2000435, reported by David Scherfgen)
* enhancement: type assertions resulting from declarations involving variable
numbers of multiple values are now checked.
* enhancement: support for memory allocation arenas is now available on the
arm64 platform.
* enhancement: the cross-referencing facility is now able to handle
anonymous functions.
* enhacnement: the SB-INTROSPECT contrib finds callees in methods of generic
functions.
* bug fix: inconsistency in VOP definitions implementing DPB. (lp#2059842)
* bug fix: MASK-FIELD miscompilation. (lp#2059849)
* bug fix: caching a state-dependent type function leads to wrong type
inference further down the line. (lp#2059888)
* bug fix: internal consistency violation after failing to apply a
MAKE-ARRAY transform. (lp#2060083)
* bug fix: check the array index before constant-folding an array reference.
(lp#2060347)
* bug fix: don't try to apply type constraints from SATISFIES
types. (lp#2060756)
* bug fix: the JOIN-THREAD-PROBLEM function is now exported from the
SB-THREAD package. (lp#2063385, thanks to Benjamin Lee)
* bug fix: compare-and-swap works as expected on SLOT-VALUE of
FUNCALLABLE-STANDARD-OBJECT instances. (reported by qhong)
* bug fix: on arm64, and x86-64 with some non-default build options, integer
rounding functions treat minus zero more consistently.
* bug fix: disassembly of stack allocation of vectors caused a crash.
(reported by bohonghuang)
* bug fix: don't leak memory when decompressing a compressed core.
* optimization: the amount of space needed for debug-info is about 50% less,
leading to a total default image size reduction of more than 10%.
* optimization: on arm64 and x86-64, encoding constants in machine code is
sometimes smaller.
* optimization: on arm64 and x86-64, list accumulation is done with less
space overhead.
* optimization: APPLY can apply a function to the REST of a &REST list
without additional consing.
changes in sbcl-2.4.3 relative to sbcl-2.4.2:
* enhancement: when dumping debug information to fasl files, the system
respects the SOURCE_DATE_EPOCH environment variable (if set) as the latest
timestamp to be used.
* contributed module: the sb-perf contributed module, an interface
originally by Luke Gorrie to Linux's perf, is now included by default on
Linux. (Thanks to Philipp Marek)
* platform support:
** on Linux and BSD variants, timezone querying is now faster.
** Arm64/Darwin: allow configuring the system with a relocatable static
space.
** PPC64: allow configuring the system with fasteval.
* bug fix: erroneous transform of EQUALP on characters (lp#2055425)
* bug fix: float rounders (FTRUNCATE and related functions) handle minus
zero more consistently, returning minus zero as the primary value when
rounding to zero from a negative value.
* bug fix: type checks for (VECTOR T) were giving the wrong answer for
vectors displayed to simple multi-dimensional arrays. (reported by
_death)
* bug fix: do not transform away division by BIT when the BIT might still
include 0. (lp#2056184, reported by xizang)
* bug fix: various errors related to imperfections in the perfect hash
generator. (lp#2055794, lp#2056341)
* bug fix: respect declarations for symbol macros inside defmethod.
(lp#2056514, reported by Jonathan Braud)
* bug fix: failure to set structure slots to floats on Arm64. (lp#2058148,
reported by Bibek Panthi)
* optimization: improvements to the implementation of CASE.
* optimization: faster PARSE-INTEGER :radix 10/16 on word-sized integers.
* optimization: improvements to LOGBITP.
changes in sbcl-2.4.2 relative to sbcl-2.4.1:
* bug fix: restore the ability to inherit from both SEQUENCE and
SB-MOP:FUNCALLABLE-STANDARD-OBJECT. (lp#2050088, reported by Christophe
Junke)
* bug fix: COERCE will not convert lambda forms to functions if given a type
naming a (strict) subclass of FUNCTION.
* bug fix: LOG with a double-float and a ratio argument (in either order) do
not lose precision through a single-float intermediate argument.
* bug fix: LOG to the base 2 of integer powers of 2 are more likely to get
the mathematically precise answer.
* bug fix: LOG on ratios very near 1 with numerator or denominator being
near a power of 2 will use log1p and so will lose less precision.
* bug fix: the utf-8 external format with Unix line-endings updates its
character size information when taking the fast path for a buffer of ascii
characters. (lp#2054169, reported by John Carroll)
* bug fix: don't print the contents of a possibly no-longer-valid
dynamic-extent cons in PRINT-OBJECT method for THREAD objects.
(lp#2026195, reported by Jake Connor)
* bug fix: place external entry points for functions consistently before any
local functions. (lp#2051169, reported by Fedorov Alexander)
* bug fix: remove unactionable optimization notes for backquoted forms and
ordinary calls to APPEND at high speed. (lp#2051401, reported by Robert
Brown)
* bug fix: infinite loop in COPY-SEQ on zero-length arrays of element-type
NIL. (lp#2051759, reported by Devon Sean McCullough)
* bug fix: fix compilation of non-top-level struct constructors.
(lp#2052329, reported by Robert Poitras)
* bug fixes in SB-SIMD:
** improve bounds checking in SB-SIMD. (lp#2012010, reported by Patrick
Poitras)
** fix SB-SIMD AVX f64.4-reverse (lp#2012986, thanks to Ari Projansky)
** fix SB-SIMD shuffles on AVX and SSE2 (lp#2012990, reported by Ari
Projansky)
** fix lifetimes in sse+xmm0 VOPs (lp#2015329, reported by Ari Projansky)
* optimization: a number of internal tables, particularly those related to
Unicode support have been converted to use perfect hash mechanisms,
improving both speed and space.
* optimization: FIND, POSITION, ASSOC and RASSOC with constant sequence
arguments containing symbols as keys are compiled to perfect hash lookups.
* optimization: the compiler runs a jump-to-jump elimination pass on x86-64.
* system integrity: compiling the system itself on x86-64/linux now produces
bitwise-identical cross-compiled fasls whether the build host is cmucl,
ccl, clisp or sbcl itself.
changes in sbcl-2.4.1 relative to sbcl-2.4.0:
* enhancement: compact instance headers are partially supported with the
mark-region parallel garbage collector.
* enhancement: functions with declared return types have their return values
type-checked in optimization regimes with high SAFETY and (DEBUG 3).
* platform support:
** disable ASLR on FreeBSD. (lp#2047655, thanks to Konstantin Belousov)
** link to libpthread on FreeBSD. (thanks to Konstantin Belousov)
** restore build on 64-bit riscv. (lp#2034713, lp#2048869, reported by
Guillaume LE VAILLANT)
** restore build on 64-bit ppc.
** fix case in referring to a header file. (lp#2047726, thanks to Andrew Kravchuk)
** the fastrem-32 feature (for optimized computations of FLOOR) is now
available on all platforms.
* bug fix: resweep moved lines after compaction in the mark-region parallel
garbage collector.
* bug fix: infinite loops in the compiler on some constructs with SATISFIES
types. (lp#2047289, lp#2047706, lp#2049631)
* optimization: various hash tables implementing part of the system
(packages, Unicode data tables) have been converted to use perfect hash
functions.
* optimization: TYPECASE on structure class hierarchies is implemented using
a perfect hash.
* optimization: eliminate bound checks with relative offsets. (lp#1830314)
* optimization: the compiler has more knowledge of how to optimize
DIGIT-CHAR.
* optimization: the compiler can elide intermediates for some calls to
APPLY, CONCATENATE and MAKE-ARRAY with arguments that are freshly-consed
modifications of existing sequences.
* optimization: (LOOP FOR X IN (REVERSE LIST) ...) is now faster and conses
less.
* optimization: (LOOP ... APPEND ...) is more compact, and does less work if
appending NIL.
* optimization: type tests of various array types are faster and shorter.
changes in sbcl-2.4.0 relative to sbcl-2.3.11:
* minor incompatible change: *COMPILE-VERBOSE* and *LOAD-VERBOSE* are bound
to NIL when the system is started with the --script command-line argument.
(reported by Hraban Luyat, thanks to Nicolas Martyanoff)
* minor incompatible change: when looking for its core file, the system
checks the validity of whatever is pointed to by /proc/self/exe, and
assesses argv[0] if /proc/self/exe is invalid. (thanks to Philipp Marek)
* minor incompatible change: the system no longer provides type names on the
standard (CL) symbols ARRAY-RANK, ARRAY-TOTAL-SIZE, PATHNAME-HOST,
PATHNAME-TYPE, PATHNAME-DIRECTORY, FLOAT-RADIX or FLOAT-DIGITS.
(lp#2045559)
* platform support:
** the mark-region parallel garbage collector can be enabled on arm64.
(Thanks to Hayley Patton)
** fix build on modern FreeBSDs. (lp#2046966, thanks to David J. Flander)
* bug fix: restore compiler type inference correctness on calls to REDUCE
with :INITIAL-VALUE but no :FROM-END. (lp#2044856, reported by Patrick
Poitras)
* bug fix: compiler error when declaring SB-EXT:MUFFLE-CONDITIONS on an
unknown type. (lp#2045442)
* bug fix: the disassembler provided non-pretty output for registers in some
cases. (lp#2046004, reported by Fedorov Alexander)
* bug fix: the system is slightly less likely to exhaust the stack again
when reporting a control stack exhaustion error.
* optimization: GC write barriers are eliminated in more cases.
* optimization: improved type derivation of iteration variables with mixed
types.
* optimization: remove unused initial values from LET bindings, improving
register type selection.
* optimization: lower EQUALP/EQUAL/EQL to EQL/EQ in FIND/MEMBER based on the
input types.
* optimization: better type derivation for DPB, LOGIOR.
changes in sbcl-2.3.11 relative to sbcl-2.3.10:
* minor incompatible change: streams with an external-format specified with
:REPLACEMENT will use their replacement data once per stream unit that
causes a decoding error (rather than, in some cases, once for a sequence
of bytes none of which is a valid character start position for that
external-format).
* minor incompatible change: external-format designators with unsupported or
unrecognized options now signal an error when used.
* enhancement: During generic function dispatch, for a generic function
using standard- or short-method-combination, if there are no applicable
primary methods the system will call the generic function
SB-PCL:NO-PRIMARY-METHOD, whose default behaviour is to signal an error.
Users may define methods on this generic function.
* enhancement: external formats for unibyte encodings and utf-8 now support
newline variants.
* enhancement: character decoding and encoding errors signalled by stream or
octet functions now provide a USE-VALUE restart for handlers to provide
replacement input or output.
* enhancement: READ-SEQUENCE and WRITE-SEQUENCE support user-defined
sequences; the default implementation proceeds element-by-element, reading
or writing single bytes or characters to or from the stream as
appropriate.
* bug fix: OCTETS-TO-STRING using unibyte external formats with unallocated
codepoints (e.g. iso-8859-3) correctly signal or use replacements rather
than taking bits from the address of NIL and converting those bits to
a character.
* bug fix: FILE-STRING-LENGTH now returns NIL if the input datum is not
encodable in the stream's external format.
* bug fix: table-based multibyte external formats (EUC-JP, Shift-JIS, GBK)
now honour a replacement character (in the external format or through
restarts) when encoding to octets.
* bug fix: converting from octets using the UCS-2, UCS-4 and UTF-32 external
formats no longer reads past the end of an octet array with a non-integral
number of two- or four-byte units.
* bug fix: converting from octets using the UCS-2, UCS-4, UTF-16 or UTF-32
external formats now returns a simple string, as required by the type
declaration of OCTETS-TO-STRING.
* bug fix: providing an invalid external format argument to OPEN or
WITH-OPEN-FILE (or the internal MAKE-FD-STREAM) no longer leaks a file
descriptor.
* bug fix: SB-ROTATE-BYTE recognizes out-of-relevant-range BYTE
specifications for integers before attempting to cons up enormous bignums
for masking and shifting. (lp#2042937)
* bug fix: fix type derivation on compiling SB-ROTATE-BYTE forms with
non-zero POSITION in the byte specifier. (lp#2042775)
* bug fix: fix multiple assembler errors when compiling MAKE-ARRAY,
MAKE-STRING and similar with a large constant size. (lp#2037347, lp#2038744)
* bug fix: fix internal error when compiling (SETF SBIT) with a large
constant index. (lp#2037415)
* bug fix: fix internal compiler error on invalid lambda list parameters in
LABELS. (lp#2040334)
* bug fix: fix internal compiler error when compiling some
infinitely-recursive LABELS forms. (lp#2042704)
* bug fix: fix internal compiler error when attempting to inline a jump to a
label that has been deleted. (lp#2043262)
* bug fix: FILL-POINTER should never be made to go negative. (lp#2042452)
* optimization: external formats with :REPLACEMENT no longer bind handlers
for coding errors around conversion functions, and so should cons less and
be faster.
* optimization: when the :EXTERNAL-FORMAT argument to STRING-TO-OCTETS or
OCTETS-TO-STRING is a compile-time constant, the external format is
resolved at load time rather than on each call.
* optimization: the compiler is able to constrain the types of inputs to
some functions given a derived or asserted type of the function's return
value.
* optimization: the compiler performs fewer redundant type checks in ASSOC,
GETF and similar functions.
changes in sbcl-2.3.10 relative to sbcl-2.3.9:
* enhancement: The compiler now allows stack allocating vectors of any size
on all safety levels, not just those which it can prove are of sub-page
sizes. It can do this because it now inserts code to check for stack
overflow explicitly on higher safety levels.
* enhancements to the disassembler:
** on arm64, x86-64, DISASSEMBLE annotates references to static symbols.
* bug fix: calls to generic functions now detect erroneous keywords (in the
sense of CLHS 7.6.5) passed as arguments even when auxiliary methods are
applicable.
* bug fix: the standard method on SB-MOP:COMPUTE-EFFECTIVE-METHOD no longer
inserts calls to implementation-defined local macros. (reported by Daniel
Kochmański)
* bug fix: compiler error from state-machine-like LABELS forms in some
circumstances. (lp#2037318)
* bug fix: fix compile-time error in constant-folding RATIONAL on literal
float infinities. (lp#2037455)
* bug fix: failure on x86-64 to assemble code for EQL tests of comparisons
with immediates. (lp#2037456)
* bug fix: infinite loop in the compiler for simplification of type tests of
complicated union types. (lp#2038112, reported by Paul M. Rodriguez)
* bug fix: inability to dump a literal displaced array containing copies of
its displacement target. (lp#2038233, reported by James Kalenius)
* bug fix: compiler error in LOGBITP type derivation. (lp#2038241)
* bug fix: compiler error in AREF type derivation. (lp#2038659)
* bug fix: compiler internal consistency failure in overflow type checks.
(lp#2038736)
* bug fix: work around an infinite loop in type simplification by not
providing such types from the compiler. (lp#2038980, reported by Richard
Holcombe)
* bug fix: spurious run-time argument count errors from generic function
calls on arm64. (lp#2039006, reported by fiddlerwoaroof)
* bug fix: errors in SCALE-FLOAT on floating-point infinities. (lp#2039613)
* bug fix: ROOM is slightly more robust to incompletely-initialized
instances at the point of running ROOM. (Reported by Andreas Franke)
* bug fix: finalizers saved through SAVE-LISP-AND-DIE and subsequently
executed do not trigger memory faults. (Reported by Bohong Huang)
* optimization: improvements to type derivation for ISQRT, INTEGER-LENGTH,
LOGCOUNT, LOG, DENOMINATOR.
changes in sbcl-2.3.9 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 interfaces in the SB-POSIX contrib module
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.
* enhancement: the SB-POSIX contrib module provides DO-PASSWDS and DO-GROUPS
to allow users to iterate over password and group databases safely.
* platform support:
** support for Darwin on x86 and PowerPC has been restored. (lp#2033287,
thanks to Kirill A. Korinsky, Sergey Fedorov and barracuda156)
* bug fix: miscompilation due to erroneous type derivation in the presence
of multiplication of fixnums by ratios. (lp#2033695, reported by Patrick
Dussud)
* bug fix: compiler error when compiling signed- and unsigned 64-bit type
checks in some cases. (lp#2033997, reported by Eric Smith)
* bug fix: compiler error when the :INITIAL-CONTENTS argument to MAKE-ARRAY
is a constant non-sequence. (lp#2037328)
* bug fix: compiler error when constant-folding sequence functions with
:TEST or :KEY functions erroring on the given sequence. (lp#2037341)
* bug fix: compiler error when arguments to array or sequence functions
imply a very large sequence size. (lp#2037443, lp#2037348)
* bug fix: compiler error when the return value of ADJUST-ARRAY is not used.
(lp#2037450)
* optimization: function types derived by the compiler can in some cases be
propagated backwards through the intermediate representation.
* optimization: better type derivations for LDB, LOGBITP, RATIO.
* optimization: eliminate bound checks in more cases involving transitive
comparisons.
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)