diff options
Diffstat (limited to 'README-ZIG.md')
-rw-r--r-- | README-ZIG.md | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/README-ZIG.md b/README-ZIG.md new file mode 100644 index 0000000..9aa043d --- /dev/null +++ b/README-ZIG.md @@ -0,0 +1,57 @@ +# Dosage - Zig Port + +This is a Zig port of the original Rust-based DOS command shell implementation. + +## Dependency Replacements + +The original Rust version used several external crates that have been replaced with Zig standard library functionality: + +### Rust → Zig Replacements +- **`rustyline`** (command-line editing) → Simple `stdin.readUntilDelimiterOrEofAlloc()` +- **`crossterm`** (terminal manipulation) → ANSI escape sequences for screen clearing +- **`prettytable-rs`** (table formatting) → Custom formatting with `print()` +- **`eyre`/`color-eyre`** (error handling) → Zig's built-in error handling +- **`thiserror`** (error derive macros) → Zig error unions +- **`regex`** (regular expressions) → Not needed in current implementation + +### Key Architectural Changes + +1. **Error Handling**: Replaced Rust's `Result<T, E>` with Zig's error unions (`!T`) +2. **Memory Management**: Manual allocation/deallocation using Zig's allocators instead of Rust's ownership system +3. **String Handling**: Explicit memory management for strings vs Rust's `String`/`&str` +4. **Concurrency**: Removed complex threading from original Rust version for simplicity +5. **Command Line Editing**: Simplified to basic line reading (no history or editing features) + +### Missing Features (compared to Rust version) +- Command-line history and editing (rustyline features) +- Colored error output +- Advanced terminal manipulation +- Complex pipe/redirection handling +- Multi-threaded command execution + +## Build Instructions + +```bash +# Build and run in debug mode +zig build run + +# Build optimized release version +zig build -Doptimize=ReleaseFast + +# Run tests +zig build test +``` + +## Implementation Notes + +The Zig version focuses on core DOS command functionality while maintaining the same architectural patterns as the Rust original. The enum-based command system has been preserved using Zig's union types. + +Key DOS commands implemented: +- `ECHO` (with ON/OFF variants) +- `CLS` (clear screen) +- `EXIT` (exit shell) +- `VER` (version info) +- `DATE` and `TIME` (system date/time) +- `DIR` (directory listing) + +The implementation uses Zig's standard library exclusively, avoiding external dependencies for better portability and simplicity.
\ No newline at end of file |