Skip to content
This repository was archived by the owner on Jul 20, 2026. It is now read-only.

Repository files navigation

😼 fcat

Warning

This project is no longer obsolete. Consider using uutils/cat or GNU coreutils, which now both support splice too.

fastcat logo

fcat, short for fastcat, is a cat implementation in Rust using Linux's splice syscall.
Read the announcement here.

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 cat provides.
    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 splice at cat (https://savannah.gnu.org/news/?id=10884).

License

fcat is licensed under either of

at your option.

About

A 3x faster implementation of cat, using splice

Topics

Resources

Stars

282 stars

Watchers

8 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages