https://github.com/uutils/awk
WIP drop-in replacement of gawk.
https://github.com/uutils/awk
Last synced: 25 days ago
JSON representation
WIP drop-in replacement of gawk.
- Host: GitHub
- URL: https://github.com/uutils/awk
- Owner: uutils
- License: apache-2.0
- Created: 2026-04-29T19:15:53.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-05-08T05:38:14.000Z (25 days ago)
- Last Synced: 2026-05-08T06:53:52.646Z (25 days ago)
- Language: Rust
- Homepage:
- Size: 104 KB
- Stars: 9
- Watchers: 2
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# uutils AWK
This is a human, WIP, and clean implementation of an AWK interpreter, written in Rust and compatible with GNU's AWK (`gawk`) bug-for-bug. Expected to be production-ready before Ubuntu 26.10. Made with love.
## State of the Repo
### Lexer
Essentially done; it is only lacking thorough testing and numeric escapings (good first contribution).
### Parser
Also mostly done; some bullet points:
* Extend spans during Pratt parsing for better error messages (trivial-ish?).
* The preprocessor is TBD (not complicated, but will tangle up pretty printing).
* It would be nice to reduce LOC.
* We are working on test coverage and fuzzing.
* It's possible we move to the `chumsky` crate for this reason and `ariadne` support. I currently think it's not necessary, though; we probably are better suited to owning the parser given how idiosyncratic and ambiguous AWK's grammar is.
* Start running gawk parsing tests at some point (especially when we get a basic interpreter and nail down `--pretty-print`).
### Interpreter
We are looking forward to building a basic tree-walking interpreter to get integration testing going, as well as a baseline for future iterations. Ideally, these should be a bytecode machine or a JIT. Expect this to be a fast-paced repo. The design sketch is for it to be a cooperative I/O machine, probably built with `smol`; if we want to better support AWK's long-forgotten number-crunching intent, we could easily extend this to parallel computations.
## Contributing
See [this](https://github.com/uutils/coreutils/blob/main/CONTRIBUTING.md).
## License
This is licensed under either the MIT License or the Apache License v2.0. See the `LICENSE-MIT` and `LICENSE-APACHE` files for details.