nushell/crates
Stefan Holderbach b2734db015
Move more commands to opaque Record type (#11122)
# Description

Further work towards the goal that we can make `Record`'s field private
and experiment with different internal representations

## Details
- Use inplace record iter in `nu-command/math/utils`
  - Guarantee that existing allocation can be reused
- Use proper record iterators in `path join`
- Remove unnecesary hashmap in `path join`
  - Should minimally reduce the overhead
- Unzip records in `nu-command`
- Refactor `query web` plugin to use record APIs
- Use `Record::into_values` for `values` command
- Use `Record::columns()` in `join` instead.
  - Potential minor pessimisation
  - Not the hot value path
- Use sane `Record` iters in example `Debug` impl
- Avoid layout assumption in `nu-cmd-extra/roll/mod`
  - Potential minor pessimisation
- relegated to `extra`, changing the representation may otherwise break
this op.
- Use record api in `rotate`
- Minor risk that this surfaces some existing invalid behavior as panics
as we now validate column/value lengths
  - `extra` so things are unstable
- Remove unnecessary references in `rotate`
  - Bonus cleanup
# User-Facing Changes
None functional, minor potential differences in runtime. You win some,
you lose some.

# Tests + Formatting
Relying on existing tests
2023-11-22 23:48:48 +01:00
..
nu_plugin_custom_values Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +01:00
nu_plugin_example Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +01:00
nu_plugin_formats Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +01:00
nu_plugin_gstat Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +01:00
nu_plugin_inc Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +01:00
nu_plugin_python remove vectorize_over_list from python plugin (#9905) 2023-08-03 16:46:48 +02:00
nu_plugin_query Move more commands to opaque Record type (#11122) 2023-11-22 23:48:48 +01:00
nu-cli Spread operator for list literals (#11006) 2023-11-22 23:10:08 +02:00
nu-cmd-base Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +01:00
nu-cmd-dataframe Convert FileNotFoundCustom to named fields (#11123) 2023-11-21 17:30:21 -06:00
nu-cmd-extra Move more commands to opaque Record type (#11122) 2023-11-22 23:48:48 +01:00
nu-cmd-lang Move more commands to opaque Record type (#11122) 2023-11-22 23:48:48 +01:00
nu-color-config Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +01:00
nu-command Move more commands to opaque Record type (#11122) 2023-11-22 23:48:48 +01:00
nu-engine Spread operator for list literals (#11006) 2023-11-22 23:10:08 +02:00
nu-explore Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +01:00
nu-glob Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +01:00
nu-json Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +01:00
nu-lsp Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +01:00
nu-parser Spread operator for list literals (#11006) 2023-11-22 23:10:08 +02:00
nu-path Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +01:00
nu-plugin Convert PluginFailedToDecode to named fields (#11126) 2023-11-22 12:56:04 +01:00
nu-pretty-hex Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +01:00
nu-protocol Spread operator for list literals (#11006) 2023-11-22 23:10:08 +02:00
nu-std deprecate std clip (#11097) 2023-11-22 18:26:12 +01:00
nu-system Bump procfs to 0.16.0 (#11115) 2023-11-20 21:22:35 +01:00
nu-table Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +01:00
nu-term-grid Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +01:00
nu-test-support Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +01:00
nu-utils Bump version to 0.87.2 (#11114) 2023-11-20 20:31:10 +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.