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