<geofft>
I _think_ that Child actually is Send, yes :)
<geofft>
I'm just trying to wrap my head around the concept of what happens if I have a thing that isn't
<geofft>
(for instance, if I care about thread-directed signals, I might want a wrapper type around Child that explicitly isn't Send)
<dwrensha>
hm. I think this is a problem that "usually" won't come up. But in your case it might be a problem.
<geofft>
I could just bet that it isn't going to seriously affect me until after GJ!capnproto-rust exists
<geofft>
(and if I lose that bet, start helping make GJ!capnproto-rust)
<geofft>
> thread '<main>' panicked at 'broken cap factory is unimplemented', /home/geofft/src/rust/capnproto-rust/src/private/layout.rs:1602
<geofft>
that's like progress!
<geofft>
ah, my fault for not actually returning my return value
<geofft>
looks like Child is in fact Send + 'static, so this compiles. thanks all for the help :)
<dwrensha>
ok, I've got my local dev server in a state where trying to do anything nontrivial results in the Disembargo error
<dwrensha>
I'll be poking at it. If anyone has any theories they'd like to test, let me know.
<dwrensha>
hm. Looks like we always git this error first: "capnp/rpc.c++:122: info: returning failure over rpc; exception = capnp/rpc.c++:2301: failed: Pipeline call on a request that returned no capabilities or was already closed."
<dwrensha>
s/git/get/
gopar has joined #sandstorm
<dwrensha>
after restarting the frontend, things seem to be back to normal
<geofft>
in a 2-party RPC, can I compare two interfaces/capabilities from the same node for equality?
<dwrensha>
not in capnp-rpc-rust
<dwrensha>
As far as I know, you can't in capnproto-c++ either, yet.
<geofft>
:(
<dwrensha>
you could perhaps add a method getUniqueId(),
<geofft>
sure. I want a "please stop sending me notifications" method, so I could just assign a numeric ID to "me"
<dwrensha>
running on master with only those 4 lines reverted, I have been unable to get the Disembargo crash to happen
jadewang has joined #sandstorm
<kentonv>
geofft: correctly and securely comparing remote capabilities for equality is surprisingly hard!
<kentonv>
geofft: That said, most of the hardness is in corner cases. In the common case it ought to be easy and we ought to support it.
<kentonv>
dwrensha: Ah hah... That change fixed a bug where making pipeline calls on a capability that turned out to be a null pointer would kill the connection. I bet there's a deeper bug involving sending disembargo messages to such capabilities.
<kentonv>
dwrensha: repo'd in unit test.
<geofft>
kentonv: yeah, this is explicitly for the case of one party talking to the same other party
<geofft>
probably there's a better design pattern for this, but I want to say "Please start doing callbacks" and "OK, stop doing callbacks"
<kentonv>
"please start doing callbacks" should return a "handle" object. Drop the handle to say "stop doing callbacks".
<geofft>
what is dropping a handle?
<kentonv>
thus the subscription is controlled by RAII
<geofft>
in the capnp-rpc sense (not in the local C++/Rust app sense)
<kentonv>
a "handle" is a term we made up for a capability that has no methods and exists solely for its destructor
<kentonv>
when all references to the handle go out of scope, something happens
<kentonv>
cap'n proto has deterministic lifecycle management in the protocol, so you can depend on that
<geofft>
oh, I didn't realize that the RPC system tracked capabilities going out of scope
<geofft>
that does simplify/improve things.
<geofft>
and that it has destructors
<kentonv>
yep
<kentonv>
I've found it to be an essential feature
<geofft>
I'd imagine!
<kentonv>
and it makes me hate using Cap'n Proto in Javascript where I have to explicitly close() things since the GC is non-deterministic
<geofft>
I don't see it mentioned on capnproto.org though :)
<geofft>
or I can't read, which is certainly possible
<kentonv>
I think it's in there somewhere, but perhaps not called out as clearly as it should be
jadewang has quit [Remote host closed the connection]
<erikoeurch>
When I use Oasis, there's always the security notice icon in the url bar of Firefox saying there is no identity information supplied and that the connection is not fully secure
<kentonv>
erikoeurch: can you get a screenshot?
<kentonv>
"no identity information" is expected (it's just a DV cert), but "not fully secure" is unexpected
<erikoeurch>
tricky to screenshot it because it closes on any keyboard stroke or mouse click, but here's the text: "This website does not supply identity information.
<erikoeurch>
The connection to this website is not fully secure because it contains unencrypted elements (such as images) or the encryption is not strong enough."
<kentonv>
does it say this when you first load the site, before opening any grains?
<erikoeurch>
ah, no, it seems to be ok when first loading
<erikoeurch>
so I guess it's a problem with grains
<kentonv>
which app?
<erikoeurch>
Paperwork
<erikoeurch>
but perhaps it's just what I've put in my notebook
<erikoeurch>
copy-pasting stuff from websites into Paperwork seems to keep links and everything
<erikoeurch>
maybe images are fetched from external sources because of that
<kentonv>
that would make sense
<kentonv>
well, I'm off to bed.
<kentonv>
incidentally, someday we're no longer going to allow embedding external resources. I guess you might have some broken images then. :/
jadewang has quit [Remote host closed the connection]
<erikoeurch>
thanks for the heads-up -- will think of a better solution for my archiving :)
larjona has joined #sandstorm
mort___ has joined #sandstorm
jadewang has joined #sandstorm
jadewang has quit [Ping timeout: 240 seconds]
erikoeurch has quit [Ping timeout: 244 seconds]
mort___ has quit [Quit: Leaving.]
jadewang has joined #sandstorm
jadewang has quit [Ping timeout: 265 seconds]
mort___ has joined #sandstorm
jadewang has joined #sandstorm
jadewang has quit [Ping timeout: 246 seconds]
decipherstatic has quit [Remote host closed the connection]
decipherstatic has joined #sandstorm
<geofft>
is there a tool that checks if a change to a .capnp file is backwards-compatible?
<geofft>
(so I can stick it in a pre-commit hook or something?)
<geofft>
oh hrm. yeah that was my followup question, how does index_move() work.
<geofft>
ok, so I'm misinterpreting this error message
<geofft>
aha, "note: `commands` was previously moved here because it has type `capnp::interface_list::Reader<'_, flatbush::flatbush_capnp::command::Client>`, which is non-copyable"
<geofft>
ok, so I implemented interface_list::Reader wrong.
<geofft>
oh, interfaces' Client types are Clone but not Copy, so I need to stick an explicit .clone() in there
isd has joined #sandstorm
<dwrensha>
Clients are Clone because you need to increase the reference count