Follow us
Breaking
Software

Nushell 0.114.0 updates structured data pipelines

Nushell 0.114.0 introduces sharper type checking, improved spreadsheet imports for XLSX and ODS, and native semantic versioning support. These updates enhance data handling for teams using structured pipelines instead of traditional string parsing.

Share

Type system and command parsing updates

Nushell 0.114.0 introduces sharper type checking and POSIX-style option parsing. The enforce-runtime-annotations setting is now opt-out, which means runtime assignment annotations get checked by default. This change forces the parser to catch mistakes that previously passed during parsing due to insufficient type information. Commands now infer output types from pipeline input more precisely. For instance, $in is now typed based on the pipeline input type of the surrounding expression. Let-bindings in pipelines no longer shrug and call everything any. The new option parsing allows users to pass values that look like flags, such as --looks-like-a-flag, as plain positional values by using the new --end-of-options delimiter to avoid fighting the parser. Conditionals like if and match are now properly typed, where the output is a union of all possible output types from the branches. Without a fallback, the output types of conditional expressions include nothing. For example, $elem‘s type was previously list<oneof<int, string>>, but now it is oneof<list<int>, list<string>>. Vi mode also includes a proper visual mode where users press v to start a selection and use motions like d, c, y, or r. In vi normal mode, the caret rests on the last grapheme instead of after it.

Data handling and spreadsheet imports

The release improves how Nushell handles spreadsheet files like XLSX and ODS. Previously, from xlsx and from ods commands incorrectly indicated they returned tables, but they actually return records containing tables for each sheet in the file. The from ods command now accepts binary input instead of only strings. Previously, importing datetime values worked only for XLSX files, but this release adds support for ODS files and broadens the datetime formats that can be imported. Values that could not be properly coerced to Nushell types previously imported as null, but they now import as string or float depending on the source data. Users can now use --noheaders to prevent automatic header assignment or --first-row to skip leading empty rows or start reading from an arbitrary row. This replaces the previous --header-row flag. The from xlsx and from ods commands use the first row of a sheet as the imported table’s headers by default. Using --first-row $n allows users to start reading from an arbitrary row. These features reduce fragile string parsing.

Feature Nushell 0.114.0 Behavior
enforce-runtime-annotations Enabled by default (opt-out)
Optional parameter (no default) oneof<T, nothing>
Optional parameter (with default) T
from xlsx / from ods return type Records containing tables

Nushell also adds native semantic versioning support. You can parse SemVer strings, turn them into records, sort them, and bump versions without performing manual string manipulation. This functionality helps teams managing release cycles or package versions.

Scripting and module behavior

The runcommand feature allows a Nushell script to act as a pipeline stage. You can pipe data into the script, let the script transform it, and then pipe the result onward. These tiny, reusable workers run in isolation so local bits do not leak into your session. Scripts can be simple bare pipeline transforms or define a main entry point. If you are choosing between Bash and PowerShell, you might find the script isolation in runcommand useful.

Importing a module no longer implicitly imports its exported sub-modules, which requires users to export contents explicitly to maintain previous behavior. This change prevents unintended side effects when using modules within other modules. Nushell handles data through typed tables, records, and lists. This allows commands to operate on columns rather than parsing strings. For teams working in DevOps, Nushell provides built-in support for structured formats like JSON and CSV. This helps users extract pod information from Kubernetes or parse log files. When comparing to Bash, users must account for the fact that Nushell does not interpret POSIX shell syntax. Will this type of tightening eventually replace the need for external linters in automated pipelines?

Share

Technewsdaily

Senior tech writer covering AI, gadgets and cybersecurity. Breaking down the news that matters, every day.