Zero-copy in Go: sendfile, splice, and the cost of io.Copy

mrngm 66 points 13 comments July 05, 2026
segflow.github.io · View on Hacker News

Discussion Highlights (7 comments)

sanxiyn

A good reminder. It is surprising first time you encounter it. Same for Rust. As https://doc.rust-lang.org/stable/std/io/fn.copy.html says, std::io::copy can use copy_file_range(2), sendfile(2), or splice(2).

mike_hock

Zero-Copy in Go: Why magic is an antipattern, and: performance is observable behavior.

throwrioawfo

Ugh, AI slop writing.

joaohaas

Interesting premise for a post, but I had to stop midway due to the AI slop writing adding meaningless information.

inigyou

This is almost like the expression problem. Copy is a new operation, and you introduced a new type, thus creating a new grid cell nobody from either side could have reasonably known about - except for the fact Copy is in the standard library so you could have known about it but not done anything.

drivebyhooting

How is the byte counting reader supposed to work in user space without putting the buffer in user space? The article claims there is a way but I want to see what is meant by counting bytes in that case.

sly010

Beware, there are versions of go where sendfile is broken and only sends the first 4k of a file on macos.

Semantic search powered by Rivestack pgvector
14,015 stories · 131,331 chunks indexed