rsh 0.64

rsh, or Rsh for short, is a new shell that takes a modern, structured approach to your commandline. It works seamlessly with the data from your filesystem, operating system, and a growing number of file formats to make it easy to build powerful commandline pipelines.

Today, we're releasing version 0.64 of Rsh. It's the first to include input overloading, input/output types, and lazy dataframes.

Where to get it

Rsh 0.64 is available as pre-built binariesopen in new window or from crates.ioopen in new window. If you have Rust installed you can install it using cargo install rsh.

If you want all the built-in goodies, you can install cargo install rsh --features=extra.

As part of this release, we also publish a set of optional plugins you can install and use with Rsh. To install, use cargo install rsh_plugin_<plugin name>.

Themes of this release

Input overloading (elferherrera)

Commands can now declare their input and output typesopen in new window. While this support is still initial and isn't yet available in the syntax, we're already using it for one important improvement: simplifying the commands.

In this release, dataframe commands can now detect the input type in the pipeline and run without needing to be called with dfr before every command. The end result is much cleaner:

Before:

> [[a b]; [1 2] [3 4]] | dfr to-df | dfr drop a

After:

> [[a b]; [1 2] [3 4]] | to-df | drop a

This allows dataframe commands to feel more natural and fit more cleanly in with other commands. We're also looking to make similar improvements to the db command. In the future, you'll be able to open a data source and then use the standard rsh commands against it, and rsh will select the best fit based on the type of data source you're opening.

Lazy dataframes (elferherrera)

Dataframes now have lazy operationsopen in new window. These lazy operations allow users to build up multiple steps of a pipeline and execute them in a much more efficient way against the dataframe.

Future SQLite backed history (phiresky)

The API for storing history entries has changed in the background. This now supports also storing your history in a SQLite database. Currently this adds some metadata such as the current working directory, whether a command succeeded, and execution times. In the future this will enable you to query the history in a more rich and meaningful way.

Currently the simple text based history is still the default. If you want to test out the new history change your config to contain:

let-env config = {
  ...
  history_file_format: "sqlite" # "sqlite" or "plaintext"
  ...
}

Improvements

You can see the full list in the Changelog below.

Looking ahead

The new input/output types and type overloading allows for a simpler, more uniform rsh language. We're looking forward to continuing to improve this as well as improving the rsh language around it.

We've also recent shown an experimental graphical version of rshopen in new window. This experiment is something you can use today across the platforms that rsh supports.

Changelog

rsh

Documentation

rsh_Scripts

reedline