freenode/#clasp - IRC Chatlog
Search
0:32:20
drmeister
It's in a ThirdLaw LLC area that you aren't connected to - so tell me if you are able to see it and edit it.
0:42:23
drmeister
Now - this is a proposal for one way to move forward. The rebuilding of C++ objects is a bit of an unknown for me - but if that's not too bad a problem then I think we can make this work.
0:43:13
Bike
from what i understand, martin wants to compact the arena and then pretty much just write it out verbatim
0:44:08
drmeister
It occurred to me as I was writing it. The bignum example was my best first example. bignums with lots of digits must be stored on the heap - it's probably got a resizable vector of parts that are on the C++ heap. We need to save that somehow and then regenerate it at load time.
0:45:34
drmeister
I describe what I think is a straightforward mechanism obj_save/obj_load that builds off of ideas that are in the MPS documentation - so the Ravenbrook folks will hopefully understand it right away.
0:46:33
drmeister
What it needs is details about objects that I should be able to recover - and maybe limiting ourselves to a subset of classes that can be written out this way.
0:46:55
Bike
i mean like, bignums for example - internally they could have a vector, or maybe a deep linked list or something
0:46:58
drmeister
The static analyzer should be able to help us identify classes that have pointers into the C++ heap.
0:47:45
drmeister
Yeah - but I wouldn't use that at all. I would just generate a text representation base10 of the bignum and write that out. Then recreate the bignum on loading from that string.
0:59:02
drmeister
Using ROOM we know what objects are in memory - and using the static analyzer I can figure out what classes have pointers to C++ memory.
1:03:59
drmeister
A question that is still buzzing around in my head is - "Is there another way" like changing the order in which objects are created at startup.
1:05:01
Bike
well, what we basically want to do is eliminate side effects at startup. that reduces complexity, bootstrap problems, and startup time.
1:34:31
drmeister
What are the side effects that we need to eliminate - (1) classes should all be defined at once at the start (2) functions should be bound to symbols at start.
7:26:22
scymtym
currently, INTERPRET-TOKEN receives an array of Booleans indicating whether a given token character was escaped
7:26:54
scymtym
this is insufficient for distinguishing .. from .||. (the former is illegal, the latter is a symbol)
7:28:13
scymtym
what i would like to do, and implemented prototypically, is passing a list of escaped ranges, which can be potentially empty
7:29:29
scymtym
this is also more efficient for a couple of things since in the common case, the current escape indicator array is all false
7:30:35
scymtym
this also allows CONVERT-ACCORDING-TO-READTABLE-CASE to take a shortcut instead of looking at each character if there are no escapes. again, the common case