My goal wasn't to replace the C++ Standard Library, but to address fields it doesn't fully cover, like embedded frameworks where every byte matters. The Standard Library is great for general-purpose computing, but for 'Silicon-Logic Parity' and high-density memory constraints, we needed a more vertical and unified approach for our project.
Hi! I'm Enmanuel D. Becerra C. I'm an electrical engineer and a self taught programmer. For the past decade, I’ve been jumping between embedded systems (IoT, PLC), Frontend, Backend, and Shaders (OpenGL).
If you’ve ever worked on projects connecting hardware to the cloud and WebAssembly, you know the "Fragmentation Tax": you have to reimplement the same business logic three times, on ESP32 using C++, JS for the dashboard, Go/Node for the server, all while juggling three completely different mental models.
Three years ago, I asked myself: Is it possible to create a framework that is like DOOM? ( If it’s a potato with a screen, it should run the code, right? ).
That’s why Nodepp was born: a C++ runtime designed for Silicon-Logic Parity. You write asynchronous code with the ergonomics of Node.js, but compile directly to native binary for an Arduino UNO (8-bit), an ESP32, WASM, or a 128-core Xeon server.
# What makes it different? (No "Voodoo Engineering")
- ptr_t (Deterministic RAII): A hybrid memory controller that manages SSO (Small Stack Optimization) and atomic reference counting (configurable for maximum throughput). Memory is reclaimed the microsecond the callback finishes. No Garbage Collector, no "Stop-the-World" spikes, 100% deterministic.
- kernel_t (Metal-Agnostic Reactor): A unified abstraction over Epoll, Kqueue, and IOCP. If the hardware doesn't support them (e.g., Arduino UNO), Nodepp uses an optimized loop that puts the CPU in active sleep to maximize battery life.
- coroutine_t (Stackless Coroutines): Cooperative multitasking based on state machines that allows for 100,000 concurrent tasks in a surgical 59MB RAM footprint.
Nodepp is so lightweight that I implemented a functional Enigma Machine on an Arduino Nano (2KB RAM / 16KB ROM), handling an LCD 16x2 screen and a QWERTY keyboard with async logic and physical buttons to modify the rotor states.
The exact same logic that processes JSON in the cloud manages your microcontroller's registers and modifies the DOM on your webpage, using just one codebase and one mental model.