Update Red Hat Copyright Notices
[nbdkit.git] / docs / nbdkit-release-notes-1.18.pod
blobd660a6ca15a389a6d0afc573007087bb6389eb84
1 =head1 NAME
3 nbdkit-release-notes-1.18 - release notes for nbdkit 1.18
5 =head1 DESCRIPTION
7 These are the release notes for nbdkit stable release 1.18.
8 This describes the major changes since 1.16.
10 nbdkit 1.18.0 was released on 27th February 2020.
12 =head2 Security
14 There were no security issues found.  All past security issues and
15 information about how to report new ones can be found in
16 L<nbdkit-security(1)>.
18 =head2 Plugins
20 New L<nbdkit-eval-plugin(1)> lets you write a plugin entirely on a
21 single command line.  It is similar to L<nbdkit-sh-plugin(3)>.
23 nbdkit-ext2-plugin is deprecated and will be removed in the next
24 release after this one (S<nbdkit 1.20>).  As a replacement use
25 L<nbdkit-ext2-filter(1)> like this:
27  nbdkit --filter=ext2 file fs.img ext2file=/disks/disk.raw
29 L<nbdkit-python-plugin(3)> now offers a version 2 API which avoids
30 copying the data buffer, improving performance.  The original protocol
31 (now retrospectively called version 1) is still supported for
32 backwards compatibility.  The version 1 protocol was also enhanced to
33 support the buffer protocol for the pread method, and memoryview for
34 pwrite, improving performance by reducing copies (Nir Soffer).
36 The Python plugin now prints readable stack traces when an exception
37 is thrown (Nir Soffer).
39 New methods implemented in the Python plugin: cache, can_cache,
40 can_zero, can_fast_zero, can_multi_conn, can_fua.
42 In L<nbdkit-curl-plugin(1)>, new options C<cainfo> and C<capath>
43 (Wiktor Gołgowski).
45 L<nbdkit-split-plugin(1)> now supports extents (Eric Blake).
47 In L<nbdkit-vddk-plugin(1)>, C<file=> is now a magic config key,
48 meaning it can be omitted in most circumstances (Eric Blake).
50 The VDDK plugin now no longer needs C<$LD_LIBRARY_PATH> to be set.
51 The correct library load path is automatically inferred from the
52 C<libdir> parameter (Eric Blake).
54 Verbose messages about calls to VDDK functions Read and Write can now
55 be suppressed by setting S<I<-D vddk.datapath=0>>.
57 =head2 Filters
59 New L<nbdkit-ext2-filter(1)>, which replaces the deprecated
60 nbdkit-ext2-plugin.  This filter allows you to read and write files
61 inside ext2, ext3 or ext4 filesystems.  The new filter has the same
62 features as the plugin, and one enhancement: optionally the name of
63 the file to serve can be picked from the client-supplied exportname.
64 The old plugin will be removed in S<nbdkit 1.20> (Eric Blake).
66 New L<nbdkit-extentlist-filter(1)> lets you specify a static list of
67 extents from a file which can be placed on top of plugins which don't
68 export extent information.
70 New L<nbdkit-ip-filter(1)> lets you allow and deny incoming
71 connections by client IP address, similar to TCP wrappers or a
72 firewall.
74 New L<nbdkit-nofilter-filter(1)> is a null filter, used for testing.
76 The stats filter now collects time elapsed per operation, per
77 operation and total rates, and adds stats for the flush method.  The
78 output is shown in human sizes making it easier to understand.  (Nir
79 Soffer).
81 =head2 Server
83 New I<--swap> option which allows nbdkit to be safely used to serve
84 swap space to the same machine.
86 Debug flags (I<-D>) can now be applied to the server core (using
87 S<I<-D nbdkit.*>>).  Underscores in debug flags can now be replaced by
88 dots, allowing a kind of namespacing.  Debug flags which are not
89 consumed now no longer give an error, so you can use them without
90 needing to detect if the plugin supports them.  New server debug flags
91 S<I<-D nbdkit.backend.controlpath=0>> and
92 S<I<-D nbdkit.backend.datapath=0>> were added to suppress some very
93 verbose messages when verbose mode is enabled.
95 =head2 API
97 There is a new C<.get_ready> method which is called after
98 C<.config_complete> and before the server forks or changes directory.
99 It is the last chance to do any global preparation that is needed to
100 serve connections.  Plugins have previously done this work in
101 C<.config_complete>, but by splitting this into a new method it makes
102 the API clearer.  (Note that existing plugins may continue to use
103 C<.config_complete> for this work if they prefer.)
105 There is a new C<.preconnect> method available which is called just
106 after the client makes a connection but before any NBD negotiation or
107 TLS authentication is done.  It can be used for early whitelisting or
108 rate limiting of connections, and in particular is used by the new
109 L<nbdkit-ip-filter(1)>.
111 =head2 Bug fixes
113 In L<nbdkit-curl-plugin(1)>, C<CURLINFO_CONTENT_LENGTH_DOWNLOAD_T> is
114 used (if available) so that file sizes up to 63 bits should now work
115 on all platforms (Pino Toscano and Adrian Ambrożewicz).
117 nbdkit is now compatible with OCaml 4.10.
119 L<nbdkit-memory-plugin(1)> now supports C<size=0> (Eric Blake).
121 =head2 Documentation
123 Plugins which were actually added in S<nbdkit 1.0.0> are now
124 documented as such properly.
126 Improved methods for probing plugins and filters are documented in
127 L<nbdkit-probing(1)>.
129 =head2 Tests
131 Old plugins from nbdkit 1.0, 1.2, 1.8 and 1.12 are now bundled with
132 the nbdkit sources and tested to try to ensure that they do not
133 accidentally regress.  Note these are included as binary blobs.  See
134 F<tests/old-plugins/README> for more information about this, including
135 how to delete these tests.
137 Various tests, especially ones which rely on timeouts, have been made
138 more stable so they should not fail on slow or overloaded machines.
140 Many tests now use libnbd and nbdsh (instead of libguestfs and
141 guestfish) as the test client.  This should improve the performance of
142 the tests for most people.
144 The I<--vsock> option (added in nbdkit 1.16) can now be tested if the
145 host is running Linux E<ge> 5.6 (Stefano Garzarella).
147 =head2 Build
149 You can use C<./configure --disable-nbd-plugin> to completely
150 disable the NBD plugin.
152 The automake feature C<subdir-objects> is no longer used, which may
153 improve compatibility on platforms with ancient and buggy automake
154 (S<RHEL 7> being one such platform).
156 =head2 Internals
158 The explicit connection parameter passed around many functions in the
159 server is now fetched from thread-local storage.
161 The server no longer calls the finalize method if prepare fails.  Also
162 failing to reopen the plugin from L<nbdkit-retry-filter(1)> no longer
163 hangs (Eric Blake).
165 C<git.orderfile> was enhanced to make patches easier to read (Eric
166 Blake).
168 Internal calls to methods like get_size, can_write will now no longer
169 produce debug messages I<if> the data is simply being returned from
170 the internal cache (but calls into the plugin are still logged).
172 =head1 SEE ALSO
174 L<nbdkit(1)>.
176 =head1 AUTHORS
178 Authors of nbdkit 1.18:
180 =over 4
182 =item Adrian Ambrożewicz
184 (1 commit)
186 =item Eric Blake
188 (30 commits)
190 =item Wiktor Gołgowski
192 (1 commit)
194 =item Richard W.M. Jones
196 (130 commits)
198 =item Nir Soffer
200 (11 commits)
202 =item Pino Toscano
204 (1 commit)
206 =back
208 =head1 COPYRIGHT
210 Copyright Red Hat