Update hyperlinks Use https whenever possible, and replace some outdated links.
compiler.h: remove _may_alias_attribute This abstraction layer serves no purpose. Just use __attribute__((may_alias)) directly.
Consistently use _WIN32 instead of __WIN32__ _WIN32 works with all compilers, while __WIN32__ is MinGW-specific. This project used __WIN32__ in files that only support MinGW, and _WIN32 in other files such as the library header and example programs. One place even used WIN32. Avoid this unnecessary complication by just always using _WIN32.
Rename sha1_buffer() to simply sha1()
Remove some unnecessary configure options Remove support for the following options which aren't really useful and probably aren't being used by anyone: * --disable-assertions * --disable-error-messages * --disable-multithreaded-compression
Add support for a data recovery mode Add support for extracting file data even if it is corrupted (i.e. if its hash doesn't match or some of its chunks can't be decompressed). This isn't recommended for general use, but it could be useful for recovering data from a corrupted WIM archive.
Fix slow progress updating for wimsplit wimsplit only prints a progress message when starting each WIM part. That could be very infrequently since each part could be gigabytes. Fix it to update the progress regularly as data is written, like the other wimlib-imagex commands do. This required changing the library to report WIMLIB_PROGRESS_MSG_WRITE_STREAMS messages from wimlib_split() and include the completed compressed size in them. Reported at https://www.reddit.com/r/pcmasterrace/comments/hagu4k/wimlibimagex_split_stuck_at_0
Improve explanation for pipable WIM pre-write checksumming
Improve random number generation wimlib used rand() to generate random numbers, e.g. for GUIDs. This was neither cryptographically secure nor thread-safe. Use getrandom(), /dev/urandom, or RtlGenRandom() instead.
resource: pass blob and offset to consume_chunk This makes it so that users don't need to keep track of the current blob and offset themselves.
Capitalize "Windows Overlay Filesystem" consistently
write.c: add error messages around all read and write failures
write.c: warn if WIM file cannot be truncated Somewhat pointless since this is already an error path, but this avoids a gcc warning about ftruncate()'s return value not being used.
Add experimental support for Windows VSS
write.c: let compaction work on untruncatable files
write.c: correctly handle no existing blob table during overwrite
write.c: ensure that 'old_integrity_table' is always freed
write.c: don't write integrity table if there is no blob table The following commands would produce an invalid integrity table: wimcapture empty empty.wim wimdelete delete empty.wim 1 --check
write.c: send first WRITE_STREAMS message before writing raw copy blobs
write.c: compaction bug fix