Bun.js has fast paths for common use cases that make Web APIs live up to the performance demands of servers and CLIs.
Bun.file(path)
returns a Blob
that represents a lazily-loaded file.
When you pass a file blob to Bun.write
, Bun automatically uses a faster system call:
const blob = Bun.file("input.txt");
await Bun.write("output.txt", blob);
On Linux, this uses the copy_file_range
syscall and on macOS, this becomes clonefile
(or fcopyfile
).
Bun.write
also supports Response
objects. It automatically converts to a Blob
.
// Eventually, this will stream the response to disk but today it buffers
await Bun.write("index.html", await fetch("https://example.com"));