zoro

Crates.iozoro
lib.rszoro
version1.2.0
created_at2025-06-30 06:07:05.798491+00
updated_at2025-07-06 08:03:25.903752+00
descriptionblazingly fast and sharp shell built in rust
homepagehttps://github.com/simplysabir/zoro
repositoryhttps://github.com/simplysabir/zoro
max_upload_size
id1731462
size19,730
Sabir Khan (simplysabir)

documentation

README

🗡️ zoro

A blazingly fast and sharp shell built in Rust.

Crates.io License: MIT


About The Project

Zoro is a modern, POSIX-compliant shell built from the ground up in Rust. The primary goal of this project is to serve as a deep dive into the fundamentals of shell internals, operating systems concepts, and low-level systems programming.

It aims to be not just a functional shell, but a well-documented and educational resource for anyone looking to understand how shells work under the hood.

🚧 Current Status: Pre-Alpha

Warning: Zoro is currently in the very early stages of development and is not yet suitable for daily use. It is a work-in-progress learning project.

Implemented Features

  • Basic Read-Eval-Print Loop (REPL) that can accept input.
  • Graceful exit via Ctrl+D.

Roadmap

The immediate goals are to implement the core features of a shell:

  • Parsing: Tokenize and parse user input into commands and arguments.
  • Execution: Use fork and execve to run external commands.
  • Built-ins: Implement essential built-in commands like cd, pwd, exit, and export.
  • PATH Handling: Search the PATH environment variable to find executables.
  • I/O Redirection: Implement > (output), < (input), and | (pipes).
  • Error Handling: Provide robust and user-friendly error messages.

Installation

Zoro is published on crates.io. To try it out, you must build it from the source code or install from cargo.

  1. Clone the repository:

    git clone [https://github.com/simplysabir/zoro.git](https://github.com/simplysabir/zoro.git)
    cd zoro
    
  2. Build and run using Cargo:

    cargo run
    

Usage

Once you run the command above, you will be greeted with the Zoro prompt. For now, it will simply echo back any input you provide.

$ cargo run
   Compiling zoro v0.1.0 (/path/to/zoro-shell)
    Finished dev [unoptimized + debuginfo] target(s) in 0.50s
     Running `target/debug/zoro`
[zoro] > hello world
echo: hello world
[zoro] >
Commit count: 0

cargo fmt