As a curiosity, a Linux iovec seems to have the same layout as an array of Go strings (a bunch of (pointer, length) pairs). Looks like it&#x27;d be straightforward to implement a `func WriteStrings` taking a pointer to os.File and a []string that, on Linux, only makes one syscall.<p>Or you could make your own struct of byte pointers and lengths to make an iovec you can fill with content from []byte&#x27;s, with the caveat that the caller needs to leave those bytes untouched between when it adds them to the vec and the actual writev. To mix byte and string output, you probably need to use unsafe.<p>I don&#x27;t see a way to tie writev in with the stdlib text&#x2F;template libraries, which stick to plain io.Reader and Writer, without forking them.<p>Curious how writev compares to the usual approach of just pointing text&#x2F;template at a *bufio.Writer (which also passes the &quot;generate 40GB of the word DOOM and don&#x27;t crash&quot; test).<p>Regardless of the specifics, BEAM and the ecosystem around it is one of the more interesting places to crib ideas from, in that it&#x27;s pretty different from a lot of stuff out there but has shown some value and longevity in production.