generator: Introduce error code (errcode) concept.
[libguestfs.git] / RELEASE-NOTES
1 Release notes for libguestfs 1.8.0
2 ----------------------------------
3
4 These release notes only cover the differences from the previous
5 stable/dev branch split (1.6.0).  For detailed changelogs, please see
6 the git repository, or the ChangeLog file distributed in the tarball.
7
8 New features
9
10  - Support and packages for Debian and Ubuntu.
11
12  - Daily builds from git repository on Debian and Ubuntu to reduce risk
13    of regressions.
14
15  - Port to ArchLinux 'pacman' (thanks Thomas S Hatch).
16
17  - The following tools have been rewritten in C (originally in Perl):
18
19      . virt-cat
20      . virt-df
21      . virt-inspector
22      . virt-ls
23      . virt-rescue
24
25  - Some C tools support encrypted guests automatically.  This is
26    supported in: guestfish, guestmount, virt-cat, virt-inspector,
27    virt-ls.
28
29  - New tool virt-filesystems (in C) which is a replacement for
30    virt-list-filesystems and virt-list-partitions, and has a superset
31    of the functionality of those tools.
32
33  - guestfish, guestmount and the C tools use unified command line option
34    parsing, so they support many common options such as '-a disk.img',
35    '-d libvirt-domain', '-x', '-v'.  The old command line option
36    parsing is preserved for compatibility in scripts etc.
37
38  - guestfish no longer has any dependencies on Perl
39
40  - New man pages containing programming examples: guestfs-examples(3) (C/C++),
41    guestfs-ocaml(3), guestfs-python(3), guestfs-ruby(3).
42
43  - Trace mode prints return values from API functions.
44
45  - virt-inspector can list applications installed in Windows guests, along
46    with a great deal of information about those applications.
47
48  - Add support for inspecting: Linux Mint, Mandriva, FreeBSD.
49
50  - guestfish --rw option (with no effect currently) to make potentially
51    dangerous write access explicit.
52
53  - guestfish --listen --csh for compatibility with csh, tcsh (thanks
54    Eric Blake).
55
56  - The first upstream version that introduced each API function is now
57    documented in guestfs(3).
58
59  - guestfs_last_errno allows you to retrieve the errno from the
60    daemon, correctly translated to the local operating system.
61
62  - Functions can now have optional parameters.
63
64  - Progress bars and progress notifications can now happen for upload
65    commands.
66
67  - Appliance builder more careful about not leaving temporary files
68    around in /tmp.
69
70  - getfattr/setfattr commands added to virt-rescue.
71
72  - ROADMAP file covers roadmap and goals for future releases.
73
74 Security
75
76  - New SECURITY section in guestfs(3) API documentation.
77
78  - virt-inspector no longer runs any guest commands.
79
80  - Inspection code is more careful about avoiding very large files
81    from guests which might previously have caused a denial of service.
82
83  - FUSE calls into guestmount are now traced when using guestmount -x.
84
85 New APIs
86
87  - add-domain
88  - add-drive-opts
89  - getxattr
90  - inspect-get-hostname
91  - inspect-get-package-format
92  - inspect-get-package-management
93  - inspect-get-roots
94  - inspect-list-applications
95  - lgetxattr
96  - mkfs-opts
97
98 Internals
99
100  - C programs now only link precisely with the libraries that they use.
101
102  - PCRE, libmagic, hivex and libvirt libraries are now completely
103    optional for building.
104
105  - Multiple memory leaks and file descriptor leaks fixed.
106
107  - Add a POD wrapper to unify generation of man pages and HTML files
108    across all programs.
109
110  - Source includes phony images of Fedora, Debian, Ubuntu and
111    Windows guests.
112
113  - Ruby bindings have 'make install' rule.
114
115  - <guestfs.h> is now a single file.
116
117  - <guestfs.h> does not require XDR headers.
118
119  - ocaml xml-light library is no longer required to build (thanks
120    Maxim Koltsov).
121
122  - ./configure --disable-[...] for each language binding (thanks
123    Maxim Koltsov).
124
125  - Old ocaml-viewer program removed (use guestfs-browser instead).
126
127  - New C API test type 'InitScratchFS' makes the tests run a little
128    more quickly.
129
130  - Excluded packages in the appliance are now listed in a separate
131    file appliance/excludelist.in, and can be customized per-distro.
132
133 Bugs fixed
134
135  - 663407 readlink and readlinklist returns /sysroot/ in some paths
136  - 661280 virt-rescue: panic when shutting down: "/sbin/reboot: No such file or directory"
137  - 657499 checksum: wrong check sum type causes umount to fail
138  - 655554 Whole disk paths are not made canonical by virt-inspector
139  - 654638 openssl updated to 1.0.0b libguestfs depends on exact file names
140  - 652796 ruby bindings not installed by 'make install', hence omitted from the binary distribution
141
142 Release notes for libguestfs 1.6.0
143 ----------------------------------
144
145 These release notes only cover the differences from the previous
146 stable/dev branch split (1.4.0).  For detailed changelogs, please see
147 the git repository, or the ChangeLog file distributed in the tarball.
148
149 New features
150
151  - Use a new method for creating and caching the appliance.  This
152    greatly improves the performance of libguestfs, often by a factor
153    of x 4 to x 5.
154
155  - Support for guest inspection (like virt-inspector) via the ordinary
156    API and all language bindings.  'guestfish -i' option is as a side-
157    effect much quicker.
158
159  - virt-inspector and core inspection API can now detect guests running:
160    Fedora, Debian, Ubuntu, Windows, Red Hat Enterprise Linux, CentOS,
161    Scientific Linux, Gentoo, Pardus, Arch Linux, MeeGo.
162
163  - Support for LUKS whole-disk encryption in guests.
164
165  - PHP bindings.
166
167  - Progress messages (and progress bars in guestfish and virt-resize)
168    for certain long-running operations.
169
170  - virt-df is now much more efficient.  Use '--one-per-guest' to restore
171    the old per-guest isolation behaviour.
172
173  - guestfish 'copy-in' and 'copy-out' commands for copying files and
174    directories recursively in and out of the guest.
175
176  - guestfish 'hexedit' command for doing binary edits to devices and
177    files.
178
179  - Change guestfish -i syntax to allow commands to be specified on the
180    command line (retaining backwards compatibility).
181
182  - guestfish '-d <domain>' for adding disks from libvirt domains.
183
184  - guestfish '-N' option supports several new prepared disk image types:
185          lvfs : disk with LV formatted with filesystem
186            lv : disk with LV
187      bootroot : boot+root
188    bootrootlv : boot and root on LV
189
190  - guestfish 'more' and 'edit' commands now work with arbitrary files.
191
192  - guestfish '--echo-keys' option allows you to echo keys/passphrases
193    while typing them.
194
195  - guestmount now supports -a / -d / -i options, like guestfish.
196
197  - Use virtio-serial for communications with the appliance.  This
198    also has a major performance benefit.
199
200  - virt-edit '-b' option to create a backup of edited files.
201
202  - virt-edit '-e' option for non-interactive edits to files.
203
204  - Ability to capture core dumps from the appliance (thanks Matthew Booth).
205
206  - virt-rescue now shuts down cleanly (thanks Matthew Booth).
207
208  - virt-rescue now has a --network option to enable network access.
209
210  - virt-resize can now handle guests which use GPT partition table format.
211
212  - virt-resize has better support for shrinking guests.
213
214  - virt-resize supports qcow2-format guests.
215
216  - $TMPDIR can be used to override almost all temporary directory usage.
217
218  - OCaml users can use an alternate OO-style of coding, eg. g#launch ()
219
220  - The API supports calls which take optional parameters, eg.
221      $g->add_drive_opts ("disk", readonly => 1);
222
223  - Trace output now escapes and shortens large strings (thanks
224    Matthew Booth).
225
226  - Autosync is now on by default, resulting in more reliable behaviour
227    when the handle is closed.
228
229  - virt-df --uuid option allows you to follow a domain across migration
230    and renaming.
231
232  - Translations of manual pages.
233
234 Security
235
236  - CVE-2010-3851 libguestfs: missing disk format specifier when adding a disk
237    https://www.redhat.com/archives/libguestfs/2010-October/msg00036.html
238    This is comprehensively fixed in this release, and the fix will be
239    backported to the other stable branches after more testing.
240
241  - virt-inspector no longer relies on untrusted guest code to list
242    applications in some guests.
243
244 New APIs
245
246   download-offset, file-architecture, findfs-label, findfs-uuid,
247   inspect-os, inspect-get-arch, inspect-get-distro,
248   inspect-get-filesystems, inspect-get-major-version,
249   inspect-get-minor-version, inspect-get-mountpoints,
250   inspect-get-product-name, inspect-get-type, is-blockdev, is-chardev,
251   is-fifo, is-lv, is-socket, is-symlink, list-filesystems, luks-add-key,
252   luks-close, luks-format, luks-format-cipher, luks-kill-slot,
253   luks-open, luks-open-ro, lvm-clear-filter, lvm-canonical-lv-name,
254   lvm-set-filter, part-to-dev, pread-device, pwrite-device,
255   upload-offset
256
257 Internals
258
259  - Use size_t for loop iterators.
260  - Refactor the library code into separate files.
261  - Refactor the generator code into separate files.
262  - Generate guestfish commands.
263  - guestfish & guestmount options processing is unified.
264  - Protocol changes:
265      error message size increased to 64K
266      send errno to library
267  - Add 'make bindist' to make a binary distribution.
268  - Cleaner behaviour under valgrind.
269  - More testing of the guestfish command line options and libvirt
270    integration.
271  - The Perl inspection code is no longer used by any of the tools.
272
273 Bugs fixed
274
275  - 646822 libguestfs trace mode should not print long binary strings
276  - 646821 virt-df should have --uuid option
277  - 646432 /dev/mapper paths should not be returned from guestfs_mountpoints
278  - 643624 libguestfs tools documentation should describe how to quote guest domain names from shell
279  - 642934 No way to specify disk format when adding a disk to libguestfs
280  - 642933 guestfs_list_filesystems should be used in all possible places
281  - 642932 guestmount options should match guestfish options
282  - 642930 virt-inspector (Sys::Guestfs::Lib) should use C inspection APIs
283  - 642929 C inspection code should ignore /dev/fd* in /etc/fstab
284  - 642826 virt-resize converts any other image format to raw without notifying user, instructions do not account for this
285  - 640961 Document that grub-install might be needed for old Linux guests after virt-resize
286  - 639986 virt-df --csv does not properly quote " in libvirt domain names
287  - 639405 Interrupted cached appliance creation leaves libguestfs unusable
288  - 638901 Appliance filename should not contain repository name
289  - 638899 /dev/mapper paths should not be returned from C inspection APIs
290  - 636918 Updates to Spanish translation
291  - 636061 [abrt] guestfish-1.2.11-1.fc12: malloc_consolidate: Process /usr/bin/guestfish was killed by signal 11 (SIGSEGV)
292  - 635969 glob echo mkfs ext2 /dev/vd[b-t]1 prints garbage
293  - 634246 guestfs_part_get_parttype returns "loop" when run against a partition, LV or filesystem
294  - 633766 virt-resize --shrink fails
295  - 633357 Updates to Spanish translation
296  - 633096 virt-resize calculates block device size incorrectly, doesn't work with qcow2 target
297  - 629593 Dutch translation added
298  - 627556 Updates to Spanish translations of libguestfs
299  - 626843 Updates to Spanish translations
300  - 619793 [RFE] Need a way to determine if a particular block device is a logical volume
301  - 618556 virt-rescue return none zero value when exit
302  - 617200 mount operation failed and hung on some images which running in read-only mode
303  - 610880 libguestfs should set broader read perms on tmpdir, so works in some situations when executed with umask 077
304  - 599503 document that mkmountpoint and umount-all cannot be mixed
305  - 571714 Running virt-df on disk image relabels it, so qemu can no longer write to it.
306  - 502533 Updated Polish translation of libguestfs
307
308 Release notes for libguestfs 1.4.0
309 ----------------------------------
310
311 These release notes only cover the differences from the previous
312 stable/dev branch split (1.2.0).  For detailed changelogs, please see
313 the git repository, or the ChangeLog file distributed in the tarball.
314
315 New features
316
317  - guestfish lets you choose a prepared disk image, eg:
318      guestfish -N fs:ext4
319
320  - Add write support to guestmount (FUSE) module.
321
322  - virt-resize can now resize the content of partitions and logical
323    volumes in the guest, and we have better support for shrinking guests.
324
325  - Bash tab-completion script for guestfish.
326
327  - Add ZFS support to virt-rescue.
328
329  - New tool 'virt-make-fs' for creating filesystems with content.
330
331  - Allow suffixes on any guestfish number parameter, eg. "1M".
332
333  - guestfish 'man' command opens the manual page.
334
335  - guestfish supports a "heredoc" syntax for uploading files:
336      upload -<<_end_ /foo
337      content
338      _end_
339
340  - Some guestfish commands now print their output in octal or hex
341    where appropriate (RHBZ#583242).
342
343  - Allow dash prefix on guestfish command line.  This ignores any
344    error from the second command:                   (RHBZ#578407)
345      guestfish -- cmd1 : -cmd2 : cmd3
346
347  - guestfish -h / help command now returns an error for non-existent
348    commands (RHBZ#597145).
349
350  - New 'supported' command in guestfish to list optional groups of
351    commands which are supported by the daemon / configuration.
352
353  - virt-inspector and guestfish -i now work for filenames which
354    contain spaces (RHBZ#507810).
355
356  - Change the protocol to use link-local addresses, to avoid
357    conflicting with any address that the host might be using
358    (RHBZ#588763).
359
360  - libguestfs now sets the correct time and timezone on filesystem
361    modifications.
362
363  - Sort the domains into alphabetical order in virt-df.
364
365  - Make mkfs-b command work for FAT and NTFS by mapping the blocksize
366    parameter to the cluster size (RHBZ#599464).
367
368  - Add version numbers to Perl modules (RHBZ#521674).
369
370  - Localization now works for all the libguestfs tools (RHBZ#559963).
371
372  - Tools now support filesystem-on-image VMs (RHBZ#590167).
373
374  - virt-list-partitions has a '-t' option to show the total size of disks.
375
376  - Include extra Augeas lenses in the supermin appliance (Matthew Booth).
377
378  - Add error and close callbacks.
379
380  - Add explicit close method in the Perl API.
381
382  - Multiple fixes for RHEL 5 compatibility.
383
384  - Multiple fixes for Debian/Ubuntu compatibility.
385
386  - Multiple revisions to improve the documentation.
387
388 Security
389
390  - Fix a potential DoS in virt-inspector and virt-v2v if a specially
391    crafted disk image contained a char device in place of one of the
392    configuration files that we read under /etc (RHBZ#582484).
393
394 New APIs
395
396  - aug-clear - clear Augeas path
397  - available-all-groups - return a list of all optional groups
398  - base64-in - upload base64-encoded data to file
399  - base64-out - download file and encode as base64
400  - checksum-device - compute checksums on the contents of a device
401  - checksums-out - compute checksums of multiple files in a directory
402  - debug-upload - upload a file to the appliance
403  - fallocate64 - preallocate a file in the guest filesystem
404  - fill-pattern - fill a file with a repeating pattern of bytes
405  - get-umask - get the current umask
406  - lvresize-free - expand an LV to fill free space
407  - ntfsresize - resize an NTFS filesystem
408  - ntfsresize-size - resize an NTFS filesystem (with size)
409  - part-del - delete a partition
410  - part-get-bootable - get the bootable flag of a partition
411  - part-get-mbr-id - get the MBR type byte of a partition
412  - part-set-mbr-id - set the MBR type byte of a partition
413  - pvresize-size - resize a physical volume (with size)
414  - pwrite - write to part of a file
415  - resize2fs-size - resize an ext2/3/4 filesystem (with size)
416  - txz-in - unpack compressed tarball to directory (RHBZ#580556)
417  - txz-out - pack directory into compressed tarball (RHBZ#580556)
418  - vfs-label - get the filesystem label
419  - vfs-uuid - get the filesystem UUID
420  - vgscan - rescan for LVM physical volumes, volume groups and logical volumes
421  - write - create a new file
422  - zero-device - write zeroes to an entire device
423
424 Internals
425
426  - Extend the generator to support testing optional features.
427  - Stricter checks on input parameters to many calls (RHBZ#501893 RHBZ#501894)
428  - Extend the protocol to support sending arbitrary 8 bit data buffers.
429  - Ship 'BUGS' file with releases.  This is a summary of the bugs in
430    the Red Hat Bugzilla database.
431  - Ship 'RELEASE-NOTES' file with releases, containing release notes.
432  - Unify supermin appliance building into one place, in febootstrap 2.7.
433  - Fix the protocol code to handle the case where both ends send cancel
434    messages at the same time.
435
436 Bugs fixed
437
438  - 612178 guestfish: using -m option in conjunction with --listen option causes appliance to die
439  - 610880 libguestfs should set broader read perms on tmpdir, so works in some situations when executed with umask 077
440  - 604691 OCaml bindings are not thread safe
441  - 603870 Updates to Spanish translation
442  - 602592 [RFE] expose guestfs_close in perl bindings
443  - 600977 virt-df -h --csv "Argument .. isn't numeric in printf"
444  - 599464 mkfs-b does not support vfat/ntfs
445  - 598807 add_cdrom does not work in RHEL 6
446  - 598309 part-list and several other cmd failed on libguestfs on RHEL5
447  - 597145 guestfish 'help' command should indicate error in exit status with an unknown command
448  - 597135 guestfish write-file cmd does not check "size" parameter
449  - 597118 A warning should be given in the help of mke2journal-L for the length of label
450  - 597112 get-e2uuid should use blkid instead of "tune2fs -l" to get filesystem UUID
451  - 596776 virt-inspector doesn't discover modprobe aliases on RHEL 3 guests
452  - 596763 Updates to Spanish translation
453  - 593292 Updates to Spanish translation
454  - 592883 can not edit files on  images mounted with guestmount cmd
455  - 592360 Updates to Spanish translation
456  - 591250 virt-tar prints "tar_in: tar subcommand failed on directory" if the archive is compressed or not in the right format
457  - 591155 virt-tar prints "tar_in: tar subcommand failed on directory" if a disk image is not writable
458  - 591142 virt-inspector should give an error for unrecognized disk images
459  - 590167 virt-inspector and other virt tools should be able to handle filesystem-on-image VMs
460  - 589039 guestfish read-file cmd will cause daemon hang when read large files
461  - 588851 guestfs_launch() returns -1, but guestfs_last_error() == NULL
462  - 588763 libguestfs should use non-public or link-local addresses for appliance network
463  - 588733 Updates to Spanish translation
464  - 588651 guestfish 'strings-e' cmd does not give proper error message or hint
465  - 587484 lvresize can't reduce size of a volumn
466  - 585961 Updates to Spanish translation
467  - 585223 ntfsresize should support shrinking filesystems
468  - 585222 pvresize should support shrinking PVs
469  - 585221 resize2fs should support shrinking filesystems
470  - 584038 Updates to Spanish translation
471  - 583554 [FEAT] mknod-mode command is needed to set mode explicitly
472  - 583242 [RFE] guestfish should print outputs in a suitable base (eg. octal for modes)
473  - 582993 guestfish eats words when tab completing case (in)sensitive paths
474  - 582953 Misleading help information about lvcreate command
475  - 582948 mknod command doesn't make block, character or FIFO devices
476  - 582929 mknod doesn't check for invalid mode
477  - 582901 guestfish chmod/umask commands do not check invalid mode value
478  - 582899 guestfish:sparse is missed from command autocomplete list
479  - 582891 [Feature Request] behavior and return value of guestfish umask cmd should be changed
480  - 582548 [mknod] umask shouldn't take effect when mode is set explicitly
481  - 582484 some guestfish sub commands can not handle special files properly
482  - 582252 Updates to Spanish translation
483  - 581501 Updates to Spanish translation
484  - 580650 virt-inspector warns "No grub default specified at /usr/lib/perl5/Sys/Guestfs/Lib.pm at [...]"
485  - 580556 request for libguestfs to support .txz tarballs
486  - 580246 tar-in command hangs if uploading more than available space
487  - 580016 aug-ls in guestfish does not take augeas variable as argument
488  - 579664 guestfish doesn't report error when there is not enough space for image allocation
489  - 579608 multiple commands in guestfish can not work for symbol links
490  - 579155 libguestfs hangs if qemu doesn't start (in null vmchannel mode)
491  - 578407 the prefix '-' in sub-command isn't handled by guestfish in remote control mode
492  - 576879 libguestfs protocol loses synchronization if you 'upload' before mounting disks
493  - 559963 libguestfs Perl programs do set locale, but still localization doesn't work
494  - 521674 Perl modules are unversioned, but should carry version numbers
495  - 516096 Race condition in test_swapon_label_0: /sbin/blockdev: BLKRRPART: Device or resource busy
496  - 507810 guestfish -i / virt-inspector cannot handle spaces in filenames
497  - 502533 Updated Polish translation of libguestfs
498  - 501894 Some String parameters should be OptString
499  - 501893 String parameters should be checked for != NULL
500  - 501889 write-file does not support strings containing ASCII NUL
501  - 484986 grub-install fails on virtio disk
502
503 Release notes for previous versions of libguestfs
504 -------------------------------------------------
505
506 2009-11-10 : 1.0.78
507 https://www.redhat.com/archives/libguestfs/2009-November/msg00095.html
508
509 2009-09-13 : 1.0.67
510 https://www.redhat.com/archives/libguestfs/2009-August/msg00281.html
511
512 2009-07-23 : 1.0.64
513 https://www.redhat.com/archives/libguestfs/2009-July/msg00059.html
514
515 2009-07-14 : 1.0.59
516 https://www.redhat.com/archives/libguestfs/2009-July/msg00023.html
517
518 2009-04-01 : Initial announcement
519 http://rwmj.wordpress.com/2009/04/01/libguestfs-access-and-modify-virtual-machine-disk-images/