Microsoft working on new systems language

Ola Fosheim Grøstad" <ola.fosheim.grostad+dlang at gmail.com> Ola Fosheim Grøstad" <ola.fosheim.grostad+dlang at gmail.com>
Sun Dec 29 11:15:27 PST 2013


On Sunday, 29 December 2013 at 18:29:52 UTC, jerro wrote:
> You can do that in D too. core.thread.Fiber is implemented in D 
> (with a
> bit of inline assembly), without any special language support.

Yes, coroutines was a bad example, you probably can do that in 
many stack-based languages. My point was more that the 
transparency of the simple runtime of C is such that you can 
easily understand the consequences of such tricks. And the 
advantage of C(++) is that you can do focused low-level 
fine-tuning one compilation unit while using a more standard 
feature set on the rest of your code, because the part of the 
runtime you have to consider is quite simple.

>> The GC trash cashes when it kicks in.
>
> It can only kick in on allocation. In parts of your code where 
> latency is
> crucial, just avoid allocating from the garbage collected heap.

I understand that. In a real-time system you might enter such 
sections of your code maybe 120 times per second in a different 
thread which might be killed by the OS if it doesn't complete on 
time.

It is probably feasible to create a real-time friendly garbage 
collector that can cooperate with realtime threads, but it isn't 
trivial. To get good cache coherency all cores have to 
"cooperate" on what memory areas they write/read to when you 
enter timing critical code sections. GC jumps all over memory 
real fast touching cacheline after cacheline basically 
invalidating the cache (the effect depends on the 
GC/application/cpu/memorybus).



More information about the Digitalmars-d mailing list