mirror of
https://github.com/nushell/nushell
synced 2025-01-02 16:29:00 +00:00
e20113a0eb
# Description In order for `Stack::unwrap_unique` to work as intended, we currently manually track all references to the parent stack and ensure that they are cleared before calling `Stack::unwrap_unique` in the REPL. We also only call `Stack::unwrap_unique` after all code from the current REPL entry has finished executing. Since `Value`s cannot store `Stack` references, then this should have worked in theory. However, we forgot to account for threads. `run-external` (and maybe the plugin writers) can spawn threads that clone the `Stack`, holding on to references of the parent stack. These threads are not waited/joined upon, and so may finish after the eval has already returned. This PR removes the `Stack::unwrap_unique` function and associated debug assert that was [causing panics](https://gist.github.com/cablehead/f3d2608a1629e607c2d75290829354f7) like @cablehead found. # After Submitting Make values cheaper to clone as a more robust solution to the performance issues with cloning the stack. --------- Co-authored-by: Wind <WindSoilder@outlook.com> |
||
---|---|---|
.. | ||
commands | ||
completions | ||
menus | ||
config_files.rs | ||
eval_cmds.rs | ||
eval_file.rs | ||
lib.rs | ||
nu_highlight.rs | ||
print.rs | ||
prompt.rs | ||
prompt_update.rs | ||
reedline_config.rs | ||
repl.rs | ||
syntax_highlight.rs | ||
util.rs | ||
validation.rs |