nushell/crates/nu-cli/src
Ian Manske e20113a0eb
Remove stack debug assert (#12861)
# 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>
2024-05-15 22:59:10 +00:00
..
commands ListStream touchup (#12524) 2024-05-05 16:00:59 +00:00
completions Pass Stack ref to Completer::fetch (#12783) 2024-05-09 13:38:24 +08:00
menus Rename IoStream to OutDest (#12433) 2024-04-09 16:48:32 +00:00
config_files.rs Refactor the CLI code a bit (#12782) 2024-05-10 07:29:27 +08:00
eval_cmds.rs Refactor the CLI code a bit (#12782) 2024-05-10 07:29:27 +08:00
eval_file.rs Refactor the CLI code a bit (#12782) 2024-05-10 07:29:27 +08:00
lib.rs Overhaul the plugin cache file with a new msgpack+brotli format (#12579) 2024-04-21 07:36:26 -05:00
nu_highlight.rs Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
print.rs Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
prompt.rs cleanup osc calls for shell_integration (#12810) 2024-05-08 13:34:04 -05:00
prompt_update.rs Refactor the CLI code a bit (#12782) 2024-05-10 07:29:27 +08:00
reedline_config.rs Remove some macros (#12742) 2024-05-03 10:35:37 +02:00
repl.rs Remove stack debug assert (#12861) 2024-05-15 22:59:10 +00:00
syntax_highlight.rs Avoid taking unnecessary ownership of intermediates (#12740) 2024-05-04 00:53:15 +00:00
util.rs Refactor the CLI code a bit (#12782) 2024-05-10 07:29:27 +08:00
validation.rs Remove old alias implementation (#8797) 2023-04-07 21:09:38 +03:00