One other Nim-level thing I can say is that things work as expected for
`seq[int]` of the same memory scale (100MB). I.e.,
proc main() =
var s: seq[int]
for i in 0..12_500_000: s.add 1
echo len(s)
main()
Run
produces a memory report (using /usr/bin/time on Linux) like:
187MB seq2-arc
250MB seq2-default
250MB seq2-msweep
265MB seq2-boehm
300MB seq2-none
Run
So, this problem is **_only_** for Nim `string`. Indeed, if one changes
`string` to `seq[char]` in the original example, usage goes down to 139MB,
roughly what one would expect for a 3/2 growth policy.