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