Nushell
Get Nu!
Getting Started
  • The Nushell Book
  • Command Reference
  • Cookbook
  • Language Reference Guide
  • Contributing Guide
Blog
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
Get Nu!
Getting Started
  • The Nushell Book
  • Command Reference
  • Cookbook
  • Language Reference Guide
  • Contributing Guide
Blog
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub

Nushell 0.104.0

Today, we're releasing version 0.104.0 of Nu. This release adds additional job control capabilities, many datetime improvements, and a number of new Polars commands.

Thank you to all those who have contributed to this release through the PRs below, issues and suggestions leading to those changes, and Discord discussions.

Where to get it

Nu 0.104.0 is available as pre-built binaries or from crates.io. If you have Rust installed you can install it using cargo install nu.

As part of this release, we also publish a set of optional plugins you can install and use with Nushell.

Table of contents

  • Highlights and themes of this release
    • New Job-Control Features
      • Inter-Job Messaging (Experimental)
      • Job tags
    • New datetime and duration Features
      • New date from-human command
      • into datetime now accepts a record
      • into duration now accepts a record
      • into datetime --format can now parse dates and times separately
      • into duration now accepts floats
    • New Polars commands
  • Changes
    • Additions
      • kill now accepts list spreading
      • Custom indicator for missing table values
      • Some math commands now work with bounded ranges
      • The executable directory is now added to $NU_PLUGIN_DIRS by default
      • env-conversions helpers added to the standard library
      • Proxy support for http commands
      • Tab completion when importing the standard library and its exports
      • New columns available from ps -l on macOS
      • LSP: Snippet-style completions
      • debug --raw-value
      • More info from describe --detailed
      • Support PATHEXT for additional extensions on Windows
      • Execute Nushell scripts on the Path in Windows
      • New flag glob --follow-symlinks
      • Substring match algorithm
    • Breaking changes
      • Parse human date time explicitly
      • str join formatting for datetime values has changed
      • history with sqlite uses datetimes now
      • date is now datetime
    • Deprecations
      • positional completer option
    • Removals
      • Removed -s and -p in do
    • Bug fixes and other changes
  • Notes for plugin developers
    • Convert IoError into LabeledError
    • New Repo for Plugin Examples
  • Hall of fame
  • Full changelog

Highlights and themes of this release [toc]

New Job-Control Features [toc]

Inter-Job Messaging (Experimental) [toc]

Jobs can now communicate with other jobs. The following commands were added in #15253:

  • job send
  • job recv
  • job flush
  • job id

See help job <subcommand> for details.

Job tags [toc]

Jobs can now be tagged using job tag, added in #15555.

New datetime and duration Features [toc]

Thanks to @LoicRiegel for a number of datetime and duration features in this release:

New date from-human command [toc]

The new date from-human command introduced in #15495 is now used to parse human-language date forms like "tomorrow" into datetime values.

date from-human "next Friday at 6pm"
# => 2025-04-18T18:00:00+02:00

The equivalent functionality from into datetime has been removed from that command.

Breaking change

See a full overview of the breaking changes

into datetime now accepts a record [toc]

With #15455, it is now possible to construct a datetime from a record input. If the timezone is not specified, the locale is used:

{ year: 2025, month: 3, day: 30, hour: 12, minute: 15, second: 59, timezone: '+02:00' } | into datetime
# => Sun, 30 Mar 2025 12:15:59 +0200 (2 weeks ago)

into duration now accepts a record [toc]

With #15600, it is now possible to construct a datetime from a record input. If the timezone is not specified, the local is used:

{ week: 10, day: 1, hour: 2, minute: 3, second: 4, millisecond: 5, microsecond: 6, nanosecond: 7, sign: '-' } | into duration
# => -10wk 1day 2hr 3min 4sec 5ms 6µs 7ns

into datetime --format can now parse dates and times separately [toc]

Previously, into datetime --format required both a date and a time. With #15544, each can be created separately. The system's local timezone will be used by default.

For example, to parse a DD/MM/YYYY:

"25/03/2024" | into datetime --format "%d/%m/%Y"
# => Mon, 25 Mar 2024 00:00:00 +0100 (a year ago)

into duration now accepts floats [toc]

With #15297, into duration now accepts floats as a valid input type:

1.5day | into duration
# => 1day 12hr

New Polars commands [toc]

The following polars commands have been added in this release:

  • polars join_where (#15635 by @MMesch)
  • polars cut and polars qcut for binning (#15431 by @ayax79)
  • polars into-schema (#15534) by @ayax79)
  • polars dtype (#15529 by @ayax79, which also adds the NuDataType custom type)
  • polars replace-time-zone (#15538 by @pyz4)
  • polars convert-time-zone (#15550 by @pyz4)
  • polars over (#15551 by @pyz4)
  • polars truncate (#15582 by @pyz4)

Changes [toc]

Additions [toc]

kill now accepts list spreading [toc]

In #15558 from @Mrfiregem, the signature of the kill command was changed so that it can accept multiple arguments via the list spreading operator. For example:

ps | where name == bash | kill ...$in.pid

Custom indicator for missing table values [toc]

Missing values (not null) are represented by ❎ in tables. #15647 from @Bahex makes this indicator configurable. For example:

$env.config.table.missing_value_symbol = " ∅ "

Some math commands now work with bounded ranges [toc]

With #15319 from @LoicRiegel, the following commands have been updated to allow bounded ranges as input:

  • math abs
  • math ceil
  • math floor
  • math log
  • math round

When passed a range input, the command is applied to each item of the range, thus producing a list of numbers as output.

Example:

-2.2..2.5 | math floor
# => ╭───┬────╮
# => │ 0 │ -3 │
# => │ 1 │ -2 │
# => │ 2 │ -1 │
# => │ 3 │  0 │
# => │ 4 │  1 │
# => ╰───┴────╯

The executable directory is now added to $NU_PLUGIN_DIRS by default [toc]

Many distributions (including our binary distributions) place plugins in the same directory as the Nushell executable. With #15380 from @NotTheDr01ds, plugins in this type of environment will now work out-of-the-box using plugin add.

env-conversions helpers added to the standard library [toc]

Previously, the default $env.ENV_CONVERSION for PATH could be "reused" in other path-related conversions. In a previous release, this conversion was removed and became Rust-based. #15569 by @NotTheDr01ds adds the equivalent helper to the standard library so that it can be easily used.

Proxy support for http commands [toc]

With #15597 from @scarlet-storm, commands like http get can now utilize a proxy using environment variables.

Tab completion when importing the standard library and its exports [toc]

With #15270, @blindFS enabled tab-completion for the standard library and its exports with the use (and related) commands.

New columns available from ps -l on macOS [toc]

#15341 from @fdncred adds the following columns to ps -l on macOS:

  • user_id
  • priority
  • process_threads

LSP: Snippet-style completions [toc]

In #15494, @blindFS added the ability for completions of built-in commands to insert a snippet with placeholders for its arguments.

In addition, you'll find numerous LSP fixes below from @blindFS.

debug --raw-value [toc]

@fdncred added a --raw-value option to the debug command in 15581 to allow retrieval of only the debug string part of the Nushell value.

More info from describe --detailed [toc]

In #15591, @fdncred added more details to the describe --detailed output, including the Rust data type, the Nushell data type, and the value.

Support PATHEXT for additional extensions on Windows [toc]

With the changes in #15611 by @hfrentzel, Nushell will now automatically attempt to execute scripts using any extension found in the PATHEXT environment variable on Windows.

Execute Nushell scripts on the Path in Windows [toc]

Also, with #15486 from @mztikk, Nushell scripts can be more easily executed from any directory in the Path.

New flag glob --follow-symlinks [toc]

@sebasnallar added --follow-symlinks to ... follow symlinks when globbing (#15626)

Substring match algorithm [toc]

In #15511, @vansh284 added the option to use substring matching for completions. Previously, only prefix and fuzzy matching were allowed. Users can now set $env.config.completions.algorithm to "substring" to enable this.

Custom completers already had the ability to use substring matching by setting positional: false in their options. However, positional has now been deprecated, and completers should set completion_algorithm: "substring" to maintain the same behavior.

Breaking changes [toc]

Parse human date time explicitly [toc]

into datetime used to parse not only strictly formatted date time strings, but also human readable ones. This created some situations where unexpected values might result from into datetime. This functionality has been removed.

Instead, users can now explicitly choose to opt-in to that functionality using the new date from-human command added in #15495 by @LoicRiegel.

str join formatting for datetime values has changed [toc]

When a datetime is passed to str join, the resulting format of the string has changed. With #15629 from @LoicRiegel, it will now format positive dates using RFC2822 and negative dates using RFC3339.

This could be a breaking change if you depend on a particular format of the output of str join. Consider using format date before str join.

history with sqlite uses datetimes now [toc]

Previously, the history command would return a start_timestamp with a string when using the SQLite backend. With #15630, it now returns an actual Nushell datetime.

If you were previously relying on a string value from that column, you can easily convert it using format date.

date is now datetime [toc]

The describe command previously incorrectly reported datetime values as date. This has been fixed in #15264.

If you were previously checking the type of a value using describe, you should change occurrences of date to datetime.

Deprecations [toc]

positional completer option [toc]

The positional option available to custom completers has been deprecated. See the section about the Substring match algorithm above for details.

Removals [toc]

Removed -s and -p in do [toc]

We deprecated the -s and -p flags and planned to remove them in version 0.102.0. We forgot about it for a couple of releases, but #15456 by WindSoilder finally completes this removal.

Bug fixes and other changes [toc]

authortitlelink
@0x4D5352chore: move 'job' to experimental category#15568
@IanManskeDon't collect job output#15365
@LoicRiegelbugfix: wrong display of human readable string#15522
@LoicRiegelBugfix chrono panic + hotifx PR15544#15549
@MMeschfix mistake in description of polars pivot command#15621
@MrfiregemFix path add bug when given a record#15379
@NotTheDr01dsFixes clip copy stripping control characters when de-ansifying#15428
@SkillFlameFix #14660: to md breaks on tables with empty values#15631
@WindSoilderIR: raising reasonable error when using subexpression with and operator#15623
@WindSoilderoverlay use: keep PWD after activating the overlay thought file.#15566
@ayax79Fix output type of polars schema#15572
@ayax79fix cannot find issue when performing collect on an eager dataframe#15577
@blindFSfix(completion): inline defined custom completion#15318
@blindFSfix(parser): skip eval_const if parsing errors detected to avoid panic#15364
@blindFSfix(explore): do not create extra layer for empty entries#15367
@blindFSfix(parser): comments in subexpressions of let/mut#15375
@blindFSfix: flatten of empty closures#15374
@blindFSfix: command open sets default flags when calling "from xxx" converters#15383
@blindFSfix(completion): ls_color for ~/xxx symlinks#15403
@blindFSfeat(lsp): parse_warnings in diagnostics report#15449
@blindFSfix(completion): completions.external.enable config option not respected#15443
@blindFSfix(lsp): more accurate PWD: from env -> parent dir of current file#15470
@blindFSfix(lsp): keywords in completion snippets#15499
@blindFSfix(lsp): workspace wide ops may panic in certain conditions#15514
@blindFSfix(lsp): parser_info based id detection for use/overlay keywords#15517
@blindFSfix(lsp): several edge cases of inaccurate references#15523
@blindFSfix(lsp): more accurate command name highlight/rename#15540
@blindFSfix(completion): quoted cell path completion#15546
@blindFSfix(lsp): a panic caused by completion with decl_id out of range#15576
@blindFSfix(lsp): regression of semantic tokens of module-prefixed commands#15603
@cosineblastconfig commands now add frozen jobs to job table#15556
@fdncredfix datetime-diff so that it reports ms, us, ns as well#15537
@jjflash95Fix #15440 default --empty fails at empty streams#15562
@lazengaFix #13546: Outer joins incorrectly removing unmatched rows#15472
@mokurin000fix(nu-command): support ACL, SELinux, e.g. in cd have_permission check#15360
@pyz4polars into-df/polars into-lazy: --schema will not throw error if only some columns are defined#15473
@pyz4FIX polars as-datetime: ignores timezone information on conversion#15490
@pyz4fix(polars): cast as date now returns Date type instead of Datetime<ns>#15574
@pyz4feat(polars): enable as_date and as_datetime to handle expressions as inputs#15590
@pyz4feat(polars): add pow (**) operator for polars expressions#15598
@pyz4fix(custom_value) + fix(polars): map // operator to FloorDivide for custom values and in polars#15599
@pyz4fix(polars): remove requirement that pivot columns must be same type in polars pivot#15608
@pyz4fix(polars): conversion from nanoseconds to time_units in Datetime and Duration parsing#15637
@sgvictorinopreserve variable capture spans in blocks#15334
@sholderbachFix to nuon --serialize of closure#15357
@sgvictorinoreset argument/redirection state after eval_call errors#15400
@sholderbachFix to nuon --serialize of closure#15357
@sholderbachFix Exbibyte parsing#15515
@sholderbachFix future clippy lints#15519
@vansh284Improve completions for exact matches (Issue #14794)#15387
@ysthakurEnable exact match behavior for any path with slashes#15458
@zhiburtFix #15394 for table -e wrapping issue#15407
@zhiburtfix f25525b#15500

Notes for plugin developers [toc]

Convert IoError into LabeledError [toc]

In version 0.102.0 IoErrors were added on top of std::io::Errors. @132ikl made it easier in #15327 to return these in SimplePluginCommands.

New Repo for Plugin Examples [toc]

@cptpiepmatz has created a new repository for plugin examples. It includes various examples demonstrating how to write plugins with different features and in multiple languages, including Nu. The existing plugin examples in the main repository will be moved there soon.

Hall of fame [toc]

Thanks to all the contributors below for helping us solve issues, improve documentation, refactor code, and more! 🙏

authortitlelink
@0x4D5352replace repeat().take() with repeat_n()#15575
@132iklAdd compile-time assertion of Value's size#15362
@132iklAdd boolean examples to any and all#15442
@AucaCoyanAdd labeler bot#15627
@Bahexdocs(explore): Add ":nu" back to the help text#15644
@IanManskeRemove nu-glob's dependency on nu-protocol#15349
@LoicRiegelrefactor: ensure range is bounded#15429
@LoicRiegelReplace some PipelineMismatch by OnlySupportsThisInputType by shell error#15447
@NotTheDr01dsIgnore problematic overlapping tests for SHLVL#15430
@NotTheDr01dsReminder comment to update doc when adding $nu constants#15481
@NotTheDr01dsRevert "Fix kv set with a closure argument"#15648
@NotTheDr01dsRenamed join_where to join-where#15660
@Tyarel8Fix kv set with a closure argument#15588
@WindSoilderupdate shadow-rs to version 1#15462
@WindSoilderUpdate rand and rand_chacha to 0.9#15463
@WindSoilderFix clippy#15489
@WindSoilderIR: allow subexpression with redirection.#15617
@blindFSrefactor: command identified by name instead of span content#15471
@blindFSrefactor(lsp): align markdown doc string with output of --help#15508
@blindFSrefactor(completion, lsp): include decl_id in suggetion_kind for later usage#15536
@blindFSrefactor(lsp): flat_map with mutable accumulator#15567
@cptpiepmatzAdd --plugins flag to nu-std/testing.nu#15552
@cptpiepmatzAdd cat and get-content to open's search terms#15643
@fdncredbump uutils crates to 0.0.30#15316
@fdncredupdate human-date-parser to 3.0#15426
@fdncredbump to the latest rust version#15483
@fdncredRevert "Fix #15394 for table -e wrapping issue"#15498
@fdncredbump reedline to 75f2c50#15659
@fennewaldLimit Allowed serde_json Versions to Match Usage#15504
@g2pUpgrade calamine dependency to fix zip semver breakage#15657
@hustcerFix upgrading and checking of typos#15454
@hustcerUpdate Nu to 0.103.0 for release workflow and improve Windows OS checks#15625
@kidriggerFix examples about RFC3339 format in date now and format date.#15563
@migraine-userFix typo in doc_config.nu + small description#15461
@sholderbachBump crossbeam-channel#15541
@sholderbachFix labelling of plugins through correct glob#15634
@suimongImprove std/log performance#15614
@whiter001create nu_plugin_node_example.js#15482
@ysthakurBump to 0.103.1 dev version#15347
@ysthakurRevert "Improve completions for exact matches (Issue #14794)"#15457
@pyz4polars cast: add decimal option for dtype parameter#15464
@pyz4polars: extend NuExpression::extract_exprs to handle records#15553
@pyz4polars: update get- datetime components commands to allow expressions as inputs#15557
@pyz4polars: update polars lit to handle nushell Value::Duration and Value::Date types#15564
@pyz4polars: expand polars col to handle multiple columns and by types#15570
@pyz4feat(polars): loosen constraints on accepted expressions in polars group-by#15583
@pyz4feat(polars): enable parsing decimals in polars schemas#15632
@pyz4feat(polars): enable parsing strings as dates and datetime in polars schema#15645

Full changelog [toc]

authortitlelink
@0x4D5352chore: move 'job' to experimental category#15568
@0x4D5352replace repeat().take() with repeat_n()#15575
@132iklAdd From<IoError> for LabeledError#15327
@132iklAdd compile-time assertion of Value's size#15362
@132iklAdd boolean examples to any and all#15442
@AucaCoyanAdd labeler bot#15627
@Bahexdocs(explore): Add ":nu" back to the help text#15644
@Bahexfeat(table): make missing value symbol configurable#15647
@IanManskeRemove nu-glob's dependency on nu-protocol#15349
@IanManskeDon't collect job output#15365
@LoicRiegelMath commands can work with bounded ranges and produce list of numbers#15319
@LoicRiegelBugfix/into datetime ignores timezone with format#15370
@LoicRiegelrefactor: ensure range is bounded#15429
@LoicRiegelReplace some PipelineMismatch by OnlySupportsThisInputType by shell error#15447
@LoicRiegelFeat: construct datetime from record#15455
@LoicRiegelMove human date parsing into new command date from-human#15495
@LoicRiegelbugfix: wrong display of human readable string#15522
@LoicRiegelBugfix: datetime parsing and local timezones#15544
@LoicRiegelBugfix chrono panic + hotifx PR15544#15549
@LoicRiegelfeat: duration from record#15600
@LoicRiegelBugfix/loss of precision when parsing value with unit#15606
@LoicRiegelbugfix: str join outputs dates consistently (RFC2822 when possible)#15629
@LoicRiegelhistory table using sqlite outputs start_timestamp as datetime instead of string#15630
@MMeschfix mistake in description of polars pivot command#15621
@MMeschadd polars join_where command#15635
@MrfiregemFix path add bug when given a record#15379
@MrfiregemAllow spreading arguments of kill command#15558
@NotTheDr01dsRename user-facing 'date' to 'datetime'#15264
@NotTheDr01dsAdd current exe directory to default $NU_PLUGIN_DIRS#15380
@NotTheDr01dsFixes clip copy stripping control characters when de-ansifying#15428
@NotTheDr01dsIgnore problematic overlapping tests for SHLVL#15430
@NotTheDr01dsReminder comment to update doc when adding $nu constants#15481
@NotTheDr01dsAdd env-conversions helpers to std#15569
@NotTheDr01dsRevert "Fix kv set with a closure argument"#15648
@NotTheDr01dsRenamed join_where to join-where#15660
@SkillFlameFix #14660: to md breaks on tables with empty values#15631
@Tyarel8Fix kv set with a closure argument#15588
@WindSoilderremove -s, -p in do#15456
@WindSoilderupdate shadow-rs to version 1#15462
@WindSoilderUpdate rand and rand_chacha to 0.9#15463
@WindSoilderFix clippy#15489
@WindSoilderoverlay use: keep PWD after activating the overlay thought file.#15566
@WindSoilderIR: allow subexpression with redirection.#15617
@WindSoilderIR: raising reasonable error when using subexpression with and operator#15623
@app/dependabotbuild(deps): bump mockito from 1.6.1 to 1.7.0#15343
@app/dependabotbuild(deps): bump indexmap from 2.7.0 to 2.8.0#15345
@app/dependabotbuild(deps): bump uuid from 1.12.0 to 1.16.0#15346
@app/dependabotbuild(deps): bump crate-ci/typos from 1.29.10 to 1.30.3#15418
@app/dependabotbuild(deps): bump tokio from 1.43.0 to 1.44.1#15419
@app/dependabotbuild(deps): bump array-init-cursor from 0.2.0 to 0.2.1#15460
@app/dependabotbuild(deps): bump bytesize from 1.3.2 to 1.3.3#15468
@app/dependabotbuild(deps): bump crate-ci/typos from 1.31.0 to 1.31.1#15469
@app/dependabotbuild(deps): bump openssl from 0.10.70 to 0.10.72#15493
@app/dependabotbuild(deps): bump tokio from 1.44.1 to 1.44.2#15521
@app/dependabotbuild(deps): bump titlecase from 3.4.0 to 3.5.0#15530
@app/dependabotbuild(deps): bump indexmap from 2.8.0 to 2.9.0#15531
@app/dependabotbuild(deps): bump rust-embed from 8.6.0 to 8.7.0#15579
@app/dependabotbuild(deps): bump data-encoding from 2.8.0 to 2.9.0#15580
@ayax79Polars binning commands: cut/qcut#15431
@ayax79Introduction of NuDataType and polars dtype#15529
@ayax79Introducing polars into-schema#15534
@ayax79Fix output type of polars schema#15572
@ayax79fix cannot find issue when performing collect on an eager dataframe#15577
@blindFSfeat(completion): stdlib virtual path completion & exportable completion#15270
@blindFSfix(completion): inline defined custom completion#15318
@blindFSfix(lsp): verbose signature help response for less well supported editors#15353
@blindFSfix(parser): skip eval_const if parsing errors detected to avoid panic#15364
@blindFSfix(explore): do not create extra layer for empty entries#15367
@blindFSfix: flatten of empty closures#15374
@blindFSfix(parser): comments in subexpressions of let/mut#15375
@blindFSfix: command open sets default flags when calling "from xxx" converters#15383
@blindFSfix(completion): ls_color for ~/xxx symlinks#15403
@blindFSfix(completion): completions.external.enable config option not respected#15443
@blindFSfeat(lsp): parse_warnings in diagnostics report#15449
@blindFSfix(lsp): more accurate PWD: from env -> parent dir of current file#15470
@blindFSrefactor: command identified by name instead of span content#15471
@blindFSfeat(lsp): snippet style completion for commands#15494
@blindFSfix(lsp): keywords in completion snippets#15499
@blindFSrefactor(lsp): align markdown doc string with output of --help#15508
@blindFSfix(lsp): workspace wide ops may panic in certain conditions#15514
@blindFSfix(lsp): parser_info based id detection for use/overlay keywords#15517
@blindFSfix(lsp): several edge cases of inaccurate references#15523
@blindFSrefactor(completion, lsp): include decl_id in suggetion_kind for later usage#15536
@blindFSfix(lsp): more accurate command name highlight/rename#15540
@blindFSfix(completion): quoted cell path completion#15546
@blindFSrefactor(lsp): flat_map with mutable accumulator#15567
@blindFSfix(lsp): a panic caused by completion with decl_id out of range#15576
@blindFSfix(lsp): regression of semantic tokens of module-prefixed commands#15603
@cosineblastInter-Job direct messaging#15253
@cosineblastAdd job tags#15555
@cosineblastconfig commands now add frozen jobs to job table#15556
@cptpiepmatzAdd --plugins flag to nu-std/testing.nu#15552
@cptpiepmatzAdd cat and get-content to open's search terms#15643
@fdncredbump uutils crates to 0.0.30#15316
@fdncredadd more columns to macos ps -l#15341
@fdncredupdate human-date-parser to 3.0#15426
@fdncredbump to the latest rust version#15483
@fdncredRevert "Fix #15394 for table -e wrapping issue"#15498
@fdncredfix datetime-diff so that it reports ms, us, ns as well#15537
@fdncredadd --raw-value option to debug command#15581
@fdncredadd more details to describe -d#15591
@fdncredbump reedline to 75f2c50#15659
@fennewaldLimit Allowed serde_json Versions to Match Usage#15504
@g2pUpgrade calamine dependency to fix zip semver breakage#15657
@hfrentzelRun scripts of any file extension in PATHEXT on Windows#15611
@hustcerFix upgrading and checking of typos#15454
@hustcerUpdate Nu to 0.103.0 for release workflow and improve Windows OS checks#15625
@jjflash95Fix #15440 default --empty fails at empty streams#15562
@kidriggerFix examples about RFC3339 format in date now and format date.#15563
@lazengaFix #13546: Outer joins incorrectly removing unmatched rows#15472
@migraine-userFix typo in doc_config.nu + small description#15461
@mokurin000fix(nu-command): support ACL, SELinux, e.g. in cd have_permission check#15360
@mztikkConsider PATH when running command is nuscript in windows#15486
@pyz4polars cast: add decimal option for dtype parameter#15464
@pyz4polars into-df/polars into-lazy: --schema will not throw error if only some columns are defined#15473
@pyz4FIX polars as-datetime: ignores timezone information on conversion#15490
@pyz4polars: add new command polars replace-time-zone#15538
@pyz4polars: add new command polars convert-time-zone#15550
@pyz4polars: add new command polars over#15551
@pyz4polars: extend NuExpression::extract_exprs to handle records#15553
@pyz4polars: update get- datetime components commands to allow expressions as inputs#15557
@pyz4polars: update polars lit to handle nushell Value::Duration and Value::Date types#15564
@pyz4polars: expand polars col to handle multiple columns and by types#15570
@pyz4fix(polars): cast as date now returns Date type instead of Datetime<ns>#15574
@pyz4feat(polars): add polars truncate for rounding datetimes#15582
@pyz4feat(polars): loosen constraints on accepted expressions in polars group-by#15583
@pyz4feat(polars): enable as_date and as_datetime to handle expressions as inputs#15590
@pyz4feat(polars): add pow (**) operator for polars expressions#15598
@pyz4fix(custom_value) + fix(polars): map // operator to FloorDivide for custom values and in polars#15599
@pyz4fix(polars): remove requirement that pivot columns must be same type in polars pivot#15608
@pyz4feat(polars): enable parsing decimals in polars schemas#15632
@pyz4fix(polars): conversion from nanoseconds to time_units in Datetime and Duration parsing#15637
@pyz4feat(polars): enable parsing strings as dates and datetime in polars schema#15645
@scarlet-stormEnable socks proxy support in ureq#15597
@sebasnallarAdd --follow-symlinks flag to glob command (fixes #15559)#15626
@sgvictorinopreserve variable capture spans in blocks#15334
@sgvictorinoenable streaming in random binary/chars#15361
@sgvictorinoreset argument/redirection state after eval_call errors#15400
@sholderbachFix to nuon --serialize of closure#15357
@sholderbachFix Exbibyte parsing#15515
@sholderbachFix future clippy lints#15519
@sholderbachBump crossbeam-channel#15541
@sholderbachFix labelling of plugins through correct glob#15634
@suimongImprove std/log performance#15614
@vansh284Improve completions for exact matches (Issue #14794)#15387
@vansh284Substring Match Algorithm#15511
@whiter001create nu_plugin_node_example.js#15482
@ysthakurBump to 0.103.1 dev version#15347
@ysthakurRevert "Improve completions for exact matches (Issue #14794)"#15457
@ysthakurEnable exact match behavior for any path with slashes#15458
@zhiburtFix #15394 for table -e wrapping issue#15407
@zhiburtfix f25525b#15500
Edit this page on GitHub
Contributors: ysthakur, LoicRiegel, Tim 'Piepmatz' Hesse, NotTheDr01ds, Bahex, Jan Klass, fdncred