X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=README.txt;h=e2d9103d5f1820f89e5fd9e18f245cc330e8b29d;hb=87b2eef27dffc11a99e6e0ccde5a3fe218fc4414;hp=67bf422ea36746b3f1861ee0e4abfbfe797f618e;hpb=2f2d5af5cf03640650c8b49933c36665fdf52d61;p=ocaml-ancient.git diff --git a/README.txt b/README.txt index 67bf422..e2d9103 100644 --- a/README.txt +++ b/README.txt @@ -1,6 +1,5 @@ 'Ancient' module for OCaml ---------------------------------------------------------------------- -$Id: README.txt,v 1.2 2006-10-09 12:18:05 rich Exp $ What does this module do? ---------------------------------------------------------------------- @@ -67,6 +66,9 @@ uses the Ancient module: Example ---------------------------------------------------------------------- +XXX Note the example code is really stupid, and fails for large +dictionaries. See bug (10) below. + Run: ulimit -s unlimited @@ -133,11 +135,7 @@ data to OCaml heap data. In theory it should be possible to modify ancient data to point to other ancient data, but we have not tried this. -(5) You can store more than just one compound object per backing file -by supplying a key to Ancient.share and Ancient.get. The keys are -integers in the range [0..1023]. The upper limit is hard coded into -the mmalloc library. This hard coded upper limit is a bug which -should be fixed. +(5) [Limit on number of keys -- issue fixed] (6) [Advanced topic] The _mark function in ancient_c.c makes no attempt to arrange the data structures in memory / on disk in a way @@ -192,6 +190,11 @@ which avoids loading unused fields at all. In some circumstances we have shown that this could make a huge difference to performance, but we are not sure how to implement this cleanly in the current library. +[Update: I have fixed issue 6 manually for my Weblogs example and +confirmed that it does make a huge difference to performance, although +at considerable extra code complexity. Interested people can see the +weblogs library, file import_weblogs_ancient.ml.in]. + (7) [Advanced topic] Certain techniques such as Address Space Randomisation (http://lwn.net/Articles/121845/) are probably not compatible with the Ancient module and shared files. Because the @@ -236,6 +239,13 @@ they are OK. The solution to this bug is non-trivial. +(10) Example code is very stupid. It fails with large dictionaries, +eg. the one with nearly 500,000 words found in Fedora. + +(11) In function 'mark', the "// Ran out of memory. Recover and throw +an exception." codepath actually fails if you use it - segfaulting +inside do_restore. + Authors ----------------------------------------------------------------------