]>
Commit | Line | Data |
---|---|---|
5d018dc0 | 1 | |
366e4360 LC |
2 | XZ Utils To-Do List |
3 | =================== | |
5d018dc0 | 4 | |
366e4360 LC |
5 | Known bugs |
6 | ---------- | |
5d018dc0 | 7 | |
366e4360 | 8 | The test suite is too incomplete. |
5d018dc0 | 9 | |
ee5ddb8b | 10 | If the memory usage limit is less than about 13 MiB, xz is unable to |
366e4360 LC |
11 | automatically scale down the compression settings enough even though |
12 | it would be possible by switching from BT2/BT3/BT4 match finder to | |
13 | HC3/HC4. | |
5d018dc0 | 14 | |
35b29e44 LC |
15 | XZ Utils compress some files significantly worse than LZMA Utils. |
16 | This is due to faster compression presets used by XZ Utils, and | |
ce34ec4f LC |
17 | can often be worked around by using "xz --extreme". With some files |
18 | --extreme isn't enough though: it's most likely with files that | |
19 | compress extremely well, so going from compression ratio of 0.003 | |
20 | to 0.004 means big relative increase in the compressed file size. | |
35b29e44 | 21 | |
5f6dddc6 LC |
22 | xz doesn't quote unprintable characters when it displays file names |
23 | given on the command line. | |
24 | ||
ee5ddb8b | 25 | tuklib_exit() doesn't block signals => EINTR is possible. |
5d018dc0 | 26 | |
bd9cc179 LC |
27 | If liblzma has created threads and fork() gets called, liblzma |
28 | code will break in the child process unless it calls exec() and | |
29 | doesn't touch liblzma. | |
30 | ||
5d018dc0 | 31 | |
ee5ddb8b LC |
32 | Missing features |
33 | ---------------- | |
5d018dc0 | 34 | |
642f856b LC |
35 | Add support for storing metadata in .xz files. A preliminary |
36 | idea is to create a new Stream type for metadata. When both | |
37 | metadata and data are wanted in the same .xz file, two or more | |
38 | Streams would be concatenated. | |
39 | ||
40 | The state stored in lzma_stream should be cloneable, which would | |
41 | be mostly useful when using a preset dictionary in LZMA2, but | |
42 | it may have other uses too. Compare to deflateCopy() in zlib. | |
43 | ||
bd9cc179 LC |
44 | Support LZMA_FINISH in raw decoder to indicate end of LZMA1 and |
45 | other streams that don't have an end of payload marker. | |
46 | ||
47 | Adjust dictionary size when the input file size is known. | |
48 | Maybe do this only if an option is given. | |
49 | ||
366e4360 LC |
50 | xz doesn't support copying extended attributes, access control |
51 | lists etc. from source to target file. | |
5d018dc0 | 52 | |
14e6ad8c LC |
53 | Multithreaded compression: |
54 | - Reduce memory usage of the current method. | |
55 | - Implement threaded match finders. | |
56 | - Implement pigz-style threading in LZMA2. | |
5d018dc0 | 57 | |
366e4360 LC |
58 | Buffer-to-buffer coding could use less RAM (especially when |
59 | decompressing LZMA1 or LZMA2). | |
5d018dc0 | 60 | |
ce34ec4f LC |
61 | I/O library is not implemented (similar to gzopen() in zlib). |
62 | It will be a separate library that supports uncompressed, .gz, | |
63 | .bz2, .lzma, and .xz files. | |
5d018dc0 | 64 | |
14e6ad8c LC |
65 | Support changing lzma_options_lzma.mode with lzma_filters_update(). |
66 | ||
67 | Support LZMA_FULL_FLUSH for lzma_stream_decoder() to stop at | |
68 | Block and Stream boundaries. | |
69 | ||
ee5ddb8b LC |
70 | lzma_strerror() to convert lzma_ret to human readable form? |
71 | This is tricky, because the same error codes are used with | |
ce34ec4f | 72 | slightly different meanings, and this cannot be fixed anymore. |
ee5ddb8b | 73 | |
642f856b LC |
74 | Make it possible to adjust LZMA2 options in the middle of a Block |
75 | so that the encoding speed vs. compression ratio can be optimized | |
76 | when the compressed data is streamed over network. | |
77 | ||
78 | Improved BCJ filters. The current filters are small but they aren't | |
79 | so great when compressing binary packages that contain various file | |
80 | types. Specifically, they make things worse if there are static | |
81 | libraries or Linux kernel modules. The filtering could also be | |
82 | more effective (without getting overly complex), for example, | |
83 | streamable variant BCJ2 from 7-Zip could be implemented. | |
84 | ||
85 | Filter that autodetects specific data types in the input stream | |
86 | and applies appropriate filters for the corrects parts of the input. | |
87 | Perhaps combine this with the BCJ filter improvement point above. | |
88 | ||
89 | Long-range LZ77 method as a separate filter or as a new LZMA2 | |
90 | match finder. | |
91 | ||
5d018dc0 LC |
92 | |
93 | Documentation | |
366e4360 | 94 | ------------- |
5d018dc0 | 95 | |
642f856b | 96 | More tutorial programs are needed for liblzma. |
5d018dc0 | 97 | |
366e4360 | 98 | Document the LZMA1 and LZMA2 algorithms. |
5d018dc0 | 99 | |
642f856b LC |
100 | |
101 | Miscellaneous | |
102 | ------------ | |
103 | ||
104 | Try to get the media type for .xz registered at IANA. | |
105 |