freenode/#clasp - IRC Chatlog
Search
6:32:55
drmeister
::notify kpoeck We hit a problem with the eclector reader - when it reads in structures it appears to want a value for every slot. If a slot is unbound this code will fail... https://github.com/clasp-developers/Eclector/blob/master/code/reader/fixup.lisp#L28
6:35:45
drmeister
https://github.com/clasp-developers/clasp/blob/dev/src/lisp/kernel/lsp/sharpmacros.lsp#L68
8:13:22
Colleen
kpoeck: drmeister said 1 hour, 40 minutes ago: We hit a problem with the eclector reader - when it reads in structures it appears to want a value for every slot. If a slot is unbound this code will fail... https://github.com/clasp-developers/Eclector/blob/master/code/reader/fixup.lisp#L28
8:23:11
phoe
https://github.com/clasp-developers/clasp/blob/dev/src/lisp/kernel/lsp/sharpmacros.lsp#L68 describes classes, not structures
8:37:12
phoe
for actual structures, the reader at https://github.com/clasp-developers/clasp/blob/dev/src/lisp/kernel/lsp/sharpmacros.lsp#L61 wants to seem to read exactly N key-value pairs where N is the number of structure slots
8:38:03
phoe
hmmm, grepping http://clhs.lisp.se/Body/m_defstr.htm for "bound" gives me no good results
8:38:51
phoe
it must follow the part that reads "If no slot-initform is supplied, the consequences are undefined if an attempt is later made to read the slot's value before a value is explicitly assigned."
8:39:52
kpoeck
But it would have been nice if drmeister left us a concrete case, so that I could fix it, while he sleeps
8:49:06
kpoeck
the example with an unbound slot is (defstruct (bar (:constructor make-bar (a))) a b)
8:58:56
kpoeck
Well the problem is another, if I make a boa-constructor, how would the reader now which boa-constructor to call?
9:25:40
Colleen
Unknown command. Possible matches: notify, 8, set, mop, get, login, roll, say, uptime, grant,
9:26:05
kpoeck
::notify drmeister perhaps https://gist.github.com/kpoeck/fb033e3688599820924cd69ad5e64bfd
9:27:23
kpoeck
::notify drmeister This is for standard-objects not for structures in the context of #= right? Do you have an example?
9:54:54
paulapatience[m]
::notify drmeister I managed to compile the dev branch of clasp with llvm-9 without any problems, but 'make test' in demo-clasp-cxx-interoperation still runs into the same segmentation violation I had before: http://ix.io/2gsS
11:22:24
paulapatience[m]
Ok, that's reassuring at least. I figured maybe something could be wrong with my system.
11:23:07
scymtym
kpoeck: i didn't follow the whole discussion but noticed you mentioning that clasp doesn't use eclector's #S reader macro function. do you know what the reason is?
11:26:04
scymtym
more specifically, a complete client must implement MAKE-STRUCTURE-INSTANCE, but i'm not sure why eclector's reader macro function for #S wouldn't work
11:32:07
kpoeck
But while you are here: is (defmethod fixup (client (object standard-object) seen-objects mapping)..) possibly wrong
11:32:24
scymtym
sure, as i said, a client must define MAKE-STRUCTURE-INSTANCE, that much is clear. i'm wondering about the reader macro function
11:35:21
scymtym
yeah, if something is wrong with FIXUP, that's probably unrelated. unless structures are standard objects in clasp, maybe
11:35:31
kpoeck
Is there perhaps a bug in https://github.com/clasp-developers/Eclector/blob/master/code/reader/fixup.lisp#L31
11:36:54
kpoeck
Should that line perhaps be: (when (slot-boundp object name) (fixup-place (slot-value object name)))?
11:41:14
scymtym
but for the portable code, implementations might have their own optimizations for SLOT-{VALUE,BOUNDP} (admittedly unlikely since the class is not statically known, but SBCL uses inline caches for some things, for example)
11:42:55
scymtym
btw, sorry for the slow pace with which fixes are getting into master. i was in the middle of big changes to eclector's error recovery machinery when the covid situation emerged
11:43:56
scymtym
i will try to make a "clasp" branch containing the fixes (READ-DELIMITED-LIST, SHARP-QUOTE, FIXUP)
11:51:31
kpoeck
apart from the tiny problems, clasp has now eclector 100% integrated, whereever possible eclector is used (in the compiler, read, read-from-string, in load ...)
12:04:40
scymtym
kpoeck: https://github.com/s-expressionists/Eclector/tree/wip-reader-implementation-documentation should have the relevant fixes but i put it together rather quickly
12:06:10
Bike
Hi. Flipped through the log. In case it wasn't resolved yet, #S needs a "standard constructor", meaning just (:constructor name) or the default. BOA constructors don't work for this.
12:06:33
Bike
I think the standard constructor picked is arbitrary, but they all have the same lambda list so it shouldn't matter anyway
12:07:39
kpoeck
But I assume drmeister wrote structure when he meant instances of standard-object in his message later yesterday night
12:08:48
kpoeck
All the code-references he pasted are for objects (I won't write clos-objects, so that beach does not punish me :-))