IRC channel logs

2024-08-08.log

back to list of logs

<weary-traveler>is there an example for using goblins where the nodes are on the same machine and communicating over stdin/stdout? is that possible?
<dckc>weary-traveler, the examples I've seen communicate over tor, typically on separate machines. But tor is just one netlayer. I think a unix socket or plain TCP netlayer is in the works. a netlayer for stdin/stdout seems feasible
<weary-traveler>dckc: yeah, the documentation seems to suggest that ipc over tor is the only one that's implemented, but that seemed unexpected enough that i wondered if that was a documentation bug
<weary-traveler>if true, that's disappointing. i was hoping to use guile and spritely for this hobby project, but it seems perhaps not (yet)
<dckc>looks like the TCP netlayer landed, maybe? https://gitlab.com/spritely/guile-goblins/-/blob/main/goblins/ocapn/netlayer/tcp-tls.scm?ref_type=heads
<dckc>and that's only 300 LOC. one for stdin/stdout would probably be less. maybe you'd like to build it? I'm sure you'd get help
<dckc>or you could start with the TCP one
<weary-traveler>dckc: ah insteresting. and it's in 0.13.0 as well
<weary-traveler>dckc: https://spritely.institute/files/docs/guile-goblins/0.13.0/IO-Ping-Tutorial.html
<weary-traveler>it's not clear to me what the relation is between actor-lib and ocapn/captp
<weary-traveler>i.e., when to use netlayers vs say actor-lib
<weary-traveler>iiuc, inter-node communication in goblins happens via captp. how does inter-vat communication happen? related, can vats within the same node reside in different processes?
<dckc>not sure what you mean by "node" there. there can be multiple vats in a process, and multiple processes on a machine
<jfred>It's not mentioned in the docs I think (unsure of its current status) but the testuds netlayer might be interesting: https://gitlab.com/spritely/guile-goblins/-/blob/main/goblins/ocapn/netlayer/testuds.scm?ref_type=heads
<weary-traveler>jfred: i'm guessing uds is for unix domain sockets? i'm not sure what to make of the "test" in "testuds"
<weary-traveler>but the try-base-netlayer.scm does provide an example of using this as the inter-node communication layer
<jfred>Right - my guess is it's been used to test local IPC in applications before hooking them up over the network, but I would also guess that the "test" wording is some indication of its production readiness. Might be a good place to start though
<weary-traveler>the node locations/socket addresses seem to be communicated implicitly since it's part of the same program
<weary-traveler>it's not clear how to do this when the vats are in different programs
<weary-traveler>okay ocapn-id->string prints out a reference
<weary-traveler>one from which the socket could be figured out
<weary-traveler>the testuds ids aren't compatible with string->ocapn-id . probably part of the reason why that one is a test
<weary-traveler>it seems to me that perhaps goblins as a whole isn't ready for primetime yet. perhaps also indicated by the version being less than 1.0. however, it's not clear to me whether there are parts of goblins that are ready for primetime. there doesn't seem much complexity in creating a layer, but is the API stable?