nushell/crates
raccmonteiro 75cb3fcc5f
uniq and uniq-by optimization (#7477) (#7534)
# Description

Refactored the quadratic complexity on `uniq` to use a HashMap, as key I
converted the Value to string.
I tried to use the HashableValue, but it looks it is not very developed
yet and it was getting more complex and difficult.

This improves performance on large data sets.

Fixes https://github.com/nushell/nushell/issues/7477


# Tests + Formatting
```
> let data = fetch "https://home.treasury.gov/system/files/276/yield-curve-rates-1990-2021.csv"
> $data | uniq
```

it keeps original attribute order in Records:
```
> [ {b:2, a:1} {a:1, b:2} ] | uniq 
╭───┬───┬───╮
│ # │ b │ a │
├───┼───┼───┤
│ 0 │ 2 │ 1 │
╰───┴───┴───╯
```
2023-01-04 11:35:49 -08:00
..
nu-cli Extend config support from F1-F12 to F1-F20, #7666 (#7669) 2023-01-03 22:00:21 +01:00
nu-color-config Fix #7551 record support in color_config (#7567) 2022-12-22 12:55:50 +01:00
nu-command uniq and uniq-by optimization (#7477) (#7534) 2023-01-04 11:35:49 -08:00
nu-engine Make get hole errors and cell path hole errors identical (improvement on #7002) (#7647) 2023-01-02 14:45:43 -08:00
nu-explore Make get hole errors and cell path hole errors identical (improvement on #7002) (#7647) 2023-01-02 14:45:43 -08:00
nu-glob Bump to new development version 0.73.1 (#7544) 2022-12-21 12:35:50 -06:00
nu-json Bump to new development version 0.73.1 (#7544) 2022-12-21 12:35:50 -06:00
nu-parser Make get hole errors and cell path hole errors identical (improvement on #7002) (#7647) 2023-01-02 14:45:43 -08:00
nu-path Fix typos by codespell (#7600) 2022-12-26 02:31:26 -05:00
nu-plugin Bump to new development version 0.73.1 (#7544) 2022-12-21 12:35:50 -06:00
nu-pretty-hex Bump to new development version 0.73.1 (#7544) 2022-12-21 12:35:50 -06:00
nu-protocol Make get hole errors and cell path hole errors identical (improvement on #7002) (#7647) 2023-01-02 14:45:43 -08:00
nu-system Bump to new development version 0.73.1 (#7544) 2022-12-21 12:35:50 -06:00
nu-table Fix table expand wrap in case no header is there (#7605) 2022-12-27 07:44:34 -06:00
nu-term-grid Fix typos by codespell (#7600) 2022-12-26 02:31:26 -05:00
nu-test-support Primitives now use color closures when printed on the command line (#7650) 2023-01-03 23:59:10 -08:00
nu-utils Fix typos by codespell (#7600) 2022-12-26 02:31:26 -05:00
nu_plugin_custom_values Bump to new development version 0.73.1 (#7544) 2022-12-21 12:35:50 -06:00
nu_plugin_example Bump to new development version 0.73.1 (#7544) 2022-12-21 12:35:50 -06:00
nu_plugin_gstat Bump to new development version 0.73.1 (#7544) 2022-12-21 12:35:50 -06:00
nu_plugin_inc Make get hole errors and cell path hole errors identical (improvement on #7002) (#7647) 2023-01-02 14:45:43 -08:00
nu_plugin_python Fix typos by codespell (#7600) 2022-12-26 02:31:26 -05:00
nu_plugin_query Further cleanup of Span::test_data usage + span fixes (#7595) 2022-12-24 07:41:57 -06: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.