A curated list of replacements for existing software written in Rust

Overview

Awesome Alternatives in Rust

github workflow status

A curated list of replacements for existing software written in Rust.

If you want to contribute, please read CONTRIBUTING.md.

I renamed the repository to "Awesome Alternatives in Rust". The original name was "Awesome Rewrite It In Rust". For more details, please refer to this issue.

Table of contents

Applications

Container

runc

  • youki - An experimental container runtime written in Rust

System tools

autojump / z

  • zoxide - A smarter cd command for your terminal.

awk

  • frawk - an efficient awk-like language

bash/PowerShell/fish

  • nushell - An attractive structured shell

bc

  • eva - a calculator REPL, similar to bc(1)

cat

  • bat - A cat(1) clone with wings.

cloc

  • loc - Count lines of code quickly.
  • tokei - Count your code, quickly.

coreboot

  • oreboot - oreboot is a fork of coreboot, with C removed, written in Rust.

cp

  • xcp - An extended cp

cut

  • choose - A human-friendly and fast alternative to cut and (sometimes) awk

diff

  • delta - A viewer for git and diff output

dig

  • dog - A command-line DNS client.

du

  • dua - View disk space usage and delete unwanted data, fast.
  • dust - A more intuitive version of du in rust

find

  • fd - A simple, fast and user-friendly alternative to 'find'

fzf

  • skim - Fuzzy Finder in rust!

GNU coreutils

  • coreutils - Cross-platform Rust rewrite of the GNU coreutils

hexdump

  • hexyl - A command-line hex viewer

httpie

  • xh - Friendly and fast tool for sending HTTP requests

ls

  • exa - A replacement for 'ls'
  • lsd - An ls with a lot of pretty colors and awesome icons
  • nat - ls alternative with useful info and a splash of color 🎨

nvm

  • fnm - 🚀 Fast and simple Node.js version manager, built in Rust
  • volta - Volta: JS Toolchains as Code.

ps

  • procs - A modern replacement for ps written in Rust

rbenv

  • frum - A little bit fast and modern Ruby version manager written in Rust

rm

  • rip - A safe and ergonomic alternative to rm

sed

  • sad - CLI search and replace | Space Age seD
  • sd - Intuitive find & replace CLI (sed alternative)

strings

  • stringsext - Find multi-byte-encoded strings in binary data

sudo

  • please - sudo like program with regex support written in rust

time

  • hyperfine - A command-line benchmarking tool

tldr

  • navi - An interactive cheatsheet tool for the command-line
  • tealdeer - A very fast implementation of tldr in Rust.

top

  • bottom - Yet another cross-platform graphical process/system monitor.
  • ytop (no longer maintained) - A TUI system monitor written in Rust

uniq

  • huniq - Filter out duplicates on the command line.

yay

  • paru - Feature packed AUR helper

Terminal

tmux

  • Zellij - A terminal workspace with batteries included

Spaceship

  • starship - ☄️ 🌌 The minimal, blazing-fast, and infinitely customizable prompt for any shell!

Text editors

Vim

  • Amp - A complete text editor for your terminal.

Text processing

grep

  • ripgrep - ripgrep recursively searches directories for a regex pattern while respecting your gitignore

Utilities

codemod

  • fastmod - A fast partial replacement for the codemod tool

jq

  • jql - A JSON Query Language CLI tool built with Rust 🦀

lazygit

  • gitui - Blazing fast terminal-ui for git written in Rust 🦀

Web

Reddit

  • Lemmy - 🐀 Building a federated alternative to reddit in rust

teddit

  • libreddit - Private front-end for Reddit written in Rust

Development tools

Command runners

  • just - A command runner and partial replacement for make

Linters

ESLint

  • deno_lint - Blazing fast linter for JavaScript and TypeScript written in Rust
  • RSLint - A (WIP) Extremely fast JavaScript and TypeScript linter and Rust crate

ShellCheck

Comments
  • [For all contributors] Do you think I should change the repository name?

    [For all contributors] Do you think I should change the repository name?

    Some people in reddit suggest renaming to the repository name. Do you think I should change the repository name? If so, please give me your idea for this repository's name.

    I'm wondering whether I should do it.

    ref:

    Just a heads up that I got a lot random whining from folks about calling ripgrep a "replacement" for grep so long as it wasn't POSIX compatible or otherwise bug-for-bug compatible with grep. In response to that, I added a FAQ item: https://github.com/BurntSushi/ripgrep/blob/master/FAQ.md#posix4ever

    And I'm not really a fan of calling this "Awesome Rewrite it in Rust." I didn't set out to "rewrite grep in Rust." Not only was it not my intent, but ripgrep is quite literally not a rewrite of grep in Rust in any sense of the word.

    https://www.reddit.com/r/rust/comments/nm96n1/awesome_rewrite_it_in_rust_a_curated_list_of/gzold43?utm_source=share&utm_medium=web2x&context=3

    May I suggest a rename to "Alternatives in Rust (AIR)"?

    https://www.reddit.com/r/rust/comments/nm96n1/awesome_rewrite_it_in_rust_a_curated_list_of/gzny13l?utm_source=share&utm_medium=web2x&context=3

    I think having a list like this is awesome, just change the name might be good.

    https://www.reddit.com/r/rust/comments/nm96n1/awesome_rewrite_it_in_rust_a_curated_list_of/gzpvc8q?utm_source=share&utm_medium=web2x&context=3

    "Awesome Alternatives" might be better?

    https://www.reddit.com/r/rust/comments/nm96n1/awesome_rewrite_it_in_rust_a_curated_list_of/gzoybro?utm_source=share&utm_medium=web2x&context=3

    My bikeshed for the rename is "Awesome Rust Rewrites"

    https://www.reddit.com/r/rust/comments/nm96n1/awesome_rewrite_it_in_rust_a_curated_list_of/gzoej3v?utm_source=share&utm_medium=web2x&context=3

    help wanted question 
    opened by TaKO8Ki 5
  • Sort-of rewrites?

    Sort-of rewrites?

    I wrote a utility called just that is a replacement for using make as a command runner. However, it’s not a build system, so it’s not a full replacement for make. I wanted to open a PR adding it, but wasn’t sure it would be a good fit.

    What’s the policy for sort-of replacements for existing utilities?

    question 
    opened by casey 2
  • delta as a replacement for diff-highlight and diff-so-fancy

    delta as a replacement for diff-highlight and diff-so-fancy

    I haven't checked how complete they are, but delta is a Rust-based diff viewer that lists "diff-highlight and diff-so-fancy emulation modes" as one of its features and sad says "Any git compatible colourizer would work. I perfer these two:" before listing delta and diff-so-fancy.

    opened by ssokolow 1
  • fastmod: kind of similar to `sad`

    fastmod: kind of similar to `sad`

    https://github.com/facebookincubator/fastmod

    fastmod is a fast partial replacement for codemod. Like codemod, it is a tool to assist you with large-scale codebase refactors, and it supports most of codemod's options. fastmod's major philosophical difference from codemod is that it is focused on improving the use case "I want to use interactive mode to make sure my regex is correct, and then I want to apply the regex everywhere". For this use case, it offers much better performance than codemod. Accordingly, fastmod does not support codemod's --start, --end, or --count options, nor does it support anything like codemod's Python API.

    opened by ghuls 1
  • Add `Broot`

    Add `Broot`

    Thank you for making awesome-alternatives-in-rust better!

    Here's a checklist for things that will be checked during review or continuous integration.

    • [x] cargo run passes locally.

    changelog:

    • Add Brot
    opened by azzamsa 0
  • Add ion shell

    Add ion shell


    changelog: Added ion as an alternative shell. While it is developed for RedoxOS, and used in it as the default, ion is easily installed on *nix platforms with cargo install, or even from the repos.

    opened by omr-machine 0
  • Modify Rust code to improve idiomaticity

    Modify Rust code to improve idiomaticity

    I've made a few minor tweaks to the Rust code of this repo to follow more Rust idioms which may improve readability as well. Thanks for this great project! :grin:

    changelog:

    • Change single-character string slices to chars
    • query.find("...").is_none()query.contains("...")
    • Use unwrap_or_default() instead of unwrap_or(DEFAULT_VALUE)
    • Specify variable type in declaration of collected iterators
    • url_checks.len() > 0!url_checks.is_empty()
    • Empty unneeded "" from println macro
    opened by spikecodes 0
  • Pants 2 replacement for Pants 1

    Pants 2 replacement for Pants 1

    Hi! I'm a maintainer on the Pants open source project, a build system that was originally written in Python (Pants 1) then was rewritten from the ground up (Pants 2) using Rust for the core engine. Additional info about how Pants 2 takes advantage of Rust https://blog.pantsbuild.org/fast-incremental-builds-speculation-cancellation/. Though the two projects share name and maintainers, Pants 2 is a wholly new codebase with different design goals. Meanwhile Pants 1 continues to be used and supported in its original incarnation.

    Would it be appropriate to open a PR adding Pants to the list? And if so, would creating a new heading, Development Tools > Build Systems be 👍? Pants is more powerful than a command runner, which is the closest fit among the existing headings.

    opened by cczona 0
Owner
Takayuki Maeda
Software Engineer?
Takayuki Maeda
⚙️ A curated list of static analysis (SAST) tools for all programming languages, config files, build tools, and more.

This repository lists static analysis tools for all programming languages, build tools, config files and more. The official website, analysis-tools.de

Analysis Tools 10.7k Jan 2, 2023
Rust TUI library - Clipping region is a set of min/max x/y values applied to the existing region

TinyBit Clipping region is a set of min/max x/y values applied to the existing region A TUI lib This is not yet production ready T O D O TODO: bugs: T

Togglebit 13 May 3, 2022
A user-friendly re-implementation of existing hex tools in Rust

Hex A project to create alternate (and more user friendly) versions of existing hex tools. The project can be installed as a extension to the github-c

Sohom Datta 6 Sep 27, 2022
🐢 Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands

Atuin replaces your existing shell history with a SQLite database, and records additional context for your commands. Additionally, it provides optional and fully encrypted synchronisation of your history between machines, via an Atuin server.

Ellie Huxtable 4.6k Jan 1, 2023
📦 Distribute Roblox games as standalone executables -- No existing client necessary. 🚧

?? Packer Distribute Roblox games as standalone executables. ?? Packer is still being worked on. Among many other things, Windows is not currently sup

Brooke Rhodes 16 Dec 20, 2022
A BASIC language interpreter. Does not conform to existing standards. Mostly a toy.

JW-Basic A toy language that is somewhat like QBasic. Features: Graphics: 160x96 (255 colors & transparent) Text: 32x16 (4x5 font) Character set: ASCI

John Wells 8 Feb 15, 2023
A simple to-do list manager written in Rust

A simple To-Do list manager written in Rust I wrote this project while I'm learning Rust for practice. I decided to put this project online so that ot

Tiago Correia 4 Jan 5, 2023
SA-MP client server list fix but written in Rust

Server List Fix This is a samp client server list fix, which reroutes the client's request to list.sa-mp.com to sam.markski.ar. The idea is originally

__SyS__ 4 Feb 4, 2024
A tiny software renderer written in Rust.

tiny-renderer 简单的软光栅化渲染器 基础数学库 Bresenham画线算法 Cohen-Sutherland线段裁剪算法 glTF模型加载 模型/视图/投影变换 背面剔除 视椎剔除 齐次空间裁剪 深度测试 Blinn–Phong着色模型 重心坐标插值 运行 bresenham画线算法

Night's Watch Games 9 May 29, 2023
(Pre-Release Software) Secure, Encrypted, P2P chat written atop Warp, IPFS, LibP2P, Dioxus and many more awesome projects and protocols.

Uplink Privacy First, Modular, P2P messaging client built atop Warp. Uplink is written in pure Rust with a UI in Dioxus (which is also written in Rust

Satellite 13 Jan 25, 2023
argmax is a library that allows Rust applications to avoid Argument list too long errors (E2BIG) by providing a std::process::Command wrapper with a

argmax argmax is a library that allows Rust applications to avoid Argument list too long errors (E2BIG) by providing a std::process::Command wrapper w

David Peter 22 Nov 20, 2022
A list of crates with snippets used by me to learn more about Rust.

my-rust-examples This is a list of crates used by me to learn Rust. How to execute You can use a dependency called cargo-play: cargo install cargo-pla

Ronald 0 Jan 3, 2022
CLI tool that extracts a regex pattern from a list of urls ( Rust )

rextract CLI tool that extracts a regex pattern from a list of urls. The tool is written in Rust and supports PCRE. Installation Step 1: Visit https:/

null 45 Dec 11, 2022
belt is a command line app that can show your time from a list of selected time zones

A CLI app to show your time from a list of selected time zones, and a rust lib to parse dates in string formats that are commonly used.

Rollie Ma 23 Nov 4, 2022
CLI app to display list of trending anime, music charts or recommend anime to watch or song to listen to.

Description Anitrendz is a cli app that uses data from the anitiop api to list the top anime and songs or recommend a random anime to watch or song to

Jimmy 9 Jun 11, 2022
A command-line tool to generate a list of required missing Android OS Project blobs.

aosp-missing-blobs aosp-missing-blobs is a nifty tool to identify required blobs (.so) that are missing from AOSP ROM builds, and to show which existi

Josh 176 Dec 16, 2022
Cargo-about - 📜 Cargo plugin to generate list of all licenses for a crate 🦀

?? cargo-about Cargo plugin for generating a license listing for all dependencies of a crate See the book ?? for in-depth documentation. Please Note:

Embark 281 Jan 1, 2023
As-tree - Print a list of paths as a tree of paths 🌳

as-tree Print a list of paths as a tree of paths. For example, given: dir1/foo.txt dir1/bar.txt dir2/qux.txt it will print: . ├── dir1 │ ├── foo.tx

Jake Zimmerman 396 Dec 10, 2022
List public items (public API) of library crates. Enables diffing public API between releases.

cargo-public-items List public items (the public API) of a Rust library crate by analyzing the rustdoc JSON of the crate. Automatically builds the rus

Martin Nordholts 203 Dec 31, 2022