FoundationDB's Flow – Bringing Actor-Based Concurrency to C++11

A clever old code trick returns—and the comments instantly ask if it’s already obsolete

TLDR: FoundationDB highlighted Flow, a custom tool that lets its fast C++ software juggle many jobs and test failures safely. Commenters were less dazzled than skeptical, arguing it feels behind the times now and immediately reopening old debates about whether newer language features make Flow yesterday’s workaround.

FoundationDB is showing off Flow, its homegrown way of making the C++ programming language handle lots of tasks at once without freezing up. In plain English: the company wanted the speed of C++ but also the kind of smooth, message-passing teamwork that people usually associate with more specialized languages. So it built a tool that rewrites this special “Flow” code into ordinary C++11, then uses it for both performance and testing giant systems under failure. On paper, it’s a very nerdy flex: fast, scalable, and built to survive chaos.

But in the comments, the real plot twist is the vibe: “Cool story, but isn’t this kind of old now?” One of the strongest reactions came from a user pointing out that the write-up feels dated because newer versions of C++ now include more built-in ways to do this sort of thing. That turned the thread into a mini generational feud: is Flow a clever ahead-of-its-time hack, or a museum piece from before modern tools caught up?

And then came the side-eye. A commenter didn’t just question the tech—they also tossed in a very Hacker News-style drive-by: what happened to the rumored Swift rewrite? Ouch. Another user dropped a link to a previous discussion, which has the unmistakable energy of “we have already fought about this once, and we can do it again.” The humor here is dry, but deadly: half admiration, half “sir, your innovation has expired.”

Key Points

  • FoundationDB developed Flow to address the combined requirements of high performance, scalability, asynchronous concurrency, and simulation-based reliability testing.
  • Flow is described as a language and compiler that adds actor-based concurrency constructs to C++11 and emits standard C++11 code for native compilation.
  • The article says Flow supports deterministic simulation of the entire system, including physical interfaces and failure modes.
  • Flow's concurrency model uses Promise<T> and Future<T> to connect asynchronous senders and receivers, including across a network.
  • Only functions marked with the ACTOR tag can call wait(), which pauses an actor until a future is fulfilled without blocking other actors.

Hottest takes

"looks kind of outdated" — pjmlp
"co-routines would be a better approach" — pjmlp
"how is the supposed Swift rewrite going on?" — pjmlp
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.