1 1.1 joerg 2 1.1 joerg XZ Utils To-Do List 3 1.1 joerg =================== 4 1.1 joerg 5 1.1 joerg Known bugs 6 1.1 joerg ---------- 7 1.1 joerg 8 1.1.1.3 christos The test suite is incomplete. 9 1.1 joerg 10 1.1 joerg XZ Utils compress some files significantly worse than LZMA Utils. 11 1.1 joerg This is due to faster compression presets used by XZ Utils, and 12 1.1 joerg can often be worked around by using "xz --extreme". With some files 13 1.1 joerg --extreme isn't enough though: it's most likely with files that 14 1.1 joerg compress extremely well, so going from compression ratio of 0.003 15 1.1 joerg to 0.004 means big relative increase in the compressed file size. 16 1.1 joerg 17 1.1 joerg tuklib_exit() doesn't block signals => EINTR is possible. 18 1.1 joerg 19 1.1.1.2 christos If liblzma has created threads and fork() gets called, liblzma 20 1.1.1.2 christos code will break in the child process unless it calls exec() and 21 1.1.1.2 christos doesn't touch liblzma. 22 1.1.1.2 christos 23 1.1 joerg 24 1.1 joerg Missing features 25 1.1 joerg ---------------- 26 1.1 joerg 27 1.1.1.2 christos Add support for storing metadata in .xz files. A preliminary 28 1.1.1.2 christos idea is to create a new Stream type for metadata. When both 29 1.1.1.2 christos metadata and data are wanted in the same .xz file, two or more 30 1.1.1.2 christos Streams would be concatenated. 31 1.1.1.2 christos 32 1.1.1.2 christos The state stored in lzma_stream should be cloneable, which would 33 1.1.1.2 christos be mostly useful when using a preset dictionary in LZMA2, but 34 1.1.1.2 christos it may have other uses too. Compare to deflateCopy() in zlib. 35 1.1.1.2 christos 36 1.1.1.2 christos Adjust dictionary size when the input file size is known. 37 1.1.1.2 christos Maybe do this only if an option is given. 38 1.1.1.2 christos 39 1.1 joerg xz doesn't support copying extended attributes, access control 40 1.1 joerg lists etc. from source to target file. 41 1.1 joerg 42 1.1.1.2 christos Multithreaded compression: 43 1.1.1.2 christos - Reduce memory usage of the current method. 44 1.1.1.2 christos - Implement threaded match finders. 45 1.1.1.2 christos - Implement pigz-style threading in LZMA2. 46 1.1 joerg 47 1.1 joerg Buffer-to-buffer coding could use less RAM (especially when 48 1.1 joerg decompressing LZMA1 or LZMA2). 49 1.1 joerg 50 1.1 joerg I/O library is not implemented (similar to gzopen() in zlib). 51 1.1 joerg It will be a separate library that supports uncompressed, .gz, 52 1.1 joerg .bz2, .lzma, and .xz files. 53 1.1 joerg 54 1.1.1.2 christos Support changing lzma_options_lzma.mode with lzma_filters_update(). 55 1.1.1.2 christos 56 1.1.1.2 christos Support LZMA_FULL_FLUSH for lzma_stream_decoder() to stop at 57 1.1.1.2 christos Block and Stream boundaries. 58 1.1.1.2 christos 59 1.1.1.3 christos Error codes from lzma_code() aren't very specific. A more detailed 60 1.1.1.3 christos error message (string) could be provided too. It could be returned 61 1.1.1.3 christos by a new function or use a currently-reserved member of lzma_stream. 62 1.1 joerg 63 1.1.1.2 christos Make it possible to adjust LZMA2 options in the middle of a Block 64 1.1.1.2 christos so that the encoding speed vs. compression ratio can be optimized 65 1.1.1.2 christos when the compressed data is streamed over network. 66 1.1.1.2 christos 67 1.1.1.2 christos Improved BCJ filters. The current filters are small but they aren't 68 1.1.1.2 christos so great when compressing binary packages that contain various file 69 1.1.1.2 christos types. Specifically, they make things worse if there are static 70 1.1.1.2 christos libraries or Linux kernel modules. The filtering could also be 71 1.1.1.2 christos more effective (without getting overly complex), for example, 72 1.1.1.2 christos streamable variant BCJ2 from 7-Zip could be implemented. 73 1.1.1.2 christos 74 1.1.1.2 christos Filter that autodetects specific data types in the input stream 75 1.1.1.2 christos and applies appropriate filters for the corrects parts of the input. 76 1.1.1.2 christos Perhaps combine this with the BCJ filter improvement point above. 77 1.1.1.2 christos 78 1.1.1.2 christos Long-range LZ77 method as a separate filter or as a new LZMA2 79 1.1.1.2 christos match finder. 80 1.1.1.2 christos 81 1.1 joerg 82 1.1 joerg Documentation 83 1.1 joerg ------------- 84 1.1 joerg 85 1.1.1.2 christos More tutorial programs are needed for liblzma. 86 1.1 joerg 87 1.1 joerg Document the LZMA1 and LZMA2 algorithms. 88 1.1 joerg 89