frawk 0.2.0

an efficient Awk-like language
frawk-0.2.0 is not a library.

frawk

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:

  • Overview: what frawk is all about, how it differs from Awk.
  • Types: A quick gloss on frawk's approach to types and type inference.
  • Parallelism: An overview of frawk's parallelism support.
  • Benchmarks: A sense of the relative performance of frawk and other tools when processing large CSV or TSV files.
  • Builtin Functions Reference: A list of builtin functions implemented by frawk, including some that are new when compared with Awk.

frawk is dual-licensed under MIT or Apache 2.0.

Installation

In addition to installing Rust, you will need an installation of LLVM 9.0 on your machine. See this site for installation on Linux; brew install llvm@9 or similar seem to work on Mac OS. Other versions of LLVM may work as well. While the LLVM backend is recommended, it is possible to build frawk only with support for its bytecode interpreter: to do so, build without the llvm_backend feature.

With those prerequesites, cloning this repository and a cargo build --release or cargo install --path <frawk repo path> will produce a binary that you can add to your PATH if you so choose:

$ cd <frawk repo path>
# With LLVM
$ cargo install --path .
# Without LLVM, but with other recommended defaults
$ cargo install --path . --no-default-features --features use_jemalloc,allow_avx2 

frawk is now on crates.io, so running cargo install frawk with the desired features should also work.

While there are no deliberate unix-isms in frawk, I have not tested it on Windows.

Bugs and Feature Requests

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.