nushell/crates/nu-cmd-base
Raphael Gaschignard d8f13b36b1
Allow for stacks to have parents (#11654)
This is another attempt on #11288 

This allows for a `Stack` to have a parent stack (behind an `Arc`). This
is being added to avoid constant stack copying in REPL code.

Concretely the following changes are included here:
- `Stack` can now have a `parent_stack`, pointing to another stack
- variable lookups can fallback to this parent stack (env vars and
everything else is still copied)
- REPL code has been reworked so that we use parenting rather than
cloning. A REPL-code-specific trait helps to ensure that we do not
accidentally trigger a full clone of the main stack
- A property test has been added to make sure that parenting "looks the
same" as cloning for consumers of `Stack` objects

---------

Co-authored-by: Raphael Gaschignard <rtpg@rokkenjima.local>
Co-authored-by: Ian Manske <ian.manske@pm.me>
2024-03-09 17:55:39 +01:00
..
src Allow for stacks to have parents (#11654) 2024-03-09 17:55:39 +01:00
Cargo.toml Introduce workspace dependencies (#12043) 2024-03-07 14:40:31 -08:00
LICENSE [nu-cmd-base] add missing LICENSE text (#10855) 2023-10-27 15:55:03 -05:00