www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - On D's garbage collection

reply Marcel <marcelpi97 gmail.com> writes:
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?
Oct 08 2019
next sibling parent reply Ferhat =?UTF-8?B?S3VydHVsbXXFnw==?= <aferust gmail.com> writes:
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
Oct 08 2019
parent reply Ferhat =?UTF-8?B?S3VydHVsbXXFnw==?= <aferust gmail.com> writes:
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
Oct 08 2019
parent Marcel <marcelpi97 gmail.com> writes:
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!
Oct 13 2019
prev sibling parent Max Haughton <maxhaton gmail.com> writes:
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)
Oct 08 2019