libera/#sbcl - IRC Chatlog
Search
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
19:41:17
karlosz
would be even nicer if defstruct bound required-argument as a local function for each slot
19:45:12
stassats
defclass doesn't have an initform problem, because it has defined unbound slot behavior
19:45:43
phoe
sure - just thought that a nice "this argument is required" behavior would also be useful
19:48:26
phoe
as for CDRs, no idea - but note that e.g. PLNs became widespread without the CDR process
19:49:25
phoe
all it takes is someone who decides to make it their goal and then persist until the goal is done
19:51:48
phoe
"...it is initialized by evaluating slot-initform in the slot description at the time the constructor function is called."
19:53:00
phoe
except I can't imagine a situation in which that line of thought is useful for programmers - other than "it used to build yesterday, don't break it for me"
19:53:43
phoe
a mistyped initform like that is a bomb waiting for ignition, and signaling a warning at compilation time will be useful for people who care
19:54:29
phoe
or rather - not everyone cares about software that built and worked fine yesterday but doesn't cleanly build today
19:54:30
karlosz
"If it is never needed, there can be no type-mismatch error, even if the type of the slot is specified; no warning should be issued in this case."
19:55:52
phoe
you can figure out that you need to issue a warning without evaluating SLOT-INITFORM if you can--- exactly
19:56:13
phoe
a quoted form or a self-evaluating object can be analyzed without "evaluating the SLOT-INITFORM"
19:56:51
karlosz
my take is that it would be consistent with how we treat warnings in the rest of the system if we always warned on initform type mismatches
19:57:16
mfiano
"If it is never needed" is talked about runtime evaluation due to the mention of structure instance. Issuing a warning at compile time should be fine?
19:57:57
phoe
karlosz: I agree, except now I remember that I was on #sbcl during the time when Xach posted that thing - the list of the failures was pretty long, hence I used the word "spectacular" before
19:57:59
karlosz
yeah thats how i read it too. again irrelevant because "must" is not included anyway
19:58:26
phoe
I'd be fine with a warning like that, but the question is, how many people are going to complain at SBCL afterwards
19:58:42
karlosz
our usual practice is to fix those libraries or ask that warnings not stop those cases?
20:06:07
|3b|
i thought the argument that code that relies code that is specified to error actually erroring isn't actually broken
20:06:53
|3b|
defstruct with bad initializers generates a constructor that will error if called, and that is the desired behavior
20:10:32
|3b|
so the valid place for a warning would be on calls to the constructor that don't specify a value for that slot (which actually sounds useful now that i think about it. would such a warning also be possible if the slot-initform was (error...)?)
20:13:15
mfiano
|3b|: If I am reading the spec correctly, then only if it does not also specify a :type.
20:21:10
|3b|
and if it wasn't clear, i meant a warning at the constructor call-site which would use an invalid or non-returning slot-initform
20:58:16
Krystof
there's a marginal complication to defstruct somewhere in the guts of boa constructors
21:00:54
Krystof
|3b|: but, the point about defstruct initforms not matching type is that people say there's not a good initform to use for complicated types. But (error "..."), or (missing-arg :foo) ..., is always a good initform for arbitrary types
21:04:02
|3b|
arguably i should just configure my editor properly, but i get little enough done without spending time to determine what "proper" configuration would be in the first place, and then actually implementing it
21:05:31
|3b|
(and if you want really bad, i do #+do (something) sometime for simple enough loop clauses :p)
21:08:32
|3b|
which, the #+, the emote, or working "properly"? (M-x describe-char says the emote is a violin)
21:13:48
|3b|
ACTION blames my being too lazy to use an irc setup with proper font handling rather than people who use interesting characters
21:14:34
|3b|
ACTION regularly has the same problem with math symbols too. maybe if i ever get around to getting 4k displays i can switch to nicer fonts and see things better
21:32:06
jdz
I got Emacs on Linux to display emojis using this code: https://github.com/alphapapa/ement.el#displaying-symbols-and-emojis
22:02:50
|3b|
ACTION is running emacs remotely, so it is just my choice of font on the local terminal causing problems