fcat, short for fastcat, is a cat implementation in Rust using Linux's splice syscall.
Read the announcement here.
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.
cat myfile | pv -r > /dev/null
[1.90GiB/s]
fcat myfile | pv -r > /dev/null
[5.90GiB/s]
Note: Only works on Linux.
(But you can send me a pull request for other operating systems.)
cargo install fcat
fcat file1 file2 file3
- Be the fastest cat in town.
- Be a drop-in replacement for (POSIX) cat.
- Provide any additional functionality other than what
catprovides.
If you're looking for a more beautiful cat, check out bat.
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."
- 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).
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.