libera/#sbcl - IRC Chatlog
Search
13:40:31
phoe
Krystof: AFAIK SBCL at some point in time had a compile-time warning for things like (defstruct foo (x 0 :type string)) - do you know if I remember correctly and what happened to it?
13:41:48
Krystof
I can't remember when it got removed. (I think it was unintentionally, as a side-effect of something else)
13:45:32
phoe
1.5.9 mentions: enhancements: more thorough compile-time type checking of various initforms (defclass, &key, defstruct).
14:25:12
phoe
I mean, it's not the first time SBCL would issue type warnings that broke already broken code
14:25:15
phoe
example being https://github.com/AccelerationNet/access/commit/cadf09373da4afc739cf177d0fcea3612778a3f7
15:18:00
scymtym
phoe: try (locally (declare (optimize (safety 0))) (defstruct f (x (print t) :type fixnum)))
15:20:54
scymtym
phoe: i guess the reasoning is like "it breaks too much stuff if enabled by default, but for (safety 0) the type error can cause a (runtime) crash so the warning is justified there"
15:22:25
phoe
scymtym: is the "breaks too much stuff if enabled by default" documented anywhere? asking for the purpose of writing a SBCL RFC-esque mail for enabling additional compiler warnings, codename SB-PEDANTIC
15:24:28
scymtym
phoe: i think https://irclog.tymoon.eu/freenode/%23sbcl?around=1574802609#1574802609
15:28:59
scymtym
in any case, bac9b5e7a introduced the check and 1513ac241 (right before the release) restricted the check to (safety 0) so that's the timeframe in which the discussion (if any) must have happened
15:38:40
Krystof
my memory is that there was a primordial check for defstruct slot initforms and type, well before 1.0
16:02:38
phoe
which SBCL-defined packages are "external" and therefore meant to be depended on by other people, and which are "internal"? I can't see a list in the manual
16:05:40
phoe
still, there's 38 SB-FOO packages I have access in my image; I'd rather have an explicit ones of those that I should touch as a user
16:06:41
mfiano
My guess is stay away from sb-int, sb-c, sb-vm, and maybe more. If in doubt, look at nibbles :D
19:09:28
karlosz
wait, so is the consensus that we want to have (defstruct foo (x nil :type fixnum)) give a warning or not?
19:11:27
phoe
and the warning should become available once this whole idea for opt-in compiler warnings manifests itself
19:11:52
phoe
I should be able to write some sort of RFC soon and send it for review before it hits sbcl-devel
19:22:47
phoe
AFAIK it's the idea that the world will never be ready and adding more and more warnings harms backwards compatibility with buggy-but-working software systems by breaking their builds
19:23:13
phoe
so people who are developing new code can turn the warnings on, whereas people who have projects that need to Just Build™ can keep on using the defaults
19:24:59
karlosz
if the "world" = quicklisp, wouldnt it be easier and more effective if the slot typr mismatch initform warning is made its own condition? then quicklisp can just handle it specially
19:27:49
phoe
the world = quicklisp + the rest, and I have no idea if/how much code in "the rest" would be affected by that
19:35:37
phoe
karlosz: the best I know of is (alexandria:required-argument) I think which basically signals an error
19:36:32
phoe
"Required argument :FOO missing." with the stack frame showing the constructor - looks good enough for me