User-specified input buffers could be added in order to reduce the amount of
allocations that are performed:
proc slice(s: string; first, last: int; ret: var string) =
for i in first .. last:
ret.add s[i]
Then there's the issue of not being able to choose which type of allocations to
use for large parts of the standard library, and some people seem to be
convinced that this will remain the case for some reason, but hopefully we can
prove these people wrong. Things that make it difficult to adapt the modules in
this regard include things such as broken concepts and possibly the absence of
other language features that might make it more convenient to develop and use
such interfaces.