nushell/crates
Ian Manske 523d0bca16
Refactor flatten command (#11017)
# Description
Refactors the `flatten` command to remove a bunch of cloning. This was
down by passing ownership of the `Value` to `flat_value`, removing the
lifetime on `TableInside`, and using `Vec<Record>` in `FlattenedRows`
instead of a pair of `Vec` of columns and values.

For the quick benchmark below, it seems to be twice as fast now:
```nushell
let data = ls crates | where type == dir | each { ls $'($in.name)/**/*' }
timeit { for x in 0..1000 { $data | flatten } }
```
This took 550ms on v0.86.0 and only 230ms on this PR.
But considering that
```nushell
timeit { for x in 0..1000 { $data } }
```
takes 200ms on both versions, then the difference for `flatten` itself
is really 250ms vs 30ms -- 8x faster.
2023-11-10 13:18:02 +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 Adding support for Polars structs (#10943) 2023-11-09 19:00:59 -06: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 flatten command (#11017) 2023-11-10 13:18:02 +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.