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