.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Podwrapper::Man 1.20.1 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "libnbd-release-notes-1.16 1" .TH libnbd-release-notes-1.16 1 2024-05-08 libnbd-1.20.1 LIBNBD .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH NAME libnbd\-release\-notes\-1.16 \- release notes for libnbd 1.16 .SH DESCRIPTION .IX Header "DESCRIPTION" These are the release notes for libnbd stable release 1.16. This describes the major changes since 1.14. .PP libnbd 1.16.0 was released on \fB18 April 2023\fR. .SS Security .IX Subsection "Security" No security issues were found in this release. .PP If you find a security issue, please read \fISECURITY\fR in the source (online here: https://gitlab.com/nbdkit/libnbd/blob/master/SECURITY). To find out about previous security issues in libnbd, see \&\fBlibnbd\-security\fR\|(3). .SS "New APIs" .IX Subsection "New APIs" New API \fBnbd_supports_vsock\fR\|(3) can be used to test if the client has vsock support (Eric Blake). .PP New API \fBnbd_poll2\fR\|(3) which allows an extra file descriptor to be passed in (Ming Lei). .PP New \fBnbd_stats_bytes_sent\fR\|(3), \fBnbd_stats_bytes_received\fR\|(3), \&\fBnbd_stats_chunks_sent\fR\|(3) and \fBnbd_stats_chunks_received\fR\|(3) APIs which expose the number of bytes and messages sent and received on the current connection (Eric Blake). .PP New \fBnbd_opt_list_meta_context_queries\fR\|(3) and \&\fBnbd_aio_opt_list_meta_context_queries\fR\|(3) APIs allow you to query the available meta contexts interactively with the server during the negotiation phase of the protocol (Eric Blake). .PP New \fBnbd_set_request_meta_context\fR\|(3) lets you control whether the meta context is set during negotiation. This can make certain operations faster, especially \f(CW\*(C`nbdinfo \-\-list\*(C'\fR. (Eric Blake) .PP New \fBnbd_opt_set_meta_context\fR\|(3), \&\fBnbd_opt_set_meta_context_queries\fR\|(3), \&\fBnbd_aio_opt_set_meta_context\fR\|(3) and \&\fBnbd_aio_opt_set_meta_context_queries\fR\|(3) APIs let you request meta contexts when using \fBnbd_set_opt_mode\fR\|(3) (Eric Blake). .PP New \fBnbd_opt_structured_reply\fR\|(3) and \&\fBnbd_aio_opt_structured_reply\fR\|(3) APIs let you fine-tune when structured replies are requested during the negotiation phase (Eric Blake). .PP New \fBnbd_opt_starttls\fR\|(3) and \fBnbd_aio_opt_starttls\fR\|(3) APIs let you fine-tune when STARTTLS is negotiated (Eric Blake). .PP New \fBnbd_set_socket_activation_name\fR\|(3) and \&\fBnbd_get_socket_activation_name\fR\|(3) APIs which allow you to name the socket used for socket activation. Certain servers such as qemu-storage-daemon will use this name on the command line and in scripts. (Thanks Laszlo Ersek). .SS "Enhancements to existing APIs" .IX Subsection "Enhancements to existing APIs" \&\fBnbd_connect_command\fR\|(3) called with NULL argv parameter previously crashed, but now returns an error (Eric Blake). .PP \&\fBnbd_opt_list_meta_context\fR\|(3) can now be called without having negotiated structured replies (Eric Blake). .PP \&\fBnbd_set_strict_mode\fR\|(3) has a new \f(CW\*(C`LIBNBD_STRICT_PAYLOAD\*(C'\fR flag which can be used to control whether send oversize messages, in order to test servers (Eric Blake). .PP C API pointer parameters that cannot be NULL are now annotated with \&\f(CW\*(C`attribute((nonnull))\*(C'\fR (if the compiler supports it) so that you will get a compile time warning if they are used improperly (thanks Eric Blake). .PP C APIs which allocate are now marked with \f(CW\*(C`attribute((malloc))\*(C'\fR and similar attributions to improve static analysis of programs using libnbd (Eric Blake). .PP C APIs expressing flag values now use unsigned types, removing some undefined corner-cases with bitwise math on signed ints. This change is API and ABI backwards compatible. (Eric Blake) .SS Tools .IX Subsection "Tools" New \fBnbdublk\fR\|(1) program which is used to create a Linux \&\fI/dev/ublkb\fR block device from an NBD server (thanks Ming Lei). .PP \&\fBnbdinfo\fR\|(1) now has colorized output (use \fI\-\-no\-color\fR to disable). .PP nbdinfo has new \fI\-\-is tls\fR and \fI\-\-can structured-reply\fR options to let you test for these features on the server (Eric Blake). .PP \&\fBnbdcopy\fR\|(1) now writes progress messages to stderr (previously they were written to \fI/dev/tty\fR). This makes it consistent with other tools like dd. (Eric Blake). .PP \&\fBnbdsh\fR\|(1) options \fI\-c\fR and \fI\-u\fR can now be interleaved, making it easier to toggle optional URI features (Eric Blake). .SS "Language bindings" .IX Subsection "Language bindings" Documentation for the OCaml bindings now includes parameter names. .PP The OCaml bindings now return OCaml error values in exceptions instead of raw C errno numbers. .PP OCaml bindings now support \fBnbd_aio_connect\fR\|(3) which uses the sockaddr type directly. .PP The Python bindings now have an explicit \f(CW\*(C`h.close()\*(C'\fR method. Letting the handle go out of scope still works for closing the handle, but now you have the choice to explicitly close the handle before it goes out of scope. If you try to use the handle after closing it, a new \&\f(CW\*(C`nbd.ClosedHandle\*(C'\fR exception will be thrown. .PP The Python bindings now provide a contextlib decorated function, so you can write the more natural \f(CW\*(C`with\ nbd.nbd()\ as\ h:\ ...\*(C'\fR .SS Tests .IX Subsection "Tests" Wider CI coverage (Eric Blake). .SS "Other improvements and bug fixes" .IX Subsection "Other improvements and bug fixes" The state machine can now cope with and recover from some bad structured reply messages and unknown cookies sent by the server (Eric Blake). .PP The library is now annotated with \f(CW\*(C`\-z nodelete\*(C'\fR, preventing it from being "really" unloaded when you call \fBdlclose\fR\|(3). This is the only way to prevent a crash in multi-threaded code. See commit 368e3d0d5a887 for details. .PP Improve debugging when the handle enters the \f(CW%DEAD\fR state. .PP The library is now much more POSIX-compliant and resilient when running subcommands, no longer relying on quirks of the glibc implementation of execvp and other non-async-signal-safe functions (Laszlo Ersek). .PP Source files reformatted to use ≤ 80 columns (Laszlo Ersek). .SS Build .IX Subsection "Build" Fix build on Alpine Linux + musl which declares \f(CW\*(C`AF_VSOCK\*(C'\fR but does not define the associated structures (Eric Blake). .PP Python distutils, deprecated in Python ≥ 3.10, has been replaced by sysconfig (thanks Miro Hrončok). .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBlibnbd\fR\|(3). .SH AUTHORS .IX Header "AUTHORS" .IP "Daniel P. Berrangé" 4 .IX Item "Daniel P. Berrangé" .PD 0 .IP "Eric Blake" 4 .IX Item "Eric Blake" .IP "Laszlo Ersek" 4 .IX Item "Laszlo Ersek" .IP "Ming Lei" 4 .IX Item "Ming Lei" .IP "Richard W.M. Jones" 4 .IX Item "Richard W.M. Jones" .PD .SH COPYRIGHT .IX Header "COPYRIGHT" Copyright Red Hat .SH LICENSE .IX Header "LICENSE" This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. .PP This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. .PP You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110\-1301 USA