Finalize release notes for 1.12 release.
[libguestfs.git] / RELEASE-NOTES
index ea03dbd..cba6c9b 100644 (file)
@@ -1,6 +1,586 @@
+Release notes for libguestfs 1.12.0
+-----------------------------------
+
+These release notes only cover the differences from the previous
+stable/dev branch split (1.10.0).  For detailed changelogs, please see
+the git repository, or the ChangeLog file distributed in the tarball.
+
+New features
+
+  guestfish:
+
+   - guestfish strings can use escapes,
+     eg. ><fs> write /foo "line 1\nline 2\n"
+
+   - guestfish write-append command can be used to append to files.
+
+   - Long-running file uploads and downloads can be cancelled through the
+     API or by hitting ^C in guestfish.
+
+   - New guestfish "display" command for displaying graphical files
+     inside guests.
+
+   - In guestfish, tab completion now works on /dev/mapper devices.
+
+  virt-inspector:
+
+   - Inspection API can get an icon or logo for certain guests.
+
+   - virt-inspector includes the logo and hostname for certain guests.
+
+   - virt-inspector can now get the version and release numbers for RPM
+     packages.
+
+   - CentOS and Scientific Linux are now treated as separate distros by
+     the inspection API.
+
+  virt-resize:
+
+   - virt-resize can now handle btrfs.
+
+   - New virt-resize --ntfsresize-force option allows Windows VMs to be
+     resized multiple times.
+
+  other virt tools:
+
+   - guestfish, guestmount, virt-cat, virt-df, virt-edit, virt-filesystems,
+     virt-inspector, virt-ls and virt-rescue now allow you to use
+     "-d UUID" option to specify a guest by UUID.  This makes them more
+     robust to use from other programs.
+
+   - virt-ls -lR option allows complex file iteration and guest analysis.
+
+   - virt-win-reg supports HKEY_USERS\<SID> and HKEY_USERS\<username>.
+
+   - virt-win-reg new option --unsafe-printable-strings allows printable
+     strings to be displayed in the output (unsafely: read the documentation
+     before using).
+
+   - virt-edit has been rewritten in C.
+
+  API and language bindings:
+
+   - Java is now completely supported.
+     See http://libguestfs.org/guestfs-java.3.html
+
+   - JRuby is supported via the Java bindings.
+
+   - guestfs_close now appears in trace messages.
+
+   - Python binding adds explicit g.close() method.
+
+   - Python programs can now use the new event API.
+
+   - Python GIL is released during libguestfs calls, allowing multithreaded
+     Python programs to work properly.
+
+   - 9pfs (Plan 9 filesystems exported from the host) are now supported.
+
+   - Add -DGUESTFS_WARN_DEPRECATED=1 to warn about use of deprecated API
+     functions in C programs.
+
+   - New manual page guestfs-recipes(1) with recipes.
+
+   - mkfs-opts can now set inode size and sector size on created filesystems
+     (thanks Nikita Menkovich).
+
+   - guestfs_last_errno is now accessible from OCaml (as g#last_errno ()).
+
+Security
+
+ - optargs_bitmask is checked even for calls that have no optional
+   arguments.  This closes a possible exploit in the daemon from
+   untrusted callers.
+
+New APIs
+
+  btrfs-filesystem-resize, get-pgroup, inspect-get-icon, is-zero,
+  is-zero-device, list-9p, list-dm-devices, mount-9p, ntfsresize-opts,
+  set-pgroup, write-append
+
+Internals
+
+ - Coverity (a static analysis tool) was run across the codebase and
+   many fixes were made.
+
+ - Generator can handle functions that return RBufferOut and have
+   optional arguments.
+
+ - Compatible with Perl 5.14.
+
+ - Compatible with gcc 4.6.
+
+ - Perform safety checks on QEMU.
+
+ - C API tests can now fully test calls that have optional arguments.
+
+ - Use ./configure --enable-install-daemon to install /usr/sbin/guestfsd.
+
+ - po-docs directory now covers all man pages.
+
+ - stderr from qemu process is now captured by the event subsystem.
+
+Bugs fixed
+
+ - 602997 part-get-bootable gives wrong result with an unordered part layout
+ - 661280 virt-rescue: panic when shutting down: "/sbin/reboot: No such file or directory"
+ - 700369 qemu-system-x86_64 says 'KVM not supported for this target'
+ - 705200 guestmount attempt results in access denied
+ - 714981 'list-filesystems' does not know about virtio 9p filesystems or detect existing mounts
+ - 717786 libguestfs python bindings should have an explicit close call
+ - 721275 virt-resize in F16 should support btrfs
+
+
+Release notes for libguestfs 1.10.0
+-----------------------------------
+
+These release notes only cover the differences from the previous
+stable/dev branch split (1.8.0).  For detailed changelogs, please see
+the git repository, or the ChangeLog file distributed in the tarball.
+
+New features
+
+ - libguestfs and tools can be used against live virtual machines.
+   See the 'guestfish --live' and 'guestmount --live' options, and (for
+   the low-level interface) the new APIs set-attach-method and
+   get-attach-method.
+
+ - New virt tools:
+   virt-copy-in, virt-copy-out, virt-tar-in, virt-tar-out.
+
+ - libguestfs can get the drive letter mappings for Windows guests.
+
+ - virt-inspector displays drive letter mappings for Windows guests.
+
+ - Drive letters can now be used in virt-edit and guestfish programs
+   when operating on Windows guests.
+
+ - virt-resize now works on 32 bit hosts.
+
+ - You can now inspect the install disks and live CDs of many different
+   operating systems.
+
+ - guestfish <! cmd which executes a shell cmd and inlines the result.
+
+ - guestfish, guestmount, virt-rescue now all support --ro and --rw
+   options, and the default for this can be chosen via a configuration
+   file (/etc/libguestfs-tools.conf).
+
+ - New event API allows more than one callback to be registered for
+   each event, makes it possible to call the API from other languages,
+   and allows nearly all log, debug and trace messages to be rerouted
+   from stderr.
+
+ - Greater FHS compliance for temporary files, including using /var/tmp
+   for large cached files that should survive reboot (instead of /tmp).
+
+ - guestfish, guestmount -m option allows mount options to be passed
+   through to the underlying filesystem.
+
+ - mkfs-opts allows filesystem features to be specified.
+
+ - More intelligent handling of mountpoints, allowing mkmountpoint, mount
+   and umount-all commands to work together properly.
+
+ - Trace messages are prefixed with a distinct string, allowing them to
+   be easily 'grepped' out from debug output.
+
+ - guestfs_launch (guestfish 'run' command) now produces progress
+   messages (a guestfish progress bar) if it takes longer than 5
+   seconds to run.
+
+ - Several long-running commands where we are unable to estimate time
+   to completion generate "pulse mode" progress events.  Progress bar
+   in guestfish has been updated to display these.
+
+ - Publish new example code in: C, Perl, Python, OCaml, Ruby.
+
+ - New virt-dhcp-address example program.
+
+ - The Java and Ruby bindings have been improved greatly.
+
+ - Perl includes a way to get the errno of the last error.
+
+ - Python bindings now compatible with rpyc (thanks Erez Shinan).
+
+ - Transifex is now being used to manage translations.
+   http://www.transifex.net/projects/p/libguestfs/
+
+ - Inspection now supports Red Hat Desktop, Slackware distributions.
+
+ - Inspection no longer fails for Windows guests that have two or
+   more disks.
+
+ - Inspection can now tell the difference between Windows 2008 Server
+   and Windows 7.
+
+ - Inspection can detect 32 bit applications installed in 64 bit
+   Windows, running on the WOW64 emulator.
+
+ - A series of protocol fixes has fixed the old bug RHBZ#576879
+   which used to cause errors during the upload command to lose
+   protocol synchronization.
+
+ - New logo!
+
+Security
+
+  [none]
+
+New APIs
+
+  first-private, get-attach-method, inspect-get-drive-mappings,
+  inspect-get-product-variant,
+  inspect-get-windows-current-control-set, next-private, resize2fs-M,
+  set-attach-method.
+
+Internals
+
+ - The 'HACKING' file is obsolete.  The contents have been moved into
+   a section of the guestfs(3) manual page.
+
+ - libguestfs-test-tool simplified.  It no longer needs the static
+   binary or tries to construct an ISO.
+
+ - rpcgen-generated files are compiled with -fno-strict-aliasing
+   which should be safer (thanks Matt Booth).
+
+ - virt-resize was rewritten in OCaml.
+
+ - guestfish and other tools tested with valgrind; some memory leaks
+   were fixed.
+
+Bugs fixed
+
+ - 502533 Updated Polish translation of libguestfs
+ - 576879 libguestfs protocol loses synchronization if you 'upload' before mounting disks
+ - 599503 document that mkmountpoint and umount-all cannot be mixed
+ - 617440 guestfish: fails to tilde expand '~' when the $HOME env is unset
+ - 664558 RFE: Allow to set log callback in Ruby bindings
+ - 665358 Punjabi Translation Completed (pa_IN)
+ - 666577 libguestfs: unknown filesystem /dev/fd0
+ - 667610 Multiple bugs, memory leaks in libguestfs ruby bindings
+ - 668112 virt-filesystems command fails on guest with corrupt filesystem label
+ - 668574 guestfish -i is trying to mount all mounts from /etc/fstab and fails with an error when device doesn't exists
+ - 673479 Add a grep-friendly string to LIBGUESTFS_TRACE output
+ - 674130 Inspection code fails for Windows guest with two disks
+ - 682756 libguestfs trace segfaults when list-filesystems returns error
+ - 682979 libguestfs incorrectly detects Red Hat desktop as 'redhat-based' instead of 'redhat'
+ - 690819 mkfs fails creating a filesytem on a disk device when using a disk with 'ide' interface
+ - 691389 Extended attributes don't work over guestmount (FUSE)
+ - 691724 virt-inspector reports unknown filesystem /dev/vda1
+ - 692545 inspect-list-applications fails to detect 32 bit apps installed under WOW64 emulator on 64 bit Windows
+ - 693324 sfdisk's python interface only accepts lists of type 'list' for the lines parameter
+
+Release notes for libguestfs 1.8.0
+----------------------------------
+
+These release notes only cover the differences from the previous
+stable/dev branch split (1.6.0).  For detailed changelogs, please see
+the git repository, or the ChangeLog file distributed in the tarball.
+
+New features
+
+ - Support and packages for Debian and Ubuntu.
+
+ - Daily builds from git repository on Debian and Ubuntu to reduce risk
+   of regressions.
+
+ - Port to ArchLinux 'pacman' (thanks Thomas S Hatch).
+
+ - The following tools have been rewritten in C (originally in Perl):
+
+     . virt-cat
+     . virt-df
+     . virt-inspector
+     . virt-ls
+     . virt-rescue
+
+ - Some C tools support encrypted guests automatically.  This is
+   supported in: guestfish, guestmount, virt-cat, virt-inspector,
+   virt-ls.
+
+ - New tool virt-filesystems (in C) which is a replacement for
+   virt-list-filesystems and virt-list-partitions, and has a superset
+   of the functionality of those tools.
+
+ - guestfish, guestmount and the C tools use unified command line option
+   parsing, so they support many common options such as '-a disk.img',
+   '-d libvirt-domain', '-x', '-v'.  The old command line option
+   parsing is preserved for compatibility in scripts etc.
+
+ - guestfish no longer has any dependencies on Perl
+
+ - New man pages containing programming examples: guestfs-examples(3) (C/C++),
+   guestfs-ocaml(3), guestfs-python(3), guestfs-ruby(3).
+
+ - Trace mode prints return values from API functions.
+
+ - virt-inspector can list applications installed in Windows guests, along
+   with a great deal of information about those applications.
+
+ - Add support for inspecting: Linux Mint, Mandriva, FreeBSD.
+
+ - guestfish --rw option (with no effect currently) to make potentially
+   dangerous write access explicit.
+
+ - guestfish --listen --csh for compatibility with csh, tcsh (thanks
+   Eric Blake).
+
+ - The first upstream version that introduced each API function is now
+   documented in guestfs(3).
+
+ - guestfs_last_errno allows you to retrieve the errno from the
+   daemon, correctly translated to the local operating system.
+
+ - Functions can now have optional parameters.
+
+ - Progress bars and progress notifications can now happen for upload
+   commands.
+
+ - Appliance builder more careful about not leaving temporary files
+   around in /tmp.
+
+ - getfattr/setfattr commands added to virt-rescue.
+
+ - ROADMAP file covers roadmap and goals for future releases.
+
+Security
+
+ - New SECURITY section in guestfs(3) API documentation.
+
+ - virt-inspector no longer runs any guest commands.
+
+ - Inspection code is more careful about avoiding very large files
+   from guests which might previously have caused a denial of service.
+
+ - FUSE calls into guestmount are now traced when using guestmount -x.
+
+New APIs
+
+ - add-domain
+ - add-drive-opts
+ - getxattr
+ - inspect-get-hostname
+ - inspect-get-package-format
+ - inspect-get-package-management
+ - inspect-get-roots
+ - inspect-list-applications
+ - lgetxattr
+ - mkfs-opts
+
+Internals
+
+ - C programs now only link precisely with the libraries that they use.
+
+ - PCRE, libmagic, hivex and libvirt libraries are now completely
+   optional for building.
+
+ - Multiple memory leaks and file descriptor leaks fixed.
+
+ - Add a POD wrapper to unify generation of man pages and HTML files
+   across all programs.
+
+ - Source includes phony images of Fedora, Debian, Ubuntu and
+   Windows guests.
+
+ - Ruby bindings have 'make install' rule.
+
+ - <guestfs.h> is now a single file.
+
+ - <guestfs.h> does not require XDR headers.
+
+ - ocaml xml-light library is no longer required to build (thanks
+   Maxim Koltsov).
+
+ - ./configure --disable-[...] for each language binding (thanks
+   Maxim Koltsov).
+
+ - Old ocaml-viewer program removed (use guestfs-browser instead).
+
+ - New C API test type 'InitScratchFS' makes the tests run a little
+   more quickly.
+
+ - Excluded packages in the appliance are now listed in a separate
+   file appliance/excludelist.in, and can be customized per-distro.
+
+Bugs fixed
+
+ - 663407 readlink and readlinklist returns /sysroot/ in some paths
+ - 661280 virt-rescue: panic when shutting down: "/sbin/reboot: No such file or directory"
+ - 657499 checksum: wrong check sum type causes umount to fail
+ - 655554 Whole disk paths are not made canonical by virt-inspector
+ - 654638 openssl updated to 1.0.0b libguestfs depends on exact file names
+ - 652796 ruby bindings not installed by 'make install', hence omitted from the binary distribution
+
+Release notes for libguestfs 1.6.0
+----------------------------------
+
+These release notes only cover the differences from the previous
+stable/dev branch split (1.4.0).  For detailed changelogs, please see
+the git repository, or the ChangeLog file distributed in the tarball.
+
+New features
+
+ - Use a new method for creating and caching the appliance.  This
+   greatly improves the performance of libguestfs, often by a factor
+   of x 4 to x 5.
+
+ - Support for guest inspection (like virt-inspector) via the ordinary
+   API and all language bindings.  'guestfish -i' option is as a side-
+   effect much quicker.
+
+ - virt-inspector and core inspection API can now detect guests running:
+   Fedora, Debian, Ubuntu, Windows, Red Hat Enterprise Linux, CentOS,
+   Scientific Linux, Gentoo, Pardus, Arch Linux, MeeGo.
+
+ - Support for LUKS whole-disk encryption in guests.
+
+ - PHP bindings.
+
+ - Progress messages (and progress bars in guestfish and virt-resize)
+   for certain long-running operations.
+
+ - virt-df is now much more efficient.  Use '--one-per-guest' to restore
+   the old per-guest isolation behaviour.
+
+ - guestfish 'copy-in' and 'copy-out' commands for copying files and
+   directories recursively in and out of the guest.
+
+ - guestfish 'hexedit' command for doing binary edits to devices and
+   files.
+
+ - Change guestfish -i syntax to allow commands to be specified on the
+   command line (retaining backwards compatibility).
+
+ - guestfish '-d <domain>' for adding disks from libvirt domains.
+
+ - guestfish '-N' option supports several new prepared disk image types:
+         lvfs : disk with LV formatted with filesystem
+           lv : disk with LV
+     bootroot : boot+root
+   bootrootlv : boot and root on LV
+
+ - guestfish 'more' and 'edit' commands now work with arbitrary files.
+
+ - guestfish '--echo-keys' option allows you to echo keys/passphrases
+   while typing them.
+
+ - guestmount now supports -a / -d / -i options, like guestfish.
+
+ - Use virtio-serial for communications with the appliance.  This
+   also has a major performance benefit.
+
+ - virt-edit '-b' option to create a backup of edited files.
+
+ - virt-edit '-e' option for non-interactive edits to files.
+
+ - Ability to capture core dumps from the appliance (thanks Matthew Booth).
+
+ - virt-rescue now shuts down cleanly (thanks Matthew Booth).
+
+ - virt-rescue now has a --network option to enable network access.
+
+ - virt-resize can now handle guests which use GPT partition table format.
+
+ - virt-resize has better support for shrinking guests.
+
+ - virt-resize supports qcow2-format guests.
+
+ - $TMPDIR can be used to override almost all temporary directory usage.
+
+ - OCaml users can use an alternate OO-style of coding, eg. g#launch ()
+
+ - The API supports calls which take optional parameters, eg.
+     $g->add_drive_opts ("disk", readonly => 1);
+
+ - Trace output now escapes and shortens large strings (thanks
+   Matthew Booth).
+
+ - Autosync is now on by default, resulting in more reliable behaviour
+   when the handle is closed.
+
+ - virt-df --uuid option allows you to follow a domain across migration
+   and renaming.
+
+ - Translations of manual pages.
+
+Security
+
+ - CVE-2010-3851 libguestfs: missing disk format specifier when adding a disk
+   https://www.redhat.com/archives/libguestfs/2010-October/msg00036.html
+   This is comprehensively fixed in this release, and the fix will be
+   backported to the other stable branches after more testing.
+
+ - virt-inspector no longer relies on untrusted guest code to list
+   applications in some guests.
+
+New APIs
+
+  download-offset, file-architecture, findfs-label, findfs-uuid,
+  inspect-os, inspect-get-arch, inspect-get-distro,
+  inspect-get-filesystems, inspect-get-major-version,
+  inspect-get-minor-version, inspect-get-mountpoints,
+  inspect-get-product-name, inspect-get-type, is-blockdev, is-chardev,
+  is-fifo, is-lv, is-socket, is-symlink, list-filesystems, luks-add-key,
+  luks-close, luks-format, luks-format-cipher, luks-kill-slot,
+  luks-open, luks-open-ro, lvm-clear-filter, lvm-canonical-lv-name,
+  lvm-set-filter, part-to-dev, pread-device, pwrite-device,
+  upload-offset
+
+Internals
+
+ - Use size_t for loop iterators.
+ - Refactor the library code into separate files.
+ - Refactor the generator code into separate files.
+ - Generate guestfish commands.
+ - guestfish & guestmount options processing is unified.
+ - Protocol changes:
+     error message size increased to 64K
+     send errno to library
+ - Add 'make bindist' to make a binary distribution.
+ - Cleaner behaviour under valgrind.
+ - More testing of the guestfish command line options and libvirt
+   integration.
+ - The Perl inspection code is no longer used by any of the tools.
+
+Bugs fixed
+
+ - 646822 libguestfs trace mode should not print long binary strings
+ - 646821 virt-df should have --uuid option
+ - 646432 /dev/mapper paths should not be returned from guestfs_mountpoints
+ - 643624 libguestfs tools documentation should describe how to quote guest domain names from shell
+ - 642934 No way to specify disk format when adding a disk to libguestfs
+ - 642933 guestfs_list_filesystems should be used in all possible places
+ - 642932 guestmount options should match guestfish options
+ - 642930 virt-inspector (Sys::Guestfs::Lib) should use C inspection APIs
+ - 642929 C inspection code should ignore /dev/fd* in /etc/fstab
+ - 642826 virt-resize converts any other image format to raw without notifying user, instructions do not account for this
+ - 640961 Document that grub-install might be needed for old Linux guests after virt-resize
+ - 639986 virt-df --csv does not properly quote " in libvirt domain names
+ - 639405 Interrupted cached appliance creation leaves libguestfs unusable
+ - 638901 Appliance filename should not contain repository name
+ - 638899 /dev/mapper paths should not be returned from C inspection APIs
+ - 636918 Updates to Spanish translation
+ - 636061 [abrt] guestfish-1.2.11-1.fc12: malloc_consolidate: Process /usr/bin/guestfish was killed by signal 11 (SIGSEGV)
+ - 635969 glob echo mkfs ext2 /dev/vd[b-t]1 prints garbage
+ - 634246 guestfs_part_get_parttype returns "loop" when run against a partition, LV or filesystem
+ - 633766 virt-resize --shrink fails
+ - 633357 Updates to Spanish translation
+ - 633096 virt-resize calculates block device size incorrectly, doesn't work with qcow2 target
+ - 629593 Dutch translation added
+ - 627556 Updates to Spanish translations of libguestfs
+ - 626843 Updates to Spanish translations
+ - 619793 [RFE] Need a way to determine if a particular block device is a logical volume
+ - 618556 virt-rescue return none zero value when exit
+ - 617200 mount operation failed and hung on some images which running in read-only mode
+ - 610880 libguestfs should set broader read perms on tmpdir, so works in some situations when executed with umask 077
+ - 599503 document that mkmountpoint and umount-all cannot be mixed
+ - 571714 Running virt-df on disk image relabels it, so qemu can no longer write to it.
+ - 502533 Updated Polish translation of libguestfs
+
 Release notes for libguestfs 1.4.0
 ----------------------------------
-[updated to 6c27155621f75351a3b18237ac7631f0eb12c336]
 
 These release notes only cover the differences from the previous
 stable/dev branch split (1.2.0).  For detailed changelogs, please see
@@ -14,7 +594,7 @@ New features
  - Add write support to guestmount (FUSE) module.
 
  - virt-resize can now resize the content of partitions and logical
-   volumes in the guest, and we fully support shrinking guests.
+   volumes in the guest, and we have better support for shrinking guests.
 
  - Bash tab-completion script for guestfish.
 
@@ -69,6 +649,10 @@ New features
 
  - Include extra Augeas lenses in the supermin appliance (Matthew Booth).
 
+ - Add error and close callbacks.
+
+ - Add explicit close method in the Perl API.
+
  - Multiple fixes for RHEL 5 compatibility.
 
  - Multiple fixes for Debian/Ubuntu compatibility.
@@ -118,13 +702,21 @@ Internals
  - Extend the protocol to support sending arbitrary 8 bit data buffers.
  - Ship 'BUGS' file with releases.  This is a summary of the bugs in
    the Red Hat Bugzilla database.
+ - Ship 'RELEASE-NOTES' file with releases, containing release notes.
  - Unify supermin appliance building into one place, in febootstrap 2.7.
  - Fix the protocol code to handle the case where both ends send cancel
    messages at the same time.
 
 Bugs fixed
 
+ - 612178 guestfish: using -m option in conjunction with --listen option causes appliance to die
+ - 610880 libguestfs should set broader read perms on tmpdir, so works in some situations when executed with umask 077
+ - 604691 OCaml bindings are not thread safe
+ - 603870 Updates to Spanish translation
+ - 602592 [RFE] expose guestfs_close in perl bindings
+ - 600977 virt-df -h --csv "Argument .. isn't numeric in printf"
  - 599464 mkfs-b does not support vfat/ntfs
+ - 598807 add_cdrom does not work in RHEL 6
  - 598309 part-list and several other cmd failed on libguestfs on RHEL5
  - 597145 guestfish 'help' command should indicate error in exit status with an unknown command
  - 597135 guestfish write-file cmd does not check "size" parameter
@@ -196,3 +788,6 @@ https://www.redhat.com/archives/libguestfs/2009-July/msg00059.html
 
 2009-07-14 : 1.0.59
 https://www.redhat.com/archives/libguestfs/2009-July/msg00023.html
+
+2009-04-01 : Initial announcement
+http://rwmj.wordpress.com/2009/04/01/libguestfs-access-and-modify-virtual-machine-disk-images/