| 1 | TODO file for gzip. | 
|---|
| 2 |  | 
|---|
| 3 | Some of the planned features include: | 
|---|
| 4 |  | 
|---|
| 5 | - Remove some of the old porting cruft, since we no longer support | 
|---|
| 6 | PRIMOS etc. any more. | 
|---|
| 7 |  | 
|---|
| 8 | - Separate out the shell scripts like gzexe into a new little package; | 
|---|
| 9 | these scripts are less used and less reliable and should be optional. | 
|---|
| 10 |  | 
|---|
| 11 | - Internationalize by using gettext and setlocale. | 
|---|
| 12 |  | 
|---|
| 13 | - Structure the sources so that the compression and decompression code | 
|---|
| 14 | form a library usable by any program, and write both gzip and zip on | 
|---|
| 15 | top of this library. This would ideally be a reentrant (thread safe) | 
|---|
| 16 | library, but this would degrade performance. In the meantime, you can | 
|---|
| 17 | look at the sample program zread.c. | 
|---|
| 18 |  | 
|---|
| 19 | The library should have one mode in which compressed data is sent | 
|---|
| 20 | as soon as input is available, instead of waiting for complete | 
|---|
| 21 | blocks. This can be useful for sending compressed data to/from interactive | 
|---|
| 22 | programs. | 
|---|
| 23 |  | 
|---|
| 24 | - Make it convenient to define alternative user interfaces (in | 
|---|
| 25 | particular for windowing environments). | 
|---|
| 26 |  | 
|---|
| 27 | - Support in-memory compression for arbitrarily large amounts of data | 
|---|
| 28 | (zip currently supports in-memory compression only for a single buffer.) | 
|---|
| 29 |  | 
|---|
| 30 | - Map files in memory when possible, this is generally much faster | 
|---|
| 31 | than read/write. (zip currently maps entire files at once, this | 
|---|
| 32 | should be done in chunks to reduce memory usage.) | 
|---|
| 33 |  | 
|---|
| 34 | - Add a super-fast compression method, suitable for implementing | 
|---|
| 35 | file systems with transparent compression. One problem is that the | 
|---|
| 36 | best candidate (lzrw1) is patented twice (Waterworth 4,701,745 | 
|---|
| 37 | and Gibson & Graybill 5,049,881). The lzrw series of algorithms | 
|---|
| 38 | are available by ftp in ftp.adelaide.edu.au:/pub/compression/lzrw*. | 
|---|
| 39 |  | 
|---|
| 40 | - Add a super-tight (but slow) compression method, suitable for long | 
|---|
| 41 | term archives.  One problem is that the best versions of arithmetic | 
|---|
| 42 | coding are patented (4,286,256 4,295,125 4,463,342 4,467,317 | 
|---|
| 43 | 4,633,490 4,652,856 4,891,643 4,905,297 4,935,882 4,973,961 | 
|---|
| 44 | 5,023,611 5,025,258). | 
|---|
| 45 |  | 
|---|
| 46 | Note: I will introduce new compression methods only if they are | 
|---|
| 47 | significantly better in either speed or compression ratio than the | 
|---|
| 48 | existing method(s). So the total number of different methods should | 
|---|
| 49 | reasonably not exceed 3. (The current 9 compression levels are just | 
|---|
| 50 | tuning parameters for a single method, deflation.) | 
|---|
| 51 |  | 
|---|
| 52 | - Add optional error correction. One problem is that the current version | 
|---|
| 53 | of ecc cannot recover from inserted or missing bytes. It would be | 
|---|
| 54 | nice to recover from the most common error (transfer of a binary | 
|---|
| 55 | file in ascii mode). | 
|---|
| 56 |  | 
|---|
| 57 | - Add a block size (-b) option to improve error recovery in case of | 
|---|
| 58 | failure of a complete sector. Each block could be extracted | 
|---|
| 59 | independently, but this reduces the compression ratio. | 
|---|
| 60 |  | 
|---|
| 61 | For one possible approach to this, please see: | 
|---|
| 62 |  | 
|---|
| 63 | http://www.samba.org/netfilter/diary/gzip.rsync.patch | 
|---|
| 64 |  | 
|---|
| 65 | - Use a larger window size to deal with some large redundant files that | 
|---|
| 66 | 'compress' currently handles better than gzip. | 
|---|
| 67 |  | 
|---|
| 68 | - Implement the -e (encrypt) option. | 
|---|
| 69 |  | 
|---|
| 70 | Send comments to <bug-gzip@gnu.org>. | 
|---|
| 71 |  | 
|---|
| 72 |  | 
|---|
| 73 | ======================================================================== | 
|---|
| 74 |  | 
|---|
| 75 | Copyright (C) 1999, 2001, 2006 Free Software Foundation, Inc. | 
|---|
| 76 | Copyright (C) 1992, 1993 Jean-loup Gailly | 
|---|
| 77 |  | 
|---|
| 78 | Permission is granted to copy, distribute and/or modify this document | 
|---|
| 79 | under the terms of the GNU Free Documentation License, Version 1.2 or | 
|---|
| 80 | any later version published by the Free Software Foundation; with no | 
|---|
| 81 | Invariant Sections, with no Front-Cover Texts, and with no Back-Cover | 
|---|
| 82 | Texts.  A copy of the license is included in the ``GNU Free | 
|---|
| 83 | Documentation License'' file as part of this distribution. | 
|---|