mirror of
https://github.com/nushell/nushell.git
synced 2025-02-08 06:30:00 +01:00
# Description This adds a `SharedCow` type as a transparent copy-on-write pointer that clones to unique on mutate. As an initial test, the `Record` within `Value::Record` is shared. There are some pretty big wins for performance. I'll post benchmark results in a comment. The biggest winner is nested access, as that would have cloned the records for each cell path follow before and it doesn't have to anymore. The reusability of the `SharedCow` type is nice and I think it could be used to clean up the previous work I did with `Arc` in `EngineState`. It's meant to be a mostly transparent clone-on-write that just clones on `.to_mut()` or `.into_owned()` if there are actually multiple references, but avoids cloning if the reference is unique. # User-Facing Changes - `Value::Record` field is a different type (plugin authors) # Tests + Formatting - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib` # After Submitting - [ ] use for `EngineState` - [ ] use for `Value::List` |
||
---|---|---|
.. | ||
bytes | ||
charting | ||
conversions | ||
database | ||
date | ||
debug | ||
env | ||
experimental | ||
filesystem | ||
filters | ||
formats | ||
generators | ||
hash | ||
help | ||
math | ||
misc | ||
network | ||
path | ||
platform | ||
random | ||
removed | ||
shells | ||
stor | ||
strings | ||
system | ||
viewers | ||
default_context.rs | ||
example_test.rs | ||
lib.rs | ||
progress_bar.rs | ||
sort_utils.rs |