an efficient awk-like language
frawk is a small programming language for writing short programs processing textual data. To a first approximation, it is an implementation of the AWK language; many common Awk programs produce equivalent output when passed to frawk. You might be interested in frawk if you want your scripts to handle escaped CSV/TSV like standard Awk fields, or if you want your scripts to execute faster.
The info subdirectory has more in-depth information on frawk:
frawk is dual-licensed under MIT or Apache 2.0.
You will need to install Rust. If you would like to use the LLVM backend, you will need an installation of LLVM 10.0 on your machine:
pacman -Sy llvm llvm-libsand a C compiler (e.g.
clang) are sufficient as of September 2020.
brew install [email protected]or similar seem to work on Mac OS.
Depending on where your package manager puts these libraries, you may need to point
LLVM_SYS_100_PREFIXat the llvm library installation (e.g.
/usr/lib/llvm-10).
While the LLVM backend is recommended, it is possible to build frawk only with support for the Cranelift-based JIT and its bytecode interpreter. To do this, build without the
llvm_backendfeature. The Cranelift backend provides comparable performance to LLVM for smaller scripts, but LLVM's optimizations can sometimes deliver a substantial performance boost over Cranelift (see the benchmarks document for some examples of this).
frawk currently requires a nightly compiler by default. To compile frawk using stable, compile without the
unstablefeature. Using
rustup default nightly, or some other method to run a nightly compiler release is otherwise required to build frawk.
With those prerequisites, cloning this repository and a
cargo build --releaseor
cargo [+nightly] install --pathwill produce a binary that you can add to your
PATHif you so choose:
$ cd # With LLVM $ cargo +nightly install --path . # Without LLVM, but with other recommended defaults $ cargo +nightly install --path . --no-default-features --features use_jemalloc,allow_avx2,unstable
frawk is now on crates.io, so running
cargo install frawkwith the desired features should also work.
While there are no deliberate unix-isms in frawk, I have not tested it on Windows.
frawk has bugs, and many rough edges. If you notice a bug in frawk, filing an issue with an explanation of how to reproduce the error would be very helpful. There are no guarantees on response time or latency for a fix. No one works on frawk full-time. The same policy holds for feature requests.