]> wimlib.net Git - wimlib/blobdiff - README
wimlib.h: Add section about backwards compatibility
[wimlib] / README
diff --git a/README b/README
index 71c88384c0abc57d364b72ff25d10552bdd5726a..95f990d9cf0d5a9e1c5f0ac811b8e58eade35b51 100644 (file)
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
                                   INTRODUCTION
 
-This is wimlib version 1.7.1 (August 2014).  wimlib is a C library for
+This is wimlib version 1.7.2-BETA (August 2014).  wimlib is a C library for
 creating, modifying, extracting, and mounting files in the Windows Imaging
 Format (WIM files).  wimlib and its command-line frontend 'wimlib-imagex'
 provide a free and cross-platform alternative to Microsoft's WIMGAPI, ImageX,
@@ -78,18 +78,18 @@ create the file.  When applicable, the results with the equivalent Microsoft
 implementation in WIMGAPI is included.
 
   =============================================================================
-  | Compression            ||  wimlib (v1.7.1)       |  WIMGAPI (Windows 8.1) |
+  | Compression            ||  wimlib (v1.7.2-BETA)  |  WIMGAPI (Windows 8.1) |
   =============================================================================
-  | None             [1]   ||  361,182,560 in 3.7s   |  361,183,674 in 4.4s   |
-  | XPRESS           [2]   ||  138,349,798 in 5.8s   |  140,416,657 in 6.8s   |
-  | XPRESS (slow)    [3]   ||  135,234,072 in 19.5s  |  N/A                   |
-  | LZX (quick)      [4]   ||  131,816,279 in 6.7s   |  N/A                   |
-  | LZX (normal)     [5]   ||  126,808,347 in 28.3s  |  127,259,566 in 31.4s  |
-  | LZX (slow)       [6]   ||  126,199,523 in 61.4s  |  N/A                   |
-  | LZMS (non-solid) [7]   ||  122,083,126 in 30.4s  |  N/A                   |
-  | LZMS (solid)     [8]   ||  93,752,206  in 84.3s  |  88,742,238 in 156.1s  |
-  | "WIMBoot"        [9]   ||  167,039,787 in 7.6s   |  169,051,718 in 14.9s  |
-  | "WIMBoot" (slow) [10]  ||  165,141,503 in 15.8s  |  N/A                   |
+  | None             [1]   ||  361,404,682 in 3.4s   |  361,364,994 in 4.2s   |
+  | XPRESS           [2]   ||  138,398,747 in 4.2s   |  140,468,002 in 5.1s   |
+  | XPRESS (slow)    [3]   ||  135,284,950 in 10.3s  |  N/A                   |
+  | LZX (quick)      [4]   ||  131,861,913 in 4.7s   |  N/A                   |
+  | LZX (normal)     [5]   ||  126,855,247 in 14.9s  |  127,301,774 in 18.2s  |
+  | LZX (slow)       [6]   ||  126,245,561 in 32.1s  |  N/A                   |
+  | LZMS (non-solid) [7]   ||  122,126,328 in 16.4s  |  N/A                   |
+  | LZMS (solid)     [8]   ||  93,795,440  in 47.4s  |  88,789,426 in 96.8s   |
+  | "WIMBoot"        [9]   ||  167,121,495 in 5.3s   |  169,124,968 in 9.3s   |
+  | "WIMBoot" (slow) [10]  ||  165,219,818 in 9.4s   |  N/A                   |
   =============================================================================
 
 Notes:
@@ -133,7 +133,7 @@ Testing environment:
 
     - 64 bit binaries
     - Windows 8.1 virtual machine running on Linux with VT-x
-    - 2 CPUs and 2 GiB memory given to virtual machine
+    - 4 CPUs and 4 GiB memory given to virtual machine
     - SSD-backed virtual disk
     - All tests done with page cache warmed
 
@@ -232,31 +232,34 @@ downloaded the Windows binary distribution of wimlib and wimlib-imagex then all
 dependencies were already included and this section is irrelevant.
 
 * libxml2 (required)
-       This is a commonly used free library to read and write XML files.  You
-       likely already have it installed as a dependency for some other program.
-       For more information see http://xmlsoft.org/.
-
-* libfuse (optional but highly recommended)
-       Unless configured with --without-fuse, wimlib requires a non-ancient
-       version of libfuse to be installed.  Most Linux distributions already
-       include this, but make sure you have the libfuse package installed, and
-       also libfuse-dev if your distribution distributes header files
-       separately.  FUSE also requires a kernel module.  If the kernel module
-       is available it will automatically be loaded if you try to mount a WIM
-       file.  For more information see http://fuse.sourceforge.net/.  FUSE is
-       also available for FreeBSD.
-
-* libntfs-3g (optional but highly recommended)
-       Unless configured with --without-ntfs-3g, wimlib requires the library
-       and headers for libntfs-3g version 2011-4-12 or later to be installed.
-       Versions dated 2010-3-6 and earlier do not work because they are missing
-       the header xattrs.h (and the file xattrs.c, which contains functions we
-       need).  libntfs-3g version 2013-1-13 is compatible only with wimlib
-       1.2.4 and later.
+       This is a commonly used free library to read and write XML documents.
+       Almost all Linux distributions should include this; however, you may
+       need to install the header files, which might be in a package named
+       "libxml2-dev" or similar.  For more information see http://xmlsoft.org/.
+
+* libfuse (optional but recommended)
+       Unless configured --without-fuse, wimlib requires a non-ancient version
+       of libfuse.  Most Linux distributions already include this, but make
+       sure you have the libfuse package installed, and also libfuse-dev if
+       your distribution distributes header files separately.  FUSE also
+       requires a kernel module.  If the kernel module is available it should
+       automatically be loaded if you try to mount a WIM image.  For more
+       information see http://fuse.sourceforge.net/.
+
+* libattr (optional but recommended)
+       Unless configured --without-fuse, wimlib also requires libattr.  Almost
+       all Linux distributions should include this; however, you may need to
+       install the header files, which might be in a package named "attr-dev",
+       "libattr1-dev", or similar.
+
+* libntfs-3g (optional but recommended)
+       Unless configured --without-ntfs-3g, wimlib requires the library and
+       headers for libntfs-3g version 2011-4-12 or later to be installed.
 
 * OpenSSL / libcrypto (optional)
-       wimlib can use the SHA1 message digest code from OpenSSL instead of
-       compiling in yet another SHA1 implementation. (See LICENSE section.)
+       wimlib can use the SHA-1 message digest implementation from libcrypto
+       (usually provided by OpenSSL) instead of compiling in yet another SHA-1
+       implementation.
 
 * cdrkit (optional)
 * mtools (optional)
@@ -279,44 +282,43 @@ This section documents the most important options that may be passed to the
 --without-ntfs-3g
        If libntfs-3g is not available or is not version 2011-4-12 or later,
        wimlib can be built without it, in which case it will not be possible to
-       apply or capture images directly to/from NTFS volumes.
+       capture or apply WIM images directly from/to NTFS volumes.
 
---without-fuse
-       If libfuse or the FUSE kernel module is not available, wimlib can be
-       compiled with --without-fuse.  This will remove the ability to mount and
-       unmount WIM files.
-
---without-libcrypto
-       Build in functions for SHA1 rather than using external SHA1 functions
-       from libcrypto (part of OpenSSL).  The default is to use libcrypto if it
-       is found on the system.
+       The default is --with-ntfs-3g when building for any UNIX-like system,
+       and --without-ntfs-3g when building for Windows.
 
---disable-multithreaded-compression
-       By default, data will be compressed using multiple threads when writing
-       a WIM, unless only 1 processor is detected.  Specify this option to
-       disable support for this.
+--without-fuse
+       The --without-fuse option completely disables support for mounting WIM
+       images.  This removes dependencies on libfuse, librt, and libattr.  The
+       wimmount, wimmountrw, and wimunmount commands will not work.
 
---enable-ssse3-sha1
-       Use a very fast assembly language implementation of SHA1 from Intel.
-       Only use this if the build target supports the SSSE3 instructions.
+       The default is --with-fuse when building for Linux, and --without-fuse
+       otherwise.
 
---disable-error-messages
-       Save some space by removing all error messages from the library.
+--without-libcrypto
+       Build in functions for SHA-1 rather than using external SHA-1 functions
+       from libcrypto (usually provided by OpenSSL).
 
---disable-assertions
-       Remove assertions included by default.
+       The default is to use libcrypto if it is found on your system.
 
                                   PORTABILITY
 
 wimlib works on both UNIX-like systems (Linux, Mac OS X, FreeBSD, etc.) and
 Windows (XP and later).
 
-On UNIX-like systems other than Linux, you must compile --without-fuse.
-In addition, --without-ntfs-3g and --without-libcrypto are needed if the
-corresponding libraries are not available on your system.
+As much code as possible is shared among all supported platforms, but there
+necessarily are some differences in what features are supported on each platform
+and how they are implemented.  Most notable is that file tree scanning and
+extraction are implemented separately for Windows, UNIX, and UNIX (NTFS-3g
+mode), to ensure a fast and feature-rich implementation of each platform/mode.
+
+wimlib is mainly used on x86 and x86_64 CPUs, but it should also work on a
+number of other GCC-supported 32-bit or 64-bit architectures.  No assumptions
+are made about endianness, but some code assumes that unaligned memory accesses
+are supported and relatively efficient.
 
-wimlib works on x86 and x86_64, but it should work on any other GCC-supported
-32-bit or 64-bit architecture.
+Currently, gcc and clang are the only supported compilers.  A few nonstandard
+extensions are used in the code.
 
                                    REFERENCES