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 :-))
12:16:43
Bike
hm, didn't we have some setup for compile file parallel so it handles errors okay? i'm seeing some weird behavior there
12:20:21
Bike
i see. you have it catch errors in compile-from-module, but if errors occur higher up in the spawned thread it's still an issue
13:20:13
Bike
we could probably have to stand better error recovery for loader problems, but it's kind of weird with how hoisting works
13:26:49
Bike
i wonder if we're invoke-debugger in threads correctly even outside of compile file parallel. imma guess no
13:31:08
drmeister
It's like having elves come in and make shoes through the night - but instead of shoes it's extremely sophisticated and subtle software engineering!
13:32:25
Bike
it's not even the only place we need restarts in what's now C++ code... a bunch of places in the package system could use it too
13:37:55
drmeister
I'm kind of out of the loop here but you want to set up a restart early when restarts aren't available?
13:38:16
drmeister
We could bank them up and then call a function to create them once they are in place.
13:43:54
Bike
i can think of ways this might be accomplished in C++ but i don't think i want to do that
13:44:29
drmeister
So we need to see what the restart object looks like in *restart-clusters* and then create one from C++ when a thread starts up and put it in *restart-clusters*.
13:45:34
drmeister
Ah - how would you like to do this then? You could define a Common Lisp function that creates the object and we call it when a thread starts up and push it into *restart-clusters*?
13:48:11
drmeister
Hmm. Maybe the main thread is the only problem. What if when we start cclasp we run the cclasp repl inside of a dynamic environment?
13:48:20
Bike
maybe i can put a default binding of *restart-clusters* in the default thread bindings.
13:49:40
drmeister
Once cclasp starts up we call a function that calls the repl from inside of restart-bind. Only when cclasp exits does it return.
13:52:28
drmeister
I gave kpoeck and Bike maintain access to https://github.com/clasp-developers/Eclector
13:55:23
Bike
let's see... i could probably set it up so that if a thread uses this abort restart, the condition is stored in the thread, and resignaled if the thread is joined
13:55:46
Bike
sbcl does something like this, having join-thread signal an error if the thread aborted, but doesn't store the condition
14:05:33
paulapatience[m]
Hello. By the way cracauer, the llvm-9 package installation bug was fixed in Sid, so I managed to compile clasp dev
14:06:18
drmeister
The backtraces helped a lot with the Eclector issue - it was very clear where the problem was.
14:06:46
drmeister
And as cracauer pointed out to me - our chemistry code is a good regression test.
14:09:08
drmeister
I read an article last night that these Kinsa internet thermometers are predicting several days ahead of CDC data that social distancing is working and wherever S.D. hasn't been put in place literally becomes a hot spot.
14:09:44
drmeister
paulapatience[m]: No - new backtraces we put in place yesterday that clasp dumps when it crashes and the repl is suppressed.
14:10:31
drmeister
I'll take a look at your clasp-cxx-demo issue this morning. I'm working through some things at the moment and a conference call that got pushed to 11:00am EST.
14:10:54
drmeister
So clasp is running for you now but you have a segfault with clasp-cxx-demo - correct?
14:12:24
paulapatience[m]
Yes. I'd like to write expose a C++ library to clasp, so getting that demo to work and understanding it is the first step, I suppose.
14:15:57
drmeister
kpoeck, paulapatience[m] Could each of you check that you have the latest master and dump your local.config though a pasting service?
14:16:33
drmeister
Because that's all it should require. You tell it where llvm is, where clasp is and which clasp you want to use.
14:17:19
selwyn
i believe i've had the same issue with demo-clasp-cxx. i don't have a working clasp on hand right now to test unfortunately
14:18:03
paulapatience[m]
I have the latest commit from dev (2af383303f162830076b3a89e0172c49c8e50b6c), and my local.config is http://ix.io/2gtY
14:18:36
drmeister
You clone demo-clasp-cxx and setup the local.config in the top directory and run 'make'. You need clasp built.
14:18:39
paulapatience[m]
Bike: clone https://github.com/clasp-developers/demo-clasp-cxx-interoperation, setup local.config from local.config.template, and run make test
14:19:01
drmeister
I'll rebuild clasp - maybe some recent clasp change is breaking it and I have an old one?
14:19:45
kpoeck
That doesn't find 'boost/format.hpp', I now remember that I changed the makefile to find that header
14:20:51
paulapatience[m]
drmeister: Last time I'd tried on the master branch (like Monday or so) and I got the same problem, but unfortunately I didn't save any backtrace
14:22:08
drmeister
I've almost got the eclector fix tested. Then I'll push it and then I'll rebuild clasp on linux and macOS and try it.
14:29:14
drmeister
Dang, three weeks of social distancing is starting to take it's toll. The breakfast I cooked for my wife was described as "smelling like a dishrag".
14:47:05
drmeister
With -std=c++17 we might be able to use std::format in the futures stuff - I haven't thought it through.
14:48:52
paulapatience[m]
kpoeck: tried compiling the demo with c++14 but it doesn't fix the problem
14:50:50
drmeister
I fixed it here because making them consistent certainly can't make things worse.
14:54:13
kpoeck
should that help the lldb baktrace for the error is here: https://gist.github.com/kpoeck/c12a8249c09cfbcdbf7de052b61bb93a
15:31:47
Shinmera
I'm working on adding 64-bit and 32-bit as common register-size features to trivial-features.