nushell/crates/nu-protocol/src
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
..
ast Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
config Exposed the recursion limit value as a config option (#12308) 2024-03-28 15:40:45 -05:00
debugger Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
engine Reuse existing small allocations if possible (#12335) 2024-03-30 14:04:11 +01:00
errors Remove serde derive for ShellError, replace via LabeledError (#12319) 2024-03-30 14:21:40 +01:00
pipeline_data Use nightly clippy to kill dead code/fix style (#12334) 2024-03-30 09:17:28 +08:00
plugin Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +01:00
value Refactor Record to use a single backing Vec (#12326) 2024-03-31 00:47:17 +01:00
alias.rs IO and redirection overhaul (#11934) 2024-03-14 15:51:55 -05:00
did_you_mean.rs Improve case insensitivity consistency (#10884) 2023-11-08 23:58:54 +01:00
eval_base.rs Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
eval_const.rs Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
example.rs Fix build of nu-protocol without plugin feature enabled (#12323) 2024-03-28 22:39:57 +01:00
id.rs Add virtual path abstraction layer (#9245) 2023-05-23 23:48:50 +03:00
lev_distance.rs Suggest existing variables on not found (#8902) 2023-05-02 18:17:14 +03:00
lib.rs Restructure nu-protocol in more meaningful units (#11917) 2024-03-10 18:45:45 +01:00
module.rs Error on use path item1 item2, if item1 is not a module (#11183) 2023-12-05 11:38:45 +01:00
signature.rs Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
span.rs Replace panics with errors in thread spawning (#12040) 2024-03-02 11:14:02 -06:00
syntax_shape.rs open, rm, umv, cp, rm and du: Don't globs if inputs are variables or string interpolation (#11886) 2024-02-23 09:17:09 +08:00
ty.rs Glob: don't allow implicit casting between glob and string (#11992) 2024-02-28 23:05:35 +08:00
util.rs Convert more ShellError variants to named fields (#11173) 2023-11-28 06:43:51 -06:00