Thread overview
On D's garbage collection
Oct 08
Marcel
6 days ago
Marcel
October 08
I'm been thinking about using D in conjunction with C11 to develop a set of applications with hard real-time requirements. While initially the goal was to use C++ instead, it has become clear that D's introspection facilities will offer significant advantages. Unfortunately, the project will heavily rely on custom memory allocators written in C, so the presence of garbage collection in the language is a problem. While I'm aware that the nogc attribute exists, I haven't actually seen a way to apply it to a whole project. Is this possible?
October 08
On Tuesday, 8 October 2019 at 16:28:51 UTC, Marcel wrote:
> I'm been thinking about using D in conjunction with C11 to develop a set of applications with hard real-time requirements. While initially the goal was to use C++ instead, it has become clear that D's introspection facilities will offer significant advantages. Unfortunately, the project will heavily rely on custom memory allocators written in C, so the presence of garbage collection in the language is a problem. While I'm aware that the nogc attribute exists, I haven't actually seen a way to apply it to a whole project. Is this possible?

I think you may find this interesting: https://www.auburnsounds.com/blog/2016-11-10_Running-D-without-its-runtime.html

October 08
On Tuesday, 8 October 2019 at 16:43:23 UTC, Ferhat Kurtulmuş wrote:
> On Tuesday, 8 October 2019 at 16:28:51 UTC, Marcel wrote:
>> I'm been thinking about using D in conjunction with C11 to develop a set of applications with hard real-time requirements. While initially the goal was to use C++ instead, it has become clear that D's introspection facilities will offer significant advantages. Unfortunately, the project will heavily rely on custom memory allocators written in C, so the presence of garbage collection in the language is a problem. While I'm aware that the nogc attribute exists, I haven't actually seen a way to apply it to a whole project. Is this possible?
>
> I think you may find this interesting: https://www.auburnsounds.com/blog/2016-11-10_Running-D-without-its-runtime.html

And the code which is actually working: https://github.com/AuburnSounds/Dplug/blob/master/core/dplug/core/nogc.d


October 08
On Tuesday, 8 October 2019 at 16:28:51 UTC, Marcel wrote:
> I'm been thinking about using D in conjunction with C11 to develop a set of applications with hard real-time requirements. While initially the goal was to use C++ instead, it has become clear that D's introspection facilities will offer significant advantages. Unfortunately, the project will heavily rely on custom memory allocators written in C, so the presence of garbage collection in the language is a problem. While I'm aware that the nogc attribute exists, I haven't actually seen a way to apply it to a whole project. Is this possible?

Do you want to write D code that just doesn't use the GC or the whole runtime?

If the former then use @nogc at the entry point of your D code (This means that - say - main cannot call anything non-@nogc and therefore guarantees the program is @nogc), if the latter then use -betterC

IMO, if the interface to your memory allocators is stable then just link with them and write the whole thing in D (Interfacing with C is a solved problem but C is just awful compared to the features you get for free in D)
6 days ago
On Tuesday, 8 October 2019 at 16:48:55 UTC, Ferhat Kurtulmuş wrote:
> On Tuesday, 8 October 2019 at 16:43:23 UTC, Ferhat Kurtulmuş wrote:
>> On Tuesday, 8 October 2019 at 16:28:51 UTC, Marcel wrote:
>>> [...]
>>
>> I think you may find this interesting: https://www.auburnsounds.com/blog/2016-11-10_Running-D-without-its-runtime.html
>
> And the code which is actually working: https://github.com/AuburnSounds/Dplug/blob/master/core/dplug/core/nogc.d

Wonderful, i'll be looking into it. Thank you!