mirror of
https://github.com/nushell/nushell.git
synced 2024-11-22 08:23:24 +01:00
48e4448e55
# Description If a panic happens during a plugin call, because it always happens outside of the main thread, it currently just hangs Nushell because the plugin stays running without ever producing a response to the call. This adds a panic handler that calls `exit(1)` after the unwind finishes to the plugin runner. The panic error is still printed to stderr as always, and waiting for the unwind to finish helps to ensure that anything on the stack with `Drop` behavior that needed to run still runs, at least on that thread. # User-Facing Changes Panics now look like this, which is what they looked like before the plugin behavior was moved to a separate thread: ``` thread 'plugin runner (primary)' panicked at crates/nu_plugin_example/src/commands/main.rs:45:9: Test panic note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace Error: nu:🐚:plugin_failed_to_decode × Plugin failed to decode: Failed to receive response to plugin call ``` # Tests + Formatting - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib` |
||
---|---|---|
.. | ||
nu_plugin_custom_values | ||
nu_plugin_example | ||
nu_plugin_formats | ||
nu_plugin_gstat | ||
nu_plugin_inc | ||
nu_plugin_polars | ||
nu_plugin_python | ||
nu_plugin_query | ||
nu_plugin_stress_internals | ||
nu-cli | ||
nu-cmd-base | ||
nu-cmd-dataframe | ||
nu-cmd-extra | ||
nu-cmd-lang | ||
nu-color-config | ||
nu-command | ||
nu-engine | ||
nu-explore | ||
nu-glob | ||
nu-json | ||
nu-lsp | ||
nu-parser | ||
nu-path | ||
nu-plugin | ||
nu-plugin-test-support | ||
nu-pretty-hex | ||
nu-protocol | ||
nu-std | ||
nu-system | ||
nu-table | ||
nu-term-grid | ||
nu-test-support | ||
nu-utils | ||
README.md |
Nushell core libraries and plugins
These sub-crates form both the foundation for Nu and a set of plugins which extend Nu with additional functionality.
Foundational libraries are split into two kinds of crates:
- Core crates - those crates that work together to build the Nushell language engine
- Support crates - a set of crates that support the engine with additional features like JSON support, ANSI support, and more.
Plugins are likewise also split into two types:
- Core plugins - plugins that provide part of the default experience of Nu, including access to the system properties, processes, and web-connectivity features.
- Extra plugins - these plugins run a wide range of different capabilities like working with different file types, charting, viewing binary data, and more.