Brussels / 1 & 2 February 2025

schedule

rash: asynchronous shell


rash is a minimal shell (so like bash, but much smaller) which supports asynchronous operations by saving its program state to a file, then terminating itself, and later being started again by the user, where it will read and continue from the saved program state.

This approach achieves the same goal as running a background process and having it wait for input, but does so without burdening the operating system while not in use. A program in rash can also be thought of as one big coroutine that gets suspended whenever needed and resumed when rerun.

Arguably, the file-based state-keeping approach also makes the system more transparent and robust, since you will never end up with a hanging process that you forgot to feed.

rash has been in active use since 2015 as a tool for writing stateful commands for a chatbot on Internet Relay Chat (IRC) channels, but may also be useful outside of IRC.

While I'll argue in the presentation that rash as an overall idea is sound, I'll also touch upon the perhaps less-than-ideal syntax that was originally picked for the language, and how we are trying to improve this now that we would like to actually present it.

Speakers

Photo of Niels G. W. Serup Niels G. W. Serup

Links