Sushline
June 12, 2026 ยท View on GitHub
Sushline is a pure Rust line-editing and history foundation aiming for Readline-style behavioral compatibility for interactive command interpreters. It started as the line editor for Sushi shell, a.k.a. Sush, and its public API is designed for Rust embedders.
The compatibility target is GNU Readline 8.3 and GNU History Library observable behavior. Sushline uses Bash-hosted oracle tests where Bash is the practical way to exercise GNU Readline, but Sushline is not a Bash-compatible shell implementation. It is an independent Rust implementation and does not include Readline source code. It is not a C ABI-compatible replacement for Readline; compatibility is documented at the Rust API and observable editor/history behavior level.
Crate Layout
The root crate exposes two public modules:
sushline::readline: line editing, keymaps, inputrc,bind, completion, rendering, terminal I/O, and application hook interfaces.sushline::history: history storage, search, stifle/state APIs, file persistence, timestamped history records, and history expansion.
use sushline::readline::{Config, Editor, History, Prompt, Terminal};
let mut editor = Editor::new(
Config::default(),
Terminal::new(),
History::new(),
);
let _ = editor.read_line(Prompt::new("> "), &mut ());
Documentation
COMPATIBILITY.md: baseline and scope.DESIGN.md: structure and embedding API.
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.