Update release notes for 1.16.
[nbdkit/ericb.git] / docs / nbdkit-release-notes-1.16.pod
blob7e8d76faf1ac08ee8a00bee6ab9fca2fc93df4ab
1 =head1 NAME
3 nbdkit-release-notes-1.16 - release notes for nbdkit 1.16
5 =head1 DESCRIPTION
7 These are the release notes for nbdkit stable release 1.16.
8 This describes the major changes since 1.14.
10 nbdkit 1.16.0 was released on 14th November 2019.
12 =head2 Security
14 Two security issues were found during development of nbdkit 1.16.
15 Fixes for these were backported to older stable branches.  Upgrading
16 to the fixed versions is highly recommended.  The new
17 L<nbdkit-security(1)> man page contains an up to date list of past
18 security issues.
20 =head3 CVE-2019-14850 
21 denial of service due to premature opening of back-end connection
23 See the full announcement and links to mitigation, tests and fixes
24 here:
25 https://www.redhat.com/archives/libguestfs/2019-September/msg00084.html
27 =head3 CVE-2019-14851
28 assertion failure by issuing commands in the wrong order
30 This CVE was caused by the fix to the previous issue.
32 See the full announcement and links to mitigation, tests and fixes
33 here:
34 https://www.redhat.com/archives/libguestfs/2019-September/msg00272.html
36 =head2 New features
38 Add support for fast zeroing.  Plugins can expose this using the new
39 C<.can_fast_zero> method (Eric Blake).
41 L<nbdkit-partitioning-plugin(1)> allows use of C<mbr-id=default> or
42 C<type-guid=default> to go back to the default MBR byte or partition
43 type GUID.
45 New I<--mask-handshake> server flag can be used for testing client
46 feature negotiation (Eric Blake).
48 The client export name is passed to L<nbdkit-captive(1)> I<--run>
49 parameter as C<$exportname> (Eric Blake).
51 Captive I<--run> commands which fail (eg. aborting) now cause nbdkit
52 to exit with an error instead of errors being silently ignored (Eric
53 Blake).
55 File descriptors can be passed to password parameters, eg:
56 C<password=-3> which means that the password should be read from file
57 descriptor 3.
59 nbdkit can now serve over the C<AF_VSOCK> protocol (thanks Stefan
60 Hajnoczi).
62 New I<--log=null> option discards error messages.
64 =head2 Plugins
66 Python 2 support has been B<dropped> from L<nbdkit-python-plugin(3)>
67 in line with Python 2 end of life at the beginning of 2020.  Python
68 E<ge> 3.3 is required by this plugin.  If you wish to continue to use
69 Python 2 then you will need to use nbdkit 1.14.
71 New L<nbdkit-info-plugin(1)> which returns various server information
72 back to the client.  It can be used for testing server latency amongst
73 other things.
75 L<nbdkit-data-plugin(1)> now allows you to write C<BYTE*N> to get
76 repeated bytes (eg. S<C<nbdkit data data="0x55*4096">>).
78 L<nbdkit-ssh-plugin(1)> new parameter C<compression=true|false> to
79 control transport compression.
81 L<nbdkit-vddk-plugin(1)> is no longer compiled on non-x86 platforms
82 since VMware has only ever shipped VDDK on x86.
84 L<nbdkit-sh-plugin(1)> scripts can now see the client exportname and
85 can use the C<magic_config_key> feature.
87 =head2 Filters
89 New L<nbdkit-retry-filter(1)> which can reopen the plugin
90 transparently on certain types of failures (lots of help from Eric
91 Blake).
93 =head2 API
95 Macros C<NBDKIT_VERSION_MAJOR>, C<NBDKIT_VERSION_MINOR>,
96 C<NBDKIT_VERSION_MICRO> expose the compile-time version of nbdkit to
97 plugins and filters (Eric Blake).
99 Filters (which unlike plugins do I<not> have a public stable API) must
100 now exactly match the version of nbdkit when loaded (Eric Blake).
102 New C<.can_fast_zero> method (Eric Blake).
104 New C<nbdkit_export_name> server function for reading the export name
105 passed by the client.
107 New C<nbdkit_peer_name> server function to return the client address
108 (like L<getpeername(2)>).
110 New server functions for safely parsing integers: C<nbdkit_parse_int>,
111 C<nbdkit_parse_unsigned>, C<nbdkit_parse_int8_t>,
112 C<nbdkit_parse_uint8_t>, C<nbdkit_parse_int16_t>,
113 C<nbdkit_parse_uint16_t>, C<nbdkit_parse_int32_t>,
114 C<nbdkit_parse_uint32_t>, C<nbdkit_parse_int64_t>,
115 C<nbdkit_parse_uint64_t>.
117 =head2 Bug fixes
119 C<.trim> with FUA flag set now works (Eric Blake).
121 =head2 Documentation
123 The previous release notes have been turned into man pages.
125 =head2 Tests
127 Several tests now optionally use L<nbdsh(1)> instead of qemu-io.
129 You can now fuzz nbdkit using either American Fuzzy Lop or clang’s
130 libFuzzer.
132 Several tests have had sleep times increased to make them more stable
133 when run on slow or heavily loaded machines.
135 =head2 Internals
137 Reproducible builds (Chris Lamb).
139 Compile code with I<-Wshadow> warning (Eric Blake).
141 The internal backend system has been extensively overhauled.  In
142 particular this means that we now validate request ranges as requests
143 are passed between filters and down to the plugin, making it easier to
144 find bugs in filters early (Eric Blake).
146 Plugin size and C<can_*> flags are cached more aggressively by the
147 server (Eric Blake).
149 Variable Length Arrays (VLAs) on stack are now banned throughout the
150 code.
152 The F<nbd-protocol.h> header describing the NBD protocol is now shared
153 with L<libnbd(3)>.
155 Plugin C<.unload> method is now called after all worker threads have
156 exited, avoiding races at server shutdown.
158 Code was audited using Coverity and various problems were fixed.
160 =head1 SEE ALSO
162 L<nbdkit(1)>.
164 =head1 AUTHORS
166 Eric Blake
168 Richard W.M. Jones
170 =head1 COPYRIGHT
172 Copyright (C) 2019 Red Hat Inc.