March 23, 2026
Speed thrills, memory spills
Show HN: Threadprocs – executables sharing one address space (0-copy pointers)
Apps share one memory space—speed dreams vs safety fears
TLDR: An experiment called threadprocs lets multiple apps share one memory space to pass data instantly, no copying. The community split fast: performance fans see a path to faster Python and Haskell, while skeptics warn it’s a risky throwback and worry about weakened memory safety and “De‑ASLR” vibes.
Hacker News lit up over “threadprocs,” an experiment that lets multiple programs live in the same memory space and pass pointers around without copying. The demo is straight out of a hacker heist: one app makes a string and prints its memory address; another app reads that address and prints the string. No copies. Just raw speed.
Cue the fireworks. Skeptics like tombert called it “a step backwards,” comparing it to the wild west of old-school systems with weak memory protection. Security hawks piled on with “De-ASLR?” whispers—meaning, if memory addresses don’t shuffle around randomly, don’t we lose a safety net? Meanwhile, performance fans burst through the wall like the Kool-Aid Man. whalesalad is dreaming about Python finally breaking its notorious GIL (the lock that keeps Python from using multiple CPU cores smoothly): maybe this is the middle ground between threads and processes. Haskell fans showed up too, fantasizing about compiler-level magic and green threads roaming free.
Then a researcher dropped receipts: a fresh paper on merged-address-space RPC called IPRE, flexing serious credibility. The vibe? Speed junkies vs. safety patrol, meme’d as “AmigaOS called—it wants its memory back.” Whether this is genius or chaos, everyone agrees: if it works, it’s spicy, and if it breaks, it breaks gloriously.
Key Points
- •Threadprocs allows multiple executables to run in a shared Linux virtual address space where pointers are valid across programs, enabling zero-copy data sharing.
- •A server hosts the address space and a launcher starts programs into it; applications share pointers via out-of-band channels and dereference them directly.
- •A demo shows one program creating a std::string and printing its address, and another reading that pointer and printing the string without special kernel tricks.
- •libtproc exposes a server-global scratch space via an added auxv entry for service discovery and shared memory–backed IPC; tproc-actors builds on this.
- •Limitations include separate libc instances (avoid cross-proc malloc/free), requirement for PIC, unreliable brk/sbrk (mitigated with MALLOC_MMAP_THRESHOLD_=0), and careful use of MAP_FIXED.