English | 简体中文
Rebuild real CLI tools in Rust and Go to learn file I/O, compression, TUI design, cross-platform behavior, and the trade-offs between two systems languages.
Live Site · Getting Started · Architecture · Rust vs Go Comparison
| Tool | Languages | What it teaches | Status |
|---|---|---|---|
dos2unix |
Rust | streaming file I/O, buffer boundaries, newline handling | Stable |
gzip |
Rust + Go | compression pipelines, CLI design, idiomatic error handling | Stable |
htop |
Rust + Go | TUI architecture, process metrics, cross-platform system APIs | Stable |
- One idea, two implementations: compare Rust and Go on the same problem space.
- Progressive complexity: start with a small streaming tool and end with a cross-platform terminal UI.
- Spec-driven development: repository-wide changes are tracked with OpenSpec instead of ad hoc drift.
- Practical engineering: shared build commands, CI, release automation, and a documentation site are part of the learning surface.
git clone https://github.com/LessUp/build-your-own-tools.git
cd build-your-own-tools
make build-all
make test-all
# Example: convert CRLF input from stdin
printf 'hello\r\nworld\r\n' | ./target/release/dos2unix-rustRepository-wide work follows OpenSpec:
openspec list
/opsx:propose "describe the change"
/opsx:apply
/opsx:archiveFor implementation and review:
make lint-all
make test-all
npm run docs:check
npm run docs:buildSee AGENTS.md, CLAUDE.md, and .github/copilot-instructions.md for the shared AI-assisted workflow rules used in this repository.
| Document | Purpose |
|---|---|
| Getting Started | set up the toolchains and run the project |
| Architecture | understand repo structure and system design |
| Comparison | compare Rust and Go design choices |
| Project spec | project-wide standards and workflow requirements |
| CHANGELOG.md | project release history |
Licensed under either of:
- Apache License, Version 2.0 (LICENSE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT License (LICENSE or http://opensource.org/licenses/MIT)