maint: update to latest gnulib; use fdutimens, not gl_futimens
[gzip.git] / TODO
blobb14710623d92c09a163bc48b3b6e24aa831c5502
1 TODO file for gzip.
3 Some of the planned features include:
5 - Remove some of the old porting cruft, since we no longer support
6   PRIMOS etc. any more.
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.
11 - Internationalize by using gettext and setlocale.
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.
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.
24 - Make it convenient to define alternative user interfaces (in
25   particular for windowing environments).
27 - Support in-memory compression for arbitrarily large amounts of data
28   (zip currently supports in-memory compression only for a single buffer.)
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.)
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*.
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).
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.)
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).
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.
61   For one possible approach to this, please see:
63     http://www.samba.org/netfilter/diary/gzip.rsync.patch
65 - Use a larger window size to deal with some large redundant files that
66   'compress' currently handles better than gzip.
68 - Implement the -e (encrypt) option.
70 Send comments to <bug-gzip@gnu.org>.
73 ========================================================================
75 Copyright (C) 1999, 2001, 2006, 2009-2010 Free Software Foundation, Inc.
76 Copyright (C) 1992, 1993 Jean-loup Gailly
78 Permission is granted to copy, distribute and/or modify this document
79 under the terms of the GNU Free Documentation License, Version 1.3 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.