-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathNEWS
More file actions
8585 lines (8353 loc) · 476 KB
/
NEWS
File metadata and controls
8585 lines (8353 loc) · 476 KB
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.0.4:
* enhancement: CMUCL-style START-BLOCK and END-BLOCK declarations are now
supported for block compiling forms at a sub-file granularity.
* minor change: *compile-print* now makes it more clear what block
compilation is actually doing. The default output is now slightly more
verbose as a result.
* bug fix: EQness is better preserved given partial sharing of list contents
in the file compiler. (lp#1583753, reported by Denis Budyak)
changes in sbcl-2.0.4 relative to sbcl-2.0.3:
* platform support:
** 32-bit RISC-V is now fully supported. Unlike other ports, its backend
is entirely shared with 64-bit RISC-V.
** native threads are now supported on RISC-V.
** fix and add some x86-64 vector instructions. (reported by Shubhamkar
Ayare)
** improve pointer representation on ppc64 for low-level performance
improvement.
** threads are more stable on big-endian ppc64
* enhancement: forward-referenced type tests can now be open-coded by using
block compilation. The result is that mutually referential defstructs are
now efficiently compiled in block compilation mode, superseding a lighter
mechanism that worked in fewer contexts. However, that lighter mechanism
has been removed, so for now, users who want to efficiently compile
mutually referential defstructs must explicitly opt-in using block
compilation.
* bug fix: defstructs with empty initforms in the sbcl source are now
explicitly intiialized with NIL, as that is undefined behavior under
ANSI. This helps cross compilation hosts which do not implicitly
initialize empty initform slots to NIL. (Thanks to Karsten Poeck)
* bug fix: backtracing through assembly routines now works properly on
RISC-V.
* bug fix: ASH no longer gets miscompiled in certain edge cases on RISC-V.
* bug fix: &MORE args have been slightly optimized and are more correct on
RISC-V.
* bug fix: unused local functions with &REST/&KEY/&OPTIONAL now also issue a
deletion note.
* bug fix: APPLY on a large list ("large" being in excess of 2k to 16k items
depending on the platform) can no longer crash the gencgc collector.
* bug fix: sb-concurrency FRLOCK algorithm has been corrected. (lp#1087955)
* bug fix: block compilation now respects inlining declarations better (like
CMUCL).
* optimization: hashing of structures with raw slots for EQUALP hash tables
has been improved.
changes in sbcl-2.0.3 relative to sbcl-2.0.2:
* incompatible change: the external format now defaults to UTF-8 and is not
affected by LANG. SB-EXT:*DEFAULT-EXTERNAL-FORMAT* is now the only way to
change it.
* minor incompatible change: the undocumented :EPHEMERAL argument to
MAKE-THREAD has been removed.
* minor incompatible change: DECLARE type testing of structure types when
the SAFETY optimization quality is less than SPEED (but greater than 0) is
precise, rather than merely testing that an object is a (general)
STRUCTURE-OBJECT.
* platform support
** respect sunos platform assembler flag handling
** riscv architecture can be detected during the build
** enabled the sb-dynamic-core feature on riscv, sparc, and made it
unconditional everywhere
** cheneygc is an option for arm and arm64
* enhancement: the installed sbcl executable tree can be renamed or moved
without risk of incorrectly referencing a '.core' file from an obsolete
path. (lp#666086)
* optimization: transform (values-list (list one-item)) to (values one-item)
as multiple items were already recognized.
changes in sbcl-2.0.2 relative to sbcl-2.0.1:
* new feature: CMUCL-style block compilation support has been added,
allowing whole program optimization. It has been documented in a new
section of the manual entitled "Advanced Compiler Use and Efficiency
Hints". In particular, users of block compilation will find a large
speedup for numerical code, as functions which call or return floating
point values will keep everything unboxed.
* bug fix: in CHANGE-CLASS, handle non-standard slot-value-using-class for
:INSTANCE and :CLASS slots better. (reported by Shinmera on #sbcl)
* bug fix: REMHASH in an EQUAL or EQUALP hash-table works correctly on a
key for which EQUAL (respectively EQUALP) is reduced to EQ. (lp#1865094)
* bug fix: do not emit a warning for DEFCLASS slots with mismatched :TYPE
and :INITFORM when the class has a non-standard metaclass.
* bug fix: DISASSEMBLE on SPARC is less likely to spuriously annotate code
sequences as error traps.
changes in sbcl-2.0.1 relative to sbcl-2.0.0:
* minor incompatible change: some symbols have been removed from *FEATURES*
based on a determination of which should be impermissible to examine
via #+ and #- reader macros in user-written code.
* optimization: DEFSTRUCT copiers including COPY-STRUCTURE are able to
stack-allocate the result when declared dynamic-extent.
* bug fix: loop analysis code more robust. In particular, loop nesting depth
is computed more accurately, improving the register allocation around
loops.
changes in sbcl-2.0.0 relative to sbcl-1.5.9:
* minor incompatible change: heap relocation now works on Windows. Since
this feature now works on all platforms, it is enabled unconditionally and
the :RELOCATABLE-HEAP symbol no longer appears on *FEATURES* in any
builds. (Thanks to Luís Borges de Oliveira)
* enhancement: malformed type specifiers and occurrences of deprecated types
in :TYPE initargs of DEFCLASS and DEFINE-CONDITION slot specifications
are detected and result in compile-time errors and warnings respectively.
* enhancement: parallel contrib building, controlled by SBCL_MAKE_JOBS=-jX
the same as for the C runtime.
* bug fix: add a walker template for WITH-SOURCE-FORM.
* bug fix: start the summary of a compilation unit on a fresh line. (Thanks
to Zach Beane)
* bug fix: on Windows, PARSE-NATIVE-NAMESTRING produces an absolute
directory when parsing a bare drive name and :AS-DIRECTORY is specified.
(Thanks to Luís Borges de Oliveira)
* bug fix: on RISCV, the runtime is linked with libz if the core compression
feature is requested. (Thanks to Andreas Schwab)
* bug fix: ADJOIN using an EQL test and a KEY function only transforms into
an EQ test if the key function returns values for which EQ and EQL are
guaranteed to be the same.
* optimizations:
** the instruction sequence for multiple-value calls is more
efficient on x86-64.
** the direction flag is now unused on x86 and x86-64 when handling
an unknown number of return values. (Thanks to Fanael Linithien)
** the x86-64 backend is better able to use memory operands for arithmetic
operations.
** compilation of TYPECASE to a jump table is enabled when all the types
being tested are frozen.
** compilation of CASE and ECASE into a jump table has been implemented on
32- and 64-bit powerpc platforms.
** the implementation of Unicode normalization has been sped up.
** pretty-printing dispatch on conses is faster, particularly with the
standard pretty-print dispatch table. Deeply-nested forms should also
pretty-print faster.
changes in sbcl-1.5.9 relative to sbcl-1.5.8:
* platform support:
** a message intended to be more helpful will be displayed for an mmap
failure on OpenBSD.
** the soft-float ABI on ARM32 is better supported, in particular in
returning double floats from calls into C.
* optimizations:
** CASE and ECASE with symbols as keys may be optimized into a vector
lookup if all result forms are quoted or self-evaluating objects.
** CASE and ECASE can be optimized into a jump table on the x86[-64]
backends with arbitrary result forms provided that the clause keys
are either all fixnums, all characters, or all symbols.
** a number of forms are converted to use CASE in circumstances where that
makes sense, including calls to POSITION, MEMQ and MEMBER, and TYPECASE
where the types are MEMBER/EQL types.
** POSITION of a variable symbol in a constant sequence of symbols is
converted to CASE and thence to a jump table.
** TYPECASE of a variable where the clauses are member types is converted
to CASE and thence to a jump table.
** a number of slow instructions are no longer used on x86 and x86-64
machines. (Thanks to Fanael Linithien)
** the compiler is better at tracking the implications of branches after
EQ and EQL tests.
** parsing &KEY lists is slightly less register-intensive.
** a pattern-based peephole optimizer pass has been added, running some
simple transformations on the x86-64 backend.
* enhancements: more thorough compile-time type checking of various
initforms (defclass, &key, defstruct).
* bug fix: unions of complicated CONS types are less likely to cause an
infinite loop. (lp#1799719)
* bug fix: DESCRIBE on functions not named by extended function designators
no longer signals a type error. (lp#1850531, reported by Michal Herda)
changes in sbcl-1.5.8 relative to sbcl-1.5.7:
* platform support:
** support for Mac OS X Catalina
** improvements in interoperability with C code compiled with memory
sanitization options
** libsbcl.so links to zlib when sb-core-compression is enabled.
(lp#1845763, thanks to Juan M. Bello-Rivas)
** workarounds for BSD issues around mmap() and pthread_attr_setstack().
(lp#1845936)
** support SSE for bzero if available on OpenBSD
* optimizations:
** improved type understanding and translations for division operators
(including TRUNCATE, GCD, LCM).
** sequential comparisons and branches can elide intermediate comparisons.
(lp#1847284)
** convert EQUAL and EQUALP to EQL if either of the arguments is a type
for which the structural equality predicate is identical to the simpler
equality check. (lp#1848583)
** internal operators implementing string comparisons produce
simpler-to-consume values. (lp#1848776)
* bug fix: inspecting adjustable arrays and vectors with fill pointers works
better. (lp#1846191, reported by Yves Pagani)
changes in sbcl-1.5.7 relative to sbcl-1.5.6:
* platform support:
** many bug fixes to the experimental 64-bit PowerPC/Linux port, to the
extent that the little-endian variant passes all applicable tests in
the regression test suite; the big-endian variant currently has some
failures
** experimental support for sb-threads on 64-bit PowerPC/Linux
** support threads on x86-64 Sun OS (lp#1841280)
** handle PAX restrictions on mprotect() on NetBSD
** experimental support for HaikuOS
** the runtime is built as a position-independent executable by default on
x86-64 Linux and x86-64 Darwin
* fixes and enhancements related to Unicode:
** update of the data files to Unicode 8.0
** fix a bug in the implementation of the Unicode line breaking algorithm
regarding hebrew letters and hyphens
* enhancement: add a restart to OPEN with :IF-EXISTS :ERROR to allow
re-opening with :APPEND. (lp#806398, reported by Tobias Rittweiler)
* bug fix: compiler optimizations on SEARCH with :FROM-END T didn't account
for the empty sequence. (lp#1844821)
* bug fix: handle SETF of nested empty VALUES correctly. (lp#1806478)
* optimization: FLOOR and CEILING on rationals are simpler, and the
compiler's understanding of them is better.
changes in sbcl-1.5.6 relative to sbcl-1.5.5:
* platform support:
** experimental support for 64-bit PowerPC running Linux (extending Brian
Bokser's work from 2018), on both the v1 and v2 ABIs
* new feature: SB-EXT:SEARCH-ROOTS discovers paths from live objects to the
roots keeping them alive.
* enhancement: string output streams created with :ELEMENT-TYPE 'BASE-CHAR
use internal buffers of BASE-STRING instead of UCS-4 strings restricted
to the ASCII range, yielding a theoretical 4:1 space reduction.
* optimization: improved make-array type derivation for multi-dimensional
arrays. (lp#1838442)
* bug fix: compliant redefinition of classes whose previous definition
caused argument mismatch errors does not generate errors any more.
(lp#1840595, reported by 3b on #sbcl)
* bug fixes for issues caught by the random tester:
** never derive the type of TRUNCATE on arbitrary numbers as the empty
type. (lp#1838267)
** provide out-of-line definitions for internal machinery related to
FLOAT-SIGN. (lp#1838337)
** include COMPLEX in the derived type of SIGNUM when appropriate.
(lp#1838333)
** more correct internal type testing for function types. (lp#1838808,
lp#1838888, lp#1838986)
** don't assume that all objects of type (NOT SIMPLE-ARRAY) have an array
header. (lp#1838827)
** recognize that PHASE on non-positive numbers can return 0 as well as PI.
(lp#1838892)
changes in sbcl-1.5.5 relative to sbcl-1.5.4:
* platform support:
** SunOS: bug reports and patches from Richard Lowe in sb-posix tests
(lp#1837495), sb-concurrency tests (lp#1837817), unencapsulated tracing
(lp#1837307), float registers in interrupt contexts (lp#1837168)
* bug fix: do not generate version.lisp-expr from git describe if the git
repository is not sbcl's own. (lp#1836663, thanks to Richard Lowe)
* bug fix: compiler crash related to VALUES-LIST on a &REST argument in some
contexts. (lp#1836096, reported by Samuel Jimenez)
* bug fix: compiler hang related to constraint propagation. (lp#1835599,
reported by Mark Cox)
* bug fix: the inspector showed the wrong array element type. (lp#1835934,
reported by Richard M Kreuter)
* optimization: numerous improvements to hash table access and rehashing
* optimization: ASSERT compiles into substantially more compact code.
(lp#1835221)
changes in sbcl-1.5.4 relative to sbcl-1.5.3:
* minor incompatible change: hash tables on 64-bit machines consume roughly
20% less memory but can only grow to hold 2^31 entries (theoretically)
due to use of 31-bit indices internally.
* platform support:
** RISC-V: improve rotate-byte support (thanks to Philipp Matthias
Schaefer)
* bug fix: the system reasons more correctly regarding the array rank of
complicated array types. (reported by Bart Botta)
* bug fix: DOUBLE-FLOAT-P never gets weaked to NUMBERP. (reported by Bart
Botta)
* enhancement: the regression test suite can now benefit from paralellism,
completing much faster when enough compute power is available.
* optimization: readtables with non-base-char dispatch characters are less
inefficient.
* optimization: INTERN performs fewer redundant type checks.
* optimization: tests for PATHNAMEP and STRUCTURE-OBJECT (including in
computing hash functions) are faster.
changes in sbcl-1.5.3 relative to sbcl-1.5.2:
* platform support:
** RISC-V: numerous bug fixes and improvements
** all platforms: better run-program performance when used from multiple
threads.
* enhancement: (declaim (optimize (debug 2))) ensures compilation of
top-level forms, providing better debugging for simple forms that are
otherwise "byte-code interpreted" when compiled into FASLs.
* bug fix: use of finalizers could in rare circumstances cause a crash in
the garbage collector.
* bug fix: show extended function designators, e.g. (setf foo), in the
disassembler
* optimization: reduced overhead of calling NTH/NTHCDR.
* optimization: improved FLOAT-SIGN on DOUBLE-FLOATs on 64-bit platforms
changes in sbcl-1.5.2 relative to sbcl-1.5.1:
* enhancement: RISC-V support with the generational garbage collector.
* enhancement: command-line option "--tls-limit" can be used to alter the
maximum number of thread-local symbols from its default of 4096.
* enhancement: better muffling of redefinition and lambda-list warnings
* platform support:
** OS X: use Grand Central Dispatch semaphores, rather than Mach semaphores
** Windows: remove non-functional definition of make-listener-thread
* new feature: decimal reader syntax for rationals, using the R exponent
marker and/or *READ-DEFAULT-FLOAT-FORMAT* of RATIONAL.
* optimization: various Unicode tables have been packed more efficiently
changes in sbcl-1.5.1 relative to sbcl-1.5.0:
* enhancement: restarts for missing package errors.
* optimization: FIND-PACKAGE should be faster even when run in the context
of a package with local package-nicknames.
* optimization: fix TRUNCATE deftransform's results to have well-defined
signs
* bug fix: thread-safety problems in RUN-PROGRAM with :PTY.
* bug fix: SLEEP transform could never fire.
* build enhancement: defend against quirky host floating point
implementation
* test enhancement: allow more parallelism in running the
regression test suite
changes in sbcl-1.5.0 relative to sbcl-1.4.16:
* enhancement: SB-COVER emulates IN-PACKAGE when recording source maps;
this makes it possible to generate coverage for forms that uses local
package nicknames, or otherwise must be read in the correct package.
* build enhancement: new host quirks mechanism, support for building under
ABCL and ECL (as well as CCL, CMUCL, CLISP and SBCL itself)
* optimization: (FIND-SYMBOL x "P") for constant "P" executes faster,
subject to "P" not being a package-local nickname of any
package. Similarly INTERN. (lp#1814924)
* optimization: bounds checks are elided when possible where the same array
is dereferenced multiple times.
* bug fix: initargs are now deduplicated when computing effective slots.
* bug fix: TREE-EQUAL with :TEST 'EQL now correctly computes its answer.
(reported by Bahodir Mansurov)
* bug fix: compiled (COERCE x 'FLOAT) no longer coerces double-floats into
single-floats. (reported by J. Gareth Williams)
changes in sbcl-1.4.16 relative to sbcl-1.4.15:
* minor incompatible change: ENSURE-DIRECTORIES-EXIST no longer establishes
a CONTINUE restart in case of an error.
* minor incompatible change: Defining macros (DEFVAR, etc) which require a
symbol as the name will fail to macroexpand if given a non-symbol.
* enhancement: the unexported restart names SB-{ALIEN,FASL,IMPL,PCL}::RETRY
have been replaced by SB-EXT:RETRY.
changes in sbcl-1.4.15 relative to sbcl-1.4.14:
* enhancement: added AVX2 instructions on x86-64, which can be used with
SB-SIMD-PACK.
* enhancement: specializer name parsing is less lenient and signals a
specific condition in case of syntax errors. (lp#1808681)
* enhancement: provide interactive restarts for some file-system errors.
* enhancement: COMPILE no longer acquires the world lock.
(fixes most occurrences of lp#308959)
* bug fix: RUN-PROGRAM is more responsive and less likely to deadlock
(lp#1702178, lp#1808641)
* bug fix: traceroot can search for simple-fun targets (lp#1808659, reported
by Michal Herda)
* compiler bug fixes:
** related to code generation: lp#1805899, lp#1806982, lp#1807455
** related to interpreting and constant-folding: lp#1806513
** related to the type system: lp#1804759, lp#1804796
** related to eq-testing of structure slots: lp#1809582, lp#1808273
** related to dynamic-extent: lp#1809565, lp#1809253, lp#1809485,
lp#1739652
** related to GC safety: lp#308949
changes in sbcl-1.4.14 relative to sbcl-1.4.13:
* enhancement: attempting to build on openbsd 6.0 or newer without
the wxallowed mount option now results in a more useful error message.
* enhancement: by popular demand, SB-EXT now exports two functions
HEAP-ALLOCATED-P and STACK-ALLOCATED-P to assist in writing debug
assertions that objects in hash-tables are not stack-allocated, etc.
* bug fix: restored sb-thread support on OpenBSD.
changes in sbcl-1.4.13 relative to sbcl-1.4.12:
* minor incompatible change: PRINT-TYPE and PRINT-TYPE-SPECIFIER are not
exported from SB-EXT. These were never announced, so this change would
only affects users who discovered these undocumented functions.
* enhancement: SB-EXT:SEARCH-ROOTS and SB-EXT:GC-AND-SEARCH-ROOTS
are supported on all backends that use gencgc.
changes in sbcl-1.4.12 relative to sbcl-1.4.11:
* minor incompatible change: a number of platform-specific elements of
*FEATURES* related to whether the system implements particular strategies
have been removed.
* minor incompatible change: some changes to the (internal) implementation
details of the x86 and x86-64 have necessitated changes to some low-level
libraries.
* enhancement: attempting to transfer control through GO or RETURN-FROM to
frames which no longer exist are now caught and handled by the debugger.
* enhancement: identical code (at the machine instruction level) can now be
shared between functions, if explicitly requested.
* enhancement: SB-EXT:STRING-TO-OCTETS and SB-EXT:OCTETS-TO-STRING are now
documented.
* bug fixes: fix a number of bugs revealed by random testing (lp#1793171,
lp#1793150, lp#1791550, lp#1792030, lp#1791059, lp#1790157, lp#1790717,
lp#1790703)
changes in sbcl-1.4.11 relative to sbcl-1.4.10:
* minor incompatible change: changes to the (internal) assembler on x86
and x86-64 may cause problems to some low-level third-party libraries:
** new macro EA for defining an effective address, without size
information;
** an explicit size modifier is now needed for MOVSX and MOVSZ
instructions;
** MOVD and MOVQ move a single size of operand by definition.
* enhancement: support the latest MinGW (lp#1786731, reported by il71)
* enhancement: checks for modifications of constants can now be done in
local (FLET/LABELS) functions.
* optimization: improved type checking routines for various compound types.
* optimization: array bound checks are elided on vectors when the index is
known to be less than the length, including LOOP ACROSS.
* optimization: the register allocator's use of temporaries is somewhat
improved.
* optimization: checking widetags involves fewer conditional jumps on x86
and x86-64.
* bug fix: fix a number of bugs related to constant improper lists as
sequence arguments (lp#1768563, lp#1768568, lp#1768652)
changes in sbcl-1.4.10 relative to sbcl-1.4.9:
* enhancement: added SB-EXT:MAKE-WEAK-VECTOR.
* enhancement: constant-modification detection warnings can be generated
in the presence of conditional constructs.
* optimization: better bounds-checking on x86[-64] and ARM64.
* optimization: adding 1 to or subtracting 1 from a fixnum variable does not
cons.
* bug fixes: fix a number of bugs revealed by random testing (lp#1782826,
lp#1779878, lp#1779737)
changes in sbcl-1.4.9 relative to sbcl-1.4.8:
* enhancement: SB-COVER instrumentation for x86[-64] has signficantly less
overhead. The performance penalty for 64-bit code has been measured at
around 30% slower than uninstrumented code as contrasted with slowdowns
in excess of 100% previously.
* enhancement: tracing a generic function with the :METHODS T option
produces output corresponding to each method called under the default
:ENCAPSULATE NIL tracing implementation.
* bug fix: updated TRACE documentation. (lp#574614 was actually already
fixed, but there were other issues.)
* bug fix: fixed x86 GC bug causing heap corruption. (lp#1749369)
* bug fix: improved compatibility with macOS High Sierra and graphical
applications.
changes in sbcl-1.4.8 relative to sbcl-1.4.7:
* bug fix: redefinition of method combinations now does the expected thing;
generic functions using that method combination have their effective
methods lazily recomputed according to the new definition of the method
combination. (Reported by Didier Verna at ELS 2018)
* bug fix: :arguments argument to the long form of DEFINE-METHOD-COMBINATION
is now implemented more correctly, supporting suppliedp variables and
&optional defaults. (Reported by Bruno Haible, lp#309084)
changes in sbcl-1.4.7 relative to sbcl-1.4.6:
* enhancement: better handling of unknown keyword arguments (lp#1750466)
* enhancement: namestrings can now be computed for certain pathnames that
previously did not have namestrings because of #\. characters in their
name and/or type components.
* bug fix: compiling a SLEEP call with a float positive infinity argument no
longer causes an internal error (lp#1754081)
* bug fix: keyword arguments provided to a generic function with
EQL-specialized methods are checked more correctly (reported by Syll,
lp#1760987)
changes in sbcl-1.4.6 relative to sbcl-1.4.5:
* enhancement: DISASSEMBLE on a symbol naming a macro will disassemble
the expander, not the code that traps attempted FUNCALL of the macro.
* enhancement: The sb-sprof contrib now provides an experimental interface
for accessing collected profiler data.
* enhancement: The instruction-level profiling of the sb-prof contrib
annotates the disassembler output more efficiently.
* optimization: improved dynamic-extent handling of nested variables.
changes in sbcl-1.4.5 relative to sbcl-1.4.4:
* minor incompatible change: building with/without the :sb-package-locks
feature is no longer an option. Package locks are always compiled in,
and removing :sb-package-locks from *features* will have no effect.
* enhancement: FIND-PACKAGE does not acquire a mutex
* enhancement: cheneygc can perform heap relocation on startup
* enhancement: in threaded builds, finalizers execute in a system-internal
thread so that a user thread which invokes GC is unblocked from performing
work as soon it returns from GC and invokes any post-GC hooks.
As such, it is more important than before to avoid assumptions about
special variable bindings in finalizers, even in single-threaded code.
* optimization: faster (funcall (or function symbol)) on x86-64.
changes in sbcl-1.4.4 relative to sbcl-1.4.3:
* bug fix: pathname accessors such as PATHNAME-DIRECTORY work on
SYNONYM-STREAMs.
* bug fix: (pathname-{device,directory,name,type} ... :case :common) works
as expected. In particular MAKE-PATHNAME composed with the accessors
roundtrips properly when both use the same :case. (lp#1739906)
* bug fix: DIRECTORY no longer gets confused when the value of
*DEFAULT-PATHNAME-DEFAULTS* has a name or type component. (lp#1740563)
* bug fix: pattern pieces in pathname components are correctly escaped
during unparsing.
* bug fix: DELETE-DIRECTORY no longer signals an error when the directory is
supplied as a pathname with name and/or type components containing escaped
characters. (lp#1740624)
* bug fix: weak hash-tables no longer cause GC time to scale superlinearly
(lp#1241771)
* bug fix: CANCEL-FINALIZATION operates in approximately constant time
per operation (lp#1587983)
* bug fix: big-endian MIPS systems now (mostly) work again (broken since
1.3.14.x).
* bug fix: backtrace from arg-count errors on systems other than x86, x86-64,
ARM, and ARM64 now works again.
* bug fix: backtrace from asynchronous interrupts on non-x86, non-x86-64
systems should now be more reliable.
* enhancement: warnings and errors referring to bindings established by LET,
LET*, FLET and LABELS point to the offending form more accurately.
* enhancement: backtrace for invalid argument count produces the exact
supplied arguments including the extra ones on all platforms (no longer
just x86, x86-64, ARM, and ARM64).
changes in sbcl-1.4.3 relative to sbcl-1.4.2:
* enhancement: SLEEP respects deadlines established by SB-SYS:WITH-DEADLINE.
* bug fix: DECODE-TIMEOUT and operators accepting a timeout no longer signal
an error when called with an argument that is of type (real 0) but not
(unsigned-byte 62) (lp#1727789)
* bug fix: fixed heap exhaustion bug when consing millions of small objects
* bug fix: sb-safepoint builds are now a lot less prone to deadlocks and odd
crashes (lp#1424031, lp#1268710)
* bug fix: argumentless CALL-NEXT-METHOD where specialized-to-T or
unspecialized parameters are mutated now uses the original (non-mutated)
parameter values (lp#1734771)
* bug fix: memory faults from lisp no longer use (thread-and-interrupt
unsafe) global storage for fault addresses (everywhere), and now have
cleaner backtraces (on x86 and x86-64). (lp#309068)
* bug fix: pathnames with a directory component of the form
(:absolute {:up,:wild,:wild-inferiors}) no longer fail to unparse.
(lp#1738775)
* bug fix: more reliable signal handling on macOS.
changes in sbcl-1.4.2 relative to sbcl-1.4.1:
* minor incompatible change: SB-EXT:QUIT is no longer marked as deprecated
and behaves like SB-EXT:EXIT.
* enhancement: ASDF updated to 3.3.1. The ASDF release is dedicated to
the late Elias Pipping who put enormous amounts of work into it despite
his terminal illness. Thank you and rest in peace. (lp#1681201)
* enhancement: alien routines compiled with '-fsanitize=thread' and/or
'-fsanitize=memory' cause fewer false positives in error reporting.
* optimization: fewer instances of consing float constants at runtime.
* bug fix: a number of compiler bugs detected by Paul F. Dietz' randomized
tester. (lp#1731503, lp#1730699, lp#1723993, lp#1730434, lp#1661911,
lp#1729639, lp#1729471, lp#1728692)
* bug fix: better errors from NAMESTRING and friends on pathnames with no
namestrings. (lp#792154)
* bug fix: EQUAL and EQUALP compiler transforms were too confident in
deriving a result. (lp#1732277, lp#1732225)
* bug fix: FILL sometimes returned the underlying data vector rather than
the given array. (lp#1732553)
* bug fix: SEARCH returned the wrong answer in some cases. (lp#1732952)
* bug fix: the type (COMPLEX INTEGER) behaves more as specified by Function
TYPEP, which has stronger constraints than System Class COMPLEX.
(Reported by Eric Marsden, lp#1733400)
changes in sbcl-1.4.1 relative to sbcl-1.4.0:
* optimization: faster foreign callbacks.
* enhancement: complex arrays can be stack allocated.
* enhancement: PROCESS-KILL now exists on win32 and PROCESS-PID actually
returns the PID.
* optimization: the register allocation method used by the compiler when
optimizing for speed is now faster for functions with large bodies.
* bug fix: SB-INTROSPECT:ALLOCATION-INFORMATION works on big-endian CPUs
(fixes lp#490490 for real rather than by disabling a test)
* bug fix: code objects and bignums of large enough size to be placed
on GC pages without any other object no longer cause accidental copying
during garbage collection. (gencgc only)
* bug fix: sb-fasteval failure with 0-argument lambdas (lp#1722715)
* bug fix: RUN-PROGRAM doesn't leak handles on win32 and PROCESS-CLOSE
doesn't crash. (lp#1724472)
changes in sbcl-1.4.0 relative to sbcl-1.3.21:
* minor incompatible change: DESTRUCTURING-BIND treats non-toplevel () as
nested empty pattern. This seems to be what the standard mandates, so
conforming code should not be affected.
* ehancement: (GC :GEN 7) with gencgc will zero-fill dead pseudo-static
objects so that they do not spuriously cause reachability of objects that
would have been otherwise dead.
* enhancement: PROCESS-STATUS now tracks stopped and continued processes
properly (also fixes lp#1624941, based on patch by Elias Pipping).
* bug fix: INSPECT handles errors signaled while printing slot
values. (lp#454682)
* bug fix: DESCRIBE works on classes like it used to.
* bug fix: *LOAD-PATHNAME* and *LOAD-TRUENAME* are bound to pathnames
when processing a sysinit or userinit file
* bug fix: save-lisp-and-die is able to collect more garbage on non-x86oid
gencgc targets.
* bug fix: fixed out-of-bounds array read in optimized POSITION on bit-vectors
* bug fix: signal emulation respects the 128-byte stack red zone on x86-64
macOS.
changes in sbcl-1.3.21 relative to sbcl-1.3.20:
* minor incompatible change: the CLOBBER-IT restart for defstruct redefintion
has been removed after a 15 year deprecation cycle. Use the new name,
RECKLESSLY-CONTINUE. Note also that this restart is hidden if deemed unsafe
due to altered placement of untagged slots in the structure.
* enhancement: the assignment of -DSBCL_PREFIX= in src/runtime/GNUmakefile
can be removed as a local patch, which results in an sbcl executable
that finds its core file relative to itself by looking in "../lib/sbcl".
* enhancement: backends using the generational GC are able to relocate
dynamic space anywhere the operating system places it.
This feature can be disabled by removing :relocatable-heap from the
build configuration. Not supported on Windows.
* enhancement: DEFMETHOD no longer signals IMPLICIT-GENERIC-FUNCTION-WARNING.
* enhancement: better type conflict detection for high order functions, e.g.
(find x "123" :test #'=)
* enhancement: the tabular output of ROOM is aligned dynamically, preventing
misaligned tables for larger sizes or counts.
* enhancement: ROOM reports on immobile space if applicable.
* optimization: optimized external-format routines.
* bug fix: SB-INTROSPECT:ALLOCATION-INFORMATION returns :IMMOBILE
instead of :FOREIGN for objects in immobile space.
* bug fix: dotted lists in special forms and function call forms signal
an appropriate error
* bug fix: EQUALP hash tables with pathname keys now ignore internal slots.
(lp#1712944, reported by Jason Miller)
changes in sbcl-1.3.20 relative to sbcl-1.3.19:
* minor incompatible change: DEF{GENERIC,METHOD} no longer accept some
illegal lambda lists such as (defgeneric bar (foo &key foo)) or
(defgeneric baz (t)) that were accepted before.
* optimization: a valueless &AUX binding in a BOA constructor does not
force all slots reads in safe code to perform a full type check.
* optimization: ATOMIC-PUSH and ATOMIC-POP generate better code
* bug fix: the low-level debugger would erroneously print - or not print
as the case may be - "(bad-address)" for some objects depending whether
the --dynamic-space-size argument was used at Lisp startup
* bug fix: a DEFCONSTANT with a non non-eql-comparable object as the value
could cause miscompilation if that constant appeared as the default
expression for an &OPTIONAL binding
* bug fix: generic function lambda lists are now checked for repeated
and otherwise illegal entries. (lp#1704114)
* bug fix: setting gencgc_verbose = 1 could cause deadlock in fprintf()
depending on the platform's stdio implementation. The relevant code
has been changed to use snprintf() and write() instead.
changes in sbcl-1.3.19 relative to sbcl-1.3.18:
* enhancement: specialized arrays can be printed readably without using
*read-eval*
* enhancement: SB-DEBUG:PRINT-BACKTRACE truncates huge string arguments.
The full string remains available for inspection via (SB-DEBUG:ARG).
* bug fix: backtracing from several threads at once could fail
* bug fix: floating-point infinities could not be used as keys
in EQUALP hash tables. (lp#1696274)
* bug fix: random sb-fasteval failures. (lp#1642708)
* bug fix: align the stack in callback wrappers to defend against C
compiler over-aggressive use of SIMD. (lp#1697528)
* bug fix: don't try to find the class when reporting that a class does
not exist for a primitive type. (lp#1697226)
changes in sbcl-1.3.18 relative to sbcl-1.3.17:
* minor incompatible change: existing values of CFLAGS, ASFLAGS,
CPPFLAGS, and LINKFLAGS will be incorporated into C compiler
invocations when building from source.
* minor incompatible change: the result of WRITE-TO-STRING may be
a BASE-STRING if all characters written are of type BASE-CHAR.
* minor incompatible change: the broadcast stream with no output
streams is a singleton object. That object satisfies OPEN-STREAM-P
regardless of how many times CLOSE is invoked on it.
* enhancement: x86[-64] backends contain an experimental feature
which aids in demonstrating reachability of any object starting
from a tenured object or a thread stack by producing a proof
as a sequence of pointers to follow.
The file "tests/traceroot.test.sh" contains an example usage.
* enhancement: if the alien symbol "gc_coalesce_string_literals" is
set to 1 prior to SAVE-LISP-AND-DIE, then similar string constants
loaded from different fasl files may be collapsed to one object.
If the variable is set to 2, then additionally strings which are
STRING= in code resulting from COMPILE can be coalesced.
For instance, two functions returning the literal string "HI"
might return EQ strings after collapsing, which may be undesired
in a particular use. The flag pertains to gencgc only.
* enhancement: SXHASH values on pathnames are better distributed
* bug fix: MAKE-PATHNAME removes empty strings as components of a
directory, as is permitted: "Whenever a pathname is constructed
the components may be canonicalized if appropriate."
* optimization: various printer and FORMAT performance enhancements.
* bug fix: GET-FOREGROUND no longer fails in case all other interactive
threads exit (lp#1682671, reported by Syll)
* bug fix: RELEASE-FOREGROUND always removes the current thread from the
list of interactive threads. (lp#1682867, reported by Syll)
changes in sbcl-1.3.17 relative to sbcl-1.3.16:
* enhancement: memory overhead from the garbage collector's metadata
is reduced on 64-bit architectures; no change for 32-bit.
* enhancement: further garbage collector speedups affecting
pinned objects on conservative backends, and simple-vectors.
* enhancement: on Linux a custom handler for SIGSEGV can be called
for page faults outside of dynamic space by changing the C symbol
"sbcl_fallback_sigsegv_handler".
* bug fix: sb-cover does not lose source positions for AND/OR/COND.
* bug fix: random disassembler failures. (lp#1527931)
* The bundled sb-md5 contrib has been updated to release 2.0.4
which is licensed under Creative Commons CC0 per author's statement
https://github.com/pmai/md5/commit/fd134e71b71a10ab78905833a7cb9d4d6817c589
(Refer to NEWS and COPYING in the contrib/sb-md5 subdirectory)
changes in sbcl-1.3.16 relative to sbcl-1.3.15:
* optimization: various small tweaks give around 5% faster garbage
collection
* bug fix: better detection of when an impossible code path does
not need a warning. (lp#1668619)
* bug fix: stronger attempts to disable position-independent
executable building. (lp#1668986, patch from Mark Wright)
* bug fix: OPEN :IF-EXISTS NIL signalled a condition on Windows.
(lp#1674437, reported by Jan Idzikowski)
changes in sbcl-1.3.15 relative to sbcl-1.3.14:
* minor incompatible change: the reader will when feasible create
new symbols using a BASE-STRING for the print name. Additionally,
string literals can favor the base-string type if desired, though
the default is to always return UTF-32 strings for compatibility.
A preference for base-string does not disable reading Unicode.
The choice is controlled via (SETF READTABLE-BASE-CHAR-PREFERENCE).
If Unicode was disabled at build time, this setting does nothing.
* enhancement: SBCL generates more debug information by default.
* enhancement: type errors provide context information, such as which
variable is being bound, which slot of which structure is being set.
* enhancement: if #+immobile-symbols is in build-time *FEATURES* (not
enabled by default), then symbols will never be moved in memory
except by SAVE-LISP-AND-DIE. Immobility has helpful implications for
code generation as well as interaction with foreign routines.
This feature can only be enabled if #+immobile-space is enabled.
* enhancement: undefined function errors can be restarted on x86-64, to
either retry calling the function again or call a user supplied function.
* enhancement: sb-ext:restrict-compiler-policy accepts an upper bound in
addition to a lower bound.
* enhancement: #+immobile-code improves the speed of function calling.
Some delay may be noticed when redefining an existing function
from a saved core file however.
* defaults change: sb-ext:*disassemble-annotate* default to NIL, due to its
poor reliability.
* new feature: SB-LINKABLE-RUNTIME, allowing linking with extra object
files to help with delivery of executables. (Thanks to François-René
Rideau)
* bug fix: data race in GENTEMP fixed - it can no longer return the
same interned symbol to multiple threads if called concurrently
* bug fix: interrupting LOADing of FASLs does not leave functions without
source locations. (lp#540276)
* bug fix: DYNAMIC-EXTENT-declared results of NOTINLINE local functions were
treated as if they were actually stack allocated (lp#1659964)
* bug fix: correctly handle the case of a non-local exit within a function
terminating the extent of dynamic-extent, dynamic-bound variables in the
presence of multiple-values (lp#1655011)
* bug fix: handling of SB-SYS:WITH-PINNED-OBJECTS in the interpreters (both
sb-eval and sb-fasteval) now actually pins objects on gencgc.
* bug fix: AVX registers are preserved during exceptions on x86-64 macOS.
* bug fix: (directory "SOMETHING/*/**/MORE") is no longer equivalent to
(directory "SOMETHING/**/MORE")
* bug fix: better console IO on Windows (lp#1660906)
changes in sbcl-1.3.14 relative to sbcl-1.3.13:
* minor incompatible change: the SB-PCL walker no longer recognizes
macros expanding into a DECLARE expression. This is not a language change,
since ANSI forbids such usage (X3J13 issue DECLARE-MACROS:FLUSH).
* enhancement: for several macros such as MULTIPLE-VALUE-{BIND,SETQ}, COND,
DO{,*,LIST}, {RESTART,HANDLER}-{BIND,CASE}, *CASE, conditions signaled
during macroexpansion point to the form that caused the problem more
accurately.
* enhancement: the "--noinform" command-line option inhibits output from
save-lisp-and-die in addition to removing the startup banner.
* bug fix: PROCESS-KILL failed to return errno if the system call failed
* optimization: slightly more comprehensive treatment of the keyword
arguments to MAKE-ARRAY in compiler transformations.
changes in sbcl-1.3.13 relative to sbcl-1.3.12:
* enhancement: SET triggers package locks on undefined variables.
(lp#1645152)
* enhancement: new Windows specific option to run-program, :escape-arguments
(lp#1503496)
* enhancement: recompiling a MAKE-INSTANCE form with an initarg :INITARG
CONSTANT where CONSTANT names a constant variable picks up the new value
of CONSTANT in case it has been redefined. (lp#1644944)
* optimization: faster TYPEP on undefined at compile-time types and upcoming
class definitions. (lp#1082967)
* optimization: memory consumption of each STANDARD-OBJECT instance is
reduced by 2 words if the compact-instance-header feature is enabled.
* optimization: CONDITION instances are quicker to allocate.
* optimization: unoptimized calls to FILL on specialized vectors are now
just as fast as T vectors.
* bug fix: get-timezone returns corret DST on 64-bit Windows. (lp#1641058)
* bug fix: cross reference information in fasls is no longer incompatible
between different cores (lp#1648186)
changes in sbcl-1.3.12 relative to sbcl-1.3.11:
* enhancement: on x86-64, compiled functions loaded from fasl files
can not be moved, but can be freed, by GC. Additionally, COMPILE will
produce immobile code if SB-C::*COMPILE-TO-MEMORY-SPACE* is set to
:IMMOBILE. (Caution: the flag is experimental and subject to change.)
The benefits are better physical separation of code from data,
and potentially easier examination of live images by external tools.
* enhancement: the docstring for SAVE-LISP-AND-DIE has been amended to
say that the :ROOT-STRUCTURES parameter is not meaningless on gencgc,
depending on the platform.
* bug fix: calling a named function (e.g. a DEFUN) concurrently with
redefining that same function could lead to execution of random bytes.
* bug fix: yes-or-no-p accepts formatter functions (lp#1639490)
* bug fix: better handling of exceptions on macOS.
changes in sbcl-1.3.11 relative to sbcl-1.3.10:
* minor incompatible change: SB-EXT:*INTEXP-MAXIMUM-EXPONENT* is removed.
* enhancement: TRACE ... :REPORT {TRACE,NIL} now work as advertised in the
documentation string (based on patch by Patrick Stein)
* enhancement: support unboxed signed-word structure slots on x86, x86-64
and ARM64. (lp#377616)
* optimization: faster logical bit-array operations on multidimensional
arrays.
* optimization: better GC performance in the presence of many threads.
(patch by Ilya Perminov, lp#1339924)
* optimization: multiple-value-call is optimized with multiple argument
forms, not just one. (lp#753803)
* bug fix: MAKE-ALIEN-STRING returns the number of allocated bytes as a
second value as advertised (reported by Johann 'Myrkraverk' Oskarsson)
* bug fix: when TO-READTABLE is supplied to COPY-READTABLE, it will
contain only the macros in FROM-READTABLE and no others. (lp#1631506)
* enhancement: gencgc has been modified for x86-64 on Linux and macOS
to a support mark-and-sweep as well as the traditional copying strategy.
It is conceivable that some applications might be adversely affected.
Please see ':immobile-space' in 'base-target-features.lisp-expr'
for further details, and possible reasons to disable this feature.
* enhancement: x86-64 supports shrinking the fixed overhead in a structure
from 2 words to 1 word, reducing memory consumption in applications
which create many small structures.
changes in sbcl-1.3.10 relative to sbcl-1.3.9:
* enhancement: more compact low-level error signaling code
* enhancement: more compact encoding of cross-reference information
* optimization: faster out of line fixnum-float comparisons.
* optimization: filling a known simple-vector with a constant value
is about as fast in unoptimized code as in code compiled with (SPEED 3),
and the x86-64 implementation is able to use SSE instructions.
* bug fix: correctly handle the case of a non-local exit within a function
terminating the extent of dynamic-extent functions and variables in the
presence of multiple-values (lp#1563127)
* bug fix: restore builds on the latest OSX with the latest Xcode
(lp#1470996)
changes in sbcl-1.3.9 relative to sbcl-1.3.8:
* minor incompatible change: NAMESTRING prefers to return a BASE-STRING
instead of (ARRAY CHARACTER (*)) when possible.
* enhancement: cached make-instance/allocate-instance constructors can now
get garbage collected.
* optimization: better performance for some unoptimized operations on
complex numbers.
* bug fix: using the options :LOCAL-NICKNAMES and :LOCK in the same
DEFPACKAGE form no longer signals a bogus error
changes in sbcl-1.3.8 relative to sbcl-1.3.7:
* minor incompatible change: the system now understands that the CONDITION
type is disjoint with many other system types.
* minor incompatible change: argument types in condition report functions
are now declared (in combination with the above change, this can result in
early detection of erroneous code).
* enhancement: simple arrays of any rank can be stack-allocated
on platforms supporting stack allocation of vectors.
* optimization: improved type derivation for FIND, POSITION, COUNT, SEARCH,
MISMATCH and other array and sequence functions.
* optimization: ALLOCATE-INSTANCE is now as fast as MAKE-INSTANCE.
* optimization: more efficient CHANGE-CLASS.
* bug fix: versions of getresuid() and getresgid() in SB-POSIX no longer
cause memory faults, and should work properly (lp#1603806, reported by
Kieran Grant)
* bug fix: handle ENOENT from getprotobyname() (lp#1596043, reported by
Stephen Hassard)
changes in sbcl-1.3.7 relative to sbcl-1.3.6:
* bug fix: preserve the name of the destructive function for the destroyed
constant and important result warnings, even when declared NOTINLINE.
* optimization: faster operations on list-sets.
* optimization: better type derivation of set functions.
(lp#1592152)
* optimization: load-time TLS-INDEX assignment, and other
microoptimizations, on x86.
* optimizations in:
** APPEND;
** ECASE/ETYPECASE;
** ARRAY-DIMENSIONS;
** ARRAY-TOTAL-SIZE;
** REMOVE, REMOVE-DUPLICATES, DELETE and DELETE-DUPLICATES on lists.
changes in sbcl-1.3.6 relative to sbcl-1.3.5:
* bug fix: do not insert conditional newlines in print-unreadable-object
(lp#1398290). This reverses a change made in lp#488979 which reversed
a fix advertised in release 0.8.14 to pass the GCL ANSI Test Suite.
* bug fix: constant negative rotations of 32-bit quantities are compiled
correctly on x86-64 and arm. (lp#1586614, reported by Guillaume Le
Vaillant)
changes in sbcl-1.3.5 relative to sbcl-1.3.4:
* enhancement: the platform's strtod() is exposed as SB-POSIX:STRTOD
* enhancement: speed up debug info creation for highly nested functions.
(lp#1563355)
* enhancement: the interleaved structure slot optimization from
release 1.2.6 has been ported to all architectures.
* enhancement: support run-program I/O redirection into lisp streams on
Windows.
* bug fix: better wording in missed optimization note. (lp#1003265)
* bug fix: interpreted (CAS SVREF) was broken
* bug fix: support CLISP as build host for ARM (lp#1568256, thanks to Tomas
Hlavaty)
changes in sbcl-1.3.4 relative to sbcl-1.3.3:
* enhancement: who-sets and who-references work on DEFGLOBAL. (lp#1552997)
* enhancement: CONSTANTP understands backquote.
e.g. (CONSTANTP '`(0 (,CHAR-CODE-LIMIT))) => T
* optimization: improvements to sequence functions: CONCATENATE, SUBSTITUTE,
REVERSE.
* bug fix: SB-EVAL does not signal an error for (THE KEYWORD :FOO)
* bug fix: a DEFTYPE name that is redefined into a DEFSTRUCT name
is less likely to cause confusion in the compiler.
* bug fix: DOCUMENTATION works as intended for classes with non-standard
metaclasses
* bug fix: (TYPEP <extended-sequence> <extended-sequence-class>) no longer
returns NIL in certain situations
* bug fix: MAKE-SEQUENCE, MAP, CONCATENATE and MERGE accept class objects as
result-type
* bug fix: MAKE-SEQUENCE, MAP, CONCATENATE and MERGE expand DEFTYPEs in
result-type
changes in sbcl-1.3.3 relative to sbcl-1.3.2:
* enhancement: warn about argument mismatch for functions passed as
arguments to other functions (e.g. REDUCE, MAP) at compile-time.
* optimization: functions accepting other functions (e.g. REDUCE, FIND) can
now be constant-folded if all function arguments are declared as foldable.
* optimization: improved logical operations on integers of unknown type.
* bug fix: exception handling no longer leaks memory on OS X. (lp#326238)
changes in sbcl-1.3.2 relative to sbcl-1.3.1:
* enhancement: {READ,WRITE}-SEQUENCE are much faster for some combinations
of short sequences and stream types
* enhancement: MAKE-LIST's result can be stack-allocated on x86-64
* bug fix: WRITE-SEQUENCE no longer fails to write lists containing integers
to bivalent streams
* bug fix: LOGTEST (and hence ODDP) no longer conses when given fixnum
arguments and small bit positions. (lp#1277690)
* bug fix: READ-FROM-STRING compiler-macro does not permute its arguments
* bug fix: DEFUN of a function name that collides with a system-generated
structure accessor does not confuse the runtime. (lp#540063)
* bug fix: heap corruption from miscompiled RESTART-BIND. (lp#1530390)
changes in sbcl-1.3.1 relative to sbcl-1.3.0:
* enhancement: SB-THREAD support for ARM64.
* enhancement: compiling an out-of-line DEFSTRUCT constructor call
will warn if a defaulted value is incompatible with its slot type.
* enhancement: a local INLINE declaration on a structure constructor
will work as intended, subject to any other factors that inhibit
inlining, even if the DEFSTRUCT was not itself within a global
INLINE proclamation for the named constructor
* enhancement: SB-EXT:DYNAMIC-SPACE-SIZE is now defined for cheneygc.
* enhancement: x86[-64] platforms support SB-EXT:CAS on structure slots
of type SB-EXT:WORD
* enhancement: the interleaved structure slot optimization from
release 1.2.6 has been ported to 32-bit x86, Sparc, PowerPC, ARM64.
* enhancement: SB-THREAD:JOIN-THREAD signals a proper error when an attempt
is made to join the current thread
* bug fix: NTH-VALUE does not cause stack overflow. (lp#1511419)
* bug fix: structure constructor type checking is better. (lp#1508735)
* bug fix: supplied-p variables for unused optional or keyword variables no
longer confuse SB-DI:PARSE-COMPILED-DEBUG-FUN-LAMBDA-LIST (and thus the
backtrace machinery) (lp#1498644)
* bug fix: Backtrace correctly handles undefined-function frames on MIPS.
* bug fix: WITH-FLOAT-TRAPS-MASKED correctly clears accrued traps on MIPS
(fixes issues with floating-point type derivation in the compiler).
* bug fix: FLOAT-NAN-P and FLOAT-TRAPPING-NAN-P now work correctly on MIPS
and HPPA.
* bug fix: MIPS context register access now masks to 32 bits (fixing issues
parsing negative-fixnum values for internal-error arguments and escaped
debug variables on 64-bit CPUs).
* bug fix: (SETF SAP-REF-DOUBLE) with constant offset on big-endian MIPS
now works correctly.
* bug fix: Callback parameter (argument) handling on MIPS is now vastly
more correct.
* bug fix: %DECREMENT-SEMAPHORE adjusts the remaining timeout after a
spurious wakeup
changes in sbcl-1.3.0 relative to sbcl-1.2.16:
* minor incompatible change: the environment passed to a macro/setf/deftype
expander is not always an object of type SB-KERNEL:LEXENV.
It can be nil, as is permissible by the standard.
* enhancement: ported to ARM64 Linux.
* enhancement: a new interpreter is included which has many benefits
over sb-eval. It is disabled by default. See src/interpreter/README
for instructions to enable it, and further details.
* bug fix: calling COMPILE when SB-EXT:*EVALUATOR-MODE* was :INTERPRET
would fail to perform "normal semantic processing such as macro expansion"
as stipulated by X3J13 issue LOAD-TIME-EVAL.
* bug fix: SB-UNICODE:CONFUSABLE-P no longer treats "<" and the empty
string as confusable. (lp#1504739)
* bug fix: (ASSERT (COMPUTE-IT ...)) would expand incorrectly
if COMPUTE-IT was a local macro that shadowed a global function.
* bug fix: SB-POSIX:CFSETISPEED and SB-POSIX:CFSETOSPEED now work properly
on platforms that use only the minimum specified set of fields in struct
termios (verified on Linux, still known not to work on FreeBSD and NetBSD,
very probably others). (partial fix for lp#1500951)
changes in sbcl-1.2.16 relative to sbcl-1.2.15:
* enhancement: by default, timers with a repeat interval do not "catch up"
by repeatedly calling their function after a clock discontinuity such as a
suspend and resume cycle
* bug fix: correctly restore multiple values on the stack in the presence of
alien calls. (lp#1489590)
* bug fix: MAKE-STRING-OUTPUT-STREAM enforces that :ELEMENT-TYPE
is a subtype of CHARACTER.