NAME

nbdkit-release-notes-1.36 - release notes for nbdkit 1.36

DESCRIPTION

These are the release notes for nbdkit stable release 1.36. This describes the major changes since 1.34.

nbdkit 1.36.0 was released on 27 September 2023.

Security

No security issues were identified in this release.

All past security issues and information about how to report new ones can be found in nbdkit-security(1).

Plugins

New nbdkit-ones-plugin(1) which creates a fully allocated disk containing all 0xff (all ones), or another byte of your choice.

nbdkit-curl-plugin(1) now uses a curl "multi" interface. This enables much better performance, and also allows the curl plugin to handle requests in parallel. The curl plugin now falls back to making a GET request to get the size of the remote file for certain servers which do not support HEAD requests. This plugin adds new options: ipresolve (force IPv4 or IPv6), resolve (force a particular IP address), -D curl.times=1 (print detailed timing stats), and -D curl.verbose.ids=1 (display connection and transfer IDs).

nbdkit-memory-plugin(1) now uses a read-write lock to protect internal structures, resulting in improved performance for mostly read workloads.

nbdkit-data-plugin(1) now has more optimizations.

nbdkit-file-plugin(1) now supports 4k sector sizes on Windows (Brian Carnes).

Filters

New nbdkit-evil-filter(1) adds random but consistent data corruption to the underlying plugin.

New nbdkit-qcow2dec-filter(1) which can decode qcow2 files (but not write to them).

nbdkit-ip-filter(1) can now filter by client SELinux label.

nbdkit-partition-filter(1) now supports 4k sector sizes (Brian Carnes).

nbdkit-retry-request-filter(1) allows the get_size operation to be retried.

nbdkit-tar-filter(1) adds new tar-limit parameter which can be used to ensure the filter does not read indefinite amounts of input when opening the tar file.

Filters can now append their own output to nbdkit --dump-plugin output.

Language bindings

Rust bindings add support for after_fork, block_size, nbdkit_debug, nbdkit_is_tls, nbdkit_parse_size, nbdkit_parse_bool and nbdkit_parse_probability. The open method can now return an error; note this is not backwards compatible and requires a small source code change to Rust plugins. (Thanks Alan Somers)

nbdkit-ocaml-plugin(3) now supports OCaml 5.

OCaml bindings add support for nbdkit_stdio_safe, nbdkit_is_tls, nbdkit_peer_name and nbdkit_peer_security_context.

nbdkit-perl-plugin(3) now supports Perl 5.38.

Shell script plugins (nbdkit-sh-plugin(3)) may now ignore stdin in their pwrite method, whereas previously it was required to read and discard stdin along error paths (thanks Eric Blake).

Server

When using the --run option, the default is now to use a private Unix domain socket (as if -U - was specified), whereas in nbdkit ≤ 1.34 the default was to open a TCP port. The new default reflects the most common and safest way to use the --run option. You can find out if nbdkit has the new behaviour by checking nbdkit --dump-config and looking for run_default_socket=Unix in the output.

Debug strings containing control codes and other non-printable characters are now escaped properly.

New flag -D nbdkit.environ=1 can be used to dump the server environment in debug output.

API

New nbdkit_parse_probability function which can be used to parse probabilities in various formats, like "10%" or "1:10".

New nbdkit_peer_security_context function which returns the security context (usually SELinux label) of the client.

Bug fixes

Fix long-standing double-free in nbdkit-file-plugin(1) when the client closes the connection during negotiation (thanks Eric Blake).

nbdkit-file-plugin now has improved error messages when you try to open a file with an empty name ("").

Documentation

Miscellaneous documentation improvements for Windows (Brian Carnes).

Fuzzing instructions updated for Clang 17, AFL++ 4.08c.

Tests

Ongoing CI maintenance and fixes (Laszlo Ersek, Eric Blake).

Many fixes in the test suite for MinGW and Wine.

Several internal consistency checks were added to the test suite, to ensure, for example, that we always use requires_run when the test uses the nbdkit --run option.

Build

Optionally zlib-ng can be used (instead of zlib) for faster decompression in various places.

No longer link with msvcrt on Windows.

awk is a build requirement. It was implicitly required before (because it is needed by the ./configure script generated by autoconf), but now the dependency is explicit (Eric Blake).

Internals

podwrapper has a new --replace parameter which makes it easier to use AC_SUBST-substitutions in documentation.

SEE ALSO

nbdkit(1).

AUTHORS

Authors of nbdkit 1.36:

Alan Somers
Brian Carnes
Eric Blake
Laszlo Ersek
Richard W.M. Jones

COPYRIGHT

Copyright Red Hat

LICENSE

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.