181ad8388SMartin Matuska 281ad8388SMartin MatuskaXZ Utils To-Do List 381ad8388SMartin Matuska=================== 481ad8388SMartin Matuska 581ad8388SMartin MatuskaKnown bugs 681ad8388SMartin Matuska---------- 781ad8388SMartin Matuska 8*128836d3SXin LI The test suite is incomplete. 981ad8388SMartin Matuska 1081ad8388SMartin Matuska XZ Utils compress some files significantly worse than LZMA Utils. 1181ad8388SMartin Matuska This is due to faster compression presets used by XZ Utils, and 12542aef48SMartin Matuska can often be worked around by using "xz --extreme". With some files 13542aef48SMartin Matuska --extreme isn't enough though: it's most likely with files that 14542aef48SMartin Matuska compress extremely well, so going from compression ratio of 0.003 15542aef48SMartin Matuska to 0.004 means big relative increase in the compressed file size. 1681ad8388SMartin Matuska 1781ad8388SMartin Matuska tuklib_exit() doesn't block signals => EINTR is possible. 1881ad8388SMartin Matuska 1953200025SRui Paulo If liblzma has created threads and fork() gets called, liblzma 2053200025SRui Paulo code will break in the child process unless it calls exec() and 2153200025SRui Paulo doesn't touch liblzma. 2253200025SRui Paulo 2381ad8388SMartin Matuska 2481ad8388SMartin MatuskaMissing features 2581ad8388SMartin Matuska---------------- 2681ad8388SMartin Matuska 2753200025SRui Paulo Add support for storing metadata in .xz files. A preliminary 2853200025SRui Paulo idea is to create a new Stream type for metadata. When both 2953200025SRui Paulo metadata and data are wanted in the same .xz file, two or more 3053200025SRui Paulo Streams would be concatenated. 3153200025SRui Paulo 3253200025SRui Paulo The state stored in lzma_stream should be cloneable, which would 3353200025SRui Paulo be mostly useful when using a preset dictionary in LZMA2, but 3453200025SRui Paulo it may have other uses too. Compare to deflateCopy() in zlib. 3553200025SRui Paulo 3653200025SRui Paulo Adjust dictionary size when the input file size is known. 3753200025SRui Paulo Maybe do this only if an option is given. 3853200025SRui Paulo 3981ad8388SMartin Matuska xz doesn't support copying extended attributes, access control 4081ad8388SMartin Matuska lists etc. from source to target file. 4181ad8388SMartin Matuska 4253200025SRui Paulo Multithreaded compression: 4353200025SRui Paulo - Reduce memory usage of the current method. 4453200025SRui Paulo - Implement threaded match finders. 4553200025SRui Paulo - Implement pigz-style threading in LZMA2. 4681ad8388SMartin Matuska 4781ad8388SMartin Matuska Buffer-to-buffer coding could use less RAM (especially when 4881ad8388SMartin Matuska decompressing LZMA1 or LZMA2). 4981ad8388SMartin Matuska 50542aef48SMartin Matuska I/O library is not implemented (similar to gzopen() in zlib). 51542aef48SMartin Matuska It will be a separate library that supports uncompressed, .gz, 52542aef48SMartin Matuska .bz2, .lzma, and .xz files. 5381ad8388SMartin Matuska 5453200025SRui Paulo Support changing lzma_options_lzma.mode with lzma_filters_update(). 5553200025SRui Paulo 5653200025SRui Paulo Support LZMA_FULL_FLUSH for lzma_stream_decoder() to stop at 5753200025SRui Paulo Block and Stream boundaries. 5853200025SRui Paulo 59*128836d3SXin LI Error codes from lzma_code() aren't very specific. A more detailed 60*128836d3SXin LI error message (string) could be provided too. It could be returned 61*128836d3SXin LI by a new function or use a currently-reserved member of lzma_stream. 6281ad8388SMartin Matuska 6353200025SRui Paulo Make it possible to adjust LZMA2 options in the middle of a Block 6453200025SRui Paulo so that the encoding speed vs. compression ratio can be optimized 6553200025SRui Paulo when the compressed data is streamed over network. 6653200025SRui Paulo 6753200025SRui Paulo Improved BCJ filters. The current filters are small but they aren't 6853200025SRui Paulo so great when compressing binary packages that contain various file 6953200025SRui Paulo types. Specifically, they make things worse if there are static 7053200025SRui Paulo libraries or Linux kernel modules. The filtering could also be 7153200025SRui Paulo more effective (without getting overly complex), for example, 7253200025SRui Paulo streamable variant BCJ2 from 7-Zip could be implemented. 7353200025SRui Paulo 7453200025SRui Paulo Filter that autodetects specific data types in the input stream 7553200025SRui Paulo and applies appropriate filters for the corrects parts of the input. 7653200025SRui Paulo Perhaps combine this with the BCJ filter improvement point above. 7753200025SRui Paulo 7853200025SRui Paulo Long-range LZ77 method as a separate filter or as a new LZMA2 7953200025SRui Paulo match finder. 8053200025SRui Paulo 8181ad8388SMartin Matuska 8281ad8388SMartin MatuskaDocumentation 8381ad8388SMartin Matuska------------- 8481ad8388SMartin Matuska 8553200025SRui Paulo More tutorial programs are needed for liblzma. 8681ad8388SMartin Matuska 8781ad8388SMartin Matuska Document the LZMA1 and LZMA2 algorithms. 8881ad8388SMartin Matuska 89