• Stars
    star
    548
  • Rank 81,119 (Top 2 %)
  • Language
    Racket
  • License
    Other
  • Created over 8 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The Reckless Racket Shell

Rash: The Reckless Racket Shell

Scribble Docs

Rash is a shell language, library, and REPL for Racket.

Use as a repl that is as convenient for pipelining programs as Bash is, but has all the power of Racket. Use as a scripting language with #lang rash. Embed in normal Racket files with (require rash), and mix freely with any other Racket language or library.

Rash is in active development, but it is largely stable (and the parts that aren't are marked as such). I use it as my default interactive shell on my laptop. It currently lacks the interactive polish of Zsh or Fish, but it is so much better as a language. Every script I've ported from a Bourne-related shell to Rash is more robust, simpler, easier to maintain, easier to expand, and much more fun.

Getting started

Prerequisites

Rash does work on windows, but it works better and is more useful on unix based systems.

To install, you will need a working installation of racket v6.12 or later.

Installation

You can either install with racket's built in package manager, raco, or install directly from github. If you have DrRacket installed, you can install rash with File -> Install Package.

via raco:

raco pkg install rash

git version:

git clone https://github.com/willghatch/racket-rash rash && cd rash/linea && raco pkg install && cd ../shell-pipeline && raco pkg install && cd ../rash && raco pkg install

OR

use raco pkg install --clone rash

Readline

The Rash REPL currently relies on Racket's Readline FFI wrapper. However, by default Racket uses libedit instead of libreadline for licensing reasons. Libedit does not support unicode, so typing non-ASCII characters will result in sadness. To use libreadline instead, run raco pkg install readline-gpl. Note that the readline-gpl Racket package needs a libreadline shared library to be installed on your system, so you may need to install a libreadline package using your system package manager. For example, on Debian-based distributions you can install by running sudo apt install --yes libreadline-dev.

Usage

Run with racket -l rash/repl --, or with rash-repl if you have Racket's package bin/ directory on your path.

Online documentation is here. After installation, local documentation can be accessed with raco docs rash.

The project web site has a quick demo video of Rash in action.

I published a paper about Rash in GPCE 2018.

This repo also contains the shell-pipeline and linea packages. They mostly support Rash itself, so they live in the same repo.

Talk

Feel free to ask questions in issues, to join the matrix room, to email me, etc.

More Repositories

1

rackterm

Terminal emulator in racket
Racket
40
star
2

zsh-snippets

Snippet expansion for zsh
Shell
37
star
3

zsh-saneopt

Sane options for zsh, in the spirit of vim-sensible.
Shell
21
star
4

zsh-cdr

Easy setup of cdr for zsh.
Shell
16
star
5

racket-chido-parse

Parsing With Delimited Continuations package for Racket
Racket
11
star
6

emacs-on-parens

smartparens wrapper to fit with evil-normal-state
Emacs Lisp
10
star
7

hatchak

A dvorak-based keyboard layout
Shell
8
star
8

emacs-repeatable-motion

Make repeatable versions of motion functions
Emacs Lisp
5
star
9

the-unicoder

Enter unicode anywhere.
Racket
5
star
10

dotfileswgh

My config files
Emacs Lisp
5
star
11

racket-udelim

Library/metalanguage for adding more parenthesis and string delimiters.
Racket
5
star
12

keycount

Count keystrokes on X server.
C
4
star
13

zsh-megaprompt

In the year 20XX, one zsh prompt stepped forward to save the world...
Shell
4
star
14

racket-shell-pipeline

Shell pipeline library for Racket
3
star
15

racket-basedir

Racket Library for the XDG Basedir Spec
Racket
3
star
16

qiafph

Four Part Harmony Music Generator (For School)
C
2
star
17

racket-extenor

Extensible functional records that support struct-type-properties.
Racket
2
star
18

99problems

My solutions to (less than) 99 problems
Common Lisp
2
star
19

zsh-zaw-todoman

very basic zaw source for todoman program
Shell
2
star
20

zsh-zaw-mpd

Zaw sources for mpd (music player daemon)
Shell
2
star
21

racket-syntax-implicits

Racket
2
star
22

vzsh

nice completion, keymap help, and other goodies for zsh.
Shell
1
star
23

lakota-xkb-keyboard-layout

1
star
24

rash-lang.org

World wide web (it's kinda like Gopher) site for Rash.
CSS
1
star