mkwinpeimg: use case insensitive mode when updating boot.wim
[wimlib] / NEWS
1 Version 1.10.0:
2         The LZX compression ratio has been slightly improved.  The default mode,
3         LZX level 50, is now almost as good as the old LZX level 100, while
4         being nearly the same speed as before.
5
6         Decompression performance has been slightly improved.
7
8         Filenames are now always listed in NTFS collation order.
9
10         On UNIX-like systems, wimlib can now process Windows filenames that are
11         not valid Unicode due to the presence of unpaired surrogates.
12
13         On UNIX-like systems, wimlib now always assumes UTF-8 encoding with the
14         addition of surrogate codepoints.  Consequently, the environmental
15         variable WIMLIB_IMAGEX_USE_UTF8 and the flag
16         WIMLIB_INIT_FLAG_ASSUME_UTF8 no longer have any effect.
17
18         wimlib no longer depends on iconv.
19
20         Reduced memory usage slightly.
21
22         When a WIM image is applied in NTFS-3G mode, security descriptors are
23         now created in NTFS v3.0 format when supported by the volume.
24
25         Workarounds for bugs in libntfs-3g version 2013.1.13 and earlier have
26         been removed.  Users are advised to upgrade to a later version of
27         libntfs-3g.
28
29         On Windows, wimlib now supports case-sensitive filename extraction when
30         supported by the underlying operating system and filesystem (operating
31         system support requires a registry setting).
32
33 Version 1.9.2:
34         On UNIX, wimlib can now overwrite readonly files when extracting.
35
36         On Windows, fixed a bug where wimlib could leave a null DACL (a.k.a. "no
37         NTFS permissions") set on some existing directories after extraction.
38
39         On Windows, when applying a WIM image in "WIMBoot mode" when the WOF
40         driver is not loaded, wimlib can now correctly register a new WIM file
41         with the target volume when the target volume previously had had WIM
42         files unregistered.
43
44         Added a new testing program.
45
46         Clarified the main license text and updated public domain dedications
47         for certain files to be more thorough.
48
49 Version 1.9.1:
50         Object IDs are now saved and restored on Windows and in NTFS-3G mode.
51
52         Reduced memory usage when exporting large numbers of WIM images.
53
54         Non UTF-8 locales are now detected correctly.
55
56         Addressed compiler warnings and enabled "silent" make rules by default.
57
58         Windows-specific updates:
59                 Fixed a bug where duplicate backslashes could be generated in
60                 link targets when extracting symbolic links and junctions.
61
62                 Fixed a bug where the .cmd shortcuts for wimlib-imagex wouldn't
63                 work if their full path contained a space.
64
65                 Fixed bugs related to scanning SMB filesystems.
66
67                 Added warning message about known issue with WindowsApps folder.
68
69                 Added instructions for building from source on Windows.
70
71                 VSS support is no longer marked "experimental".
72
73                 Added missing license file for libdivsufsort-lite.
74
75 Version 1.9.0:
76         Added experimental support for Windows VSS (Volume Shadow Copy Service).
77         The new '--snapshot' argument to 'wimcapture' makes wimlib automatically
78         create and use a temporary VSS snapshot when capturing a WIM image.
79
80         Implemented setting of Windows-specific XML information, such as
81         architecture, system root, and version details.  This information is now
82         automatically set in newly captured WIM images, when appropriate.
83
84         Improved performance of directory tree scans on Windows.
85
86         On Windows, to improve capture performance, wimlib now sometimes opens
87         files by inode number rather than by path.  This is enabled for
88         wimcapture and wimappend, but for now other applications have to opt-in.
89
90         The progress messages printed by wimlib-imagex while writing WIM files
91         have been slightly tweaked.
92
93         Progress information for directory tree scans now counts all hard links.
94         Also, on Windows "\\?\" is no longer stripped from the current path.
95
96         Added a new '--image-property' option to 'wimcapture', 'wimappend', and
97         'wiminfo'.  This option lets you assign values to elements in a WIM
98         file's XML document by name.
99
100         The wimlib_get_image_property() and wimlib_set_image_property() API
101         functions now support numerically indexed elements.
102
103         Fixed a bug where, on Windows, wimlib would change the security
104         descriptor of the target directory of an extraction even when the
105         '--no-acls' option was specified.
106
107 Version 1.8.3:
108         Fixed a bug with libntfs-3g extraction present since v1.8.1.  Sometimes,
109         some Microsoft software would not correctly recognize data in the
110         resulting filesystem.
111
112         Made some small improvements to the compression algorithms:
113                 LZX compression ratio was slightly improved.
114                 XPRESS compression ratio and speed was slightly improved.
115                 LZMS compression speed was slightly improved.
116
117         Improved handling of WIM XML data.  wimlib no longer drops unrecognized
118         elements when exporting images.  In addition, two API functions were
119         added for better access to elements in the XML document:
120         wimlib_get_image_property() and wimlib_set_image_property().
121
122         Added support for (unsafe) in-place compaction of WIM files.
123
124         Improved performance of image export by reusing metadata resources
125         instead of always rebuilding and recompressing them.
126
127         Improved performance of wimlib_update_image() by delaying the update to
128         the WIM's XML document until a write is requested.
129
130         On Windows, the target of an extraction may now be a reparse point
131         (which will be dereferenced).
132
133         On Windows, wimlib now correctly restores non-Microsoft reparse points.
134         However, this remains broken in NTFS-3g mode due to a libntfs-3g bug.
135
136         On Windows, wimlib now has improved performance when archiving files
137         from a filesystem backed by a WIM (a "WIMBoot" setup).
138
139         Several improvements to System Compression (compact mode) support:
140
141                 wof.sys (or wofadk.sys) is now automatically attached to the
142                 target volume if needed.
143
144                 Compact-mode extractions now work correctly with wofadk.sys on
145                 older versions of Windows.
146
147                 For compatibility with the Windows bootloader, the requested
148                 compression format now is overridden on certain files.
149
150         Other minor bugfixes.
151
152 Version 1.8.2:
153         This release primarily contains various minor bug fixes and
154         improvements, including:
155
156                 Improved handling of deep directory structures.
157
158                 Fixed a bug where on 32-bit systems, the library could enter an
159                 infinite loop if a WIM file was malformed in a specific way.
160
161                 Added a workaround for a case where libntfs-3g may report
162                 duplicate streams in an NTFS file.
163
164                 Windows symbolic links and junctions in mounted WIM images are
165                 now automatically rewritten to be valid in the mounted location.
166
167                 Reparse point fixes: correctly handle the "ReparseReserved"
168                 field, and correctly handle "empty" (data-less) reparse points.
169
170                 On Windows, wimlib now acquires SeManageVolumePrivilege, which
171                 is needed to create externally backed files using the
172                 "wofadk.sys" driver.
173
174                 Improved validation of filenames.
175
176                 Improved LZMS decompression speed.
177
178                 The configure script now honors alternate pkg-config settings.
179
180                 Links have been updated to point to the new website.
181
182         In addition, experimental support has been added for compressing
183         extracted files using System Compression on Windows 10.  This
184         functionality is available through the new '--compact' option to
185         'wimapply' and 'wimextract' as well as new library flags.
186
187 Version 1.8.1:
188         Fixed a bug in the LZX decompressor: malicious input data could cause
189         out of bounds writes to memory (since wimlib v1.2.2).
190
191         The output of the 'wiminfo' command now consolidates various boolean
192         flags (such as "Relative path junction") into a single line.
193
194         A file can now have both an unnamed data stream ("file contents") and a
195         reparse point stream.  Such files can exist as a result of the use of
196         certain Windows features, such as offline storage, including "OneDrive".
197         wimlib will now store and restore both streams on Windows as well as in
198         NTFS-3g mode.  Microsoft's WIMGAPI also has this behavior.
199
200         On Windows, named data streams of encrypted files are no longer stored
201         twice in WIM archives.
202
203         On Windows, named data streams are now correctly extracted to existing
204         "readonly" directories.  Before, an error would be reported.
205
206         On Windows, it is now possible to do a "WIMBoot mode" extraction with
207         non-standalone WIMs such as delta WIMs.
208
209         On Windows, when doing an extraction in "WIMBoot mode", files larger
210         than 4 gigabytes are now never extracted as externally backed.  This
211         works around a bug in Microsoft's "WOF" driver.
212
213         The '--enable-verify-compression' configure option has been removed.  If
214         you want to verify a WIM file, use the 'wimverify' program.
215
216         The way the "file count", "directory count", "total bytes", and "hard
217         link bytes" image statistics (stored in the WIM XML data) is calculated
218         has been slightly changed.
219
220         In mounted WIM images, the disk usage provided for each file (st_blocks)
221         is now the compressed size rather than the uncompressed size.
222
223         The performance of the NTFS-3g and Windows capture modes has been
224         slightly improved.
225
226         On UNIX-like systems, symbolic links whose targets contain the backslash
227         character are now handled correctly (losslessly).
228
229 Version 1.8.0:
230         Improved the LZX compressor.  It is now 15-20% faster than before and
231         provides a slightly better compression ratio.
232
233         Improved the LZMS compressor.  It now provides a compression ratio
234         slightly better than WIMGAPI while still being faster and using slightly
235         less memory.
236
237         The compression chunk size in solid resources, e.g. when capturing or
238         exporting a WIM file using the '--solid' option, now defaults to 64 MiB
239         (67108864 bytes) instead of 32 MiB (33554432 bytes).  This provides a
240         better compression ratio and is the same value that WIMGAPI uses.  The
241         memory usage is less than 50% higher than wimlib v1.7.4 and is slightly
242         lower than WIMGAPI's memory usage, but if it is too much, it is still
243         possible to choose a lower value, e.g. with the '--solid-chunk-size'
244         option to wimlib-imagex.
245
246         The '--chunk-size' and '--solid-chunk-size' options to wimlib-imagex now
247         accept the 'K', 'M', and 'G' suffixes.
248
249         Files are now sorted by name extension when creating a solid WIM file.
250
251         Fixed various issues related to capture/apply of EFS-encrypted files on
252         Windows.
253
254         The file list printed by 'wimdir' is now sorted by the platform-specific
255         case sensitivity setting, rather than always case sensitively.  This
256         also affects the library function wimlib_iterate_dir_tree().
257
258         On Windows, some error and warning messages have been improved.
259
260 Version 1.7.4:
261         The Windows binary distribution no longer contains third party DLLs.
262         These dependencies are instead compiled directly into the libwim DLL.
263
264         Added more fixes for wimlib on non-x86 architectures such as ARM.
265
266         Extracting files to a Windows PE in-memory filesystem no longer fails if
267         the target files do not yet exist.
268
269         Improved the performance of XPRESS compression and LZMS decompression.
270
271         Enabled SSSE3 accelerated SHA-1 computation in x86_64 Windows builds.
272         It will automatically be faster on newer Intel and AMD processors.
273
274         Removed the --with-imagex-progname and --enable-more-assertions
275         configure options.
276
277 Version 1.7.3:
278         Fix for very slow export from solid WIM / ESD files.
279
280         Fix for LZX and LZMS algorithms on non-x86 architectures, such as ARM.
281
282         New progress message: WIMLIB_PROGRESS_MSG_HANDLE_ERROR.  Applications
283         may use this to treat some types of errors as non-fatal.
284
285         The library now permits making in-memory changes to a WIMStruct backed
286         by a read-only WIM file.
287
288         Fixes for "WIMBoot" extraction mode (Windows only):
289
290                 When not using the WOF driver, extraction no longer fails if the
291                 disk containing the WIM file has too many partitions.
292
293                 When matching patterns in [PrepopulateList], all hard links of
294                 each file are now considered.
295
296                 The system registry files are now automatically treated as being
297                 in [PrepopulateList].
298
299                 Added a hack to try to work around an intermittent bug in
300                 Microsoft's WOF (Windows Overlay Filesystem) driver.
301
302 Version 1.7.2:
303         Made more improvements to the XPRESS, LZX, and LZMS compressors.
304
305         A number of improvements to the Windows port:
306
307                 Fixes for setting short filenames.
308
309                 Faster "WIMBoot" extraction.
310
311                 Updated and slimmed down the dependent DLLs.
312
313                 ACL inheritence bits are now restored.
314
315                 Mandatory integrity labels are now backed up and restored.
316
317         Added a workaround for an issue where in rare cases, wimlib could create
318         a compressed data stream that could not be read correctly by Windows
319         after an extraction in "WIMBoot" mode.
320
321         Library changes:
322                 Added file count progress data for
323                 WIMLIB_PROGRESS_MSG_EXTRACT_FILE_STRUCTURE and
324                 WIMLIB_PROGRESS_MSG_EXTRACT_METADATA.
325
326                 Added support for testing file exclusions via the user-provided
327                 progress function.
328
329                 Some documentation improvements.
330
331         Made some clarifications to the license text in the COPYING file.
332
333 Version 1.7.1:
334         Made more improvements to the XPRESS, LZX, and LZMS compressors.
335
336         The default compression mode for wimcapture is now LZX compression in
337         its default mode, which is the same as '--compress=maximum'.
338
339         You can now specify an optional integer compression level to the
340         '--compress' option; e.g. '--compress=lzx:75'.
341
342         Made a minor change to the LZMS compressor and decompressor to fix an
343         incompatibility with the Microsoft implementation.  In the unlikely
344         event that you created an LZMS-compressed WIM with wimlib v1.7.0 or
345         earlier and a checksum error is reported when extracting files from it
346         with wimlib v1.7.1, decompress it with v1.7.0 then compress it with
347         v1.7.1.
348
349         Added 'verify' subcommand to wimlib-imagex.
350
351         Notable library changes:
352
353                 Custom compressor parameters have been removed from the library
354                 in favor of the simpler level-based API.
355
356                 Decompressor parameters have been removed entirely.
357
358                 Library users can now specify a custom file for warning and
359                 error messages to be sent to, rather than the default of
360                 standard error.
361
362                 New progress messages:
363                 WIMLIB_PROGRESS_MSG_EXTRACT_FILE_STRUCTURE,
364                 WIMLIB_PROGRESS_MSG_EXTRACT_METADATA.
365
366                 New function: wimlib_verify_wim().
367
368 Version 1.7.0:
369         Improved compression, decompression, and extraction performance.
370
371         Improved compatibility with version 3584 WIM / ESD files:
372             - Add support for reading and writing multiple solid blocks per
373               archive, which WIMGAPI/DISM can create when appending an image.
374             - Correctly create solid blocks larger than 4 GiB.
375
376         'add' commands passed to wimupdate will now replace existing
377         nondirectory files by default.  Use the --no-replace option to get the
378         old behavior.
379
380         The license for the library now contains an exception that allows using
381         it under the LGPL.  See the COPYING file for details.
382
383         In reparse-point fixup mode (the default for capture), symbolic links
384         and junctions that point outside the tree being captured are no longer
385         excluded from capture.
386
387         Added support for "WIMBoot" capture and extraction.  See the
388         documentation for the new '--wimboot' option to wimcapture and wimapply
389         for more information.
390
391         On UNIX-like systems, you can now backup and restore device nodes, named
392         pipes, and sockets.  In addition, 32-bit user and group IDs are now
393         supported.
394
395         The way that UNIX data is stored in WIM files has been changed.  If you
396         captured any WIMs with the --unix-data option, to upgrade them you'll
397         need to apply them with --unix-data using wimlib-imagex v1.6.2, then
398         re-capture them with --unix-data using this version.
399
400         wimlib now understands tagged metadata items, such as object IDs, that
401         can be stored in WIM directory entries.
402
403         Removed the --hardlink and --symlink options to wimapply, since I don't
404         think they are too useful and they got in the way of improving the code.
405
406         WIMs will now retain their GUIDs when rebuilt (e.g. with wimoptimize).
407
408         The 'mkwinpeimg' script now supports writing the ISO image to standard
409         output.
410
411         The <ARCH> element in WIM XML data is now exported correctly.
412
413         On Windows, sparse file attributes are no longer set on extracted files.
414         Oddly enough, this actually saves disk space in some cases.
415
416         On UNIX, configuring with --disable-xattr or --enable-xattr is no longer
417         supported.  Mounting WIM images now always requires extended attribute
418         support.  Use --without-fuse to disable support for mounting WIM images;
419         this will also disable the need for extended attribute support.
420
421         Configuring with --enable-ssse3-sha1 now works correctly.
422
423         The shared library version has been bumped up.  The main
424         incompatibilities are:
425
426                 - WIMLIB_COMPRESSION_TYPE_XPRESS is now 1 and
427                   WIMLIB_COMPRESSION_TYPE_LZX is now 2 (so it's the same as
428                   WIMGAPI).
429
430                 - User-provided progress functions are now registered using a
431                   separate function, wimlib_register_progress_function().  The
432                   'progress_func' argument to many functions no longer exists.
433
434                 - The return value from user-provided progress functions is now
435                   significant.
436
437                 - A context argument has been added to the prototype of
438                   user-provided progress functions.
439
440                 - 'struct wimlib_capture_config' has been removed.  The library
441                   now takes the path to the configuration file directly.  This
442                   affects wimlib_add_image(), wimlib_add_image_multisource(),
443                   and wimlib_update_image().  However, a NULL value passed in
444                   the argument retains the same meaning.
445
446                 - Removed deprecated functions: some (de)compression functions,
447                   wimlib_extract_files(), and wimlib_print_metadata().
448
449                 - Removed extraction flags: WIMLIB_EXTRACT_FLAG_HARDLINK,
450                   WIMLIB_EXTRACT_FLAG_SYMLINK, WIMLIB_EXTRACT_FLAG_FILE_ORDER,
451                   and WIMLIB_EXTRACT_FLAG_SEQUENTIAL.
452
453                 - Removed some progress messages:
454                   WIMLIB_PROGRESS_MSG_APPLY_TIMESTAMPS,
455                   WIMLIB_PROGRESS_MSG_EXTRACT_DIR_STRUCTURE_BEGIN,
456                   WIMLIB_PROGRESS_MSG_EXTRACT_DIR_STRUCTURE_END.  Numbering
457                   stays the same.
458
459                 - Removed some error codes.  Numbering stays the same.
460
461                 - Replaced WIMLIB_UNMOUNT_FLAG_LAZY with
462                   WIMLIB_UNMOUNT_FLAG_FORCE.
463
464                 - WIM paths passed to progress functions now have a leading
465                   slash.
466
467 Version 1.6.2:
468         Case-insensitive comparisons of strings (e.g. filenames) containing
469         UTF-16 codepoints above 32767 are now done correctly.
470
471         Fixed build failure on Mac OS X.
472
473         wimunmount now provides the '--new-image' option to cause changes to a
474         read-write mounted image to be committed as a new image rather than as
475         an update of the mounted image.  (The corresponding new library flag is
476         WIMLIB_UNMOUNT_FLAG_NEW_IMAGE.)
477
478         The LZMS ("recovery") compression chunk size, or "dictionary size", may
479         now be up to 1 GiB (1,073,741,824 bytes).
480
481         The performance of LZX ("maximum") and LZMS ("recovery") compression
482         with large chunk sizes has been slightly improved.
483
484 Version 1.6.1:
485         Stored files with size exactly 4 GiB (4,294,967,296 bytes) are now
486         decompressed correctly.
487
488         Fixed a bug in the LZX compressor introduced in v1.5.3.  The bug
489         occurred in an unlikely case, and due to validity checks it did not
490         affect successfully created archives.
491
492         Fixed a minor compatibility issue with the LZMS compressor and
493         decompressor.  This is *not* the default compression type and was only
494         introduced in v1.6.0.  In the unlikely event that you created an
495         LZMS-compressed WIM with v1.6.0 and a checksum error is reported when
496         applying it with v1.6.1, decompress it with v1.6.0 then compress it with
497         v1.6.1.
498
499         Memory usage for LZMS and LZX compression has been decreased.
500
501         wimextract now allows wildcard characters in paths specified on the
502         command line.  Also, the '--strict-wildcards' option has been removed
503         and replaced with the inverse option '--nullglob'.  See the
504         documentation for wimextract for more details and changes.
505
506         The wimlib_extract_files() function is now considered deprecated in
507         favor of wimlib_extract_paths().
508
509         Fixed more permissions problems when extracting files on Windows.
510
511         A new '--no-attributes' option has been added to wimapply and
512         wimextract.  The library flag is WIMLIB_EXTRACT_FLAG_NO_ATTRIBUTES.
513
514         The default chunk size is now set correctly when changing the
515         compression type of a WIM, for example with 'wimoptimize'.
516
517         The '--metadata' option to wiminfo has been replaced with the
518         '--detailed' option to wimdir.
519
520         In relevant wimlib-imagex commands, '--solid' may now be used as an
521         alias for '--pack-streams'.
522
523 Version 1.6.0:
524         Support for extracting and updating the new version 3584 WIMs has been
525         added.  These WIMs typically pack many streams ("files") together into a
526         single compressed resource, thereby saving space.  This degrades the
527         performance of random access (such as that which occurs on a mounted
528         image), but optimizations have been implemented for extraction.  These
529         new WIM files also typically use a new compression format (LZMS), which
530         is similar to LZMA and can offer a better compression ratio than LZX.
531         These new WIM files can be created using `wimcapture' with
532         the '--compress=lzms --pack-streams' options.  Note: this new WIM format
533         is used by the Windows 8 web downloader, but important segments of the
534         raw '.esd' files are encrypted, so wimlib will not be able to extract
535         such files until they are first decrypted.
536
537         wimlib now supports extracting files and directories from a WIM image
538         based on a "listfile" that itself contains the list of paths to extract.
539         For `wimextract', the syntax is to specify @LISTFILE instead of a PATH,
540         and for the library itself, the new APIs are wimlib_extract_pathlist()
541         and wimlib_extract_paths().  Path globs containing wildcard characters
542         are supported.
543
544         For searching WIM files, wimlib now has configurable case sensitivity.
545         The default on Windows is still case-insensitive and the default on
546         UNIX-like systems is still case-sensitive, but this can be overridden
547         on either platform through flags to wimlib_global_init().  For
548         `wimlib-imagex', the environmental variable WIMLIB_IMAGEX_IGNORE_CASE
549         can be set to 1 or 0 for case-insensitive or case-sensitive behavior,
550         respectively.
551
552         Support for compression chunk sizes greater than the default of 32768
553         bytes has been added.  A larger chunk size typically results in a better
554         compression ratio.  However, the MS implementation is seemingly not
555         compatible with all chunk sizes, especially for LZX compression, so the
556         defaults remain unchanged, with the exception of the new LZMS-compressed
557         WIMs, which use a larger chunk size by default.
558
559         The compression/decompression API exported by wimlib has been changed.
560         Now one set of functions handles all supported compression formats.
561
562         `wimcapture' and `wimappend' will now display the progress of scanning
563         the directory tree to capture, in addition to the progress of writing
564         data to the WIM.  The '--verbose' option no longer does anything.  The
565         library API change for this is the addition of several members to
566         `struct wimlib_progress_info_scan' available to progress callbacks.
567
568         `mkwinpeimg' now correctly handles the '--start-script' option when the
569         start script is not in the working directory.
570
571         Sequential extraction, previously requested by using
572         WIMLIB_EXTRACT_FLAG_SEQUENTIAL, is now the default.
573         WIMLIB_EXTRACT_FLAG_FILE_ORDER can be used to get the old default
574         behavior (extract in file order).
575
576 Version 1.5.3:
577         The new LZX compressor added in v1.5.2 has been improved and is now
578         enabled by default, except when `wimcapture' or `wimappend' is run
579         *without* the '--compress' option, in which case the faster LZX
580         compressor is used (the same as before).  This behavior is reasonably
581         consistent with ImageX which actually uses "fast" (XPRESS) compression
582         by default.  In those cases, use '--compress=maximum' to explicitly
583         capture a WIM image using the new (slower but better) LZX compressor.
584
585         The '--compress-slow' option still exists to `wimlib-imagex optimize',
586         but its new behavior is to tweak the new LZX compressor even more to
587         produce an even better compression ratio at the cost of more time spent
588         compressing.
589
590         `wimlib-imagex optimize' now supports the '--compress=TYPE' option,
591         which recompresses the WIM file using the specified compression TYPE.
592         The new library API function used for this is
593         wimlib_set_output_compression_type().
594
595         Added the wimlib_get_xml_data() function to allow library clients to
596         easily retrieve the raw XML data from a WIM file if needed.
597
598         Fixed a bug that could cause an error code to be incorrectly returned
599         when writing XML data containing a <WINDOWS> element.
600
601         Mounted WIM images will now correctly show the default file stream even
602         if appears in the alternate data stream entries of the corresponding WIM
603         directory entry.
604
605 Version 1.5.2:
606         Added a new experimental LZX compressor which can be enabled by passing
607         '--compress-slow' to `wimlib-imagex capture' or `wimlib-imagex
608         optimize'.  (The latter is only applicable if the WIM is already
609         LZX-compressed and the '--recompress' option is also given.)  The
610         experimental compressor is much slower but compresses the data slightly
611         more --- currently usually to within a fraction of a percent of the
612         results from WIMGAPI/ImageX.
613
614         A workaround has been added for compatibility with versions of WinPE
615         that interpret alternate data stream entries in the boot WIM
616         incorrectly.
617
618         An alignment bug that caused a crash in the LZX decompressor on some
619         builds was fixed.
620
621         wimlib now attempts to clear the WIM_HDR_FLAG_WRITE_IN_PROGRESS flag in
622         the WIM header when restoring the previous state of a WIM it failed to
623         successfully update.
624
625         Added a workaround to avoid an access denied error on Windows when
626         replacing a WIM file that another process has opened.
627
628 Version 1.5.1:
629         wimlib can now open WinPE WIMs from WAIK v2.1, which had a quirk that
630         needed to be handled.
631
632         A bug in the interpretation of negative IMAGE indices in the
633         --update-of=[WIMFILE:]IMAGE option to `wimlib-imagex capture' and
634         `wimlib-imagex append' has been fixed.
635
636         A workaround has been added to successfully apply security descriptors
637         with empty DACLs when the NTFS-3g apply mode is being used with NTFS-3g
638         2013.1.13 or earlier.
639
640         `wimlib-imagex capture' can now accept the '--delta-from' option
641         multiple times.
642
643 Version 1.5.0:
644         Added support for "pipable" WIMs.  Pipable WIMs allow capturing images
645         to standard output and applying images from standard input, but they are
646         not compatible with Microsoft's software and are not created by default.
647         See the documentation for --pipable flag of `wimlib-imagex capture' for
648         more information.
649
650         To better support incremental backups, added support for declaring an
651         image as a modified form of another image.  See the documentation for
652         the '--update-of' option of `wimlib-imagex append' and `wimlib-imagex
653         capture'.
654
655         Added supported for "delta" WIMs.  See the documentation for the
656         '--delta-from' option of `wimlib-imagex capture'.
657
658         The library support for managing split WIMs has been changed to support
659         other arrangements, such as delta WIMs, and be easier to use.  This
660         change is visible in `wimlib-imagex', which also can now accept the
661         '--ref' option multiple times, and also now supports "delta" WIMs as
662         mentioned above.
663
664         wimlib now preserves WIM integrity tables by default, even if
665         WIMLIB_WRITE_FLAG_CHECK_INTEGRITY is not specified.  This changes the
666         behavior of `wimlib-imagex' whenever the WIM being operated on contains
667         an integrity table and the '--check' option is not specified.
668
669         `wimlib-imagex capture' now creates LZX-compressed WIMs by default
670         (when --compress is not specified).  This provides the best compression
671         ratio by default, which is usually what is desired, at a cost of some
672         speed.
673
674         `wimlib-imagex' now supports being invoked as wimCOMMAND, where COMMAND
675         is the command as in `wimlib-imagex COMMAND'; for example, it can be
676         invoked as `wimapply' as an alternative to `wimlib-imagex apply'.  The
677         appropriate hard links are created in UNIX installations of
678         `wimlib-imagex', while for the Windows distribution of `wimlib-imagex',
679         batch files that emulate this behavior are generated.
680
681         Security descriptors are now extracted correctly on Windows.
682
683         Fixed archiving DOS names in NTFS-3g capture mode.
684
685         The extraction code has been rewritten and it will now be easier to
686         support new features on all supported backends (currently Win32, UNIX,
687         and NTFS-3g).  For example, hard-linked extraction mode (--hardlink) is
688         now supported on all backends, not just UNIX.
689
690         `mkwinpeimg' now supports grabbing files from the WAIK supplement rather
691         than the WAIK itself.
692
693         wimlib_global_init() now, by default, attempts to acquire additional
694         privileges on Windows, so library clients need not do this.
695
696         This update bumps the shared library version number up to 9, since it is
697         not binary compatibible with previous releases.
698
699 Version 1.4.2:
700         Fixed bug in `wimlib-imagex export' that made it impossible to export an
701         image from a WIM that is readonly at the filesystem level.
702
703         Return error code rather than segfaulting when trying to list files from
704         a non-first part of a split WIM.
705
706         Joining a WIM will now preserve the RP_FIX and READONLY flags.
707
708 Version 1.4.1:
709         On Windows, paths given to wimlib-imagex are now treated case
710         insensitively.
711
712         Improved behavior regarding invalid filenames; in particular, on
713         Windows, wimlib-imagex will, when extracting, now omit (with an option
714         to override this default) filenames differing only in case, or filenames
715         containing characters not valid on Windows.
716
717         On Windows, wimlib now supports capturing and extracting long paths
718         (longer than the so-called MAX_PATH).
719
720         On Windows, `wimlib-imagex update' now acquires proper privileges when
721         running as an Administrator.
722
723         `wimlib-imagex update' will now complain if no image is specified when
724         trying to update a multi-image WIM.
725
726         `wimlib-imagex update' now supports specifying a single update command
727         directly on the command line using the --command option.
728
729         wimlib-imagex will now choose different units for progress messages,
730         depending on the amount of data that needs to be processed.
731
732         `wimlib-imagex append' will now generate a unique WIM image name if no
733         name is specified and the defaulted name already exists in the WIM.
734
735         wimlib now allows you to create unnamed WIM images, which can then only
736         be referred to by index.
737
738         wimlib now allows you to explicitly declare you want write access to a
739         WIM by providing the WIMLIB_OPEN_FLAG_WRITE_ACCESS flag to
740         wimlib_open_wim().
741
742         wimlib now respects the WIM_HDR_FLAG_READONLY flag when set in the WIM
743         header.
744
745         Progress callbacks have been added to wimlib's wimlib_update_image()
746         function.
747
748         Added wimlib_get_wim_info(), wimlib_set_wim_info(),
749         wimlib_iterate_dir_tree(), and wimlib_iterate_lookup_table() functions
750         to the library.
751
752         NTFS-3g capture now only warns about two conditions previously treated
753         as errors.
754
755         Fixed a couple issues with using wimlib-imagex on UDF filesystems on
756         Windows.
757
758         wimlib now correctly detects and returns an error when reading a WIM
759         image with a cyclic directory structure.  (Fun fact: such a WIM will
760         crash Microsoft's software.)
761
762 Version 1.4.0:
763         Added new "extract" and "update" subcommands to wimlib-imagex, along
764         with associated APIs in the library.  These commands are intended mainly
765         for Windows use but can be used on UNIX as well.
766
767         Many documentation improvements.
768
769         Fixed a bug in the Windows build where relative symbolic links were not
770         captured in reparse-point fixup mode.
771
772         Fixed a bug in the Windows build where file handles were left open to
773         the WIM file, causing `wimlib_imagex optimize' to fail in some cases.
774
775         Fixed a bug in the Windows build of wimlib-imagex where globbing
776         split-WIM parts could cause the program to crash.
777
778         Fixed a bug where the creation time of WIM images would be shown instead
779         of the last modification time.
780
781         With the Windows build it is now possible to restore a WIM containing
782         symbolic links as a non-Administrator; however you will receive warnings
783         about not being able to extract the symbolic links.
784
785 Version 1.3.3:
786         Capturing a WIM image should now be significantly faster in most cases
787         due to improved use of the operating system's cache and avoiding reading
788         files twice whenever possible.
789
790         The Windows build should now work on Windows XP.
791
792         The Windows build now supports capturing and restoring hidden,
793         compressed, sparse, and encrypted files.
794
795         The Windows build now supports capturing and applying WIM images from
796         filesystems other than NTFS (with some reduced functionality).
797
798         The Windows build now extracts short names correctly.
799
800         Added support for "reparse-point" fixups (i.e. fixing up of symbolic
801         links).  See docs for --rpfix and --norpfix flags of `wimlib-imagex
802         capture' and `wimlib-imagex apply'.
803
804         The performance of splitting and joining WIMs should be slightly
805         improved.
806
807         The LZX and XPRESS compression and decompression functions are now
808         exported from the library.
809
810 Version 1.3.2:
811         Improvements and bugfixes for the Windows build.
812
813         Added --strict-acls options.
814
815         Fixed the way that wimlib determines the order of images in the WIM.
816
817 Version 1.3.1:
818         Since wimlib can now be used on Windows, wimlib's implementation of
819         ImageX has been renamed to wimlib-imagex to avoid confusion with
820         Microsoft's implementation of ImageX, which would have the same file
821         name ("imagex.exe").  If you really don't like this you can pass the
822         --with-imagex-progname option to `configure' to choose a different name,
823         or even simply rename the binary yourself (but the former way will
824         configure the man pages to use the chosen name).
825
826         Various bugs fixed in the Windows build.  Mainly to do with capturing
827         and restoring alternate data streams correctly in weird cases, and
828         requesting the correct privileges when opening files.  Also added the
829         --noacls options to wimlib-imagex capture, append, and apply.
830
831         Windows build again: FindFirstStreamW() and FindNextStreamW() are now
832         dynamically loaded, so this may make the library compatible with Windows
833         XP (however, there may still be other problems).
834
835 Version 1.3.0:
836         Added experimental support for native Windows builds.  Binaries can be
837         downloaded from the SourceForge page.
838
839         --source-list option added to `imagex capture' and `imagex append'.
840
841         Better support for different character encodings.
842
843 Version 1.2.6:
844         Storing UNIX file owners, groups, and modes in WIM images is now
845         possible using `imagex capture' with the --unix-data flag.
846
847         Minor bug fixes and documentation fixes.
848
849 Version 1.2.5:
850         NTFS capture: Fixed capturing duplicate reparse points.
851
852         NTFS capture: Capture first unnamed stream if there are more than one
853         (print warning instead of error).
854
855         Allow multiple test cases to execute concurrently (e.g. make -j2 check).
856
857 Version 1.2.4:
858         Added --arch switch to mkwinpeimg script to support getting AMD64 WinPE
859         from the WAIK.
860
861         Update to work with ntfs-3g version 2013.1.13.
862
863 Version 1.2.3:
864         Fixed truncating file to shorter but non-zero length on read-write
865         mounted WIM image.
866
867         Various code cleanups and minor documentation fixes.
868
869 Version 1.2.2:
870         LZX and XPRESS decompression have received some additional optimizations
871         and should now be even faster.  (Although, they were already pretty
872         fast--- much faster than typical I/O speeds.)
873
874         Fixed a bug introduced in v1.2.1 that would cause a directory tree
875         containing hard links to be captured incorrectly in some cases.
876
877 Version 1.2.1:
878         By default, unmounting a read-write mounted WIM with 'imagex unmount
879         --commit' will now change the WIM in-place without needing to write the
880         entire WIM again.  Use 'imagex unmount --commit --rebuild' to get the
881         old behavior.
882
883         'imagex unmount' no longer has a hard-coded limit of 10 minutes to wait
884         for a response from the daemon servicing the mounted WIM.  Instead,
885         every second 'imagex unmount' will check if the daemon is still alive,
886         and keep waiting if so, otherwise terminate with an error.
887
888         'imagex unmount --commit' on a read-write mounted WIM will now print
889         progress information regarding the writing of new or modified streams
890         the WIM, just like when capturing or appending a WIM.
891
892         A small change has been made to XPRESS compression and it should improve
893         the compression ratio slightly.
894
895         A change was made that may improve performance slightly when applying a
896         WIM image to a NTFS volume.
897
898         Microsoft has managed to introduce even more bugs into their software,
899         and now the WIMs for Windows 8 have incorrect (too low) reference counts
900         for some streams.  This is unsafe because such streams can be removed
901         when they are in actuality still referenced in the WIM (perhaps by a
902         different image).  wimlib will now work around this problem by fixing
903         the stream reference counts.  This is only done when wimlib_delete_image() is
904         called ('imagex delete') or when wimlib_mount_image() is called with
905         WIMLIB_MOUNT_FLAG_READWRITE ('imagex mountrw').  Please note that this
906         requires reading the metadata for all images in the WIM, so this will
907         make these operations noticably slower on WIMs with multiple images.
908
909         Various other bugfixes.
910
911 Version 1.2.0:
912         Appending images to a WIM is now be done by default without re-building
913         the whole WIM.  Use the --rebuild flag to get the old behavior (which
914         was to re-build the entire WIM when a new image is appended).
915
916         A new command `imagex optimize' is now available to manually re-build a
917         WIM that has wasted space due to repeated appends.
918
919         Progress information has been improved, and now arbitrary callback
920         functions can be used to show the progress of a WIM operation.
921
922         A possible bug with changing the bootable image of a WIM was fixed.
923
924         Some advisory locking is now done to prevent two processes from
925         modifying a WIM at the same time (but only in some cases).  For example,
926         you cannot mount two images from a WIM read-write at the same time.
927
928         Some functions have been reorganized:
929                 * wimlib_mount() renamed to wimlib_mount_image().
930                 * wimlib_unmount() renamed to wimlib_unmount_image().
931                 * wimlib_overwrite_xml_and_header() removed as
932                 wimlib_overwrite() suffices now.
933                 * wimlib_apply_image_to_ntfs_volume() removed as
934                 wimlib_extract_image() suffices now.
935                 * wimlib_add_image_from_ntfs_volume() removed as
936                 * wimlib_add_image() suffices now.
937
938         Previously, the soname of libwim.so has been 0.0.0, despite many
939         interface changes.  The soname is now updated to 1.0.0 and will now be
940         updated each release.
941
942 Version 1.1.0:
943         Resources will now be compressed using multiple threads by default.
944         (This applies to `imagex capture', `imagex append', and `imagex
945         export').
946
947         Some performance improvements in mounted WIMs.
948
949         More progress information is shown when capturing a WIM.
950
951 Version 1.0.4:
952         Lots of minor fixes, code cleanups, and some documentation updates.
953         Nothing in particular is really noteworthy.
954
955 Version 1.0.3:
956         LZX and XPRESS compression improvements.
957
958         Fixed calculation of Directory Count, File Count, Total Bytes, and Hard
959         Link Bytes of the WIM.
960
961 Version 1.0.2:
962         Fixed bug when capturing NTFS file with multiple named data streams.
963
964         Internally, we are now using inode structures, even though these don't
965         appear literally in the WIM file.  This simplifies some of the code
966         (mainly for WIM mounting) and likely fixed a few problems, although it
967         needs more testing.
968
969 Version 1.0.1:
970         Fixed problem when exporting images from XPRESS to LZX compressed WIM or
971         vice versa
972
973 Version 1.0.0:
974         Enough changes to call it version 1.0.0!
975
976         Capturing a WIM directly from a NTFS volume, and applying a WIM directly
977         to a NTFS volume, is now supported.
978
979         Hard links and symbolic links have much improved support.  They are
980         supported for WIM capture, WIM application, and mounted WIMs (you can
981         even make them on read-write mounted WIMs).
982
983         Alternate data streams are now supported on mounted WIMs through an
984         xattr or a Windows-style stream interface.  Also they are supported when
985         capturing a WIM from NTFS or applying a WIM to NTFS.
986
987         Split WIMs are better supported.  You may now apply an image directly
988         from a split WIM, mount an image from a split WIM read-only, or export
989         an image from a split WIM.
990
991         Using a capture configuration file is now supported (but not fully yet).
992
993         SHA1 message digests are checked in more places, so we can make sure
994         applied and captured data is correct.
995
996         Man pages have been updated and consolidated.
997
998 Version 0.7.2:
999         Fixed segfault when unmounting read-only WIM.
1000
1001 Version 0.7.1:
1002         Support for joining and splitting WIMs.
1003         Also, security data is now preserved by default.
1004
1005 Version 0.6.3:
1006         Can now build with older gcc and system headers, like on CentOS 5.
1007
1008 Version 0.6.2:
1009         Fixed bug that made it impossible to overwrite files in read-write
1010         mount.
1011
1012 Version 0.6.1:
1013         Write byte-order mark before WIM XML data.  (imagex.exe requires this to
1014         be there.)