Release Notes ---------------------- Release 9.1 is a bug-fix for version 9.0 ; Only two lines in ppmzesc.c have been changed : if ( escape_prob < 1 ) escape_prob = 1 ; new 3-2-98 : also fixed (semi-bugs) to handle files that expand more gracefully. September '97 : PPMZ 9.0 is here. It's been more than a year since the last release, and really not much has changed. I've implemented a cleaner, better "Z-Escape" modeller (the deterministic escape modeller I invented for PPMQ, which is the secret to our high compression) : it now resides in it's own file 'ppmzesc.c'. This new escape modeller uses ideas from Malcolm Taylor and the CTW team to weight contexts. PPMZ 9.0 also implements an optional LZP pre-pass. I have not been able to tune this so that it helps compression, though it doesn't hurt too much, and it does help speed... This new version get 2.222 bpb on paper1 , and 1.236 on trans, both are new records. These will be roughly on par with the newest release of RKIVE (not out yet). The CTW algorithm still beats us on the books and paper2. I believe PPMZ should retake the 'best corpus average' from RKIVE and CTW which had surpassed it while I was inactive. All of my big ideas for improving PPMZ will require a major restructuring of the program, so as to facilitate weighting, or dynamic LOE, or bit-wise coding, or a seamless merging of finite and infinite length contexts. v8.3 fixes another bug, and makes the code a tad cleaner; the LOE (Local Order Estimation) coders, Coder #9 and up, were using floating point numbers in their math; this was causing different files to be made on different architectures. All math has been switched to integers, and this problem is gone. v8.0 is finally available. This version fixes all known bugs in PPMZ. Previously PPMZ was doing some probability averaging which occasionally allowed the total symbol probability to exceed 32768 (which is a no-no). This bug was only visible on large, skewed files, and has now been fixed. v8.1 : 8-8-96 : LRU option works, but is far from perfect. It's killing compression and it really shouldn't be. v8.0 notes: an LRU to limit memory use if provided but IS NOT WORKING. Hopefully, this will be finished soon for v8.1 all known bugs fixed. Version/Revision standardization: files with the same version number are binary-compatible. Headers (thus files) should now be endian-independent. Coder-Guess functionality has been removed. Use the LOE coders instead. v7.6 notes: 7-20-96 : v7.6 still has bugs. It works on almost all files, but occasionally produces errors on decode. Use at your own risk. (sorry, guys!) 7-10-96 : v7.6 had a bug in crblib arithc coder : improper termination of the arithcoder was used that caused problems on some files. The ppmz distribution is unchanged, but you need the new crblib to fix the bug. Coders 9 through 13 use Local Order Estimation. These coders perform consistently better than anything else. In PPMZ v8 the LOE coders will supplant all others. PPMZ v7.6 IS FULLY ANSI COMPATIBLE. This means that even if your compiler is not PPMZ will try to make it look like ANSI. I compile with GCC v2.7.2 with no warnings. I compile with Watcom for Windows NT/95 with no warnings. Visual C sucks, don't use it. PPMZ v7.6 runs just fine on Intel chips. v7.5 includes Recency Scaling, and a preliminary RunLength step (no more waiting for 'pic' !!) and some fine-tunings for a little more compression v7.4 adds Automatic Order Guessing (it works on the Corpus, but I'm not too sure about the rest of the world), and a bug fix which prevented memory freeing. v7.3 is hopeful little-endian compatible (nope) , eliminates use of timer(), and has a better testing interface v7.2 merges PPMC and PPMQ into PPMZ as special cases of that more general method v7.1 adds 'PPMdet' as the top level, an unbounded-order deterministic-only coder v7.0 is True ANSI C (no C++ comments) and should work on any UNIX system; functionality on MS-CRAP based systems is questionable. v7.0 also is RISC compatible