nushell/crates
Devyn Cairns f4940e115f
Remove bincode and use MessagePack instead for plugin custom values (#13745)
# Description

This changes the serialization of custom values within the plugin
protocol to use MessagePack instead of bincode, removing the dependency
on bincode entirely.

Bincode does not seem to be very maintained anymore, and the externally
tagged enum representation doesn't seem to always work now even though
it should. Since we use MessagePack already anyway for the plugin
protocol, this seems like an obvious choice. This uses the unnamed
variant of the serialization rather than the named variant, which is
what the plugin protocol in general uses. The unnamed variant does not
include field names, which aren't really required here, so this should
give us something that's more or less as efficient as bincode is.

Should fix #13743.

# User-Facing Changes

- Will need to recompile plugins (but always do anyway)
- Doesn't technically break the plugin protocol (custom value data is a
black box / plugin implementation specific), but breaks compatibility
between `nu-plugin-engine` and `nu-plugin` so they do need to both be
updated to match.

# Tests + Formatting

All tests pass.

# After Submitting

- [ ] release notes
2024-09-01 17:33:10 +02:00
..
nu-cli Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-cmd-base Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-cmd-extra Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-cmd-lang Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-cmd-plugin Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-color-config Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-command Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-derive-value Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-engine Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-explore Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-glob Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-json Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-lsp Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-parser Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-path Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-plugin Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-plugin-core Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-plugin-engine Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-plugin-protocol Remove bincode and use MessagePack instead for plugin custom values (#13745) 2024-09-01 17:33:10 +02:00
nu-plugin-test-support Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-pretty-hex Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-protocol Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-std Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-system remove cfg_atter tarpaulin (#13739) 2024-08-31 16:45:15 +02:00
nu-table Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-term-grid Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-test-support Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu-utils Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02:00
nu_plugin_custom_values Change the usage misnomer to "description" (#13598) 2024-08-22 12:02:08 +02:00
nu_plugin_example Change the usage misnomer to "description" (#13598) 2024-08-22 12:02:08 +02:00
nu_plugin_formats Change the usage misnomer to "description" (#13598) 2024-08-22 12:02:08 +02:00
nu_plugin_gstat Change the usage misnomer to "description" (#13598) 2024-08-22 12:02:08 +02:00
nu_plugin_inc Change the usage misnomer to "description" (#13598) 2024-08-22 12:02:08 +02:00
nu_plugin_nu_example Change the usage misnomer to "description" (#13598) 2024-08-22 12:02:08 +02:00
nu_plugin_polars Expression support polars replace and polars replace-all (#13726) 2024-08-29 13:59:44 -07:00
nu_plugin_python Change the usage misnomer to "description" (#13598) 2024-08-22 12:02:08 +02:00
nu_plugin_query Change the usage misnomer to "description" (#13598) 2024-08-22 12:02:08 +02:00
nu_plugin_stress_internals Change the usage misnomer to "description" (#13598) 2024-08-22 12:02:08 +02:00
nuon Setup global cargo lint configuration (#13691) 2024-08-28 23:37:17 +02: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.