There was a bit of experimentation around this in the Go implementation,
though it stalled due to some trouble figuring out the allocation
scheme. Links:

* https://github.com/zombiezen/go-capnproto2/issues/60
* https://github.com/justincormack/go-memfd
* https://github.com/zenhack/capnp-memrpc-go
* https://github.com/zombiezen/go-capnproto2/pull/61

-Ian

Quoting 'Kenton Varda' via Cap'n Proto (2017-06-13 15:07:14)
>    Indeed, this was a major design goal!
>    I haven't personally used it this way yet, though I've used it for
>    mmap() many times, which has similar properties.
>    I would like to develop an RPC transport which uses shared memory. It
>    would be especially neat if the code could automatically upgrade to
>    shared memory whenever it detects that it's communicating over a unix
>    socket.
>    One interesting hurdle for comms is what happens if you don't trust the
>    sending process. If the memory is still shared, they can potentially
>    modify the data while you're consuming it. If you make sure to read
>    each bit of data no more than once, then in theory no attack is
>    possible -- but I haven't yet reviewed the Cap'n Proto library itself
>    to check that the pointer validation reads each bit once, which would
>    need to be guaranteed before an application could consider relying on
>    this.
>    Linux's memfds support "sealing" the memory after writing it so that
>    the consuming end can be assured that no further changes are occurring.
>    However, messages need to be pretty large before this becomes
>    worthwhile -- for typical-size messages, an upfront memcpy() will be
>    much faster.
>    -Kenton
>
>    On Tue, Jun 13, 2017 at 11:26 AM, Omnifarious
>    <[1][email protected]> wrote:
>
>    Cap'n Proto seems like it would be ideal for a shared memory
>    communications channel, right down to the relative pointers. Has
>    anybody used it this way? What are the hurdles?
>
>      --
>      You received this message because you are subscribed to the Google
>      Groups "Cap'n Proto" group.
>      To unsubscribe from this group and stop receiving emails from it,
>      send an email to [2][email protected].
>      Visit this group at [3]https://groups.google.com/group/capnproto.
>
>    --
>    You received this message because you are subscribed to the Google
>    Groups "Cap'n Proto" group.
>    To unsubscribe from this group and stop receiving emails from it, send
>    an email to [4][email protected].
>    Visit this group at [5]https://groups.google.com/group/capnproto.
>
> Verweise
>
>    1. mailto:[email protected]
>    2. mailto:[email protected]
>    3. https://groups.google.com/group/capnproto
>    4. mailto:[email protected]
>    5. https://groups.google.com/group/capnproto

-- 
You received this message because you are subscribed to the Google Groups 
"Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
Visit this group at https://groups.google.com/group/capnproto.

Attachment: signature.asc
Description: signature

Reply via email to