1207753Smm 2207753SmmXZ Utils To-Do List 3207753Smm=================== 4207753Smm 5207753SmmKnown bugs 6207753Smm---------- 7207753Smm 8207753Smm The test suite is too incomplete. 9207753Smm 10207753Smm If the memory usage limit is less than about 13 MiB, xz is unable to 11207753Smm automatically scale down the compression settings enough even though 12207753Smm it would be possible by switching from BT2/BT3/BT4 match finder to 13207753Smm HC3/HC4. 14207753Smm 15207753Smm XZ Utils compress some files significantly worse than LZMA Utils. 16207753Smm This is due to faster compression presets used by XZ Utils, and 17215187Smm can often be worked around by using "xz --extreme". With some files 18215187Smm --extreme isn't enough though: it's most likely with files that 19215187Smm compress extremely well, so going from compression ratio of 0.003 20215187Smm to 0.004 means big relative increase in the compressed file size. 21207753Smm 22207753Smm xz doesn't quote unprintable characters when it displays file names 23207753Smm given on the command line. 24207753Smm 25207753Smm tuklib_exit() doesn't block signals => EINTR is possible. 26207753Smm 27215187Smm SIGTSTP is not handled. If xz is stopped, the estimated remaining 28215187Smm time and calculated (de)compression speed won't make sense in the 29215187Smm progress indicator (xz --verbose). 30207753Smm 31292588Sdelphij If liblzma has created threads and fork() gets called, liblzma 32292588Sdelphij code will break in the child process unless it calls exec() and 33292588Sdelphij doesn't touch liblzma. 34215187Smm 35292588Sdelphij 36207753SmmMissing features 37207753Smm---------------- 38207753Smm 39292588Sdelphij Add support for storing metadata in .xz files. A preliminary 40292588Sdelphij idea is to create a new Stream type for metadata. When both 41292588Sdelphij metadata and data are wanted in the same .xz file, two or more 42292588Sdelphij Streams would be concatenated. 43292588Sdelphij 44292588Sdelphij The state stored in lzma_stream should be cloneable, which would 45292588Sdelphij be mostly useful when using a preset dictionary in LZMA2, but 46292588Sdelphij it may have other uses too. Compare to deflateCopy() in zlib. 47292588Sdelphij 48292588Sdelphij Support LZMA_FINISH in raw decoder to indicate end of LZMA1 and 49292588Sdelphij other streams that don't have an end of payload marker. 50292588Sdelphij 51292588Sdelphij Adjust dictionary size when the input file size is known. 52292588Sdelphij Maybe do this only if an option is given. 53292588Sdelphij 54207753Smm xz doesn't support copying extended attributes, access control 55207753Smm lists etc. from source to target file. 56207753Smm 57292588Sdelphij Multithreaded compression: 58292588Sdelphij - Reduce memory usage of the current method. 59292588Sdelphij - Implement threaded match finders. 60292588Sdelphij - Implement pigz-style threading in LZMA2. 61207753Smm 62207753Smm Multithreaded decompression 63207753Smm 64207753Smm Buffer-to-buffer coding could use less RAM (especially when 65207753Smm decompressing LZMA1 or LZMA2). 66207753Smm 67215187Smm I/O library is not implemented (similar to gzopen() in zlib). 68215187Smm It will be a separate library that supports uncompressed, .gz, 69215187Smm .bz2, .lzma, and .xz files. 70207753Smm 71292588Sdelphij Support changing lzma_options_lzma.mode with lzma_filters_update(). 72292588Sdelphij 73292588Sdelphij Support LZMA_FULL_FLUSH for lzma_stream_decoder() to stop at 74292588Sdelphij Block and Stream boundaries. 75292588Sdelphij 76207753Smm lzma_strerror() to convert lzma_ret to human readable form? 77207753Smm This is tricky, because the same error codes are used with 78215187Smm slightly different meanings, and this cannot be fixed anymore. 79207753Smm 80292588Sdelphij Make it possible to adjust LZMA2 options in the middle of a Block 81292588Sdelphij so that the encoding speed vs. compression ratio can be optimized 82292588Sdelphij when the compressed data is streamed over network. 83207753Smm 84292588Sdelphij Improved BCJ filters. The current filters are small but they aren't 85292588Sdelphij so great when compressing binary packages that contain various file 86292588Sdelphij types. Specifically, they make things worse if there are static 87292588Sdelphij libraries or Linux kernel modules. The filtering could also be 88292588Sdelphij more effective (without getting overly complex), for example, 89292588Sdelphij streamable variant BCJ2 from 7-Zip could be implemented. 90292588Sdelphij 91292588Sdelphij Filter that autodetects specific data types in the input stream 92292588Sdelphij and applies appropriate filters for the corrects parts of the input. 93292588Sdelphij Perhaps combine this with the BCJ filter improvement point above. 94292588Sdelphij 95292588Sdelphij Long-range LZ77 method as a separate filter or as a new LZMA2 96292588Sdelphij match finder. 97292588Sdelphij 98292588Sdelphij 99207753SmmDocumentation 100207753Smm------------- 101207753Smm 102292588Sdelphij More tutorial programs are needed for liblzma. 103207753Smm 104207753Smm Document the LZMA1 and LZMA2 algorithms. 105207753Smm 106292588Sdelphij 107292588SdelphijMiscellaneous 108292588Sdelphij------------ 109292588Sdelphij 110292588Sdelphij Try to get the media type for .xz registered at IANA. 111292588Sdelphij 112