nushell/crates/nu-cli/src
Stefan Holderbach a52386e837
Box ShellError in Value::Error (#8375)
# Description

Our `ShellError` at the moment has a `std::mem::size_of<ShellError>` of
136 bytes (on AMD64). As a result `Value` directly storing the struct
also required 136 bytes (thanks to alignment requirements).

This change stores the `Value::Error` `ShellError` on the heap.

Pro:
- Value now needs just 80 bytes
- Should be 1 cacheline less (still at least 2 cachelines)

Con:
- More small heap allocations when dealing with `Value::Error`
  - More heap fragmentation
  - Potential for additional required memcopies

# Further code changes

Includes a small refactor of `try` due to a type mismatch in its large
match.

# User-Facing Changes

None for regular users.

Plugin authors may have to update their matches on `Value` if they use
`nu-protocol`

Needs benchmarking to see if there is a benefit in real world workloads.
**Update** small improvements in runtime for workloads with high volume
of values. Significant reduction in maximum resident set size, when many
values are held in memory.

# Tests + Formatting
2023-03-12 09:57:27 +01:00
..
completions Resolve Clippy warnings inside tests. (#8315) 2023-03-04 14:58:20 +01:00
menus Use variable names directly in the format strings (#7906) 2023-01-29 19:37:54 -06:00
commands.rs Remove perf flag to streamline logging configuration (#6834) 2022-10-21 10:20:21 -05:00
config_files.rs respect use_ansi_coloring configuration (#7912) 2023-02-02 00:03:05 +01:00
eval_file.rs Box ShellError in Value::Error (#8375) 2023-03-12 09:57:27 +01:00
lib.rs Split merging of parser delta and stack environment (#6005) 2022-07-14 17:09:27 +03:00
nu_highlight.rs Box ShellError in Value::Error (#8375) 2023-03-12 09:57:27 +01:00
print.rs print pipeline contents in print (#8305) 2023-03-04 11:31:01 +13:00
prompt_update.rs Use variable names directly in the format strings (#7906) 2023-01-29 19:37:54 -06:00
prompt.rs Make the default prompt play nice with basic fonts (#8080) 2023-03-02 13:59:32 +13:00
reedline_config.rs Use variable names directly in the format strings (#7906) 2023-01-29 19:37:54 -06:00
repl.rs Box ShellError in Value::Error (#8375) 2023-03-12 09:57:27 +01:00
syntax_highlight.rs Support redirect err and out to different streams (#7685) 2023-01-12 10:22:30 +01:00
util.rs respect use_ansi_coloring configuration (#7912) 2023-02-02 00:03:05 +01:00
validation.rs Remove engine_state clones in REPL eval (#7713) 2023-01-10 17:22:32 -08:00