nushell/crates
Stefan Holderbach 0cf7de598b
Refactor Record to use a single backing Vec (#12326)
# Description
This shrinks `Record`'s size in half and and allows you to include it in
`Value` without growing the size.

Changing the `Record` internals may have slightly different performance
characteristics as the cache locality changes on lookups (if you
directly need the value, it should be closer, but in other cases may
blow up the cache line budget)

Also different perf characteristics on creation expected. 
`Record::from_raw_cols_vals` now probably worse.

## Benchmarking

Comparison with the main branch (boxed Record) revealed no significant
change to the creation but an improvement when accessing larger N.
The fact that this was more pronounced for nested access (still cloning
before nushell/nushell#12325) leads to the conclusion that this may
still be dominated by the smaller clone necessary for a 24-byte `Record`
over the previous 48 bytes.

# User-Facing Changes

Reduced memory usage
2024-03-31 00:47:17 +01:00
..
nu-cli Make autocd return exit code 0 (#12337) 2024-03-30 15:09:34 +01:00
nu-cmd-base Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
nu-cmd-dataframe keep sqlparser at 39 until polars is upgraded (#12311) 2024-03-27 19:26:49 -05:00
nu-cmd-extra Remove ambiguous into bits impl for date (#12313) 2024-03-31 00:46:11 +01:00
nu-cmd-lang Rename Value::CustomValue to Value::Custom (#12309) 2024-03-27 22:10:56 +01:00
nu-color-config Rename Value::CustomValue to Value::Custom (#12309) 2024-03-27 22:10:56 +01:00
nu-command Use safe nix API instead of libc (#12315) 2024-03-30 14:49:54 +01:00
nu-engine Exposed the recursion limit value as a config option (#12308) 2024-03-28 15:40:45 -05:00
nu-explore Reuse existing small allocations if possible (#12335) 2024-03-30 14:04:11 +01:00
nu-glob Fix ignored clippy lints (#12160) 2024-03-11 19:46:04 +01:00
nu-json Use nightly clippy to kill dead code/fix style (#12334) 2024-03-30 09:17:28 +08:00
nu-lsp Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
nu-parser Reuse existing small allocations if possible (#12335) 2024-03-30 14:04:11 +01:00
nu-path ls, rm, cp, open, touch, mkdir: Don't expand tilde if input path is quoted string or a variable. (#12232) 2024-03-25 10:08:38 +08:00
nu-plugin Remove serde derive for ShellError, replace via LabeledError (#12319) 2024-03-30 14:21:40 +01:00
nu-plugin-test-support Rename Value::CustomValue to Value::Custom (#12309) 2024-03-27 22:10:56 +01:00
nu-pretty-hex Use nightly clippy to kill dead code/fix style (#12334) 2024-03-30 09:17:28 +08:00
nu-protocol Refactor Record to use a single backing Vec (#12326) 2024-03-31 00:47:17 +01:00
nu-std add a few more logging statements for debugging startup (#12316) 2024-03-28 11:27:12 -05:00
nu-system Use safe nix API instead of libc (#12315) 2024-03-30 14:49:54 +01:00
nu-table Use nightly clippy to kill dead code/fix style (#12334) 2024-03-30 09:17:28 +08:00
nu-term-grid Move more dependencies to workspace level (#12270) 2024-03-23 18:46:02 -05:00
nu-test-support Move more dependencies to workspace level (#12270) 2024-03-23 18:46:02 -05:00
nu-utils Exposed the recursion limit value as a config option (#12308) 2024-03-28 15:40:45 -05:00
nu_plugin_custom_values Rename Value::CustomValue to Value::Custom (#12309) 2024-03-27 22:10:56 +01:00
nu_plugin_example Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +01:00
nu_plugin_formats Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +01:00
nu_plugin_gstat Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +01:00
nu_plugin_inc Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +01:00
nu_plugin_python Improve the error message for a plugin version mismatch (#12122) 2024-03-08 06:04:22 -06:00
nu_plugin_query Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +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.