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