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