Idea #1 on integrating RC with GC

Sean Kelly sean at invisibleduck.org
Thu Feb 6 11:46:11 PST 2014


I know I'm coming into this a bit late, but in general I only 
feel like there's a problem with built-in dynamic types.  It 
generally isn't hard to manage the lifetime of classes manually, 
and I don't tend to churn through them.  Also, there are 
basically no routines in Phobos that operate on classes, so 
that's really entirely my problem as a user anyway.  What 
concerns me most is string processing, and in particular the 
routines in Phobos that do string processing.  And while I've 
always liked the idea of supplying a destination buffer to these 
routines, it doesn't help the case where the buffer is too small 
and allocation still needs to occur.

Instead of sorting out some crazy return type or supplying a raw 
destination buffer, what if we instead supply an appender?  Then 
the appender could grow the buffer in place or throw or whatever 
we want the behavior to be when out of space.  I think this would 
solve 90% of my concerns about unexpected GC pauses in my code.  
For the rest, any temporary allocations inside Phobos routines 
should either be eliminated, reused on each call per a static 
reference, or cleaned up.  I'm really okay with the occasional 
"new" inside a routine so long as repeated calls to that routine 
don't generate tons of garbage and thus trigger a collection.


More information about the Digitalmars-d mailing list