I finally fixed concurrency (for myself, at least) / Introducing Project Tina


PETER MBANUGO

Programmer & Consultant

Hi everyone,

If you’ve ever tried to build a high-performance backend, you know the pain of the "Concurrency Trilemma."

You usually have to pick your poison:

  1. Callback, Promise, or Async Hell (Rust/JS) where coloured functions fragment your codebase.
  2. Mutex Hell (Go/C++) where shared-state leads to subtle race conditions and deadlocks.
  3. The GC Ceiling (Erlang/Elixir) where you get a brilliant mental model, but pay for it in garbage collection pauses and VM overhead.

I got tired of choosing. For the last several months, I’ve been heads-down building a system that tries to solve this at the architectural level.

Today, I’m open-sourcing Tina.

Tina is a strictly bounded, thread-per-core concurrency framework written in Odin.

It works by enforcing brutal constraints. There is no async/await. There are no mutexes. There is zero dynamic memory allocation after the system boots.

Instead, you write simple, synchronous-looking state machines called Isolates. They process a message, and return an Effect (like .io, .call, or .yield). The framework handles everything else.

Because the framework strictly controls the clock, the network, and the memory, we get a massive superpower: 100% Deterministic Simulation Testing. You can simulate a massive multi-core distributed system on a single thread. If it crashes at tick 84,212 , you can paste the seed and watch it crash at the exact same tick, every single time (until you fix the issue).

I want you to be the first to see it.

If you are a systems engineer, or just someone who is tired of fighting your programming language to handle massive I/O, I would love for you to check out the architecture.

I wrote extensive documentation on the tradeoffs I accepted to make this work. (For example: why strictly bounded mailboxes that drop messages are safer than infinite queues that crash your server).

I’d love your brutal, honest feedback. Reply directly to this email, or open a discussion on GitHub.

Talk soon,

Peter Mbanugo

600 1st Ave, Ste 330 PMB 92768, Seattle, WA 98104-2246
​Unsubscribe · Preferences​

Hi, I’m a Software Consultant and Technical Trainer

Subscribe to my newsletter if you want to see me write about different stack of software engineering and how to use them to build products. I write about high-performance Node.js/Bun applications, React and Astro, and my journey programming with Zig.

Read more from Hi, I’m a Software Consultant and Technical Trainer

PETER MBANUGO Programmer & Consultant Hey Reader, it's been a while. I've been busy working on Tina, the high-performance concurrency framework I've written about a few times. It's a huge rewrite (from scratch) because I've learned a few new things and I'm expanding the framework from the initial idea of "just an eventloop library", to having a few more components for building robust applications. There's still a lot to do, but I hope to share some update next month. Stay tuned! New Blog Post...

PETER MBANUGO Programmer & Consultant Hey 👋 Have you ever fixed a bug, or shipped the patch only to have it haunt you in production? That feeling exists because tests only catch scenarios you think of. There's another way to approach correctness: specify what the system should do, not how to do it — and let a computer program verify that all possible executions satisfy your requirement. That’s the idea behind formal verification, and I’ve started a new series where I’m building a new tool to...

Peter Mbanugo pmbanugo.me Hello Reader, I've published a new blog post and it is about QUEUES. You have used a queue today. In fact, you have probably used one dozens of times before lunch. Whether it is Spotify loading songs in order, your server processing background jobs, or just waiting at the supermarket checkout, the FIFO (First-In, First-Out) queue is the invisible engine that keeps modern systems running smoothly. You have used Kafka, RabbitMQ, and likely a Queue data types in your...