Package Release Info

nbdkit-1.44.1-160000.2.2

Update Info: Base Release
Available in Package Hub : 16.0

platforms

AArch64
ppc64le
s390x
x86-64

subpackages

nbdkit-bash-completion
nbdkit-bzip2-filter
nbdkit-devel
nbdkit-example-plugins
nbdkit-gcs-plugin
nbdkit-stats-filter
nbdkit-tar-filter
nbdkit-tmpdisk-plugin
nbdkit-xz-filter

Change Logs

* Mon Jul 07 2025 carnold@suse.com
- Update to version 1.44.1:
  * Version 1.44.1.
  * server: Fix .zero fallback path
  * Version 1.44.0.
  * tests: Use 'source ./functions.sh' and 'set -e/-x/-u' consistently
  * tests/test-parallel-sh.sh: Enable shell debugging options in the test
  * tests/test-vddk-real.sh: Enable nbdcopy --flush unconditionally
  * tests: Use 'set -u' in tests
  * tests: Modify some more tests to use 'define' function
  * tests/test-info-base64.sh: Remove never-used 'info-base64.out' file
  * tests/test-ddrescue-filter.sh: Various fixes and improvements
  * docs: Update release notes for upcoming 1.44
  * tests/test-exportname.sh: Refactor output file name
  * tests: Use new 'define' function for some sh plugins
  * tests/test-export-name.sh: Fix PID file name
  * Fix typo and wording in release notes
  * Version 1.43.13.
  * tests: Skip more Python tests under valgrind
  * vddk: Add support for VDDK 9.0.0.0
  * vddk: Debug the output from QueryAllocatedBlocks
  * vddk: Document unreliable extents information with local vmdk files
  * docs: Create release notes for upcoming 1.44
  * Revert "vddk: Add example of finding out how sparse VMDK files are"
  * vddk: Add example of finding out how sparse VMDK files are
  * tests/functions.sh.in: Fix typo in comment
  * vddk: Update comment and broken link
  * server: Print filter and plugin layers in debug mode
  * common/utils: Add convenient string_append_format function
  * Version 1.43.12.
  * tests: Stop leaving left-over /tmp/nbdkitXXXXXX dirs
  * tests/test-no-parameters.sh: Fix comment to reflect reality
  * exitwhen: Print a debug message if we exit before starting up
  * server: Try harder to clean up the random fifo dir (-U -)
  * sh: Use utils make_temporary_directory function
  * tests/test.c: Try harder to clean up nbdkit and temporary directory
  * curl: Remove temporary file when the plugin is unloaded
  * vddk: Fix VDDK version in error message and some comments
  * vddk: stats: Collect elapsed time for ReadAsync and WriteAsync
  * vddk: stats: Record the byte count of each QueryAllocatedBlocks call
  * vddk: stats: Line up the columns correctly
  * vddk: stats: Use "us" instead of (Unicode) "µs" for microseconds
  * Version 1.43.11.
  * maint: Better fix for clang
  * blocksize-policy: Add blocksize-error-policy=strict-error
  * server: Align the truncation of large block_status results
  * blocksize-policy: Round extents to match minimum alignment
  * extents: Handle unaligned tail in nbdkit_extents_aligned
  * blocksize-policy: Document use with truncate filter
  * data: Allow scaling suffixes on @decimal
  * human-size: Add human_size_parse_substr
  * blocksize-policy: Always flag unaligned block_status calls
  * maint: Silence clang warning
  * file: Add offset/count to error messages
  * file: Add the filename (or equivalent) to error messages
  * file: Save the filename or equivalent in the file handle
  * Version 1.43.10.
  * vddk: Pre-cache the extents for readonly connections
  * vddk: Unconditionally test QueryAllocatedBlocks
  * vddk: Move minimum version of VDDK to 6.7
  * vddk: Cache the readonly flag from the .open call in the handle
  * vddk: Display command type in command completed message
  * include: Move some extent functions to nbdkit-common.h
  * cacheextents: Mark this filter as deprecated
  * blocksize-policy: Typo fix
  * vddk: Debug length of extents when using -D vddk.extents=1
  * ext2: Support concurrent connections
  * Version 1.43.9.
  * docs: Mention recent CVE fixes
  * tests/test-spinning-mkfs.sh: Reduce the time taken to run this test
  * ci: Update generated files
  * ci: Remove fedora-40 and add fedora-42
  * ci: Install python3-packaging for the CI tests
  * New filter: openonce - open the underlying plugin once (per export)
  * server: filters: Pass the underlying thread model to .thread_model
  * filters: Remove a few unnecessary thread_model parallel definitions
  * docs: filters: Change parameter name of filter .get_ready
  * docs: Remove irrelevant verbiage about how plugins define thread models
  * server: Move saved exportname from connection to context
  * docs: Describe which filters are currently export safe
  * cow: Destroy blk->lock on exit
  * Version 1.43.8.
  * cow: Replace singleton overlay with a mapping of export name -> overlay
  * cow: Allow there to be multiple block overlays
  * cow: Make cow_on_read private to this file
  * vddk: Document export parameter
  * vddk: Embolden "/" in file option
  * vddk: Add export parameter
  * todo: Remove references to libnfs and gluster
  * Version 1.43.7.
  * blocksize: Fix 32-bit overflow in .extents [CVE-2025-47712]
  * server: Fix off-by-one for maximum block_status length [CVE-2025-47711]
  * file: Change confusing comment
  * file: Implement BLKDISCARD for trim
  * file: Don't ignore most errors on trim
  * file: Fix check for errno EOPNOTSUPP
  * torrent: Implement --dump-plugin
  * torrent: Implement cache (prefetch)
  * Version 1.43.6.
  * Update TODO with file plugin vs block device issues
  * file: zero: Use BLKDISCARD method if may_trim is set
  * file: zero: Document implicit order that we will try zeroing methods
  * file: Rename h->can_zeroout to h->can_blkzeroout to reflect ioctl
  * file: Fix do_fallocate debugging on Alpine
  * file: Fix do_fallocate debugging on Alpine
  * rust: Fix clippy uninlined-format-args warning
  * file: Fix comment style in a few places
  * file: Add more debugging when -D file.zero=1 is used
  * file: Fix minor typo in debug message
  * maint: Spelling fixes
  * curl: add proxy-cafile and proxy-capath
  * curl: Remove extra whitespace character
  * tests: More robust check for nbdsh --base-allocation
  * ci: Update to latest
  * docs: Explain how debug flags work
  * tests/test-layers.c: Replace realloc with nbdkit string type
  * docs: Simplify and clarify the standard text about magic parameters
  * docs: Use POD macro for all magic parameters
  * tests/test-golang-fork-warning.sh: Don't use nbdinfo in test
  * nfs: Set libnfs context to readonly if readonly=true
  * Version 1.43.5.
  * New plugin: NFS plugin using libnfs
  * curl: Move AC_DEFINE upwards
  * tests/test-pycodestyle.sh: Print paths relative to top source directory
  * python: Remove unneeded global statements
  * random, sparse-random: Link to nbdkit-pattern-plugin
  * info: Add new method 'version'
  * fua: Add an example of using flush-on-close=true
  * fua: Small whitespace and comment changes
  * fua: Use common code for flag logic
  * fua: Add flush-on-close flag
  * file: Improve documentation for cache=none
  * file: Annotate a few local variables with 'const'
  * server: Turn flush into a controlpath message
  * Version 1.43.4.
  * file: Document implicit assumption about eviction windows
  * file: Reduce the size of the lock around write eviction
  * file: Hard error if sync_file_range fails
  * tests: Add more generic tests of file cache=none
  * Version 1.43.3.
  * tests: Add tests of file plugin cache=none
  * file: If sync_file_range fails to start, don't add window to list
  * file: Add debugging if sync_file_range / posix_fadvise fails
  * Version 1.43.2.
  * tests: Add test-golang-fork-warning.sh to EXTRA_DIST if !HAVE_GOLANG
  * tests: Add test file to EXTRA_DIST even if !HAVE_LZIP
  * common/protocol: Add a test of protocol string conversion functions
  * common/protocol: Use thread-local storage for "unknown" string
  * common/protocol/protostrings.h: Fix name_of_nbd_reply prototype
  * protostrings: Use correct path to nbd-protocol.h
  * docs: Add a note to --log entry about using nbdkit_error
  * docs/nbdkit_error.pod: Describe interaction with --log option
  * docs: Remove incorrect information about syslog
  * docs: Simplify documentation for --log option
  * server: Add --log=default
  * server/log.c: Fix comment
  * tests: Test that --log=/path appends to the log file
  * golang: Issue a warning if we detect fork in golang plugin
  * golang: Don't use '()' for no-argument C functions
  * server: Add --log=/path option to log to a file
  * server/log-fp.c: Flush the message after writing
  * server: Make log-stderr function more generic
  * build: Create sections in the configure file
  * build: Add heading about basic build environment
  * Version 1.43.1.
  * build: Only use ANSI colour sequences if stdout is a terminal
  * build: Embolden headings in configure output
  * build: Mark libfuzzer as a developer only option
  * build: Colourize features
  * build: Default USDT probes to off on FreeBSD and macOS
  * rust: Disable clippy warnings unless --enable-gcc-warnings is used
  * server: Allow user statically defined tracing (USDT) probes
* Fri Jun 27 2025 carnold@suse.com
- Update to version 1.42.5: (jsc#PED-12706)
  * vddk: Embolden "/" in file option
  * cow: Make cow_on_read private to this file
  * docs: Remove irrelevant verbiage about how plugins define
    thread models
  * docs: filters: Change parameter name of filter .get_ready
  * filters: Remove a few unnecessary thread_model parallel
    definitions
  * tests/test-spinning-mkfs.sh: Reduce the time taken to run this
    test
  * docs: Mention recent CVE fixes
  * vddk: Debug length of extents when using -D vddk.extents=1
  * blocksize-policy: Typo fix
  * cacheextents: Mark this filter as deprecated
  * include: Move some extent functions to nbdkit-common.h
  * vddk: Display command type in command completed message
  * maint: Silence clang warning
  * maint: Better fix for clang
  * vddk: stats: Use "us" instead of (Unicode) "µs" for
    microseconds
  * vddk: stats: Line up the columns correctly
  * curl: Remove temporary file when the plugin is unloaded
  * tests/test.c: Try harder to clean up nbdkit and temporary
    directory
  * sh: Use utils make_temporary_directory function
  * server: Try harder to clean up the random fifo dir (-U -)
  * exitwhen: Print a debug message if we exit before starting up
  * tests/test-no-parameters.sh: Fix comment to reflect reality
  * tests: Stop leaving left-over /tmp/nbdkitXXXXXX dirs
  * vddk: Update comment and broken link
  * tests/functions.sh.in: Fix typo in comment
  * vddk: Document unreliable extents information with local vmdk
    files
  * vddk: Debug the output from QueryAllocatedBlocks
  * vddk: Add support for VDDK 9.0.0.0
  * tests: Skip more Python tests under valgrind
* Tue May 13 2025 jfehlig@suse.com
- Update to version 1.42.3:
  * Version 1.42.3.
  * file: Change confusing comment
  * file: Implement BLKDISCARD for trim
  * file: Don't ignore most errors on trim
  * file: Fix check for errno EOPNOTSUPP
  * Update TODO with file plugin vs block device issues
  * file: zero: Use BLKDISCARD method if may_trim is set
  * file: zero: Document implicit order that we will try zeroing methods
  * file: Rename h->can_zeroout to h->can_blkzeroout to reflect ioctl
  * file: Fix do_fallocate debugging on Alpine
  * rust: Fix clippy uninlined-format-args warning
  * file: Fix comment style in a few places
  * file: Add more debugging when -D file.zero=1 is used
  * file: Fix minor typo in debug message
  * curl: Remove extra whitespace character
  * tests: More robust check for nbdsh --base-allocation
  * ci: Update to latest
  * docs: Explain how debug flags work
  * tests/test-layers.c: Replace realloc with nbdkit string type
  * docs: Simplify and clarify the standard text about magic parameters
  * docs: Use POD macro for all magic parameters
  * curl: Move AC_DEFINE upwards
  * tests/test-pycodestyle.sh: Print paths relative to top source directory
  * python: Remove unneeded global statements
  * random, sparse-random: Link to nbdkit-pattern-plugin
  * file: Improve documentation for cache=none
  * file: Annotate a few local variables with 'const'
  * server: Turn flush into a controlpath message
  * file: Document implicit assumption about eviction windows
  * file: Reduce the size of the lock around write eviction
  * file: Hard error if sync_file_range fails
  * file: If sync_file_range fails to start, don't add window to list
  * file: Add debugging if sync_file_range / posix_fadvise fails
  * blocksize: Fix 32-bit overflow in .extents [CVE-2025-47712]
    bsc#1243108
  * server: Fix off-by-one for maximum block_status length [CVE-2025-47711]
    bsc#1243110
* Tue May 06 2025 jfehlig@suse.com
- Update to version 1.42.2:
  * Version 1.42.2.
  * tests: Add test file to EXTRA_DIST even if !HAVE_LZIP
  * common/protocol: Add a test of protocol string conversion functions
  * common/protocol: Use thread-local storage for "unknown" string
  * common/protocol/protostrings.h: Fix name_of_nbd_reply prototype
  * protostrings: Use correct path to nbd-protocol.h
  * docs: Add a note to --log entry about using nbdkit_error
  * docs/nbdkit_error.pod: Describe interaction with --log option
  * docs: Remove incorrect information about syslog
  * docs: Simplify documentation for --log option
  * server/log.c: Fix comment
  * golang: Don't use '()' for no-argument C functions
  * build: Mark libfuzzer as a developer only option
  * rust: Disable clippy warnings unless --enable-gcc-warnings is used
  * ci: Move FreeBSD from Tcl 8.7 to 9.0
  * ci: Drop alpine-319, add alpine-321
  * Version 1.42.1.
  * golang: Add a note about breakage when plugins run in the background
  * README: New location for Wine AF_UNIX patches
  * build: Disable -Wunused-command-line-argument on FreeBSD
  * gitlab: make rust jobs honour the gitlab workflow rules
  * docs/nbdkit-release-notes-1.42.pod: Add release date
  * Version 1.42.0.
  * golang: Support GCC 15
  * ci: Update FreeBSD builds
  * docs: Small revisions to the release notes
  * server: Add vsock_option=yes|no to --dump-config output
  * openbsd: curl: Include pthread.h
  * server: Define timeout_option=yes|no in --dump-config output
  * openbsd: server: Fix detection of --timeout option
  * docs: Add outline release notes for nbdkit 1.42
  * Revert "build: Disable -Wunused-command-line-argument on FreeBSD"
  * ci: In rawhide-clang test, use clang++ to compile C++ (eg. filters/stats)
  * build: Disable -Wunused-command-line-argument on FreeBSD
  * rust: Fix "overindented" list in comment
  * rust: Declare explicit extern "C" API
  * curl: Fix configure-time checks for enums
  * ci: Update to latest
  * Version 1.41.9.
  * vddk: do_extents: Avoid reading partial chunk beyond the end of the disk
  * vddk: do_extents: Exit the function if we hit req_one condition
  * vddk: do_extents: Mark some local variables const
  * vddk: Cache the disk size in the handle
  * vddk: Include <stdbool.h>
  * curl: Remove unnecessary checks for CURL_SSLVERSION_MAX_* macros
  * docs: Link to a couple of "alternate" plugins
  * python: examples: Fix comment above API_VERSION constant
  * TODO: Document problems with -p 0 option and picking a port
  * tcl: Fix for Tcl 9.0 compatibility
  * Version 1.41.8.
  * build: Use 'tar ztf' instead of 'zcat | tar'
  * ci: Dump out failed log files when the tests fail
  * tests/test-ocaml-dump-plugin.sh: Temporarily skip test on FreeBSD
  * ci/build.sh: Set os_id on macOS which lacks /etc/os-release
  * ci: Don't skip tests on non-Linux
  * tests: Check that C tests using requires/skip include "requires.h"
  * tests: Add requires.[ch] as dependencies of test-ocaml
  * tests: Skip all OCaml tests on macOS
  * server: Turn synopsis.c into a standalone top level source file
  * server: Add description of nbdkit to --help output
  * tmpdisk: Miscellaneous documentation clean-ups
  * tmpdisk: Link to nbdkit-ondemand-plugin in SEE ALSO section
  * tests: Add 'requires_root' C function
  * tests: Add 'requires_not_valgrind'
  * tests: requires: Add unconditional skip_because helper function
  * tests: Use 'requires.c' code from libnbd to test requirements
  * tests: tmpdisk: Check for mkfs and truncate before running these tests
  * tmpdisk: Use configure-time truncate command
  * Version 1.41.7.
  * ondemand: Miscellaneous documentation clean-ups
  * ondemand: Implement share=true option
  * tests/test-ondemand-locking.sh: Fail if second connection succeeds
  * ondemand: Filter out correct invalid exports in .list_exports
  * ondemand: Refactor exportname checking
  * ocaml: Further updates to ocamldoc documentation
  * ocaml: Split OCaml 5 includes (eg. -I +unix) from OCAML_PLUGIN_LIBRARIES
  * ocaml: Improve ocamldoc documentation
  * plugins/ocaml/NBDKit.ml: Sort bindings into order
  * ocaml: Don't call abort if caml_c_thread_unregister fails
  * ocaml: Use real addresses instead of (void*)<constant>s
  * evil: Link to nbdkit_parse_probability(3)
  * Version 1.41.6.
  * plugins/rust: use CStr literals for static strings
  * ci: Skip rust on platforms with rustc < 1.77.0
  * ci: Update CI files
  * docs/nbdkit-service.pod: Add KeepAlive and User/Group settings
  * tests/test-ondemand.sh: Refine qemu exportname skips
  * server: Add --keepalive option
  * tests/test-ondemand.sh: Work around bug in qemu 9.1 exportname handling
  * Version 1.41.5.
  * ondemand: Serialize the .open method
  * ondemand: Delete the disk if creation fails
  * ondemand, tmpdisk: Don't allow parameters containing '-'
  * ondemand: Be less strict about filenames
  * lzip: Include <config.h>
  * lzip: Fix memory leak
  * lzip: Use vector
  * tests: bzip2, curl, ext2, file, gzip, lzip, memory, offset, xz: Don't leak 'data' returned by guestfs_cat
  * Add tests for the lzip filter
  * Introduce lzip-filter
  * Fix documented default value for xz-max-depth
  * bzip2: Fix version where this filter first appeared
  * Version 1.41.4.
  * tests: old-plugins: Use self-built 1.38.4 plugin instead of Fedora
  * filters/qcow2dec/qcow2dec.c: Fix format specifier in error message
  * tests: old-plugins: Fix srcdir != builddir
  * tests: old-plugins: Discrete tests and test using nbdinfo
  * tests: old-plugins: Rename tests so version doesn't contain '-'
  * tests: old-plugins: Add i686 plugin from nbdkit 1.38.4
  * tests/test-old-plugins.sh: Test --version, --help and --dump-plugin
  * tests: old-plugins: Add plugin from nbdkit 1.38.4
  * tests: Rearrange some filter tests in alphabetical order
  * Version 1.41.3.
  * time-limit: Replace ESHUTDOWN error on Windows
  * New filter: nbdkit-time-limit-filter
  * tests: Skip test-timeout-cancel when --timeout fails
  * tests: Test that the timeout gets cancelled after NBD negotiation
  * docs: Minor corrections to --timeout documentation
  * server: Implement --timeout option
  * server: Clear conn->magic when freeing a connection
  * Version 1.41.2.
  * ip: Do late filtering in list_exports as well as open
  * docs/nbdkit_shutdown.pod: Minor copyediting
  * docs/nbdkit_error.pod: Typo 'thre' -> 'there'
  * podwrapper: Check cross-references to C API pages
  * docs: Fix cross-reference to nbdkit_stdio_safe(3)
  * ocaml: Use thread-local key to register & unregister the thread
  * ocaml: Reinitialize the OCaml runtime after fork
  * tests: Refactor ocaml errorcodes plugin used in testing
  * Version 1.41.1.
  * vddk: Print the default list of transports in --dump-plugin output
* Wed Oct 30 2024 jfehlig@suse.com
- spec: Cleanup 'Provides' list for the nbdkit-basic-plugins and
  nbdkit-basic-filters subpackages
* Tue Oct 22 2024 jfehlig@suse.com
- Exclude tests when building for ix86
* Fri Oct 18 2024 jfehlig@suse.com
- Update to version 1.40.4:
  * Version 1.40.4.
  * ci: Update CI files
  * docs/nbdkit-service.pod: Add KeepAlive and User/Group settings
  * tests/test-ondemand.sh: Refine qemu exportname skips
  * tests/test-ondemand.sh: Work around bug in qemu 9.1 exportname handling
  * ondemand: Serialize the .open method
  * ondemand: Delete the disk if creation fails
  * ondemand, tmpdisk: Don't allow parameters containing '-'
  * ondemand: Be less strict about filenames
  * tests: bzip2, curl, ext2, file, gzip, memory, offset, xz: Don't leak 'data' returned by guestfs_cat
  * Fix documented default value for xz-max-depth
  * bzip2: Fix version where this filter first appeared
  * filters/qcow2dec/qcow2dec.c: Fix format specifier in error message
  * tests: old-plugins: Fix srcdir != builddir
  * tests: Rearrange some filter tests in alphabetical order
  * server: Clear conn->magic when freeing a connection
  * jsc#PED-8910
* Thu Sep 19 2024 jfehlig@suse.com
- Update to version 1.40.3:
  * Version 1.40.3.
  * ip: Do late filtering in list_exports as well as open
  * docs/nbdkit_shutdown.pod: Minor copyediting
  * docs/nbdkit_error.pod: Typo 'thre' -> 'there'
  * podwrapper: Check cross-references to C API pages
  * docs: Fix cross-reference to nbdkit_stdio_safe(3)
  * ocaml: Use thread-local key to register & unregister the thread
  * ocaml: Reinitialize the OCaml runtime after fork
  * tests: Refactor ocaml errorcodes plugin used in testing
- Move nbdkit-null-plugin to the nbdkit-server package
* Tue Sep 03 2024 jfehlig@suse.com
- Update to version 1.40.2:
  * Version 1.40.2.
  * tests/dummy-vddk.c: Stop the background thread in dummy _Exit function
  * vddk: Check create-size is aligned to VIXDISKLIB_SECTOR_SIZE
  * vddk: Detect possible VDDK crash and warn
  * docs: Refresh nbdkit-service(1) page
- Enable bzip2 filter
* Mon Aug 05 2024 jfehlig@suse.com
- Update to version 1.40.1:
  * Version 1.40.1.
  * tests/test-ext2-exportname.sh: Ignore libnbd < 1.8 for this test
  * server: Send the last error to the NBD client
  * server: Take a thread-local copy of the last call to nbdkit_error
  * server: Introduce threadlocal_{set,get}_last_error
  * server: Rename threadlocal_{set,get}_error to .._errno
  * server: log: Move preserve errno to log_verror function
  * server/crypto.c: Fix fallback functions used when gnutls is unavailable
  * Version 1.40.0.
  * tests/test-tar-info-xz.sh: Check plugin and filters required
  * README.md: Describe captive use of nbdkit as a key feature
  * curl: Add CURLPROTO_GOPHERS to list
  * tests: bzip2: Add disk.bz2 to CLEANFILES
  * tests: bzip2: Don't keep recreating disk.bz2
  * curl: Enhance --dump-plugin output
  * curl: Add --dump-plugin output
  * docs: Copy-edit and fix typo in release notes for nbdkit 1.40
  * docs: Add outline release notes for nbdkit 1.40
  * ci: Drop Alma Linux 8
  * file: Add file_block_size & file_blkrotational to --dump-plugin
  * Version 1.39.10.
  * file: Rethink calculation of block device I/O size preferences
  * file: Return minimum and preferred I/O size for block devices
  * server: Add a note about asynch-signal unsafety
  * ip: Fix version number where we started to deny unknown socket families
  * Version 1.39.9.
  * server: Add nbdkit_peer_tls_issuer_dn to read the CA DN
  * spinner: Small clarification for diagram of separate-heads property
  * vddk: Tested VDDK 8.0.3
  * scan: Use superscript instead of asterisk for footnote
  * readahead, scan: Fix documentation referring to parallel thread model
  * ip: Revise filter documentation
  * ocaml, python: Implement bindings for nbdkit_peer_tls_dn
  * Version 1.39.8.
  * docs: Add nbdkit_peer_tls_dn.pod to EXTRA_DIST
  * ip: Allow matching on the TLS Distinguished Name
  * server: Add nbdkit_peer_tls_dn to read the TLS Distinguished Name
  * ip: Move fetching peer_name into check_if_allowed
  * ip: Move 'check_if_allowed' function closer to use
  * ip: Remove implicit allow for non-IP/-Unix/-vsock sockets
  * ip: Fix parsing of "security:" rule
  * server/crypto.c: Check <gnutls/socket.h> works before including it
  * server: Use '(void)' instead of '()' for a few function definitions
  * server/crypto.c: Fix spelling mistake in function name
  * docs: tls: Remove incorrect assertion that nbdkit checks the client's CN
  * build: Move to minimum gnutls >= 3.5.18
  * maint: Fix logic bug in previous commit
  * tests: Fix CI on Fedora 40
  * tests: Require bzip2 on OpenSUSE
  * bzip2: Fix mingw build
  * ci: Pull in bzip2 development for CI
  * xz: Add cross-reference to gzip filter.
  * gzip, xz: Add cross-references to new nbdkit-bzip2-filter
  * bzip2: Add cross-references to tar and xz filters
  * bzip2: Fix extension in description
  * Version 1.39.7.
  * docs: Mention bzip2 in README.md
  * New filter: bzip2
  * .gitignore: add .swp
  * build: Fix sorting of 'evil' filter
  * Revise README.md file
  * .gitignore: Ignore various gcov files
  * captive: Use $uri instead of $nbd consistently
  * Version 1.39.6.
  * tests/test-tls.sh: Use $uri instead of constructing the URI
  * server: Set $tls_certificates and $tls_psk variables in --run command
  * server/uri.c: Append tls-certificates or tls-psk-key parameter to $uri
  * tests/test-tls.sh, tests/test-tls-psk.sh: Use captive nbdkit
  * server/uri.c: Refactor URI scheme creation
  * server/uri.c: Move URI debug statement into make_uri
  * server/uri.c: Single return from function
  * server/uri.c: Improve error messages
  * server/uri.c: Use close_memstream instead of fclose
  * server: Move URI code to a new file server/uri.c
  * tests: Fix comment in tests
  * tests/test-tls.sh: Skip on RHEL 8
  * tests: Rework TLS tests to use nbdinfo instead of qemu-img info
  * tests: Test --print-uri + TLS
  * server: Make the --print-uri option easier to machine parse
  * docs/nbdkit-captive.pod: Refer to --print-uri section in main doc
  * server: Add --print-uri option
  * tests: Sort lines in list of tests
  * server/main.c: Sort options into order
  * tests: More debug output in test-blocksize-sharding.sh
  * Version 1.39.5.
  * tests: Add tests/test-gcs/google/api_core/__init__.py to EXTRA_DIST
  * common/utils/device-size.c: Include <stdint.h>
  * plugins: Use new device_size function
  * tests: Add and enhance some tests to cover device_size function
  * common/utils: Add a function to find the size of a file or block device
  * sh: Abstract the eval and sh plugins
  * docs: Fix references to nbdkit-sh-plugin(3)
  * cc, eval: Comma-separate SEE ALSO section of docs correctly
  * ci: refresh with latest lcitool manifest
  * ci: import lcitool project package list definitions
  * podwrapper: nbd-server(1), nbd-client(8) are not local man pages
  * tests/test-gcs: Skip tests if google.cloud.storage is installed
  * tests/test-gcs: Add __init__.py to mark package
  * gcs: Debug which google.cloud.storage module was loaded
  * tests: Add further tests of bad plugin and filter names
  * server: Reserve more characters from plugin/filter short names
  * ci: refresh with latest 'lcitool manifest'
  * tests/test-shebang-crlf.sh: Fix location of shebang-crlf.py
  * Version 1.39.4.
  * tests: Remove a Ruby test file
  * tests: Add a regression test for DOS line endings in shebang plugins
  * server: C-quote filenames before printing them
  * server: Only print installation tip if it could be a package name
  * server: Rationalize the parameters of failed_to_load_error
  * tests: gcs: Add debugging to the fake google-cloud-storage module
  * tests: Add a safe prepend function for path-like environment variables
  * sh: Move examples to a subdirectory
  * Remove nbdkit-ruby-plugin and Ruby language support completely
  * python: Implement nbdkit.parse_delay
  * docs: Cross-link nbdkit_parse_delay and other number parsing functions
  * docs/nbdkit_debug.pod: Add semicolon after perl example
  * docs: Add 'use nbdkit::*' to rust descriptions
  * docs/nbdkit_debug.pod: Fix golang description
  * Version 1.39.3.
  * docs/nbdkit_parse_int.pod: Fix incorrect HISTORY section
  * docs/nbdkit_nanosleep.pod: Mention nbdkit_parse_delay
  * docs/nbdkit_parse_delay.pod: Fix typo and more examples
  * spinning: Use nbdkit_parse_delay to parse seek times
  * retry: Use nbdkit_parse_delay to parse retry-delay
  * retry-request: Use nbdkit_parse_delay to parse retry-request-delay
  * delay: Replace custom parser with nbdkit_parse_delay
  * ocaml: Add binding for nbdkit_parse_delay
  * server: Add new nbdkit_parse_delay(3) function
  * docs: Move more utility functions to separate man pages
  * docs/nbdkit-plugin.pod: Fix unlinked ref to nbdkit_stdio_safe(3)
  * Version 1.39.2.
  * docs: Split nbdkit_realpath(3) etc into separate manual page
  * docs: Split nbdkit_stdio_safe(3) into separate manual page
  * docs: Split nbdkit_peer_name(3) etc into separate manual page
  * docs: Split nbdkit_shutdown(3), nbdkit_disconnect(3) into separate manual page
  * docs: Split nbdkit_read_password(3) into separate manual page
  * docs: Split nbdkit_parse_probability(3) into separate manual page
  * docs: Split nbdkit_parse_bool(3) into separate manual page
  * docs: Split nbdkit_error(3) etc into separate manual page
  * docs: Split nbdkit_parse_int(3) etc into separate manual page
  * docs: Split nbdkit_parse_size(3) into separate manual page
  * docs: Prepare to split utility functions into separate manual pages
  * docs: Sort lists of man pages into alphabetical-ish order
  * podwrapper: Allow multi-entry, multi-line synopsis
  * Version 1.39.1.
  * filters: Add new spinning filter
  * filters: Add new rotational filter
  * file: Expose the rotational property of block devices
  * file: Check for ioctl error in the normal way
  * file: Group initialization of h->sector_size with code that sets it
  * S3, gcs: Remove unnecessary can_extents callback
  * S3, gcs: Remove unnecessary is_rotational callback
  * Version 1.38.0.
  * tests: Add test-blkio.sh to unconditional EXTRA_DIST rule
  * Revert "valgrind: Add suppression for liblzma bug"
  * docs: Add outline release notes for forthcoming 1.38
  * vddk: Move "Unknown error" information to the manual
  * ocaml: Mention bigstring and bigstringaf libraries
  * Version 1.37.13.
  * ocaml: Implement zero-copy pread and pwrite
  * ocaml Add better comments to the example plugin
  * ocaml: Simplify pread operation
  * ocaml: Define a struct handle to hold the OCaml handle
  * ocaml: Add OCaml version to --dump-plugin output
  * ocaml: Print callback name when an exception is printed
  * ocaml: Combine all exception printing into a single macro
  * tests: Test that OCaml example plugin works minimally
  * ocaml: Add example of how to use debug flags from OCaml plugins
  * ocaml: Try to fix cross-references in NBDKit(3)
  * cc: Separate two examples in the synopsis
  * Version 1.37.12.
  * tests: luks: Skip valgrind
  * wrapper: Make NBDKIT_VALGRIND=1 NBDKIT_GDB=1 work
  * eval: Check that get_size method is provided
  * tests: Add a test that a plugin doesn't crash if called without parameters
  * lua, tcl: Error out if script parameter is not supplied
  * python: Fix crash if script parameter is missing
  * server: Explain what to do if plugin/filter loading fails
  * perl: Fix crash if script parameter is missing
  * Version 1.37.11.
  * tests: Fix EXTRA_DIST
  * rust: Fix the MSRV check during CI
  * tests/test-python-error.sh: Remove nbdsh -n option
  * python: Test the nbdkit.set_error function
  * Rust: fix a clippy::clone_assign lint
  * python: Small revisions to the nbdkit-python-plugin(3) man page
  * S3: Note that new key passing features require nbdkit >= 1.38
  * S3: Use nbdkit.read_password for sensitive tokens
  * python: Add a binding for nbdkit_read_password
  * S3: Fix link to GCS plugin
  * ci: cirrus: Use --break-system-packages with 'pip install'
  * vddk: Document that VDDK 8.0.2+ is broken with RHEL 8
  * common/utils: Tidy up the documentation of vector.
  * cache: Document cache-on-read=true for slow plugins
  * Use vector_reserve_exactly in a few places
  * common/utils: Make vector_reserve_page_aligned allocate exactly
  * common/utils: Add vector_reserve_exactly function
  * Version 1.37.10.
  * valgrind: Add suppression for liblzma bug
  * luks: Fix infinite loop on error path
  * main: Add --no-structured-replies alias for --no-sr
  * docs: Add example of exporting a variable in --run
  * vddk: Move read-only example / explanation to NOTES section
  * vddk: Expand the first example into something runnable
  * vddk: Update VDDK support matrix again
  * benchmark: fio needs "$uri" to be exported
  * Version 1.37.9.
  * tests: Only clean test-old-plugins-*.sh on distclean
  * tests: Rename pycodestyle.sh to test-pycodestyle.sh
  * rust: Add const {} around thread_local initializers
  * rust: Raise MSRV to 1.59.0
  * rust: Split out clippy and documentation generation from tests
  * rust: Run the test script with bash and add a license notice
  * tests: Fix documentation and tests for new --no-mc alias
  * server: Add --no-meta-contexts option
  * common/protocol: Error out if generate-protostrings.sh fails
  * example2, partitioning, split: Reject block devices
  * configure: Check that bash is sufficiently new
  * configure: Use consistent capitalization in --help output
  * configure: python: Remove unnecessary quoting
  * configure: perl: Improve message output in test
  * configure: Past tense, Python 2 has now been deprecated
  * configure: Move linuxdisk test next to other ext2 tests
  * configure: Fix some comment headings
  * configure: Move dlsym & dladdr tests together
  * vddk: Tested VDDK up to 8.0.2
  * Version 1.37.8.
  * podwrapper: Ignore check on older versions of Perl
  * podwrapper: Allow = (POD directive) followed by bare URL
  * zero: Point to various alternatives to this plugin
  * podwrapper: Check for bare URLs and suggest replacement with L<> links
  * podwrapper: Move long lines and cross-reference checks earlier
  * docs: Replace some bare URLs with L<>
  * gcs: Fix first nbdkit stable release that will contain this plugin
  * gcs: Use L<> around links
  * Version 1.37.7.
  * gcs: Minor typographical revisions to the manual
  * New GCS plugin
  * Version 1.37.6.
  * plugins/S3: Fix zero callback
  * S3: Convert docstring to the triple double-quoted string form
  * S3: Reorder code lines for improved clarity
  * S3: Make tests to run on Windows (avoid using /dev/urandom)
  * S3: Correct spelling
  * Correct minimum block size for S3 plugin
  * common/replacements/win32: Make windmc tool optional
  * common/replacements/win32: Only build nbdkit-cat.mc derived files once
  * tests: Fix tests to work with srcdir != builddir
  * common/bitmaps: Fix tests when srcdir != builddir
  * tests: Add some documentation to test-read-password-plugin.c
  * Version 1.37.5.
  * Update file nbdkit-fua-filter.pod
  * ssh: Print the failed path in error message
  * ci: Update to latest lcitool
  * partition: Suggest alternate partition-sectorsize
  * partition: Don't call nbdkit_error twice on error path
  * Version 1.37.4.
  * exportname: Fix markup for linking to other man pages
  * file: Further rework documentation of dir= parameter
  * file: Fix markup when referencing dir= option from dirfd= docs
  * file: Rework documentation for dir= parameter
  * configure: Fix initialization from incompatible pointer type
  * Version 1.37.3.
  * cdi: Mention qcow2dec filter for extracting qcow2 format images
  * cdi: Use a quay.io image instead of docker://
  * cdi: Use docker-dir (instead of oci-dir) when saving pulled image
  * New mailing list archives
  * New mailing list email address
  * server: Declare maximum supported plugin API version
  * server: Print SOEXT ("so" or "dll") in nbdkit --dump-config output
  * server: Small tidy up of globals
  * golang: Fix linker on macOS
  * server/internal.h: Simplify generated code used for dynamic handle checks
  * protect: Small typo in documentation
  * docs: Mention alternatives to using -r / --readonly
  * Version 1.37.2.
  * server: Add magic values to important structs
  * server/threadlocal.c: Inline and simplify threadlocal_pop_context
  * server/backend.c: Use calloc when creating context struct
  * fuzzing: Document fuzzing cow filter + pattern plugin
  * tests/test-readonly.sh: Fix test for RHEL 8 nbdinfo
  * New filter: nbdkit-readonly-filter
  * tests: Simplify by replacing qemu-io with nbdsh
  * tests/test-pattern.sh: Fix quoting of heredoc
  * pattern: Accurately update b & offset in loop
  * floppy, iso, sparse-random, torrent: Set sensible block_size
  * tests: Modify tests that depend on SPARSE_PAGE being 32768
  * data, memory: Advertise minimum, preferred and maximum block size
  * common/allocators: Define a preferred read/write block size
  * Version 1.37.1.
  * python: Implement nbdkit.peer_{pid,uid,gid,security_context}
  * tests/test-log-script-info.sh: Check /bin/sh is bash for this test
  * python: Implement nbdkit.is_tls, nbdkit.stdio_safe and nbdkit.nanosleep