On Wednesday, 1 June 2016 at 08:53:01 UTC, Rene Zwanenburg wrote:
I was wondering: what's the preferred method for deterministic memory management?


You can annotate your functions as @nogc. The compiler will disallow any potential GC use, including calling other functions that are not @nogc.

P0nce is doing real time audio stuff, iirc he's using a thread with a @nogc entry point for the strictly real-time parts, and regular GC-using code in another thread for everything else.

Yes, GC is a minor concern for me. I'm happy to use the GC in UI stuff next to the @nogc part. As tired as the expression is, it's a "best of both world" situation.

I tried GC.disable(), it was bringing lots of stability problems because not all my code was @nogc and rogue allocations occured. I guess I deserved it?

I'm a heavy user of the GC-proof resource class "idiom" which turn your turn the GC into a leak detector: https://p0nce.github.io/d-idioms/#GC-proof-resource-class
That way you can make polymorphic resources with relative safety.
Exception safety is harder though for class objects. Usually struct should be used.

I'd say D has a more complex story for resources, but it's not necessary a bad story. When writing a writeln("hello world"); I don't really want to think about who owns the string "hello world". That's what affine types are about, one size fits all.


Reply via email to