Lingua Franca eliminates race conditions by construction

Intuitive concurrent programming in any language

Lingua Franca is a coordination language for building predictable, concurrent, time-sensitive, and distributed systems. It offers deterministic multithreading and distribution, embeds timing semantics directly into the core, and simplifies the transition from single-machine to distributed architectures. Reactive components are written in C, C++, Python, TypeScript, or Rust, and the compiler catches causality loops before they become bugs.

Lingua Franca eliminates race conditions by construction, makes it easy to specify timed behavior, and removes the need to perform manual synchronization.
  1. samuell

    I like that the code example seems to indicate they took the concept of "ports" from flow-based programming, which might be one of it's absolute strongest points:

    player2.reveal -> player1.observe

    player1.reveal -> player2.observe

    That is, enabling data flow connections between individual inputs/outputs, and not just between components, which otherwise is too limiting, and typically causes a lot of extra syntax to handle that routing otherwise.

    Wrote about it in the context of workflow systems way back (https://livingsystems.cc/posts/workflows-dataflow-not-task-d...)

    ---

    Edit 11:12 CET: I realize that “named ports” better captures what I had in mind here, as elaborated in a comment below.

  2. XCabbage

    I don't really understand what problem this is meant to solve at first glance. It'd be nice to see a simple example program involving concurrency written in plain Python, then a discussion of the annoying bookkeeping involved in avoiding concurrency errors and what traps would be easy to fall into, and then an example of how the same thing would be implemented using Lingua Franca and an explanation of how eliminates the bookkeeping and traps.

  3. phyzome

    The elevator pitch needs work.

    "in any language", but then the page says "We currently support C, C++, Python, TypeScript, and Rust."

    "Lingua Franca is a coordination language" but then "Not a New Programming Language".

    I think I see what this is going for but the descriptions need a lot of improvement.

  4. Garlef

    I think the main example on the landing page is a bit counterintuitive?

    Rock Paper Scissors but the graph presents the reveal as a reaction to the observation? In a loop? And somewhere there's a min-delay of a magical 1 sec? Why 1 sec and not 0.1 sec? Can this build up and the players get out of sync? (A bit strange to 'just wait, lol' if the language aims at solving problems in distributed systems).

    Overall the example would be better if it separated the game from the players and also split out the repeat loop.

    Maybe let both player reveal to a host and then receive a result (and the choices) ~ This way both players can be sure that the choice of the other player is independent of the observation.

    (I know that the example is 'correct' in that the choice is made independent of the observation but I think the example could be improved if it solved some of the coordination problems involved in the scenario more cleanly through code architecture).

    Overall I quite like the idea of having this polyglot meta language!

  5. gbin

    If you like the idea and work in robotics try out copper-rs, it works on the same underpinning concept but at compile time in rust + a graph description.

    The latest addition to the kernel is a profile guided scheduling feature that allows you to optimize the concurrency of the graph still at compile time based on previous timing measurements from its deterministic logs.

More from this day

2026-10-17