freenode/#clasp - IRC Chatlog
Search
13:50:48
beach
Because you may have an integer that looks like a pointer, and if you compact, then you would incorrectly update that integer.
13:52:13
Shinmera
Yeah, so you need to pin things pointed to from the stack, which makes it hard to compact.
13:53:58
beach
Shinmera: Not only that. What if there is something there? What do you do to allocate then?
13:54:05
Bike
https://www.ravenbrook.com/project/mps/master/manual/html/topic/allocation.html#allocation-point-implementation well, here's mps's explanation.
14:00:11
beach
Bike: It might be worth for someone (at least drmeister) to find out, because if he expects cheap pointer bumping and conservative stack scanning at the same time, he should make sure they are simultaneously possible. And I would like to know how they do it in that case.
14:03:38
beach
Bike: I take it from the mention of "near lock free" on that page, that they do not have a per-thread nursery?
14:07:51
Bike
the lock is for when the buffer runs out of space and more has to be reserved. i think.
14:08:18
Bike
well, still not like thread local nurseries in that you can allocate something with an ap and then refer to it from another thread
16:05:45
Bike
the rc file load is specially hacked so that it doesn't rebind *package* or *readtable*. is that normal?
17:14:31
drmeister
Anything that looks like a pointer on the stack will pin whatever it looks like it points to so that those pinned things cannot move.
17:14:57
drmeister
My understanding is that sbcl uses the same approach. Conservative on the stack, precise on the heap.
17:17:40
drmeister
I'm in the airport about to board to Philadelphia - I'll be on for another 15 min or so.
17:23:44
Bike
really should figure out this peek-char thing. it seems to alter the internal state of the stream
17:32:47
Shinmera
unread-char (which peek-char is likely to use) says something that seems related: "Invoking peek-char or read-char commits all previous characters."
17:37:40
Bike
peek-char has this complicated mode where it skips over a bunch of characters before finding one to peek at, which i'm not so familiar with
17:52:40
Shinmera
I'm still kinda bothered by CL's definition of whitespace. Especially for lots of plaintext protocols you have to wing your own definition that's restricted to ASCII since that's what those protocols expect.
17:53:18
Shinmera
So far I've honestly never found a use for whitespace-p and peek-char T because of that
18:13:36
beach
I guess I should just ask someone who knows the SBCL garbage collector how it works. I can't figure out how to reconcile pinned objects in the middle of a nursery with compaction of the remaining objects and allocation by bumping a pointer.
19:50:34
Bike
::notify drmeister i figure you've already seen and worked out a fix for the Reader_O removal problem- but i'm looking at it and thinking we shouldn't be parsing the arguments strings at startup anyway
20:22:08
Bike
reading things as unicode but then only allowing 0x20 seems kind of gross, but i guess by text processing standards it's hardly anything
20:22:39
Bike
personally what bugs me is that it means peek-char has to worry about readtables and stuff instead of being only a lower level stream query
20:23:54
Bike
but it does occur to me that that means that you could make a readtable where the unicode spaces are alphabetic or whatever you like
20:26:34
Bike
you know how the readtable defines a "syntax type" for every character? whitespace is a syntax type
20:26:58
Bike
peek-char isn't hardcoded to skip 0x20, it's supposed to look at the readtable and go "oh i see, in this readtable this character is whitespace"
20:27:45
Shinmera
Okey, but does the readtable have an API to influence that? IIRC all the user can do is make macro characters and set the syntax from another char that already exists
20:28:53
Bike
Well I'm not sure what you're asking. I'm pretty sure that at least you can have it so that peek-char t only skips ascii whitespace.
20:37:24
Bike
it's kind of a shame that it's so complicated but you can't use it as a general parser
20:37:49
Shinmera
Yeah. Even for formats that are very lisp-like I've ended up rolling my own because I needed more control.
20:38:31
Shinmera
Eg my chat protocol basically uses cl sexprs, but I need precise control over what happens when unknown symbols are entered and how interning happens so the reader is already out
20:47:04
Shinmera
I really wonder if they just didn't think of that one somehow (how?!) or if they knew but didn't include it for some reason (why?!)
20:48:47
Bike
probably none of the antediluvian lisp machine languages had anything like it, and so it wasn't included
21:06:52
karlosz
::notify beach err, scratch that. the variable being assigned to is what we both mean. its not a terribly complex special case to add, but i fear that any manipulation with assignment instructions will end up having to test for something similar