Only the most important changes more recent than version 0.6 are noted here.
+Version 1.6.1:
+ Stored files with size exactly 4 GiB (4,294,967,296 bytes) are now
+ decompressed correctly.
+
+ Paths passed to wimlib_extract_paths() and wimlib_iterate_dir_tree() may
+ now use either forwards or backwards slashes, as documented.
+
+ Fixed a potential stack overflow when extracting solid archives (packed
+ streams) containing more than about 100000 files.
+
+ Memory usage for LZMS and LZX compression has been decreased.
+
+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. This support allows capturing images
- to standard output or applying images from standard input, but they are
+ 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 documentation for --pipable flag of `wimlib-imagex capture' for more
- information. Two new functions have been added to the library to fully
- support this: wimlib_write_to_fd() and wimlib_extract_image_from_pipe().
+ 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'.
- wimlib now preserve WIM integrity tables by default, even if
+ 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.
ratio by default, which is usually what is desired, at a cost of some
speed.
- For convenience, `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.
-
- `wimlib-imagex' no longer recognizes the 'mount', 'mountrw', and
- 'unmount' commands on Windows, since they didn't work on Windows anyway.
+ `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.
- `mkwinpeimg' now supports grabbing files from the WAIK supplement rather
- than the WAIK itself.
-
- The test suite no longer fails when run in a locale where the decimal
- separator is not a period.
-
- WIMLIB_PROGRESS_MSG_EXTRACT_DENTRY has been removed and
- WIMLIB_EXTRACT_FLAG_VERBOSE re-reserved for future use.
+ 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.
- A few changes were made to the error codes returned by library routines.
+ `mkwinpeimg' now supports grabbing files from the WAIK supplement rather
+ than the WAIK itself.
- To make wimlib easier to use on Windows, wimlib_global_init() now
- automatically attempts to acquire additional privileges on Windows, so
- library clients need not do this (although they can provide a flag to
- get the old behavior and manage privileges themselves).
+ 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
- doesn't quite maintain binary compatibility with previous releases.
+ 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