libera/#sbcl - IRC Chatlog
Search
5:10:54
|3b|
hmm, maybe a bit faster, but not as much as i hoped... back to wishing i had a profiler i guess :p
6:08:33
Josh_2
https://github.com/thephoeron/cl-isaac/issues/10 I put this here to make sbcl devs aware of this
6:23:24
|3b|
is the part that sbcl devs would care about that restrict-compiler-policy isn't working on macos?
8:08:05
|3b|
it also mentions something about THE with high safety, but not /what/ and seems to think it is working as intended so not a bug?
8:09:26
|3b|
behavior of THE when the value isn't that type (as in the earlier comments) is undefined, so is expected to be non-portable across implementations
8:26:24
|3b|
Josh_2: the pasted examples in the bug don't seem to show the code being recompiled in the macos case
8:27:36
Josh_2
Okay well unfortunately I dont actually know whats going on with cl-isaac itself, I am simply a messenger in this case. However I can say that I have used a build pipeline with gitlab to try and deploy software that was depending on cl-isaac that used restrict-compiler-policy and this problem has occurred when its set to safety 3
8:27:41
|3b|
ACTION 's guess was something else changing the restriction, but failing to recompile seems much more likely (and fits the available evidence)
8:31:53
|3b|
ACTION couldn't find any information about what was wrong with THE, particularly in context of undefined behavior where nothing is 'wrong' at the CL level
8:32:35
|3b|
(so SBCL and some other impl can do completely different things and still be 'correct' to their own interpretations, and users can't complain since their code is non conformant)
8:33:38
Josh_2
"Digging into SBCL internals, I discovered some completely non-portable behaviour surrounding the special-form THE when safety >= 2."
8:34:33
jackdaniel
it is a conforming behavior to not trust the - undefined consequences are undefined
8:37:17
jackdaniel
|3b|: how do you distinguish the behavior of trusted and untrusted the in a conforming orogram?
8:38:13
|3b|
ACTION means "The consequences are undefined if the values yielded by the form are not of the type specified by value-type. "
8:40:02
jackdaniel
you are right. I mean that whatever sbcl does with THE is not non-conforming or not portable. reading what you have said earlier we seem to agree :)
8:40:04
|3b|
the code in question masks off 64 bits of (the (u-b 64) ...), so pretty obviously doesn't actually expect that value to be u-b 64
8:40:34
|3b|
right, sbcl is conformant and internally consistent in how it chooses to behave in that case
8:44:06
stassats`
why doesn't trace respect the print variables on function calls, but does so on returns?