This repository provides Haskell functions that reimplement common GNU
coreutils commands, utilizing the streamly library for efficient,
and concurrent streaming data processing where applicable. The goal is
to offer a highly composable and performant alternative to traditional
shell commands within Haskell applications, enabling complex data
transformations, system programming and scripting using a pure
functional paradigm. Where applicable, the implementation is designed
to be concurrent, for example, the find equivalent can list directory
contents concurrently for improved performance.
How is it fast? For example, the serial implementation of find is
faster than the fastest yet find implementation which is rust fd. How
is it concurrent? Concurrency comes for free using the Haskell streamly
library, so wherever possible the implementation is concurrent and if
you need concurrency somewhere it can be made concurrent trivially. How
is it powerful? For example, the find implementation has many choices
like bfs, dfs, interleaved, concurrent unordered, concurrent ordered,
concurrent interleaved, all these are trivial to implement thanks to
Haskell streamly.
Currently, this library provides implementations for the following coreutils-inspired as well as some additional commands:
- Dir traversal:
ls,cp -r,rm -r - Dir modify:
touch,ln,cp,mkdir,rm,mv - File stat:
test,stat,touch - File read/write:
cp - Symlinks:
readlink,realpath - Processes:
cd,pwd,sleep,id - UserDB:
id,home - Text Processing:
cut,tail - Shell: streaming composition of shell commands
- Paths:
dirname,which,realpath,home
Please be aware that the API of this library is subject to heavy change in future releases. This project is under active development, and function signatures, module organization, and overall design may evolve significantly. Users should expect breaking changes and plan accordingly.