freenode/#sbcl - IRC Chatlog
Search
14:18:04
Xach
Hmm, is this an SBCL issue? https://twitter.com/electrolemon/status/835693239294271489
14:29:05
flip214
for these any modification is bad (in practice, don't know what the standard says?!)
14:32:30
Xach
http://report.quicklisp.org/2018-09-06/failure-report.html is a run with sbcl 1.4.11 - a number of the failures are foreign libraries or other issues, but a big chunk are sbcl-related.
14:34:25
flip214
hemlock has this: ; The policy SB-C::MERGE-TAIL-CALLS has been deprecated as of SBCL version 1.0.53.74.
14:34:51
flip214
and the error is READ error during COMPILE-FILE: Symbol "CLOSURE-HEADER-WIDETAG" not found in the SB-VM package.
14:35:59
flip214
Destructive function SB-KERNEL:%SETELT called on constant data: (#<sb-c::combination ...> ...)
14:37:01
flip214
so either SBCL needs to provide fresh (non-constant) lists, or all that modifying of sbcl-internal data needs fixing
14:38:09
flip214
cl-ana: Destructive function NREVERSE called on constant data: (#<SB-C::COMBINATION :FUN #< ...>...)
14:40:27
scymtym
http://report.quicklisp.org/2018-09-06/failure-report/kenzo.html#kenzo may be caused by overly aggressive type derivation, assuming CAT::CHANGE-CHCM-TO-CLGB CHANGE-CLASSes the type to CAT::COALGEBRA
14:41:20
scymtym
seems to be the case: https://github.com/gheber/kenzo/blob/30a4963bcc9c670222b2baabb180cabdfbf3f829/src/coalgebras.lisp#L53
14:48:58
flip214
that's what http://report.quicklisp.org/2018-09-06/failure-report/cl-s3.html#cl-s3 says
14:55:06
scymtym
pkhuong: i'm not sure i understand the kenzo thing. the first warning is about https://github.com/gheber/kenzo/blob/30a4963bcc9c670222b2baabb180cabdfbf3f829/src/suspensions.lisp#L108 . do you consider the irslt binding and declaration illegal?
14:56:09
Xach
pkhuong: hmm, for these, I think just using sbcl 1.4.11 and quickload :verbose t would suffice. They're old libraries newly broken by sbcl
14:57:01
Xach
pkhuong: my docker setup gets you 2/3rds of the way there, but there's an additional 1/3rd to kick things off and produce reports
14:58:22
Xach
The manual-ish part is setting up the right host directories with the right host contents, then running the "build everything" bit within emacs.
15:01:32
scymtym
since the kenzo library didn't change after 2016, we seem to have changed something
15:28:02
stassats
the kenzo thing, in SUSPENSION-1, it does (when (typep irslt 'coalgebra) (return-from suspension-1 irslt))
15:35:28
stassats
so, basically we can't do anything with standard-class types, since they can be change-classed
15:49:38
stassats
it's all pretty difficult, i think to get kenzo back to work i'll just adjust constraint propagation
16:06:52
Xach
Any thoughts on http://report.quicklisp.org/2018-09-06/failure-report/inquisitor.html#inquisitor-flexi ?
16:25:31
stassats
would that be https://github.com/t-sin/inquisitor/commit/524ec5bf8a62063bcb62cc5613551c4ec65816de ?
17:08:15
stassats
some programs might be deoptimized, but clos type propagation is not that important, it only helps with type checks
17:30:14
flip214
Am I missing something? I've got (speed 3) (debug 0) but then get assembler sequences like these: https://pastebin.com/xrSVge2T
17:31:28
flip214
the value from -376 is copied into two other stack locations, destroyed by an operation that could've use a different register, and after the condition gets moved around some more stack locations
17:43:31
flip214
stassats: well, with the level I _wanted_ the result looks much better - as I'm used to, with SBCL ;)
18:15:28
Xach
Here's another one - http://report.quicklisp.org/2018-09-07/failure-report/clml.html#clml
18:26:10
aeth
#lisp is too busy talking about Microsoft and Europe (two dueling off-topic topics at the same time) so I guess I'll just ask in here if my idea is any good since the people here know about optimized implementation internals. I was responding to the earlier topic in #lisp about "low level lisp"
18:26:17
aeth
I wonder if immutable arrays solves the array of struct problem. i.e. the array itself is immutable, but not necessarily the object slots for the contained objects, so the compiler is free to optimize for objects that can't change size. (Including structure-objects? Array-level immutability means even inheritance won't matter because allocated as simply foo means they are just a foo!)
18:26:26
aeth
Immutable arrays gives you AoS because you want COPY-INTO (already exists as REPLACE for sequences) and not SETF to copy that pattern, anyway. A lot of low-level programmers seem to consider AoS as a necessary feature when they list features and it seems to be the main thing CL doesn't do. This comes up enough that I keep refining this idea.
18:31:06
pfdietz
aeth: you still don't get object identity of the structs. Primitive immutable values (numbers, for example) get to play fast and loose with EQ.
18:35:11
aeth
pfdietz: I think the issue with relying on the GC there is that the order could differ from the desired order
18:38:09
aeth
pfdietz: It wouldn't be the end of the world to have a separate equality, though. Numbers (your example) are usually handled with = in almost every context
18:38:11
pfdietz
My favorite trick for immutable structures is EQUAL with short circuiting: if you have two locations X and Y that reference immutable objects, and you test for equality, if they are equal, then make Y refer directly to X. The more you compare, the more you share, with no overhead of hash consing.
18:39:10
pfdietz
EQL would be the natural operator for immutable object comparison. Think of it as "EQ if we had hash consing".
18:40:01
aeth
Just to be clear, I was proposing immutable containers of (potentially) mutable objects.
18:41:23
pfdietz
EQL of two immutable structs = same struct type and EQL for all the fields in the two structs, I am imagining.
18:45:25
pfdietz
Mutability drives the need for object identity. If you don't have explicit EQ, you can still determine if two objects are EQ by modifying one and seeing if the other changes.
22:27:10
AeroNotix
I'm looking for a way to list all mutexes, is there an API for that. Looking at the code for _creating_ mutexes, it doesn't seem like there is an API for this. Though interested if there is
22:31:03
pkhuong
if you want to track your own usage, you can write a wrapper, perhaps with weak hash tables