This repository has been archived by the owner on Jan 3, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathROADMAP
144 lines (131 loc) · 7.35 KB
/
ROADMAP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
A very general (and likely quite off) intended basic roadmap for versions (and work
that needs completion prior to hitting said version)...
That said and done, I need to re-order this to match reality, certain version
mile-stones I've almost finished prior to finishing the interceding milestone
work.
0.4 Oct/Nov 2003.
DONE * option code in diffball, patcher, differ, and convert_delta
DONE * function that is format aware, handles magic sig's.
DONE * seperate my modifications of gdiff format into v5, and enable a
specific v4 spec.
DONE * md5 support in cfile- basically flag the cfile at opening, add func
for finalizing/retrieving md5. Refactor cfile (buffering system)
for compression support to be added.
DONE * code cleanup. EG, add extern global verbosity option for control of
printf statements, start adding better definitions throughout code
for compilation (eg via compile flags/options disabling certain
sections of code).
DONE * code a solution for handling md5's in file format- basically
handle the goofy nature of some formats (bdelta's lack of a complete
set of reconstruction commands for instance). Enable checking of
md5's if they're included in file (xdelta format).
DONE * remove aborts from everything but {diff{er,ball},patcher,convert_delta}.c,
unless absolutely needed.
DONE * check of returned values; DCB_add_(add|copy|overlay) are major offenders.
DONE * relevant man pages
DONE * have a basic (not necessarily cleanest/best) gzip compressor setup so
compressed xdelta can be handled.
DONE * abstract dcbuffer to support different types of add/copies sets-
ex: bsdiff has technically two add commands, and a copy-
basically it's copy overlay, along w/ standard add.
Bit of a kludge, needs to be generalized a bit, since it only supports
2 add srcs currently.
DONE * bsdiff support (hokay, so I got ambitious)
DONE * multipass support
DONE * verified hash. Basically, scan the version file for chksum's
needed, then scan the reference file for said chksum's. Doing
this allows for a hash entry to be verified, eg mark it such
that these two chksum's match. Way of cutting down on bad
matches/worthless seeks.
0.50 Dec 2003
DONE * write *GOOD* man pages (eye of the beholder?)
DONE * DCBuffer should be a general struct, with different ways of
storing entries. Full for patching/conversion, matches for
standard differencing (difference is it eliminates storing
add's in memory, saving memory), llmatches for
multipass/insert support. llmatches is a linked list variant
of the matches struct.
DONE * bsdiff support, possibly included into 0.4.
DONE * optimizations of buffering system. Do something about the
duplication of buffered data between cfile and differencing alg.
DONE * Possibly a 'cfileExposeBuffer' type command, that returns a const
unsigned char * to the internal cfile buffer.
DONE * refactor memalias for differing alg. Basically adjustment of
returned values, although exposeBuffer (above) might solve this.
I don't like the buffer window into a buffer. Pointless...
DONE * have working compression support in cfile. Not saying it be'll
great, just saying have it working.
DONE * cfile RW support
DONE * auto-identify patches unless explicitly told the type
DONE * standardize/fix the hash_size, do it in terms of elements or actual
memory size? thinking memory size, since MOD_HASH is 4 bytes each
element, while CMOD_HASH is 8 bytes...
0.60/0.6.2/0.65 Feb-Apr 2005
DONE * full cfile bzip2 read support (including seeking)
DONE * full cfile gzip read support (including seeking)
DONE * compressor identification function (auto-detect compressed files,
essentially)
STARTED * add a set of functions for pulling add len/offset pairs for formats
reasoning being, make it a default function so I can move optimizing
multiple adds (from diffball) into a single add command in the format
encoding.
DONE * Apply multiple patches in one run
DONE * sequentially read from a src, writing random- useful for compressed files
DONE * general reduction of patcher's memory usage; free DCB.full.cl if using a set
of sorted lists fex.
DONE * standardize a buffer abstraction for command_lists.
DONE * use said standardized command_list
DONE * bufferless reconstruct; it's not always needed (or wanted, from a memory standpoint)
to read in all commands, then process them. so... bufferless reconstruct for
single patch transformations that aren't reordered.
0.70 Oct 2005
DONE * Usable lib, header installation, seperation of libcfile from libdiffball
DONE * memory aliasing for cfile, read and write
DONE * code cleanup, implementation of simple api (api.h)
DONE * cleanup of memory leaks in simple api (mainly error scenarios)
DONE * assuming good design/api, this won't be hard, but begin *initial*
creation of a library api. Subject to change obviously by 1.00, but
have something fairly concrete ready to roll.
DONE * cleanup of cfile bugs forcing unneeded lseeks/page refreshs
1.0 June/July 2006
DONE * main functionality nailed down, outstanding bugs killed.
beyond 1.0
??? * possibly adjust formats (encoding/decoding) such that they are
multiple functions... eg, attempt to make it such that the needed
command space (CommandBuffer) can be optimized down, so that it
doesn't require the entire set of delta commands to be stored in mem.
* suffix based differencing alg.
* bsdiff write support (using suffix alg) (iffy)
* add a correcting one pass differencing alg.
This would be good for backup solutions, differencing in one pass.
If you want this, contact me and I'll be a bit more expedient about it,
otherwise I'll write it when I find a need/time.
* possibly add flag to correcting algs, to flag correcting support
on/off (correcting basically allows for correction (duh))- although
correcting does slow things down (maybe not by much), possibly give
them (user/dev) the option?
STARTED * optimize existing formats, differencing algs, buffering system.
STARTED * reiterating, *OPTIMIZE BUFFERING SYSTEM*.
* locked down library api (obviously).
* xdelta write support- could do it as of pre-0.4, although md5 support
is needed, and the lovely serialsource memory allocation problem-
basically the unknown 8 bytes sandwiched between add data and control
block. Contact bdharring at wisc.edu if anyone has ideas/better
solution for the serialsource stored memory requirement.
No clue why the hell that is stored there let alone if that's what
it is...
* check into, and support if viable, past xdelta formats.
likely the serialsource issue listed above is going to be
problematic- I'm betting that had a hand in the breaking of backwards
compatability in xdelta...
* bad-chksum cache?
* add patch info functions, for polling info on existant patches.
possibly a new binary, although might be overkill.
STARTED * gnudiff support working, for both recursive and non-recursive patch.
Tentative versioning and time release obviously...
Dang crystal ball...
Thing I've found in writing this out, is that there really isn't a helluva lot left libdiffball wise
that is bugging me to fix. I *do* want to break cfile out on it's own, and redesign it, but that's not a high
priority, nor does it bring any real gains to the delta compression users; it just provides a way to plugin
different transformations (useful, but not a deal breaker).
So... Suggestions welcome.