nushell/crates
Devyn Cairns 714a0ccd24
Remove serde derive for ShellError, replace via LabeledError (#12319)
# Description

This changes the interface for plugins to always represent errors as
`LabeledError`s. This is good for altlang plugins, as it would suck for
them to have to implement and track `ShellError`. We save a lot of
generated code from the `ShellError` serde impl too, so `nu` and plugins
get to have a smaller binary size.

Reduces the release binary size by 1.2 MiB on my build configuration.

# User-Facing Changes

- Changes plugin protocol. `ShellError` no longer serialized.
- `ShellError` serialize output is different
- `ShellError` no longer deserializes to exactly the same value as
serialized

# Tests + Formatting

- 🟢 `toolkit fmt`
- 🟢 `toolkit clippy`
- 🟢 `toolkit test`
- 🟢 `toolkit test stdlib`

# After Submitting

- [ ] Document in plugin protocol reference
2024-03-30 14:21:40 +01:00
..
nu_plugin_custom_values Rename Value::CustomValue to Value::Custom (#12309) 2024-03-27 22:10:56 +01:00
nu_plugin_example Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +01:00
nu_plugin_formats Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +01:00
nu_plugin_gstat Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +01:00
nu_plugin_inc Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +01:00
nu_plugin_python Improve the error message for a plugin version mismatch (#12122) 2024-03-08 06:04:22 -06:00
nu_plugin_query Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +01:00
nu-cli Reuse existing small allocations if possible (#12335) 2024-03-30 14:04:11 +01:00
nu-cmd-base Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
nu-cmd-dataframe keep sqlparser at 39 until polars is upgraded (#12311) 2024-03-27 19:26:49 -05:00
nu-cmd-extra Use nightly clippy to kill dead code/fix style (#12334) 2024-03-30 09:17:28 +08:00
nu-cmd-lang Rename Value::CustomValue to Value::Custom (#12309) 2024-03-27 22:10:56 +01:00
nu-color-config Rename Value::CustomValue to Value::Custom (#12309) 2024-03-27 22:10:56 +01:00
nu-command Use nightly clippy to kill dead code/fix style (#12334) 2024-03-30 09:17:28 +08:00
nu-engine Exposed the recursion limit value as a config option (#12308) 2024-03-28 15:40:45 -05:00
nu-explore Reuse existing small allocations if possible (#12335) 2024-03-30 14:04:11 +01:00
nu-glob Fix ignored clippy lints (#12160) 2024-03-11 19:46:04 +01:00
nu-json Use nightly clippy to kill dead code/fix style (#12334) 2024-03-30 09:17:28 +08:00
nu-lsp Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
nu-parser Reuse existing small allocations if possible (#12335) 2024-03-30 14:04:11 +01:00
nu-path ls, rm, cp, open, touch, mkdir: Don't expand tilde if input path is quoted string or a variable. (#12232) 2024-03-25 10:08:38 +08:00
nu-plugin Remove serde derive for ShellError, replace via LabeledError (#12319) 2024-03-30 14:21:40 +01:00
nu-plugin-test-support Rename Value::CustomValue to Value::Custom (#12309) 2024-03-27 22:10:56 +01:00
nu-pretty-hex Use nightly clippy to kill dead code/fix style (#12334) 2024-03-30 09:17:28 +08:00
nu-protocol Remove serde derive for ShellError, replace via LabeledError (#12319) 2024-03-30 14:21:40 +01:00
nu-std add a few more logging statements for debugging startup (#12316) 2024-03-28 11:27:12 -05:00
nu-system Deduplicate nix dependency versions (#12307) 2024-03-27 16:43:37 +01:00
nu-table Use nightly clippy to kill dead code/fix style (#12334) 2024-03-30 09:17:28 +08:00
nu-term-grid Move more dependencies to workspace level (#12270) 2024-03-23 18:46:02 -05:00
nu-test-support Move more dependencies to workspace level (#12270) 2024-03-23 18:46:02 -05:00
nu-utils Exposed the recursion limit value as a config option (#12308) 2024-03-28 15:40:45 -05:00
README.md Remove old nushell/merge engine-q 2022-02-07 14:54:06 -05:00

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.