The analysis of the different schemes are here:
All of them, AFAIK, are either BSD license, or public domain. I wrote myself the huffman coding and the RLE. The other ones are from free libraries. There gazillion of good alternatives, but most of them are GPLed (and the idea is to have a more permissive option).
The default will be LZMA, which is the one that provides the smallest memory. AFAIK, it is smaller than Nalimov's and it fits in a 8 GB USB stick. However, there are other valid alternatives with potential (Zlib-9 and LZF). Those could give better performance in the future, as the people move to solid state disks. The decompression speed of LZF is close to the speed of light (and the source code is really small!!).
I still have to try several ideas to improve this, and a couple of other compression libraries (which may be faster but no chance to compete with the compression ratio of LZMA). But I do not want to delay this any further.
So, there is a chance (but slim) that I can find a better alternative, or more likely, a better compression algorithm & free library could be designed by somebody else in the future. In those cases, I would like to keep the flexibility for progress. I think that I may request to set LZMA as a default that every engine developer should support if they support Gaviota TBs, and, if in the future we find something else, we could move to a new scheme, but always supporting LZMA to guarantee backward compatibility. In other words, if testers decide to maintain only one copy of LZMA version, they should always be covered. The library with the probing code that I will release, should be able to this, but the engine developers will be responsible to provide a switch or a WB/UCI option etc. so the user can inform the engine what TBs are available.
Code: Select all
miguel@avefenix:/media/bigdisk/dev/tbcp$ ./tbcp -h Compression/decompression utility for Gaviota Table Bases. It uses different free compression algorithms. More information at http://sites.google.com/site/gaviotachessengine/ quick example: tbcp gtb compresses all the endgame table base files in the folder "gtb" with the default compression scheme 2, and no deletion of the source files usage: tbcp [-OPTION]... [folder] -h give this help -v give version number and exits -c compress (default) -d decompress -k keep source files, after compression/decompression (default) -r remove source files, after compression/decompression -V verify encoding/decoding on the fly -q quiet (no output except error messages) -i <file> work on the given individual file, rather than a folder -s # sets compression scheme (0-2, default=2) -n # operates on up to 3-, 4- o 5-piece tablebases (default=5) Copyright (c) 2009-2010 Miguel A. Ballicora There is NO WARRANTY of any kind