-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
8145 lines (7937 loc) · 452 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
;;;; -*- coding: utf-8; fill-column: 78 -*-
changes relative to sbcl-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)
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.
* bug fix: an EQL method specializer no longer causes garbage retention
if there are no extant methods using the specializer. (lp#492851)
changes in sbcl-1.2.15 relative to sbcl-1.2.14:
* new feature: DEPRECATION declaration for functions, variables and types
causes {EARLY,LATE,FINAL}-DEPRECATION-WARNING to be signaled when subject
of the declaration is used. Integrated with DESCRIBE, DOCUMENTATION and
SB-CLTL2:{VARIABLE,FUNCTION}-INFORMATION. Documented in the "Deprecation"
section of the manual.
* enhancement: ASDF updated to 3.1.5. (lp#1476867)
* enhancement: definitions within PROGN get proper source locations when
compiled (needs latest Slime to take advantage of this). (lp#1473147)
* enhancement: source locations for DEFCLASS slots now point directly to the
slot definitions, not the whole DEFCLASS form.
* bug fix: better source location in the presence of quoted forms.
(lp#1370561)
* bug fix: better source locations inside backqoute. (lp#1361502)
* bug fix: HANDLER-BIND requires that the handler-function be
a function designator at the time of binding establishment. (lp#1480679)
* bug fix: inlined functions surrounded by nested macrolets are properly
inlined. (lp#309123)
changes in sbcl-1.2.14 relative to sbcl-1.2.13:
* minor incompatible change: The name of a compiled anonymous lambda
as returned by the third value of FUNCTION-LAMBDA-EXPRESSION can have
a lambda-list-like list following the introductory LAMBDA that is not
in general a syntactically valid lambda list. Specifically, it won't
retain default values, supplied-p variables, or &KEY or &AUX bindings.
* enhancement: DESTRUCTURING-BIND has been totally reimplemented from
scratch to address a handful of performance and correctness issues.
Some minor behavioral differences exist regarding order of evaluation
of default forms for unsupplied &OPTIONAL and &KEY arguments
when nested destructuring patterns are involved.
(lp#707556, lp#707573, lp#707578, lp#708051)
* enhancement: DEFCONSTANT and DEFSTRUCT respect package locks. (lp#1186238,
lp#1036716)
* enhancement: sb-unicode:normalize-string has a new optional argument,
FILTER, a callback which controls which decomposed characters are
collected. Useful for stripping away diacritics more efficiently.
* bug fix: (TYPE-OF ARRAY) for a non-simple array is subject to change
after a call of ADJUST-ARRAY. (lp#1333731)
* bug fix: Dynamic-extent allocation with a loop between allocating a value
and the start of its environment no longer discards the allocated data
when the loop is taken. (lp#1472785)
* bug fix: Variable-reference elimination no longer generates incorrect code
under certain circumstances. (lp#1446891)
* bug fix: variables with EQL types are no longer treated as constants by
VOPs, which caused problems with closures being allocated for such
variables, but they remained unused. (lp#1390149)
* bug fix: Windows installer generates registry key name
correctly. (lp#1476447)
changes in sbcl-1.2.13 relative to sbcl-1.2.12:
* incompatible change: on success, TRY-SEMAPHORE and WAIT-ON-SEMAPHORE
return the new count
* enhancement: WAIT-ON-SEMAPHORE accepts a decrement parameter
* enhancement: JOIN-THREAD allows distinguishing timeout vs. abort in all
situations
* enhancement: On Windows DBG_PRINTEXCEPTION_C is handled and its message is
printed. (lp#1437947)
* bug-fix: TRUENAME works properly on broken symlinks presented as
directories. (lp#1400003)
* bug fix: Inlined DPB and DEPOSIT-FIELD don't interfere with left-to-right
order of argument evaluation. (lp#1458190)
* bug fix: (SETF (LDB (BYTE 1 2 JUNK) X) 0) is rightly rejected.
* bug fix: DEFSETF lambda lists should not permit argument destructuring.
* bug fix: calls to (SETF SLOT-VALUE) on a missing slot would in certain
situations incorrectly return the result of a SLOT-MISSING method
instead of always returning the new value. (lp#1460381)
* bug fix: a DEFMACRO occurring not at toplevel and capturing parts of
its lexical environment (thus being a closure) caused expressions
involving the macro name to cause corruption in the pretty-printer
due to faulty introspection of the lambda list of a closure.
* bug fix: out of line MAP/MAP-INTO check that the results produced by the
function are of the matching sequence type. (lp#1459581)
* bug fix: pretty-printing of '(LET `((,X ,Y)) :B) is handled correctly.
changes in sbcl-1.2.12 relative to sbcl-1.2.11:
* minor incompatible change: the SB-C::*POLICY* variable is no longer
a list. Code which manipulated it as such (including but not limited
to non-bundled releases of ASDF) will need to be revised.
* enhancement: The input stream for COMPILE-FILE implements
STREAM-LINE-COLUMN.
* enhancement: EVAL errors that occur by way of LOAD report the starting
line and column number of the erring toplevel form. (lp#565247)
* optimization: better MAP and MAP-INTO on known vector result types.
* bug fix: Read/modify/write macros accessing a place which is a
composition of CAR+CDR operations, such as (SHIFTF (CADR X) (ELT V 0)),
do not access subforms more than once. (lp#1450968)
* bug fix: short form of DEFSETF no longer allows trailing junk.
* bug fix: DEFINE-MODIFY-MACRO respects the provisions of CLHS 5.1.3
regarding argument evaluation order. (lp#1452539)
* bug fix: POP works as specified in CLHS if the setter for its
argument has a side-effect on the existing CAR value. (lp#1454021)
* bug fix: Reading "#()" with a positive numeric argument signals a
reader error. As specified, reading "#1()" has undefined consequences,
so correct portable code should be indifferent to this. (lp#1252100)
* bug fix: Malformed reader conditionals such as "(#-no-such-feature)"
and "(#+sbcl)" no longer parse as NIL. (lp#1454400)
changes in sbcl-1.2.11 relative to sbcl-1.2.10:
* enhancement: SET-PPRINT-DISPATCH will warn when given an expression in
which any part is unrecognizable as a legal type-specifier.
The dispatch table will be altered, but the new entry is disabled.
Subsequent type-defining forms will cause pprint-dispatch tables to
re-examine whether any disabled entries should be enabled. (lp#1429520)
* enhancement: Loading code containing calls to a deprecated function will,
under most circumstances, signal warnings similar to compiling such code.
The usual caveat holds about not detecting calls through a computed name,
as in (funcall (intern "DEPRECATED-FUN" "SB-EXT")).
* enhancement: (SB-EXT:COMPILE-FILE-LINE) is a new macro that expands
to a constant (VALUES integer integer) indicating the source line/column
from which it was read, intended for logging Lisp runtime errors in
a style similar to that afforded by the C preprocessor __LINE__ macro.
Similarly (SB-EXT:COMPILE-FILE-POSITION) returns a position in characters.
* enhancement: improved source locations for VOPs, alien types and
declarations.
* bug fix: functions in :FINAL deprecation have the correct docstring.
No visible change, as no such functions presently exist. (lp#1439151)
* bug fix: (SETF (FDEFINITION this) (FDEFINITION OTHER)) signals an error
if OTHER names either a macro or special-operator. (lp#1439921)
changes in sbcl-1.2.10 relative to sbcl-1.2.9:
* minor incompatible change: all SOCKINT::WIN32-* functions have been
deprecated with EARLY deprecation state
* minor incompatible change: performing introspection via the system-internal
SB-INT:INFO function could expose that :TYPE :TRANSLATOR is not necessarily
a function, as it always was before. (Affects swank-fancy-inspector)
* enhancement: The value of SXHASH on bit-vectors of length equal to the
word size now depends on the vector's contents instead of being constant;
its value on bit-vectors of length divisible by the word size now depends
also on the contents of the vector's last word.
* bug-fix: sb-bsd-sockets on win32 uses proper C function declarations.
(lp#1426667)
* bug fix: A new dead code elimination phase removes dead code loops
that confuse stack analysis. (lp#1255782, lp#308914)
* bug fix: A toplevel form which was simple enough to bypass the main
compiler in COMPILE-FILE, and which contained an empty SETQ or PROGN
would produce an invalid fasl file. (lp#1427050)
* bug fix: The compiler no longer signals an internal error when
encountering invalid FUNCTION forms like (function 1)
* bug fix: express proper dependencies in the ASDF contrib, to support
systems where make runs in parallel. (lp#1434768; thanks to Nikhil
Benesch)
changes in sbcl-1.2.9 relative to sbcl-1.2.8:
* minor incompatible change and bug fix: unboxed numeric constants
on x86oids are arranged in memory differently, and the disassembler
does not show them separately in DISASSEMBLE, but does
if DISASSEMBLE-CODE-COMPONENT is used. (lp#1421987)
* optimization: The compiler's treatment of type specifiers makes
it slightly faster and more memory-efficient. Portable code
should be indifferent to this change, however, users of
SB-INTROSPECT:FUNCTION-TYPE might notice that (MEMBER T NIL)
and (MEMBER NIL T) are both internally collapsed to the former,
so that the latter can never be obtained as part of an FTYPE.
* optimization: a TYPEP call in which the second argument is not a
QUOTE form but nevertheless recognized as a compile-time constant
might open-code the test. One scenario for this involves backquote,
such as (TYPEP x `(my-type ,some-arg)). Code which relied upon
deferring until runtime should declare (NOTINLINE TYPEP).
[Due to the sematic constraints of DEFTYPE etc in in CLHS 3.2.2.3,
code requiring delayed evaluation could be unportable though.]
* enhancement: unused variables at the top-level are now reported.
(lp#492200)
* bug fix: DEFCLASS handles cyclic {super,meta}class relations better
(lp#1418883)
* bug fix: compiler no longer signals an error when compiling certain
function calls. (lp#1416704, lp#404441, lp#1417822, lp#1234919)
* bug fix: compiler doesn't stumble on a LOGIOR transform. (lp#1389433)
* bug fix: more robust debugger and backtraces. (lp#1413850, lp#1099500,
lp#1412881, lp#945261, lp#1419205, lp#1409402)
* bug fix: files larger than 4GB can now be compiled.
* bug fix: x86 truncated results from 64-bit foreign functions to 32 bits.
* bug fix: file-position didn't work on large files on win32. (lp#1271545)
* bug fix: callbacks from foreign threads can work without enabling
sb-safepoint.
* bug fix: sb-introspect:function-lambda-list works properly on interpeted
macros. (lp#1387404)
* bug fix: ADJUST-ARRAY properly handles non-adjustable arrays. (lp#886418)
* bug fix: compiler no longer fails to dump a multidimensional array
constant involving a circular reference to itself
* bug fix: conditional and nested DX allocation no longer confuse the
compiler in STACK analysis. (lp#1044465)
* bug fix: sb-rotate-byte constant folding bug fixed. (lp#1423682)
changes in sbcl-1.2.8 relative to sbcl-1.2.7:
* enhancement: better error and warning messages. (lp#1314767, lp#736383)
* enhancement: backtrace for invalid argument count produces the exact
supplied arguments including the extra ones, on x86, x86-64 and ARM.
* enhancement: a STYLE-WARNING is signaled for DEFSTRUCT accessors which
are used before the structure is defined; similarly for the predicate.
* optimization: FORMAT NIL with only ~a and string arguments is transformed
into CONCATENATE.
* optimization: POSITION and FIND when inlined into code that is compiled
with qualities of safety < 2 and speed > space will no longer signal
an error on circular lists, but will potentially loop forever if given
no :END constraint. As was always the case, calls that are not inlined
are safe regardless of lexical policy.
* bug fix: CLOS methods compiled with (OPTIMIZE (DEBUG 0))
no longer cause debugger failure when printing a backtrace
* bug fix: more resilience to deleted code. (lp#1308328, lp#1390544)
* bug fix: the CLHS example of MAKE-LOAD-FORM involving TREE-WITH-PARENT
did not work, and now it does.
changes in sbcl-1.2.7 relative to sbcl-1.2.6:
* optimization: returning constant values refers to preboxed constants
more reliably. (lp#1398785)
* enhancement: a STYLE-WARNING is produced if a compiler-macro is defined
for a function after at least one ordinary (not inlined) call to that
function was compiled, indicating a likely compilation order problem.
Likewise a warning ensues if a call is compiled to a function
that is subsequently proclaimed INLINE.
* enhancement: always lose() when something goes wrong while saving a core
(instead of just printing an error on stderr in some situations).
* enhancement: frames in the debugger are now restartable by default.
* bug fix: restore error handling on Windows x86.
* bug fix: MAKE-SEQUENCE detects type errors in its :INITIAL-ELEMENT
at compile-time when possible. (lp#330299)
* bug fix: parsing of malformed type specifiers no longer results
in a memory-fault-error.
* bug fix: LOOP properly destructures nested lists in WITH.
* bug fix: MACROEXPANDing the redefinition of an alien structure type no
longer signals the wrong error.
* bug fix: PROGV doesn't get confused by forced DEBUG 3 (lp#1405456).
changes in sbcl-1.2.6 relative to sbcl-1.2.5:
* enhancement: SERVE-EVENTS uses the poll() system call in lieu of
select() if the OS has the former. Previously poll() was used
only if waiting on exactly one file descriptor.
* enhancement: efficiency of access to untagged structure slots is improved
on x86-64, and the order of slots in memory is exactly as specified by
defstruct, simplifying use of structures as arguments to foreign calls.
* bug fix: SB-DEBUG:ARG now works in all TRACE options which evaluate forms.
(lp#1357826)
* bug fix: GC memory corruption during internal memory handling.
* bug fix: duplicate effective-slot-definition objects as compared
by EQ on name could be present in CLASS-SLOTS of a class whose
metaclass was structure-class or condition-class. (lp#1049423)
* bug fix: HANDLER-BIND with empty bindings works again; regression in
1.2.5. (lp#1388707)
* bug fix: ATOMIC-INCF works on structure slots in interpreted code.
(lp#1381867)
* bug fix: MAKE-ARRAY properly handles character types like (eql #\a) and
(member #\a #\c). (lp#1392068)
* bug fix: READ sometimes accidentally preserved a whitespace character
after a token when it should not have. (lp#327790)
changes in sbcl-1.2.5 relative to sbcl-1.2.4:
* enhancement: sb-bsd-sockets now has basic support for IPv6
* enhancement: An sb-unicode package has been added, containing
many functions related to handling Unicode text
* enhancement: The reader now normalizes symbols to Normalization
Form KC (NFKC). This behavior can be disabled with
SB-EXT:READTABLE-NORMALIZATION
* enhancement: a style-warning is signaled if OPTIMIZE declarations
multiply specify a quality with differing values. (lp#310267)
* bug fix: conservatively pointed to pages wipe out unused dwords so
that they cannot act as false roots in turn.
* bug fix: the walker's handling of lexical variable and symbol-macro
bindings is improved (lp#375326, lp#1368305)
* bug fix: HANDLER-{BIND,CASE} no longer drop into ldb when a clause
contains an undefined condition type; regression in 1.1.19 (lp#1378939)
* bug fix: in interpreted code, inequality predicates did not type-check
arguments that weren't examined, and a 1-argument use of MIN or MAX
accepted a complex number. (lp#1373702)
* bug fix: APROPOS and APROPOS-LIST handle inherited symbols correctly.
(lp#1364413, thanks to Zach Beane)
changes in sbcl-1.2.4 relative to sbcl-1.2.3:
* enhancement: the sequence functions MAP, CONCATENATE and MERGE now call
the new generic functions SEQUENCE:MAP, SEQUENCE:CONCATENATE and
SEQUENCE:MERGE respectively when the specified result type designates an
extended sequence.
* bug fix: Wrong binding order of supplied-p parameters in macro lambda
lists. (lp#721135)
* bug fix: VALIDATE-SUPERCLASS returns T when the superclass is the
universal superclass (lp#1332983)
* bug fix: reading an uninterned symbol whose print name has the
syntax of an integer signals an error. (lp#310062)
* bug fix: the walker is less likely to be confused when walking LET* forms
with special bindings and use of those bindings and others of the same
name.
* bug fix: a rare bug affecting 32-bit platforms resulting in a
fatal condition with the message "Globaldb rehash failure" has been fixed.
changes in sbcl-1.2.3 relative to sbcl-1.2.2:
* enhancement: DOCUMENTATION works on instances of
FUNCALLABLE-STANDARD-CLASS
* enhancement: ASSERT reports arguments of calls to lexical functions in
additional to global functions.
* enhancement: ASDF updated to 3.1.3
* enhancement: UIOP can be loaded without ASDF.
* bug fix: some methods on CHANGE-CLASS did not finalize the new class
before accessing its class-precedence list.
* bug fix: CHANGE-CLASS no longer fails on unbound slots in the source
object.
* bug fix: CHANGE-CLASS signals an appropriate error when the destination
class is a FORWARD-REFERENCED-CLASS.
* bug fix: CHANGE-CLASS no longer signals bogus TYPE-ERRORs for slots for
which initargs have been supplied.
* bug fix: saving cores on ARM was broken since the introduction of GENCGC.
(lp#1349795)
* bug fix: macroexpanding a backquoted expression involving ",."
outside of the compiler failed. (lp#1354623)
changes in sbcl-1.2.2 relative to sbcl-1.2.1:
* incompatible change: the #\` ("backquote") reader macro was reimplemented
to support robust pretty-printing. Reading a form involving #\` produces
an invocation of the QUASIQUOTE ordinary macro which may contain subforms
that are not lists. Code that unportably attempts operations on
un-evaluated forms resulting therefrom, e.g.
(SUBST a b (read-from-string "`(x (,y))"))
might generate incorrect results and/or errors.
* enhancement: support for GNU/kFreeBSD x86.
* enhancement: ATOMIC-INCF and ATOMIC-DECF can operate on (CAR x), (CDR x)
and DEFGLOBAL variables of type fixnum.
* enhancement: arithmetic constant reduction is now performed on defconstant
constants too. (lp#1337069).
* bug fix: certain ftype proclamations containing &optional t &rest t no
longer cause subsequent definitions to signal bogus style-warnings.
* bug fix: #\Bell and #\Bel now read to different characters. (lp#1319452).
* bug fix: CAS SYMBOL-VALUE on locally special variables didn't work.
(lp#1098355)
changes in sbcl-1.2.1 relative to sbcl-1.2.0:
* enhancement: GENCGC is enabled on ARM.
* enhancement: better error reporting for invalid calls to local functions.
* enhancement: support for GNU/kFreeBSD distributions. (lp#1079954, thanks
to Christoph Egger)
* enhancement: experimental support for threads on NetBSD/x86-64. (thanks
to Robert Swindells)
* enhancement: support for DragonFly BSD. (lp#1292845, thanks to Vasily
Postnicov)
* bug fix: TYPE-OF must not return AND/OR/NOT expressions.
(lp#1317308)
* bug fix: accessing NIL arrays stopped producing errors. (lp#1311421)
* bug fix: DISASSEMBLE no longer prints unwanted stuff. (lp#1251861)
* bug fix: compiling SVREF on unknown types no longer produces scary errors.
(lp#1258716)
* bug fix: assorted LOOP fixes and enhancements. (lp#645534, lp#1322923,
lp#700538, lp#613876, lp#695286, lp#798388)
* bug fix: silence compiler notes from the SEARCH transform. (lp#1071310)
* bug fix: array type intersection handles T and unknown element types
correctly. (lp#1258716)
* bug fix: fix a corner case in array type unparsing that would result in
misleading translations from our internal type representation.
* bug fix: array-rank now sees through union and intersection types.
(lp#1310574)
* bug fix: when DECLARE expressions are in the wrong place, be careful not
to attempt to evaluate the subforms. (lp#573747; thanks to Roman
Marynchak)
* bug fix: misplaced and missing declarations in DEFTRANSFORM. (lp#1066451)
* bug fix: FBOUNDP returned NIL for a class of incorrect function names
instead of signaling an error. (lp#1095483)
* bug fix: fix a compile-time AVER in regalloc: lifetime analysis
used to (rarely) introduce duplicate conflict markers in a single
TN/block pair. (lp#1327008)
changes in sbcl-1.2.0 relative to sbcl-1.1.18:
* bug fix: read-time-eval backquote context mixup. (lp#1321047)
* enhancement: when SAVE-LISP-AND-DIE fails due multiple threads, the
report of the signaled conditions lists currently running threads.
* enhancement: ported to ARM linux.
* enhancement: sb-gmp contrib has been updated. (lp#1305266)
* enhancement: new contrib sb-mpfr by Stephan Frank.
* bug fix: MAKE-SEQUENCE works with sequence types defined via DEFTYPE
(lp#1315846, thanks to Mark Cox)
* bug fix: SET-[DISPATCH-]MACRO-CHARACTER should coerce a symbolic
function-designator to a function only as needed. (lp#1012335)
* bug fix: remove references to asdf-install from the manual. (lp#1207544,
thanks to Thomas Hlavaty)
* bug fix: handle --without-xxx options to make.sh more carefully.
(lp#1246665, thanks to Richard M Kreuter)
* bug fix: prevent maybe-delete-exit from doing semantically broken things
with local exits. (lp#309099, lp#518099, lp#533930)
* bug fix: attempts to subclass BUILT-IN-CLASSes signal errors, as required
by AMOP. (lp#861004)
changes in sbcl-1.1.18 relative to sbcl-1.1.17:
* optimization: COERCE is now more effecient for more cases when the type is
known at compile-time.
(lp#1309815)
* bug fix: correctly inherit condition initforms. (lp#1300904)
* bug fix: properly pprint literal functions inside nested lists.
(lp#1300716)
* bug fix: more-correctly handle array-type unity (broken for ages, causing
compilation problems since 1.1.13.x due to smarter TYPEP type propagation,
reported by jasom in #lisp).
changes in sbcl-1.1.17 relative to sbcl-1.1.16:
* enhancement: printing backtraces respects
SB-DEBUG:*DEBUG-PRINT-VARIABLE-ALIST* when printing call arguments
(lp#1261646)
* optimization: defstruct out-of-line accessor are now as fast as inlined.
(lp#1264924)
* bug fix: INVOKE-RESTART-INTERACTIVELY no longer refuses to invoke RESTART
instances with a test-function (reported by Vivitron in #sbcl)
* bug fix: STREAM-ERROR-POSITION-INFO fails in fewer situations (lp#1264902)
* bug fix: Change COND error message (lp#1254511)
* bug fix: LOAD is no longer confused when called on a directory.
(lp#1077996)
* bug fix: MAKE-CONDITION reports names of missing condition classes
properly (lp#1199223)
* bug fix: restore building with clang. (lp#1293643)
* bug fix: restore building on SPARC (broken since 1.1.15).
* bug fix: improved FreeBSD support.
* bug fix: PPC floating point conversion corrupted stack.
changes in sbcl-1.1.16 relative to sbcl-1.1.15:
* minor incompatible change: improve read/print consistency for pathnames on
Win32, by using the circumflex character #\^ as the escape character.
(lp#673625)
* enhancement: SB-EXT:DEFINE-LOAD-TIME-GLOBAL. (lp#1253688)
* enhancement: Loading fasls with symbols from an undefined package includes
the name of the symbol in the error message.
* bug fix: problems when redefining classes and doing TYPEP on classes
concurrently. (lp#1272742)
* bug fixes to the x86-64 XCHG instruction:
** it was misencoded when used with RAX, R8-R15 registers. (reported by
Eric Marsden)
** it was misencoded when used to exchange EAX with itself.
** the disassembler wrongly printed XCHG RAX, R8 and the corresponding
32- and 16-bit variations as NOP.
* bug fix: the disassembler outputs source annotations in the right place
and no longer randomly drops some of them. (lp#1249205)
* bug fix: fix commutative-arg-swap from introducing undumpable structures
into code, prevent code with errors from being compiled. (lp#1276282)
* bug fix: pathnames with :back in their directory component are succeffully
resolved.
* bug fix: the deterministic profiler now uses ENCAPSULATE functionality to
wrap functions around. (lp#309086)
changes in sbcl-1.1.15 relative to sbcl-1.1.14:
* new feature: the iterative spilling/coloring register allocator developed
by Alexandra Barchunova during Google Summer of Code 2013 is now merged
in. By default, it only activates for functions that optimize with
(speed 3) and (> speed compilation-speed), but setting
sb-regalloc:*register-allocation-method* to :iterative forces its
execution. The previous behaviour can be obtained by instead setting that