freenode/#sbcl - IRC Chatlog
Search
3:36:23
stassats
so, in sweep, NOTE_GARBAGE(page_table[find_page_index(where)].gen, where, nwords, zeroed);
3:39:36
stylewarning
If I have foreign pointers wrapped in a structure, is there a way I can recreate these objects if I save an image with SLAD? Is there an extensible way to do this without adding additional logic?
3:40:54
stylewarning
Basically I want to ship a library that uses foreign libs for linear algebra, and I want to make the use of pointers underneath opaque. Users have said this has caused issues when they would DEFPARAMETER these and SLAD. It makes sense why, and I'm trying to think of ways to ameliorate the situation.
3:52:12
stylewarning
Basically you seem to be saying "don't make Lisp structures hide foreign data opaquely"
3:53:36
stylewarning
It means the library has a structure which, as far as the user is concerned, is a plain old Lisp object
3:54:01
stylewarning
The pointer is never accessed outside of the confines of the library. It's existence isn't even published.
3:54:41
stylewarning
Transparent and opaque are pretty well understood technical terms when describing abstractions.
3:57:32
stylewarning
Like, one unsatisfactory solution is to save all objects in a weak table, do the equivalent of a load form, and reconstruct them upon next access.
3:59:42
stylewarning
The only other alternative is to get these pointers out entirely and attempt to use Lisp objects and pass pointers into those to the foreign libs.
4:00:33
stassats
it's well know that saving images doesn't work with foreign code, your users should understand that
4:02:50
stylewarning
Maybe I'm just in some sort of la-la land to imagine the possibility of providing a way to save and load that object. Maybe that goes against the principle of SLAD too much.
4:06:31
stylewarning
I'll get creative I guess. That's a very unacceptable answer. Perhaps I'll eventually find your answer is wise, and that SBCL's facilities are just unfortunately occasionally hostile.
4:09:15
stylewarning
I am asking for a way to save these objects. I can take any of these objects and make a load form for it. Why can't that type of logic exist with image saving?
4:10:29
stylewarning
I am not asking for Lisp to understand what's located at the pointer automatically, and attempt to recover it automatically.
4:12:29
stylewarning
I am asking for a way for me to tell Lisp how to do that, and to execute those actions—as specified by me—upon saving and/or loading the image.
4:15:10
stylewarning
To shift the responsibility of saving objects from the library used to the library vendor.
4:20:15
stylewarning
I'd rather not have some folks who are trying to do a little linear algebra have to figure out how to fix their program breaking when they try to make a "simple executable". Unfortunately the world isn't filled with advanced users of Lisp.
4:21:16
stylewarning
Programming the human is usually more expensive and error prone than programming the computer. :)
4:21:43
stylewarning
I'd rather document to the advanced user "you may disable these hooks at your peril"
4:23:33
stylewarning
Why can't I just look for them in the image later? Can't I just map across all objects and look for the ones I care about?
4:24:22
stylewarning
They're saving an image. Who cares if that process is not the pinnacle of efficiency?
8:07:31
scymtym
dougk_: the macos build on our slaves succeeds with SHAKE-PACKAGES disabled. anything else i should try?
9:29:05
flip214
with current git HEAD, a DEFSTRUCT and a corresponding (DEFMETHOD PRINT-OBJECT) tells me that some calls couldn't be inlined because the structure was not yet defined.
9:57:54
scymtym
ACTION compiled a file containing (defstruct foo) (defmethod print-object ((object foo) stream))
12:47:05
stassats
when NOTE_GARBAGE is taken out both make-target-2 and (gc :gen 7) in slime succeed
14:23:15
stassats
why do you go through zeroed and then update totals? can't you just increase totals directly?
14:26:01
stassats
interestingly, to diagnose it i disabled -O2, that helped, but in the cases when it did not crash it did crash later during slad
14:27:30
dougk
pretty. and another thing, sweep seems to clobber way too much on precise platforms. totally unusable
14:27:55
dougk
i wanted to diagnose it using 'traceroot' but that doesn't work on precise platforms either
14:28:29
dougk
just bzeroing garbage. generation 6 is the problem. whether it bzeros younger is irrelevant
14:32:09
dougk
yes, it just zeros without compacting so that subsequent passes have fewer spurious roots
14:51:34
Shinmera
Why does make.sh invoke time anyway? Shouldn't that be a responsibility of the user if they want timing data?
14:57:47
stassats
error: 'os_context_t {aka struct sigcontext}' has no member named 'si_mask'; did you mean 'sigc_mask'?