Update NEWS
[wimlib] / NEWS
diff --git a/NEWS b/NEWS
index 71d306c..5b205d3 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,352 @@
-Only the most important changes more recent than version 0.6 are noted here.
+Version 1.7.1-BETA:
+       The new (as of v1.7.0) extraction code will no longer run out of file
+       handles when extracting many (1000+) identical files.
+
+       Library users can now initialize and de-initialize the library multiple
+       times in one run of an application program.
+
+       Library users will now receive WIMLIB_PROGRESS_MSG_WRITE_STREAMS
+       messages more frequency when writing large WIM files.
+
+Version 1.7.0:
+       Improved compression, decompression, and extraction performance.
+
+       Improved compatibility with version 3584 WIM / ESD files:
+           - Add support for reading and writing multiple solid blocks per
+             archive, which WIMGAPI/DISM can create when appending an image.
+           - Correctly create solid blocks larger than 4 GiB.
+
+       'add' commands passed to wimupdate will now replace existing
+       nondirectory files by default.  Use the --no-replace option to get the
+       old behavior.
+
+       The license for the library now contains an exception that allows using
+       it under the LGPL.  See the COPYING file for details.
+
+       In reparse-point fixup mode (the default for capture), symbolic links
+       and junctions that point outside the tree being captured are no longer
+       excluded from capture.
+
+       Added support for "WIMBoot" capture and extraction.  See the
+       documentation for the new '--wimboot' option to wimcapture and wimapply
+       for more information.
+
+       On UNIX-like systems, you can now backup and restore device nodes, named
+       pipes, and sockets.  In addition, 32-bit user and group IDs are now
+       supported.
+
+       The way that UNIX data is stored in WIM files has been changed.  If you
+       captured any WIMs with the --unix-data option, to upgrade them you'll
+       need to apply them with --unix-data using wimlib-imagex v1.6.2, then
+       re-capture them with --unix-data using this version.
+
+       wimlib now understands tagged metadata items, such as object IDs, that
+       can be stored in WIM directory entries.
+
+       Removed the --hardlink and --symlink options to wimapply, since I don't
+       think they are too useful and they got in the way of improving the code.
+
+       WIMs will now retain their GUIDs when rebuilt (e.g. with wimoptimize).
+
+       The 'mkwinpeimg' script now supports writing the ISO image to standard
+       output.
+
+       The <ARCH> element in WIM XML data is now exported correctly.
+
+       On Windows, sparse file attributes are no longer set on extracted files.
+       Oddly enough, this actually saves disk space in some cases.
+
+       On UNIX, configuring with --disable-xattr or --enable-xattr is no longer
+       supported.  Mounting WIM images now always requires extended attribute
+       support.  Use --without-fuse to disable support for mounting WIM images;
+       this will also disable the need for extended attribute support.
+
+       Configuring with --enable-ssse3-sha1 now works correctly.
+
+       The shared library version has been bumped up.  The main
+       incompatibilities are:
+
+               - WIMLIB_COMPRESSION_TYPE_XPRESS is now 1 and
+                 WIMLIB_COMPRESSION_TYPE_LZX is now 2 (so it's the same as
+                 WIMGAPI).
+
+               - User-provided progress functions are now registered using a
+                 separate function, wimlib_register_progress_function().  The
+                 'progress_func' argument to many functions no longer exists.
+
+               - The return value from user-provided progress functions is now
+                 significant.
+
+               - A context argument has been added to the prototype of
+                 user-provided progress functions.
+
+               - 'struct wimlib_capture_config' has been removed.  The library
+                 now takes the path to the configuration file directly.  This
+                 affects wimlib_add_image(), wimlib_add_image_multisource(),
+                 and wimlib_update_image().  However, a NULL value passed in
+                 the argument retains the same meaning.
+
+               - Removed deprecated functions: some (de)compression functions,
+                 wimlib_extract_files(), and wimlib_print_metadata().
+
+               - Removed extraction flags: WIMLIB_EXTRACT_FLAG_HARDLINK,
+                 WIMLIB_EXTRACT_FLAG_SYMLINK, WIMLIB_EXTRACT_FLAG_FILE_ORDER,
+                 and WIMLIB_EXTRACT_FLAG_SEQUENTIAL.
+
+               - Removed some progress messages:
+                 WIMLIB_PROGRESS_MSG_APPLY_TIMESTAMPS,
+                 WIMLIB_PROGRESS_MSG_EXTRACT_DIR_STRUCTURE_BEGIN,
+                 WIMLIB_PROGRESS_MSG_EXTRACT_DIR_STRUCTURE_END.  Numbering
+                 stays the same.
+
+               - Removed some error codes.  Numbering stays the same.
+
+               - Replaced WIMLIB_UNMOUNT_FLAG_LAZY with
+                 WIMLIB_UNMOUNT_FLAG_FORCE.
+
+               - WIM paths passed to progress functions now have a leading
+                 slash.
+
+Version 1.6.2:
+       Case-insensitive comparisons of strings (e.g. filenames) containing
+       UTF-16 codepoints above 32767 are now done correctly.
+
+       Fixed build failure on Mac OS X.
+
+       wimunmount now provides the '--new-image' option to cause changes to a
+       read-write mounted image to be committed as a new image rather than as
+       an update of the mounted image.  (The corresponding new library flag is
+       WIMLIB_UNMOUNT_FLAG_NEW_IMAGE.)
+
+       The LZMS ("recovery") compression chunk size, or "dictionary size", may
+       now be up to 1 GiB (1,073,741,824 bytes).
+
+       The performance of LZX ("maximum") and LZMS ("recovery") compression
+       with large chunk sizes has been slightly improved.
+
+Version 1.6.1:
+       Stored files with size exactly 4 GiB (4,294,967,296 bytes) are now
+       decompressed correctly.
+
+       Fixed a bug in the LZX compressor introduced in v1.5.3.  The bug
+       occurred in an unlikely case, and due to validity checks it did not
+       affect successfully created archives.
+
+       Fixed a minor compatibility issue with the LZMS compressor and
+       decompressor.  This is *not* the default compression type and was only
+       introduced in v1.6.0.  In the unlikely event that you created an
+       LZMS-compressed WIM with v1.6.0 and a checksum error is reported when
+       applying it with v1.6.1, decompress it with v1.6.0 then compress it with
+       v1.6.1.
+
+       Memory usage for LZMS and LZX compression has been decreased.
+
+       wimextract now allows wildcard characters in paths specified on the
+       command line.  Also, the '--strict-wildcards' option has been removed
+       and replaced with the inverse option '--nullglob'.  See the
+       documentation for wimextract for more details and changes.
+
+       The wimlib_extract_files() function is now considered deprecated in
+       favor of wimlib_extract_paths().
+
+       Fixed more permissions problems when extracting files on Windows.
+
+       A new '--no-attributes' option has been added to wimapply and
+       wimextract.  The library flag is WIMLIB_EXTRACT_FLAG_NO_ATTRIBUTES.
+
+       The default chunk size is now set correctly when changing the
+       compression type of a WIM, for example with 'wimoptimize'.
+
+       The '--metadata' option to wiminfo has been replaced with the
+       '--detailed' option to wimdir.
+
+       In relevant wimlib-imagex commands, '--solid' may now be used as an
+       alias for '--pack-streams'.
+
+Version 1.6.0:
+       Support for extracting and updating the new version 3584 WIMs has been
+       added.  These WIMs typically pack many streams ("files") together into a
+       single compressed resource, thereby saving space.  This degrades the
+       performance of random access (such as that which occurs on a mounted
+       image), but optimizations have been implemented for extraction.  These
+       new WIM files also typically use a new compression format (LZMS), which
+       is similar to LZMA and can offer a better compression ratio than LZX.
+       These new WIM files can be created using `wimcapture' with
+       the '--compress=lzms --pack-streams' options.  Note: this new WIM format
+       is used by the Windows 8 web downloader, but important segments of the
+       raw '.esd' files are encrypted, so wimlib will not be able to extract
+       such files until they are first decrypted.
+
+       wimlib now supports extracting files and directories from a WIM image
+       based on a "listfile" that itself contains the list of paths to extract.
+       For `wimextract', the syntax is to specify @LISTFILE instead of a PATH,
+       and for the library itself, the new APIs are wimlib_extract_pathlist()
+       and wimlib_extract_paths().  Path globs containing wildcard characters
+       are supported.
+
+       For searching WIM files, wimlib now has configurable case sensitivity.
+       The default on Windows is still case-insensitive and the default on
+       UNIX-like systems is still case-sensitive, but this can be overridden
+       on either platform through flags to wimlib_global_init().  For
+       `wimlib-imagex', the environmental variable WIMLIB_IMAGEX_IGNORE_CASE
+       can be set to 1 or 0 for case-insensitive or case-sensitive behavior,
+       respectively.
+
+       Support for compression chunk sizes greater than the default of 32768
+       bytes has been added.  A larger chunk size typically results in a better
+       compression ratio.  However, the MS implementation is seemingly not
+       compatible with all chunk sizes, especially for LZX compression, so the
+       defaults remain unchanged, with the exception of the new LZMS-compressed
+       WIMs, which use a larger chunk size by default.
+
+       The compression/decompression API exported by wimlib has been changed.
+       Now one set of functions handles all supported compression formats.
+
+       `wimcapture' and `wimappend' will now display the progress of scanning
+       the directory tree to capture, in addition to the progress of writing
+       data to the WIM.  The '--verbose' option no longer does anything.  The
+       library API change for this is the addition of several members to
+       `struct wimlib_progress_info_scan' available to progress callbacks.
+
+       `mkwinpeimg' now correctly handles the '--start-script' option when the
+       start script is not in the working directory.
+
+       Sequential extraction, previously requested by using
+       WIMLIB_EXTRACT_FLAG_SEQUENTIAL, is now the default.
+       WIMLIB_EXTRACT_FLAG_FILE_ORDER can be used to get the old default
+       behavior (extract in file order).
+
+Version 1.5.3:
+       The new LZX compressor added in v1.5.2 has been improved and is now
+       enabled by default, except when `wimcapture' or `wimappend' is run
+       *without* the '--compress' option, in which case the faster LZX
+       compressor is used (the same as before).  This behavior is reasonably
+       consistent with ImageX which actually uses "fast" (XPRESS) compression
+       by default.  In those cases, use '--compress=maximum' to explicitly
+       capture a WIM image using the new (slower but better) LZX compressor.
+
+       The '--compress-slow' option still exists to `wimlib-imagex optimize',
+       but its new behavior is to tweak the new LZX compressor even more to
+       produce an even better compression ratio at the cost of more time spent
+       compressing.
+
+       `wimlib-imagex optimize' now supports the '--compress=TYPE' option,
+       which recompresses the WIM file using the specified compression TYPE.
+       The new library API function used for this is
+       wimlib_set_output_compression_type().
+
+       Added the wimlib_get_xml_data() function to allow library clients to
+       easily retrieve the raw XML data from a WIM file if needed.
+
+       Fixed a bug that could cause an error code to be incorrectly returned
+       when writing XML data containing a <WINDOWS> element.
+
+       Mounted WIM images will now correctly show the default file stream even
+       if appears in the alternate data stream entries of the corresponding WIM
+       directory entry.
+
+Version 1.5.2:
+       Added a new experimental LZX compressor which can be enabled by passing
+       '--compress-slow' to `wimlib-imagex capture' or `wimlib-imagex
+       optimize'.  (The latter is only applicable if the WIM is already
+       LZX-compressed and the '--recompress' option is also given.)  The
+       experimental compressor is much slower but compresses the data slightly
+       more --- currently usually to within a fraction of a percent of the
+       results from WIMGAPI/ImageX.
+
+       A workaround has been added for compatibility with versions of WinPE
+       that interpret alternate data stream entries in the boot WIM
+       incorrectly.
+
+       An alignment bug that caused a crash in the LZX decompressor on some
+       builds was fixed.
+
+       wimlib now attempts to clear the WIM_HDR_FLAG_WRITE_IN_PROGRESS flag in
+       the WIM header when restoring the previous state of a WIM it failed to
+       successfully update.
+
+       Added a workaround to avoid an access denied error on Windows when
+       replacing a WIM file that another process has opened.
+
+Version 1.5.1:
+       wimlib can now open WinPE WIMs from WAIK v2.1, which had a quirk that
+       needed to be handled.
+
+       A bug in the interpretation of negative IMAGE indices in the
+       --update-of=[WIMFILE:]IMAGE option to `wimlib-imagex capture' and
+       `wimlib-imagex append' has been fixed.
+
+       A workaround has been added to successfully apply security descriptors
+       with empty DACLs when the NTFS-3g apply mode is being used with NTFS-3g
+       2013.1.13 or earlier.
+
+       `wimlib-imagex capture' can now accept the '--delta-from' option
+       multiple times.
+
+Version 1.5.0:
+       Added support for "pipable" WIMs.  Pipable WIMs allow capturing images
+       to standard output and applying images from standard input, but they are
+       not compatible with Microsoft's software and are not created by default.
+       See the documentation for --pipable flag of `wimlib-imagex capture' for
+       more information.
+
+       To better support incremental backups, added support for declaring an
+       image as a modified form of another image.  See the documentation for
+       the '--update-of' option of `wimlib-imagex append' and `wimlib-imagex
+       capture'.
+
+       Added supported for "delta" WIMs.  See the documentation for the
+       '--delta-from' option of `wimlib-imagex capture'.
+
+       The library support for managing split WIMs has been changed to support
+       other arrangements, such as delta WIMs, and be easier to use.  This
+       change is visible in `wimlib-imagex', which also can now accept the
+       '--ref' option multiple times, and also now supports "delta" WIMs as
+       mentioned above.
+
+       wimlib now preserves WIM integrity tables by default, even if
+       WIMLIB_WRITE_FLAG_CHECK_INTEGRITY is not specified.  This changes the
+       behavior of `wimlib-imagex' whenever the WIM being operated on contains
+       an integrity table and the '--check' option is not specified.
+
+       `wimlib-imagex capture' now creates LZX-compressed WIMs by default
+       (when --compress is not specified).  This provides the best compression
+       ratio by default, which is usually what is desired, at a cost of some
+       speed.
+
+       `wimlib-imagex' now supports being invoked as wimCOMMAND, where COMMAND
+       is the command as in `wimlib-imagex COMMAND'; for example, it can be
+       invoked as `wimapply' as an alternative to `wimlib-imagex apply'.  The
+       appropriate hard links are created in UNIX installations of
+       `wimlib-imagex', while for the Windows distribution of `wimlib-imagex',
+       batch files that emulate this behavior are generated.
+
+       Security descriptors are now extracted correctly on Windows.
+
+       Fixed archiving DOS names in NTFS-3g capture mode.
+
+       The extraction code has been rewritten and it will now be easier to
+       support new features on all supported backends (currently Win32, UNIX,
+       and NTFS-3g).  For example, hard-linked extraction mode (--hardlink) is
+       now supported on all backends, not just UNIX.
+
+       `mkwinpeimg' now supports grabbing files from the WAIK supplement rather
+       than the WAIK itself.
+
+       wimlib_global_init() now, by default, attempts to acquire additional
+       privileges on Windows, so library clients need not do this.
+
+       This update bumps the shared library version number up to 9, since it is
+       not binary compatibible with previous releases.
+
+Version 1.4.2:
+       Fixed bug in `wimlib-imagex export' that made it impossible to export an
+       image from a WIM that is readonly at the filesystem level.
+
+       Return error code rather than segfaulting when trying to list files from
+       a non-first part of a split WIM.
+
+       Joining a WIM will now preserve the RP_FIX and READONLY flags.
 
 Version 1.4.1:
        On Windows, paths given to wimlib-imagex are now treated case
@@ -40,10 +388,19 @@ Version 1.4.1:
        Progress callbacks have been added to wimlib's wimlib_update_image()
        function.
 
+       Added wimlib_get_wim_info(), wimlib_set_wim_info(),
+       wimlib_iterate_dir_tree(), and wimlib_iterate_lookup_table() functions
+       to the library.
+
        NTFS-3g capture now only warns about two conditions previously treated
        as errors.
 
-       Fixed a couple issues with using wimlib-imagex on UDF filesystems.
+       Fixed a couple issues with using wimlib-imagex on UDF filesystems on
+       Windows.
+
+       wimlib now correctly detects and returns an error when reading a WIM
+       image with a cyclic directory structure.  (Fun fact: such a WIM will
+       crash Microsoft's software.)
 
 Version 1.4.0:
        Added new "extract" and "update" subcommands to wimlib-imagex, along