๐ผ fcat
April 25, 2026 ยท View on GitHub
fcat, short for fastcat, is a cat implementation in Rust using Linux's splice syscall.
Read the announcement here.
:warning: **This project is currently broken on newer Linux versions (5.9+) because of some changes
concerning the splice system call. (See here and here.)
Consider using uutils/cat, GNU coreutils 9.11 on such kernels since it supports splice too.
Performance
cat myfile | pv -r > /dev/null
[1.90GiB/s]
fcat myfile | pv -r > /dev/null
[5.90GiB/s]
Installation
Note: Only works on Linux.
(But you can send me a pull request for other operating systems.)
cargo install fcat
Usage
fcat file1 file2 file3
Project goals
- Be the fastest cat in town.
- Be a drop-in replacement for (POSIX) cat.
Non-goals
- Provide any additional functionality other than what
catprovides.
If you're looking for a more beautiful cat, check out bat.
Known issues
If you run fcat /dev/zero >> myfile, it will fail with exit code EINVAL because, according to the splice manpage: "The target file is opened in append mode."
Trivia
- You probably won't ever need this, but it's a fun little experiment.
- What I like the most about the project is the logo.
- GNU coreutils 9.11 started using
spliceatcat(https://savannah.gnu.org/news/?id=10884).
License
fcat is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.