mirror of
https://github.com/nushell/nushell
synced 2024-11-14 17:07:07 +00:00
9996e4a1f8
# Description Continuing from #12568, this PR further reduces the size of `Expr` from 64 to 40 bytes. It also reduces `Expression` from 128 to 96 bytes and `Type` from 32 to 24 bytes. This was accomplished by: - for `Expr` with multiple fields (e.g., `Expr::Thing(A, B, C)`), merging the fields into new AST struct types and then boxing this struct (e.g. `Expr::Thing(Box<ABC>)`). - replacing `Vec<T>` with `Box<[T]>` in multiple places. `Expr`s and `Expression`s should rarely be mutated, if at all, so this optimization makes sense. By reducing the size of these types, I didn't notice a large performance improvement (at least compared to #12568). But this PR does reduce the memory usage of nushell. My config is somewhat light so I only noticed a difference of 1.4MiB (38.9MiB vs 37.5MiB). --------- Co-authored-by: Stefan Holderbach <sholderbach@users.noreply.github.com> |
||
---|---|---|
.. | ||
assets | ||
src | ||
tests | ||
Cargo.toml | ||
LICENSE | ||
README.md |
nu-cmd-extra
The commands in this crate are the extra commands of Nushell. These commands are not in a state to be guaranteed to be part of the 1.0 API; meaning that there is no guarantee longer term that these commands will be around into the future.
For a while we did exclude them behind the --features extra
compile time
flag, meaning that the default release did not contain them. As we (the Nushell
team) shipped a full build including both extra
and dataframe
for some
time, we chose to sunset the extra
feature but keep the commands in this
crate for now. In the future the commands may be moved to more topical crates
or discarded into plugins.