Add TODO and .gitignore.
1 - pkg manifest is list of files
3 /usr/bin/bash 1321321372198798
5 plus provides, requires and version?
7 - keep history of installed packages/journal of package transaction,
8 so we can roll back to yesterday, or see what got installed in the
11 - we build a cache of the currently installed set to service
12 dependency inquiries fast:
14 map from property to pkg (as hash) providing it
15 map from property to pkgs requiring it
16 map from pkg name to manifest
17 map from string to string pool index
19 no implicit provides? not even pkgname?
21 - properties are strings, stored in a string table
23 - on disk maps are binary files of (string table index, hash) pairs
25 - at run time, we mmap the map, and keep changes in memory in a splay
26 tree or similar. if searching the splay tree fails we punt to the
27 mmap. once the transaction is done, we merge the map and the splay
28 tree and write it back out.
30 - the on-disk string pool is sorted and we keep a list of indices into
31 the string pool in sorted order so we can bsearch the list with a
32 string to get its string pool index. maybe a hash table is better,
33 less I/O as we will expect to find the string within the block we
34 look up with the hash function.
37 - gzip pkg xml files somehow?