Home Explore Blog CI



nushell

1st chunk of `blog/2022-06-14-nushell_0_64.md`
f75651a2036e1a0fd2f87d657360a5238dcbd8513cc883b10000000100001486
---
title: Nushell 0.64
author: The Nu Authors
author_site: https://twitter.com/nu_shell
author_image: https://www.nushell.sh/blog/images/nu_logo.png
excerpt: Today, we're releasing version 0.64 of Nu. It's the first to include input overloading, input/output types, and lazy dataframes.
---

# Nushell 0.64

Nushell, or Nu 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 Nu. It's the first to include input overloading, input/output types, and lazy dataframes.

<!-- more -->

# Where to get it

Nu 0.64 is available as [pre-built binaries](https://github.com/nushell/nushell/releases/tag/0.64.0) or from [crates.io](https://crates.io/crates/nu). If you have Rust installed you can install it using `cargo install nu`.

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

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

# Themes of this release

## Input overloading (elferherrera)

Commands can now declare their [input and output types](https://github.com/nushell/nushell/pull/5750). 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 nushell commands against it, and Nushell will select the best fit based on the type of data source you're opening.

## Lazy dataframes (elferherrera)

Dataframes now have [lazy operations](https://github.com/nushell/nushell/pull/5687). 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

- Using Nu as a login shell now has a [special config file](https://github.com/nushell/nushell/pull/5714). (sec65)
- Unix-based Nushell can now [handle SIGQUIT](https://github.com/nushell/nushell/pull/5744) (WindSoilder)
- This release also includes binaries for [more platforms](https://github.com/nushell/nushell/releases/tag/0.64.0) (hustcer)

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 Nushell language. We're looking forward to continuing to improve this as well as improving the Nushell language around it.

We've also recent shown an experimental [graphical version of Nushell](https://www.youtube.com/watch?v=B2aLON88New). This experiment is something you can use today across the platforms that Nushell supports.

# Changelog

## Nushell

- WindSoilder created [add --values flag to sort record by values, by default, sort record by keys](https://github.com/nushell/nushell/pull/5782), and [sort not change shape](https://github.com/nushell/nushell/pull/5778), and [path join support multi path](https://github.com/nushell/nushell/pull/5775), and [fix arg parse](https://github.com/nushell/nushell/pull/5754), and [While starting nu, force PWD to be current working directory](https://github.com/nushell/nushell/pull/5751), and [handle SIGQUIT](https://github.com/nushell/nushell/pull/5744), and [add as record tag to transfer result to record](https://github.com/nushell/nushell/pull/5736), and [print warning message if meet non utf-8 path](https://github.com/nushell/nushell/pull/5731), and [fix argument type](https://github.com/nushell/nushell/pull/5695), and [expand env for path](https://github.com/nushell/nushell/pull/5692), and [make ls works better with glob](https://github.com/nushell/nushell/pull/5691), and [base64 command more friendly](https://github.com/nushell/nushell/pull/5680), and [make cp can copy folders contains dangling symbolic link](https://github.com/nushell/nushell/pull/5645), and [make sure no duplicate column exists during eval and merge](https://github.com/nushell/nushell/pull/5633)

Title: Nushell 0.64 Release: Input Overloading, Lazy Dataframes, and SQLite History
Summary
Nushell 0.64 is released with input overloading, input/output types, and lazy dataframes. Dataframe commands are simplified by detecting the input type. Lazy operations improve dataframe pipeline efficiency. History entries can now be stored in a SQLite database, enabling richer querying in the future. Other improvements include a special config file for login shells, SIGQUIT handling, and binaries for more platforms. The release aims for a simpler, more uniform Nushell language.