A Proposal to Add Gc-Less, Unmanaged Memory Spaces to C#
Posted4 months agoActive3 months ago
axx83.substack.comTechstory
skepticalnegative
Debate
80/100
C#Garbage CollectionMemory Management
Key topics
C#
Garbage Collection
Memory Management
A proposal to add GC-less, unmanaged memory spaces to C# sparks controversy and skepticism among HN commenters, with many questioning its necessity and implementation.
Snapshot generated from the HN discussion
Discussion Activity
Active discussionFirst comment
4d
Peak period
15
Day 4
Avg / period
10
Comment distribution20 data points
Loading chart...
Based on 20 loaded comments
Key moments
- 01Story posted
Sep 24, 2025 at 2:17 PM EDT
4 months ago
Step 01 - 02First comment
Sep 28, 2025 at 4:04 AM EDT
4d after posting
Step 02 - 03Peak activity
15 comments in Day 4
Hottest window of the conversation
Step 03 - 04Latest activity
Oct 4, 2025 at 6:58 PM EDT
3 months ago
Step 04
Generating AI Summary...
Analyzing up to 500 comments to identify key contributors and discussion patterns
ID: 45364045Type: storyLast synced: 11/20/2025, 3:41:08 PM
Want the full context?
Jump to the original sources
Read the primary article or dive into the live Hacker News thread when you're ready.
Either way, a more fine grained control over the GC is probably preferred over something like this.
> It is the conductor [emoji] that directs the symphony of independent Spaces.
this pattern is a meme by now.
I want to clarify that the ideas in this manifesto are entirely my own. As I mentioned in the preface, English is not my native language, so I used AI tools to translate my original text. This is likely why some parts have an "AI-like" feel.
Thank you for the feedback; it's genuinely helpful. The substance of the work is what I truly wanted to share.
C# has its own share of warts when it comes to AOT -- it doesn't yet support OpenBSD; it does not yet support all reflection oriented keywords; it requires significant changes to msbuild to work with in a standalone context.
But this article reads like someone with minimal background in software went on a LLM prompted delusion and lacks an understanding of the C# language architecture, associated build system, and philosophy. Additions of keywords like the proposed "overspace" attempting to shoe-horn both inappropriate approaches and ideas are a plague on the community.
For me what makes me angry on .NET is the selective support of what lands outside Windows, the way Xamarin went down, and the need to continuously add language features to justify the team size and new release cycles, how will C# look a decade from now with that velocity adding features.
My main goal is to address the architectural complexity of microservices. Based on the feedback, I've written a much more detailed and focused follow-up that concentrates solely on that vision.
The new post and discussion are here: https://news.ycombinator.com/item?id=45477324
If you're willing to give the idea a second chance, I would be grateful for your thoughts on the new version.
If I understand correctly, instead of writing a c++ application to offload the computation of something, and then build a way of communicating the result between processes, you create a Space, define it as JIT/AOT, managed/unmanaged and execute it and use the built-in communication for transfering data.
It is an interesting approach. The author should check out Unity's Burst compiler. It takes a chunk of C# code, AOT compile it with LLVM and then the main application can invoke it. The concepts are adjacent.
Which is better handled by existing mature and simpler abstractions from the actor model, like Akka.net, or maybe Orleans.
I wanted to reply to you directly. I was truly impressed by your comments. You understood the precise, deep technical problem I was aiming at—the GC's 'stop-the-world' pauses affecting even non-GC threads—even from my admittedly clumsy and brief initial post. Thank you for that.
What I failed to convey properly, however, is that this performance mechanism is just one small consequence of a much larger idea. It's a foundational piece of a complete architectural model I've designed to address the fundamental pains of the current microservice paradigm.
I have now finished a full manifesto that lays out this entire vision. It includes a deep critique of our current ecosystem and presents the philosophy for a new style of programming intended to solve these core issues.
Given the depth of your understanding from that first article, I would be genuinely honored to get your critical feedback on the full proposal. If you're interested, the new post and discussion are here: https://news.ycombinator.com/item?id=45477324
Thanks again for your incredibly insightful comments.
Second, why do we need the "spaces" concept for dealing with no GC work? And what does it really solves? Meanwhile, the proposal lacks explanation on how C# behaves on the non managed world, like better syntax for allocation and deallocation, etc. No ownership model would make it a hard sell over Rust.
Thank you for the excellent and critical questions. You've pointed out the biggest flaw in my first article: it failed to properly connect the proposed concepts to the broader "myriad of problems" in the microservice ecosystem.
I have written a new, much more detailed manifesto that is almost entirely dedicated to explaining that connection and the architectural vision. I believe it addresses your first point directly.
But I also want to be transparent with you in particular. You asked about the low-level details—the "how" of C# in a non-managed world, memory management, and how it compares to Rust. You are right to ask for this. That new manifesto is still the philosophical 'why', but I want to assure you that I have already completed a full technical whitepaper that covers the 'how'.
The challenge is that the whitepaper is currently in my native language (Vietnamese), is quite long (around 150k characters), and I am still revising it before I can begin the translation.
So, I would like to propose a path forward. First, I would be grateful if you could read the new manifesto and give me your honest critique there. It lays out the complete architectural argument. https://news.ycombinator.com/item?id=45477324
If, after reading it, you trust the vision a bit more, I hope you'll be patient for a short while longer until I can properly translate the technical whitepaper which addresses your remaining concerns.
Alternatively, if you're curious to see the raw draft now, you can likely find it by searching my username plus the keyword "Viblo". You could then use an LLM for a preview translation, but I must give a strong disclaimer that I cannot promise the quality of an automated translation of an unrevised draft.
Thank you again for the sharp feedback. It's exactly the kind of critique that is needed.
You can add 30 more lines of code to your arena with some PInvoking on windows calling AddVectoredExceptionHandler and VirtualAlloc, which will allow you to allocate whatever amount of memory you'd like without actually committing it, creating a very optimized and easy to use alternative to whatever you're suggesting.
Now, imagine if that friction disappeared. Imagine 90% of your codebase is safe, using traditional collections and strings, while only the critical 10% uses high-performance, native data types. What if moving between these two worlds was a natural, compiler-guaranteed feature, not a manual, error-prone task? How amazing would that be?
This vision of seamless coexistence is the core of my proposal. I've detailed it in a new, more focused post and would love for you to take a look.
https://news.ycombinator.com/item?id=45477324
There are also other implementations of GC for C# with very interesting properties:
https://docs.unity3d.com/6000.2/Documentation/Manual/perform...