To all those familiar with D programming language, how would go about using it in a embedded real-time environment? I understand that it's original design is not targeted for real-time embedded environments, but this question is more about how would you go about making real-time capability happen.
Which constructs of the language would be indispensable?
Which constructs do you see would be a problem?
Has anyone successfully used it in a embedded system?
Any other thoughts or suggestions would be great.
D isn't really meant for use in real-time applications, mostly because some language features of D rely on its garbage collector, and D's garbage collector is unpredictable and will sporadically pause your program to collect garbage. Quoting:
Garbage collection is not a panacea. There are some downsides:
- It is not predictable when a collection gets run, so the program can arbitrarily pause.
- The time it takes for a collection to run is not bounded. While in practice it is very quick, this cannot be guaranteed.
- All threads other than the collector thread must be halted while the collection is in progress.
You can still use D without a garbage collector (by managing memory manually, like in C/C++) - this will prevent you from using certain language features like associative arrays, and library functions that internally allocate memory without deallocating/returning a reference to it. D still excels in many areas not dependent on memory management (such as metaprogramming).
Real time is more about guarantees than "real time" performance. As such there are two possibilities;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With