nushell/crates
Stefan Holderbach ee648ecb7d
Refactor transpose and improve perf (#11013)
# Description

Generally elide a bunch of unnecessary clones. Both globally stopping to
clone the whole input data in a bunch of places where we need to read it
but also some minor places where we currently cloned.

As part of that, we can make the overwriting with `keep-all` and
`keep-last` inplace so the items don't need to be removed and repushed
to the record. 

# Benchmarking

```nu
timeit { scope commands | transpose -r }
```

Before ~24 ms now just ~5 ms

# User-Facing Changes
This can change the order of apperance in the transposed record with
`--keep-last`/`--keep-all`. Now the
order is determined by the first appearance and not by the last
appearance in the ingoing columns.
This mirrors the behavior when not passed `keep-all` or `keep-last`.

# Tests + Formatting
Sadly the `transpose` command is so far undertested for more complex
operations.
2023-11-09 22:41:38 +01:00
..
nu_plugin_custom_values Bump version to 0.86.1 (#10755) 2023-10-18 13:00:51 -05:00
nu_plugin_example Use Record's public API in a bunch of places (#10927) 2023-11-08 14:24:00 +01:00
nu_plugin_formats Convert ShellError::UnsupportedInput to named fields (#10971) 2023-11-07 23:25:32 +01:00
nu_plugin_gstat Bump version to 0.86.1 (#10755) 2023-10-18 13:00:51 -05:00
nu_plugin_inc Bump version to 0.86.1 (#10755) 2023-10-18 13:00:51 -05:00
nu_plugin_python remove vectorize_over_list from python plugin (#9905) 2023-08-03 16:46:48 +02:00
nu_plugin_query Bump scraper from 0.17.1 to 0.18.1 (#10879) 2023-10-30 11:53:26 +00:00
nu-cli Improve case insensitivity consistency (#10884) 2023-11-08 23:58:54 +01:00
nu-cmd-base Use Record::get instead of Value functions (#10925) 2023-11-08 21:47:37 +01:00
nu-cmd-dataframe Improve case insensitivity consistency (#10884) 2023-11-08 23:58:54 +01:00
nu-cmd-extra Improve case insensitivity consistency (#10884) 2023-11-08 23:58:54 +01:00
nu-cmd-lang Use Record::get instead of Value functions (#10925) 2023-11-08 21:47:37 +01:00
nu-color-config Improve case insensitivity consistency (#10884) 2023-11-08 23:58:54 +01:00
nu-command Refactor transpose and improve perf (#11013) 2023-11-09 22:41:38 +01:00
nu-engine Refactor env conversion, yeet Value::follow_cell_path_not... (#10926) 2023-11-08 23:57:24 +01:00
nu-explore Use Record::get instead of Value functions (#10925) 2023-11-08 21:47:37 +01:00
nu-glob Improve case insensitivity consistency (#10884) 2023-11-08 23:58:54 +01:00
nu-json Bump version to 0.86.1 (#10755) 2023-10-18 13:00:51 -05:00
nu-lsp Integrated Language Server (#10723) 2023-11-02 10:18:57 -05:00
nu-parser Improve case insensitivity consistency (#10884) 2023-11-08 23:58:54 +01:00
nu-path Bump version to 0.86.1 (#10755) 2023-10-18 13:00:51 -05:00
nu-plugin Show plugin extra usage and search terms (#10952) 2023-11-04 15:12:58 -05:00
nu-pretty-hex Bump version to 0.86.1 (#10755) 2023-10-18 13:00:51 -05:00
nu-protocol Add Record::truncate for trimming based on len (#11004) 2023-11-09 00:00:20 +01:00
nu-std Refactor error make (#10923) 2023-11-03 10:09:33 -05:00
nu-system Bump version to 0.86.1 (#10755) 2023-10-18 13:00:51 -05:00
nu-table Use Record::get instead of Value functions (#10925) 2023-11-08 21:47:37 +01:00
nu-term-grid Bump version to 0.86.1 (#10755) 2023-10-18 13:00:51 -05:00
nu-test-support Bump version to 0.86.1 (#10755) 2023-10-18 13:00:51 -05:00
nu-utils Improve case insensitivity consistency (#10884) 2023-11-08 23:58:54 +01:00
README.md Remove old nushell/merge engine-q 2022-02-07 14:54:06 -05:00

Nushell core libraries and plugins

These sub-crates form both the foundation for Nu and a set of plugins which extend Nu with additional functionality.

Foundational libraries are split into two kinds of crates:

  • Core crates - those crates that work together to build the Nushell language engine
  • Support crates - a set of crates that support the engine with additional features like JSON support, ANSI support, and more.

Plugins are likewise also split into two types:

  • Core plugins - plugins that provide part of the default experience of Nu, including access to the system properties, processes, and web-connectivity features.
  • Extra plugins - these plugins run a wide range of different capabilities like working with different file types, charting, viewing binary data, and more.