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