Rash: From Reckless Interactions to Reliable Programs
Command languages like the Bourne Shell provide a terse syntax for exploratory programming and system interaction and administration, as well as a succinct and useful syntax for composing operating system processes. Shell users can begin to write programs to automate their tasks by simply copying their interactions verbatim into a script file. However, command languages usually scale poorly beyond small scripts, and can be difficult to integrate into larger programs. General purpose languages provide more scalability and generality. But their syntaxes are generally overly verbose, and their methods for common actions like process creation are too unweildy to be suitable as an interface for interactive system administration and general computer use.
We present Rash, a domain-specific command language embedded in Racket. Rash provides a terse and extensible syntax for interactive system administration and scripting, as well as easy composition of both Racket functions and operating system processes. Rash can embed normal Racket syntax within itself, and can be embedded at the expression or module level of normal Racket programs. Thus Rash provides an extended and gradual scale for creation, integration, and hardening of shell-style programs.
Mon 5 Nov
|10:30 - 11:00|
|11:00 - 11:30|
|11:30 - 12:00|