I am just going to jump on the RT dogpile and mention that I too have wanted RT friendly GC in Haskell. I have attempted on more than one occasion to implement real-time audio applications in Haskell. But I tend to get a lot of buffer underruns, most likely due to GC.<div>
<br></div><div>For audio apps, there is a callback that happens every few milliseconds. As often as 4ms. The callback needs to finish as quickly as possible to avoid a buffer underruns. So, in theory, I believe I would want garbage collection to only happen in the time periods between when the callback is running. This wouldn&#39;t affect the total amount of time that garbage collection ran -- but it would help minimize the amount of time spent in the callback, which should reduce buffer underruns.</div>
<div><br></div><div>My feeling right now is that the &#39;best&#39; solution might be something similar to synthesis OS. I would create a DSL for the realtime DSP code. Using harpy, this DSL would be compiled to assembly with execution time guarantees (as much as can be predicted on modern hardware). For a &#39;modular synth&#39; this might actually be better than C code, because the effects of certain choices could be &#39;compiled in&#39; instead of having to check the setting via a compare. (that is what Synthesis OS does).</div>
<div><br></div><div>- jeremy</div><div><br></div><div><br></div>