[HN Gopher] Flow-IPC: Open-source toolkit for low-latency inter-...
       ___________________________________________________________________
        
       Flow-IPC: Open-source toolkit for low-latency inter-process
       communication in C++
        
       Author : signa11
       Score  : 51 points
       Date   : 2024-04-11 09:15 UTC (2 days ago)
        
 (HTM) web link (www.linode.com)
 (TXT) w3m dump (www.linode.com)
        
       | ygoldfeld wrote:
       | Whoa. I'm the lead developer on this - I got to this post totally
       | by accident: was googling for my own Show HN post about this from
       | a couple days ago - and it took me here without my noticing.
       | 
       | There's some discussion on it in Show HN, and of course I can
       | answer anything here that people might be interested in too. I'm
       | very proud of it and very grateful Akamai gave the resources to
       | open-source it.
       | 
       | I'd like to have a flashier friendlier site with a slick intro
       | video - haven't had the time to do that stuff - but the substance
       | and API documentation + Manual are very serious and complete, I
       | hope.
       | 
       | All linked off the blog-post!
        
         | ygoldfeld wrote:
         | (Akamai owns Linode and uses the blog on Linode.com as a
         | developer-oriented blog. So that's why the link is to there.)
        
         | signa11 wrote:
         | i have done something exactly identical at my current place of
         | employment, and am always inquisitive to see how others have
         | 'stacked-da-cat'.
         | 
         | we _unfortunately_ gravitated towards protobuf's despite my
         | fervent appeal to go with capn-proto. that has caused a cascade
         | of troubles / missed opportunities for optimizations etc. etc.
        
           | fwsgonzo wrote:
           | I tried to migrate to capn-proto but it just doesn't build on
           | MinGW so I have no choice but to wait. Like you say, it gets
           | worse the more I wait. But, if the APIs are somewhat sane,
           | they should hopefully also be somewhat similar: Able to
           | switch case on oneofs, movable data structures etc.
           | 
           | I don't like that protobuf has recently started linking with
           | abseil, which despite being a good framework, I can't use it
           | if it doesn't build absolutely everywhere I need it to. So,
           | maybe I'll be forced over to CapnProto one of these days?
        
           | sgtnoodle wrote:
           | I've also developed a strikingly similar low latency real-
           | time IPC message bus for work. It also uses sockets with
           | transparent shared memory optimization. In my case, it's the
           | backbone for an autonomous aircraft's avionics. I made
           | everything agnostic to the message scheme, though, and most
           | of the tooling supports an in-house schema, protobuf, JSON,
           | YAML, etc. There's also clients implemented in C++, Rust,
           | Python and Julia.
           | 
           | What troubles has protobuf caused you?
        
         | nonane wrote:
         | Cool stuff!
         | 
         | Does Flow-IPC protect against malformed messages? For example a
         | client sending malformed messages to a server process
        
           | sgtnoodle wrote:
           | Given that it's shared memory based, it seems like there has
           | to be some degree of trust that the participants are well
           | behaved. What do you mean by a malformed message, though? If
           | you're talking about the payload of the message, that seems
           | like a matter of the message scheme you're using. If you're
           | talking about correctness of the IPC protocol itself,
           | integrity checking is unfortunately at odds with latency.
        
       | jeffreygoesto wrote:
       | Does the schema help a lot? For C++ you can get very fast
       | without, for example with IceOryx https://github.com/eclipse-
       | iceoryx/iceoryx
       | 
       | In contrast to Cap'n'Proto you get compiler optimized struct
       | layout as benefit from using raw structs. Benchmarks are here
       | https://iceoryx.io/v2.0.2/examples/iceperf/
        
       ___________________________________________________________________
       (page generated 2024-04-13 23:01 UTC)