Phobos for Review: std.buffer.scopebuffer

Dmitry Olshansky dmitry.olsh at gmail.com
Sun Feb 9 12:43:44 PST 2014


07-Feb-2014 12:24, Walter Bright пишет:
> https://github.com/D-Programming-Language/phobos/pull/1911
>
> This adds a package std.buffer, and the first entry in that package,
> std.buffer.scopebuffer.
>
> ScopeBuffer is an OutputRange that sits on the stack, and overflows to
> malloc/free. It's designed to help in eliminating gc allocation by lower
> level functions that return buffers, such as std.path.buildPath(). With
> some judicious user tuning of the initial stack size, it can virtually
> eliminate storage allocation.
>
> Using it is @system, but the user of ScopeBuffer can be @trusted.
>
> An output range like this is a precursor to eliminating the excessive gc
> use by functions such as buildPath().

Some food for thought:

1. I guess there is a distinctive quality to a buffer (i.e. it's not 
just any output range). The current interface looks quite arbitrary - is 
'pop' required for any buffer? A trait like isBuffer is in order, to 
allow user code to target any buffers including non-Phobos ones.

2. May need buffer.package.d to import all common buffers (there is only 
one now, but with time...).


-- 
Dmitry Olshansky


More information about the Digitalmars-d mailing list