libera/#sbcl - IRC Chatlog
Search
9:57:03
Shinmera
Guess that means the only option left is to try and build on ARM64/Linux and then manually massage the ELF core to work on the Switch. Sigh.
10:00:05
Shinmera
So next step would be figuring out how to get a basic ELF core binary going on Linux that doesn't require JIT to start up.
11:13:40
sm2n
I don't know how or when it happened or who did it, but for the last little while sbcl has been throwing a standard error on heap exhaustion rather than dropping into ldb, which is really great. I just want to say that's helped me on more than one occasion, so thank you to whoever did that
12:28:58
flip214
current git head throws a lot of notes for local-time... (only) one example is at https://paste.debian.net/hidden/7d12c56c/
12:29:44
flip214
perhaps the note could be modified to read ", not a (OR DOUBLE-FLOAT SINGLE-FLOAT ...)", ie. compressing all these notes into one
13:22:11
scymtym
that would change the meaning since the optimization requires a subtype of one of the listed types, not a subtype of their union
13:32:00
scymtym
| normally has multiple escape syntax. i don't think such a one-off special notation helps
14:54:37
mrcom
karlosz: Seeing the "can't dump" msgs on sbcl 2.2.4. Wasn't seeing it on 2.1.something.
14:55:47
mrcom
karlosz: However, upon reflection I've been depending upon implementation details. Using DEFCONST means it's fair game to be treated as a literial, correct?
14:59:02
mrcom
karlosz: But what I really want, and have been depending upon, is that FOO-CONST is a singleton instance of a FOO structure. I want (EQ x FOO-CONST) to work.
15:46:55
stassats
sm2n: nothing has changed. a lisp error means there's no more space when allocating
15:47:32
stassats
a heap exhausted crash means during garbage collection it can't copy non-garbage to a new location
15:49:40
stassats
can't make the dynamic space disjoint, can't always extend the current dynamic space
15:50:56
luis
I was thinking we could just reserve the hard limit, but signal a lisp error when committing beyond the soft limit.
15:53:00
luis
well, at least we get a chance to log the error, maybe even recover if a future GC manages to get heap usage below the soft limit
15:57:27
luis
I also want non-copying compaction when memory usage approaches 50% :D, but having a soft limit around 50% would be better than nothing!
16:08:40
|3b|
could the GC just pretend any object that it didn't have room to copy was pinned, then signal an error after the GC finished?
16:16:59
luis
does that give any chance of recovery in a scenario where a restart kills enough objects?
16:20:41
stassats
but they are like to be old, so old generations would need to be moved, which usually take up more space
16:36:21
luis
oh hey. I seem to somehow have gotten repeated handling of stack overflows working on win32! yay
16:40:49
luis
I'd paste proof on plaster.tymoon.eu but my brain can't unscramble the word flmiay right now
16:50:57
karlosz_
since that behavior is less surprising then having your situation sometimes work, sometimes not (because if you had referenced foo-const after the first non-constant-reference literal use of foo-const, it wouldn't work and you wouldnt be able to externalize the object
17:10:22
karlosz
Shinmera: shame about the JIT, but it seems like they at least debated the possibility of adding it
17:12:54
karlosz_
anyway, no JIT should still be OK. i've been messing around with the GC/safepoint mechanism on Windows recently a bit
17:14:08
karlosz_
even making the register values known to the GC is handled on the win32 backend in a way that will work on NX. windows basically shoves registers on the stack in exactly the way we talked about at els
17:15:24
karlosz
so the plan was to bootstrap on another arm machine, and transport the core, fixup some runtime values, and go
17:16:20
karlosz
the runtime on the host would need to be similar enough that the core would still be compatible with the switch
17:18:14
Shinmera
Core still has to be ELFinated and fused to the runtime as well, since we can't mmap it in either.
18:55:24
Shinmera
Just running into the annoying limitation that RENAME-FILE works fine if the target exists on Linux, but not Windows.
18:57:01
Shinmera
Is there a nice atomic way to do that, by the way? delete-file + rename-file seems kinda iffy.
19:34:33
luis
judging from the UIOP implementation, every other Lisp does the right thing on Windows
19:41:23
Shinmera
I also want a rename-file that doesn't have the frankly mind-boggling behaviour of merge-filing with the source pathname
19:42:53
|3b|
ACTION thinks merging is reasonable considering rest of pathname stuff, but should be more obvious how to get what people want from that :/
19:43:34
_death
I don't remember offhand, does clhs allow adding keywords to a function that doesn't use them in general?
19:44:03
Shinmera
and some implementations don't allow the type to be an empty string, or do something else weird with that.
19:48:20
|3b|
hmm, actually, renaming to "foo." seems to work too. wonder which field i was thinking of that needed manual make-pathname?
19:48:38
Shinmera
It's been some years since I did my survey of this crap across implementations for pathname-utils, but iirc there's some really annoying behaviour around this.
19:51:22
stassats
it's (merge-pathnames (make-pathname :name "xy" :type :unspecific) (make-pathname :name "xy" :type "type"))
19:52:53
luis
stassats: does that patch seem sensible? (I've become unaccustomed to pushing things without code review :D)
19:56:08
luis
that whole file is full of hard-coded constants. win32 takes binary compatibility seriously :) Do you mean that you don't like the new semantics or that you're fine with either grovelling or hardcoding?
20:01:56
luis
Shinmers'd argument of consistency with Linux/Mac seems sensible. I'll add that ACL and Lispworks also rewrite on windows.