January 9, 2026

Garbage day, but make it Manchester

The Manchester Garbage Collector and purple-garden's runtime

A DIY memory cleaner lands in Purple Garden, and the comments turn into a bin-night brawl

TLDR: A custom memory cleaner for the Purple Garden language just launched, pausing programs to tidy up. Commenters love the craft but argue it’s a classic Lisp-style design in new clothes, questioning extra parts and demanding benchmarks—turning garbage collection into the week’s spiciest tech debate.

A developer built the “Manchester Garbage Collector” (a memory cleanup tool) for the tiny, fast Purple Garden language—then dropped a 26-minute deep dive. It pauses the program to tidy memory and mixes several tricks to keep things snappy. The crowd? Explosive. One standout voice, hayley-patton, swooped in to say it’s basically an old-school Lisp move: a “mark-compact” cleanup shuffled around, no need for two memory zones (called semispaces), and even one extra pointer field might be pointless. Translation: cool idea, but you might be reinventing a classic.

Fans cheered the gutsy, handcrafted vibe—“small, fast, C-powered”—and loved the manual “press the button to clean up” vibe via std::runtime::gc::cycle(). Skeptics demanded benchmarks now, side-eyeing the “stop-the-world” pauses and asking whether the clever name masks familiar plumbing. The thread lit up with bin lorry memes (“Manchester Garbage Collector” was just too good), and someone joked that the code sample looked like it had been through the compactor itself. Meanwhile, the usual war flared: “why not Rust?” vs “C is lean and mean”. Whether it’s genius custom engineering or fancy branding on a classic algorithm, the comments turned a memory cleaner into prime-time drama. Check the PR here: #10

Key Points

  • The Manchester Garbage Collector (mgc) is engineered for the purple-garden runtime and combines preallocated regions, root set tracing, and semi-space copying.
  • Purple-garden is a minimalist scripting language implemented in C with a register-based bytecode compiler and virtual machine focused on performance and low memory usage.
  • mgc runs in three stop-the-world stages: root identification, mark phase for live objects, and copy/compaction.
  • The runtime provides a manual GC trigger via std::runtime::gc::cycle(), used when automatic triggering thresholds are not met.
  • Purple-garden uses a separate allocator for call frames to reduce garbage collection pressure.

Hottest takes

"This is the Lisp-2 mark-compact algorithm shuffled around" — hayley-patton
"The Lisp-2 algorithm doesn't need semispaces" — hayley-patton
"The next field of the GC header isn't necessary" — hayley-patton
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.