Show HN: Grsh – A high-performance shell for FreeBSD written in Rust (grimreaper.icu)
I built GRSH because I wanted a modern, memory-safe shell that feels native to FreeBSD but works seamlessly on macOS.
While there are many shells out there, GRSH is my take on a minimal, fast, and secure command interpreter written entirely in Rust. It's designed for users who want the safety guarantees of Rust without the overhead of more bloated alternatives.
I'm currently working on the official FreeBSD port. I’d love to get feedback on the shell's behavior and performance from the community.
23 comments
[ 441 ms ] story [ 256 ms ] threadWhile the shell is still in its early stages, my goal is to create a lightweight, fast, and secure alternative to traditional shells that feels at home on both FreeBSD and macOS.
Key features I'm focusing on:
Zero-cost abstractions for process management.
Native performance on BSD-based systems.
Minimalist design without the bloat of modern 'all-in-one' shells.
I'm also developing DIR (a visual disk analyzer for FreeBSD) as part of this 'Grim Reaper' toolset.
I would love to hear your feedback on the implementation or any specific features you'd like to see in a Rust-based shell for Unix systems.
Source Code: https://github.com/antoniomalara301289/grsh Project Page: https://grimreaper.icu
Regarding signal propagation, I’m leaning towards a direct integration with libc to maintain that 'native' feel you mentioned, specifically for managing tcsetpgrp and ensuring the terminal is correctly assigned to the active process group.
One feature I’m particularly proud of is what I call 'Pinning': it allows the user to pin a specific process and recall it instantly. This is part of my effort to make GRSH feel more interactive than a standard POSIX shell.
As for async signal handling, I'm currently refining the core loop to ensure that complex pipelines don't leave zombie processes or mismanaged groups on the FreeBSD kernel. It's a work in progress, and feedback on the current implementation in the repo is more than welcome!
It would be a complex, useful, and empowering tool for anyone who wants to combine shell productivity with personal health. I’d love to explore implementing this in Rust.
You can leverage existing bash/zsh functionality as a base, but the key feature is interactive job selection.
What does that even mean? In what way do other shells not feel native to FreeBSD?