nushell/crates
Stefan Holderbach 3ab9f0b90a
Fix bugs and UB in bit shifting ops (#13663)
# Description
Fixes #11267

Shifting by a `shift >= num_bits` is undefined in the underlying
operation. Previously we also had an overflow on negative shifts for the
operators `bit-shl` and `bit-shr`
Furthermore I found a severe bug in the implementation of shifting of
`binary` data with the commands `bits shl` and `bits shr`, this
categorically produced incorrect results with shifts that were not
`shift % 4 == 0`. `bits shr` also was able to produce outputs with
different size to the input if the shift was exceeding the length of the
input data by more than a byte.

# User-Facing Changes
It is now an error trying to shift by more than the available bits with:
- `bit-shl` operator
- `bit-shr` operator
- command `bits shl`
- command `bits shr`

# Tests + Formatting
Added testing for all relevant cases
2024-08-22 11:54:27 +02:00
..
nu_plugin_custom_values Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu_plugin_example Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu_plugin_formats Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu_plugin_gstat Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu_plugin_inc Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu_plugin_nu_example Change behavior of into record on lists to be more useful (#13637) 2024-08-22 11:38:43 +02:00
nu_plugin_polars Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu_plugin_python Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu_plugin_query Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu_plugin_stress_internals Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-cli Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-cmd-base Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-cmd-extra Fix bugs and UB in bit shifting ops (#13663) 2024-08-22 11:54:27 +02:00
nu-cmd-lang Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-cmd-plugin Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-color-config Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-command Be explicit about reduce args and input (#13646) 2024-08-22 11:39:21 +02:00
nu-derive-value Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-engine Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-explore Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-glob Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-json Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-lsp Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-parser Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-path Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-plugin Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-plugin-core Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-plugin-engine Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-plugin-protocol Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-plugin-test-support Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-pretty-hex Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-protocol Fix bugs and UB in bit shifting ops (#13663) 2024-08-22 11:54:27 +02:00
nu-std Change behavior of into record on lists to be more useful (#13637) 2024-08-22 11:38:43 +02:00
nu-system Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-table Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-term-grid Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-test-support Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nu-utils Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +02:00
nuon Bump version to 0.97.2 (#13666) 2024-08-22 11:36:32 +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.