<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6565998</id><updated>2011-10-06T11:48:43.831-07:00</updated><title type='text'>xdelta</title><subtitle type='html'>open-source binary diff, differential compression tools, VCDIFF (RFC 3284) delta compression</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://xdelta.org/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://xdelta.org/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>46</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6565998.post-6564703576510998615</id><published>2011-01-08T12:00:00.000-08:00</published><updated>2011-01-09T01:28:15.553-08:00</updated><title type='text'></title><content type='html'>Release 3.0.0 (&lt;a href="http://xdelta.googlecode.com/files/xdelta3.0.0.tar.gz"&gt;source&lt;/a&gt;)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A minor change in behavior from previous releases.  If you run xdelta3 on source files smaller than 64MB, you may notice xdelta3 using more memory than it has in the past.  If this is an issue, lower the -B flag (see issue &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=113"&gt;113&lt;/a&gt;).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3.0 is a stable release series.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-6564703576510998615?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/6564703576510998615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=6564703576510998615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/6564703576510998615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/6564703576510998615'/><link rel='alternate' type='text/html' href='http://xdelta.org/2011/01/release-3.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-5943483101466758712</id><published>2010-08-02T19:00:00.000-07:00</published><updated>2010-08-02T19:52:12.000-07:00</updated><title type='text'></title><content type='html'>Release 3.0z (&lt;a href="http://code.google.com/p/xdelta/downloads/detail?name=xdelta3.0z.tar.gz&amp;amp;can=2&amp;amp;q="&gt;source&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;This release includes both &lt;a href="http://code.google.com/p/xdelta/downloads/detail?name=xdelta3.0z.x86-32.exe&amp;amp;can=2&amp;amp;q="&gt;32-bit&lt;/a&gt; and &lt;a href="http://code.google.com/p/xdelta/downloads/detail?name=xdelta3.0z.x86-64.exe&amp;amp;can=2&amp;amp;q="&gt;64-bit&lt;/a&gt; Windows executables and adds support for reading the source file from a Windows named pipe (issue &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=101"&gt;101&lt;/a&gt;).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/p/xdelta/wiki/ExternalCompression"&gt;External compression&lt;/a&gt; updates.  3.0z prints a new warning when it decompresses externally-compressed inputs, since I've received a few reports of users confused by checksum failures. Remember, it is not possible for xdelta3 to decompress and recompress a file and ensure it has the same checksum.  3.0z improves error handling for externally-compressed inputs with "trailing garbage" and also includes a new flag to force the external compression command.  Pass '-F' to xdelta3 and it will pass '-f' to the external compression command.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-5943483101466758712?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/5943483101466758712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=5943483101466758712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/5943483101466758712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/5943483101466758712'/><link rel='alternate' type='text/html' href='http://xdelta.org/2010/08/release-3.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-6116258867694121860</id><published>2010-02-15T22:28:00.000-08:00</published><updated>2010-02-21T15:18:13.409-08:00</updated><title type='text'></title><content type='html'>Re: 3.0y (&lt;a href="http://xdelta.googlecode.com/files/xdelta3.0y.tar.gz"&gt;source&lt;/a&gt;)&lt;br /&gt;&lt;del&gt;Re: 3.0x (&lt;a href="http://xdelta.googlecode.com/files/xdelta3.0x.tar.gz"&gt;source&lt;/a&gt;)&lt;/del&gt;&lt;br /&gt;&lt;br /&gt;Version &lt;del&gt;3.0x&lt;/del&gt; 3.0y fixes several regressions introduced in 3.0w related to the new support for streaming the source file from a FIFO.  This was a long-requested feature and I'm pleased to report that now, with the fixes in &lt;del&gt;3.0x&lt;/del&gt; 3.0y, it appears to be working quite well.  The upshot of this feature is that you can encode or decode based on a compressed source file, without decompressing it to an intermediate file.  In fact, you can expect the same compression with or without a streaming source file.&lt;br /&gt;&lt;br /&gt;There were also reports of the encoder becoming I/O bound in previous releases, caused by the encoder improperly seeking backwards farther than the settings (namely, the -B flag) allowed.  This is also fixed, and there's a new test to ensure it won't happen again.&lt;br /&gt;&lt;br /&gt;Windows users: I need to investigate issue &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=101"&gt;101&lt;/a&gt; before building a release of&lt;del&gt;3.0x&lt;/del&gt; 3.0y.  Until I can confirm that streaming-source-file support works on Windows, please continue using the 3.0u release.&lt;br /&gt;&lt;br /&gt;&lt;del&gt;&lt;b&gt;Update:&lt;/b&gt; The built-in support for automatic decompression of inputs is interacting badly with the new source handling logic, results in &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=106"&gt;poor compression&lt;/a&gt;.&lt;/del&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-6116258867694121860?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/6116258867694121860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=6116258867694121860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/6116258867694121860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/6116258867694121860'/><link rel='alternate' type='text/html' href='http://xdelta.org/2010/02/re-3.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-611358707012868945</id><published>2009-10-25T22:00:00.000-07:00</published><updated>2009-11-07T12:28:11.534-08:00</updated><title type='text'></title><content type='html'>Re: 3.0w (&lt;a href="http://xdelta.googlecode.com/files/xdelta3.0w.tar.gz"&gt;source&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;With such a good state of affairs (i.e., no bug reports), I was able to tackle a top-requested feature (&lt;a href="http://code.google.com/p/xdelta/issues/detail?id=59"&gt;59&lt;/a&gt;, &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=73"&gt;73&lt;/a&gt;).  Many of you have asked to be able to encode deltas using a FIFO as the source file, because it means you can encode/decode from a compressed-on-disk source file when you don't have enough disk space for a temporary uncompressed copy.  This is now supported, with one caveat.&lt;br /&gt;&lt;br /&gt;When decoding with a non-seekable source file, the -B flag, which determines how much space is dedicated to its block cache, must be set at least as large as was used for encoding.  If the decoder cannot proceed because -B was not set large enough, you will see:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;tt&gt;xdelta3: non-seekable source: copy is too far back (try raising -B): XD3_INTERNAL&lt;/tt&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The stream-&gt;src-&gt;size field has been eliminated.  Internally, a new stream-&gt;src-&gt;eof_known state has been introduced.  This was a big improvement in code quality because, now, the source and target files are treated the same with respect to external (de)compression and several branches of code are gone for good.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt; Issue 95: &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=95"&gt;command-line decode I/O-bound in 3.0w&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-611358707012868945?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/611358707012868945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=611358707012868945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/611358707012868945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/611358707012868945'/><link rel='alternate' type='text/html' href='http://xdelta.org/2009/10/re-3.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-7413656429112129773</id><published>2009-05-06T18:19:00.000-07:00</published><updated>2009-05-06T18:37:35.462-07:00</updated><title type='text'></title><content type='html'>Re: MS "Linker Version Info" in 3.0u&lt;br /&gt;&lt;br /&gt;I can't explain this problem report *SEE BELOW*, indicating that Xdelta on Microsoft platforms is slower than the previous build by a factor of two.&lt;br /&gt;&lt;br /&gt;?&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Hello ... !&lt;br /&gt;&lt;br /&gt;     First of all I want to thank you for creating XDelta tool.&lt;br /&gt;Realy nice and well documented stuff which sometimes helps a lot.&lt;br /&gt;     When I changed from v3.0t to v3.0u I've noticed some slowdown&lt;br /&gt;in processing time. Well, it was just visual observation so I decided&lt;br /&gt;to conduct a couple of tests. Here's what I've done.&lt;br /&gt;     Test was conducted on virtual memory disk using RAMDiskXP v2.0.0.100&lt;br /&gt;from Cenatek Inc. It was done to exclude any impact from IO system.&lt;br /&gt;Processing time was measured with Timer v8.00 tool by Igor Pavlov.&lt;br /&gt;Test files size is about 275 MB. More exactly speaking 288 769 595&lt;br /&gt;bytes for Test.dat.old and 288 771 262 bytes for Test.dat&lt;br /&gt;Command line for XDelta is:&lt;br /&gt;timer xdelta3 -v -9 -A= -B x -W x -I 0 -P x -s Test.dat.old Test.dat Diff.dat&lt;br /&gt;where x is one of the values given below with the test results.&lt;br /&gt;&lt;br /&gt;               3.0t    3.0u&lt;br /&gt;               -----   -----   --------------&lt;br /&gt;16384           3.687   6.391   73.3% slower&lt;br /&gt;65536           3.469   6.125   76.6% slower&lt;br /&gt;1048576         2.578   5.453   111.5% slower&lt;br /&gt;4194304         3.281   6.625   101.9% slower&lt;br /&gt;8388608         3.953   7.718   95.2% slower&lt;br /&gt;&lt;br /&gt;As you see v3.0u is averagely 91.7% SLOWER !!! I don't think it's a&lt;br /&gt;some evil coincidence cause I redone every test twice. I have only one&lt;br /&gt;clue. I see Linker Version Info in v3.0t exe-file is 8.0 while is 9.0&lt;br /&gt;for the v3.0u exe-file so I suppose you changed or compilator itself&lt;br /&gt;or its version.&lt;br /&gt;  I'll be very glad to hear from you.&lt;br /&gt;  Truly yours, ...&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-7413656429112129773?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/7413656429112129773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=7413656429112129773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/7413656429112129773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/7413656429112129773'/><link rel='alternate' type='text/html' href='http://xdelta.org/2009/05/re-ms-linker-version-info-in-3.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-4127584670743383055</id><published>2009-03-11T19:00:00.000-07:00</published><updated>2009-03-11T19:12:49.449-07:00</updated><title type='text'></title><content type='html'>Re: &lt;a href="http://xdelta.googlecode.com/files/xdelta3.0v.tar.gz"&gt;3.0v source release&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm releasing SVN 281, which has an API fix (see issue &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=79"&gt;79&lt;/a&gt;).  There's a new &lt;a href="http://groups.google.com/group/xdelta-announce"&gt;group&lt;/a&gt; for future announcements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-4127584670743383055?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/4127584670743383055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=4127584670743383055' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/4127584670743383055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/4127584670743383055'/><link rel='alternate' type='text/html' href='http://xdelta.org/2009/03/re-3.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-5444891326724366589</id><published>2009-01-29T20:00:00.000-08:00</published><updated>2009-01-29T20:51:56.809-08:00</updated><title type='text'></title><content type='html'>&lt;br&gt;The &lt;a href="http://code.google.com/p/xdelta/wiki/CommandLineSyntax"&gt;wiki&lt;/a&gt; has great comments:&lt;br /&gt;&lt;br /&gt;&lt;table width=600&gt;&lt;tt&gt;All I want to do if create a delta (diff) of two binary files.&lt;br /&gt;&lt;br /&gt;How do I do that? If indeed xdelta can do this?&lt;br /&gt;&lt;/tt&gt;&lt;hr&gt;&lt;tt&gt;Make patch:&lt;br /&gt;xdelta3.exe -e -s old_file new_file delta_file&lt;br /&gt;&lt;br /&gt;Apply patch:&lt;br /&gt;xdelta3.exe -d -s old_file delta_file decoded_new_file&lt;br /&gt;&lt;br /&gt;(From &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=40"&gt;Batch file for xdelta1/xdelta3 compatibility)&lt;/a&gt;&lt;br /&gt;&lt;/tt&gt;&lt;hr&gt;&lt;tt&gt;I am using xdelta in windows. If a file is opened in microsoft word and while the file is still open I try to use xdelta to produce difference with another file, the following error happens. xdelta3: file open failed: read: &lt;filename&gt;: The process cannot access the file because it is being used by another process.&lt;br /&gt;&lt;br /&gt;I suspect that this is because xdelta tries to open the file in non share mode. I found that if ms word is using a file and we try to open that file in a c# program in non shared mode the same error is thrown as above but if we open the the file in shared mode while in use by MS word,no error occurs.&lt;br /&gt;&lt;/tt&gt;&lt;hr&gt;&lt;tt&gt;Yes, I too can confirm the problem that a xdelta file cannot be created if the source file is being shared with another application.&lt;br /&gt;&lt;/tt&gt;&lt;hr&gt;&lt;tt&gt;if you are using either Windows 2003 server or Windows 2008 server, you can use 'volume shadow copy' vssadmin create shadow /For=C:&lt;br /&gt;&lt;br /&gt;then use dosdev.exe to map a drive to the shadow, you can then access the files without there being an issue with locks, this applies to any file that was located on that drive including sql databases and any other locked files.&lt;br /&gt;&lt;br /&gt;if you are running .Net Framework v3.5 I have written a small utility to automate the creation and deletion of the shadows and map the drive, delete the drive. Email me directly at alex at intralan dot co dot uk and I will send a copy.&lt;br /&gt;&lt;/tt&gt;&lt;hr&gt;&lt;tt&gt;my friend and i r using this program but he gets better compression than me and is not tellin me how he is getting almost double the compression, i make the file 650mb from 1gb but he makes it 349mb, same source files r used the command m using is delta3.exe -e -9 -S djw -s source target patch what is the command line for maximum compression&lt;br /&gt;&lt;/tt&gt;&lt;hr&gt;&lt;tt&gt;How can I get the python version to work?&lt;br /&gt;&lt;br /&gt;This is what I get when I run setup. I compiled it with Cygwin then with Visual Studio, both times I get the same msg when running setup. Any suggestions?&lt;br /&gt;&lt;br /&gt;c:/xdelta3&gt; python setup.py install --verbose --compile --force running install running build running build_ext error: Python was built with Visual Studio 2003; extensions must be built with a compiler than can generate compatible binaries. Visual Studio 2003 was not found on this system. If you have Cygwin installed, you can try compiling with MingW32?, by passing "-c mingw32" to setup.py.&lt;br /&gt;&lt;/tt&gt;&lt;hr&gt;&lt;tt&gt;What are the commands for the new merging/combining features?&lt;br /&gt;&lt;/tt&gt;&lt;hr&gt;&lt;tt&gt;Is there a way to get xdelta to take two folder path, recurse through them and do a delta for dir1 vs dir2?&lt;br /&gt;&lt;/tt&gt;&lt;hr&gt;&lt;tt&gt;Thank you for xdelta! &lt;3&lt;/tt&gt; &lt;/table&gt;&lt;br /&gt;Answers to the final two questions: &lt;br /&gt;&lt;br /&gt;&lt;table width=600&gt;&lt;tt&gt;To merge/combine:&lt;br /&gt;&lt;br /&gt;xdelta3.exe merge -m file.1.2 -m file.2.3 file.3.4 patch.1.4&lt;br /&gt;&lt;/tt&gt;&lt;hr&gt;&lt;tt&gt;There is not a way to take two dirs, recurse through them and do a delta for dir1 vs dir2, but that would be a great feature. (Issue &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=21"&gt;21&lt;/a&gt;)&lt;/tt&gt;&lt;/table&gt;&lt;br /&gt;Other top issues and requests:&lt;br /&gt;&lt;br /&gt;&lt;table width=600&gt;&lt;tt&gt;1. Source file from a FIFO: currently xdelta3 does not support reading the source file from a non-seekable file, but it's not because the of algorithm, it's a small code limitation and can be fixed.  (Issue &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=59"&gt;59&lt;/a&gt; is a dup of &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=73"&gt;73&lt;/a&gt;, which includes a patch).&lt;/tt&gt;&lt;hr&gt;&lt;tt&gt;2. Smart ISO image compression: If you take a set of files and produce ISO1, then produce a later set of files as ISO2, but the files are in a completely different order, compression suffers.  Try setting -B size equal to the ISO size, if possible. (Issue &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=71"&gt;71&lt;/a&gt;)&lt;/tt&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-5444891326724366589?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/5444891326724366589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=5444891326724366589' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/5444891326724366589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/5444891326724366589'/><link rel='alternate' type='text/html' href='http://xdelta.org/2009/01/command-line-syntax-wiki-has-great.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-5314624851368668811</id><published>2008-09-13T05:00:00.000-07:00</published><updated>2008-10-13T20:18:25.103-07:00</updated><title type='text'></title><content type='html'>Re: Xdelta-3.0u (&lt;a href="http://xdelta.googlecode.com/files/xdelta3.0u.tar.gz"&gt;source&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2008.10.12 update: &lt;a href="http://xdelta.googlecode.com/files/xdelta3.0u.x86-32.exe"&gt;Windows executable&lt;/a&gt; posted&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Release Notes:&lt;ul&gt;&lt;li&gt;New &lt;tt&gt;xdelta3 merge&lt;/tt&gt; command (&lt;a href="http://code.google.com/p/xdelta/issues/detail?id=36"&gt;issue 36&lt;/a&gt;)&lt;br /&gt;&lt;li&gt;Windows stdin/stdout-related fixes (&lt;a href="http://code.google.com/p/xdelta/issues/detail?id=34"&gt;issue 34&lt;/a&gt;)&lt;br /&gt;&lt;li&gt;Fix API-only infinite loop (&lt;a href="http://code.google.com/p/xdelta/issues/detail?id=70"&gt;issue 70&lt;/a&gt;)&lt;br /&gt;&lt;li&gt;Various portability and build fixes (gcc4, DJGPP, MinGW, Big-endian, Solaris, C++)&lt;br /&gt;&lt;li&gt;New regression test (yeah!)&lt;/ul&gt;The new merge command allows you to combine a sequence of deltas, to produce a single output that represents the net effect of the sequence.  The command is reasonably efficient because it computes the result directly, without constructing any intermediate copies (and without access to the first-of-chain source).  I say "reasonably" because there's a soft spot in this algorithm.&lt;br /&gt;&lt;br /&gt;A VCDIFF encoding contains two kinds of copy instructions: (1) copies from the source file, which the merge command can translate with straight-forward arithmetic, and (2) copies from the target file (itself), which are more difficult.  Because a target copy can copy from another target copy earlier in the window, merging from a target copy at the end of a window may involve following a long chain of target copies all the way to the beginning of the window.  The merge command implements this today using recursion, which is not an efficient solution.  A better solution involves computing a couple of auxiliary data structures so that: (1) finding the origin of a target copy is a constant-time operation, (2) finding where (if at all) the origin of a target copy is copied by a subsequent delta in the chain.  The second of these structures requires, essentially, a function to compute the inverse mapping of a delta, which is a feature that has its own applications.&lt;br /&gt;&lt;br /&gt;Summary: the merge command handles target copies inefficiently, and the code to solve this problem will let us reverse deltas.  Together, the &lt;tt&gt;merge&lt;/tt&gt; and &lt;tt&gt;reverse&lt;/tt&gt; commands make a powerful combination, making it possible to store O(N) delta files and construct deltas for updating between O(N^2) pairs using efficient operations.  This was the basis of &lt;a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.25.3471"&gt;&lt;em&gt;xProxy: A transparent caching and delta transfer system for web objects&lt;/em&gt;&lt;/a&gt;, which used an older version of Xdelta.&lt;br /&gt;&lt;br /&gt;&lt;del&gt;I'm making a source-only release, which I haven't done in a while, because I don't have the necessary build tools for Windows (due to a broken machine) and I don't want to delay this release because of it.&lt;/del&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-5314624851368668811?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/5314624851368668811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=5314624851368668811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/5314624851368668811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/5314624851368668811'/><link rel='alternate' type='text/html' href='http://xdelta.org/2008/09/re-xdelta-3.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-4531223475170201009</id><published>2008-09-04T21:00:00.000-07:00</published><updated>2008-09-04T22:10:08.094-07:00</updated><title type='text'></title><content type='html'>Re: &lt;a href="http://google-opensource.blogspot.com/2008/09/open-vcdiff-encoder-and-decoder-for-rfc.html"&gt;Google's open-vcdiff&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Google released a new &lt;a href="http://code.google.com/p/open-vcdiff/"&gt;open-source library for RFC 3284&lt;/a&gt; (VCDIFF) encoding and decoding, designed to support their proposed &lt;a href="http://groups.google.com/group/SDCH"&gt;Shared Dictionary Compression over HTTP&lt;/a&gt; (SDCH, a.k.a. "Sandwich") protocol. &lt;br /&gt;&lt;br /&gt;This is great news.  The author and I have had numerous discussions over a couple of features that VCDIFF lacks, and now that we have two open-source implementations we're able to make real progress on the standard.  Both Google's open-vcdiff and Xdelta-3.x implement a extensions to the standard, but I ran a simple interoperability test and things look good.  Run xdelta3 with "-n" to disable checksums and "-A" to disable its application header.&lt;br /&gt;&lt;br /&gt;A big thanks to Lincoln Smith and Google's contributors. (Disclaimer: I am an employee of Google, but I did not contribute any code to open-vcdiff.)&lt;br /&gt;&lt;br /&gt;P.S. I'm still debugging the &lt;tt&gt;xdelta3 merge&lt;/tt&gt; command, stay tuned to &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=36"&gt;issue 36&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-4531223475170201009?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/4531223475170201009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=4531223475170201009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/4531223475170201009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/4531223475170201009'/><link rel='alternate' type='text/html' href='http://xdelta.org/2008/09/re-googles-open-vcdiff-google-released.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-1289505834152466908</id><published>2008-07-09T21:00:00.000-07:00</published><updated>2008-07-09T21:51:44.777-07:00</updated><title type='text'></title><content type='html'>Re: Regression test framework&lt;br /&gt;&lt;br /&gt;3.0t released in December 2007 has turned out to be extremely stable, and I'm busy preparing the first non-beta release candidate.  The problem with being stable is the risk of regression, so I've been nervously putting together a new regression testing framework to help exercise obscure bugs.&lt;br /&gt;&lt;br /&gt;The most critical bug reported since 3.0t is a non-blocking API-specific problem.  Certain bugs only affect the API, not the &lt;tt&gt;xdelta3&lt;/tt&gt; command-line application, because the command-line application uses blocking I/O even though the API supports non-blocking I/O.  &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=70"&gt;Issue 70&lt;/a&gt; reported an infinite loop processing a certain pair of files.  The reporter graciously included sample inputs to reproduce the problem, and I fixed it in SVN 239.  &lt;br /&gt;&lt;br /&gt;But I wasn't happy with the fix until now, thanks to the new regression testing framework.  With ~50 lines of code, the test creates an in-memory file descriptor, then  creates two slight variations intended to trigger the bug.  SVN 256 contains the new test.&lt;br /&gt;&lt;br /&gt;So just what is it that makes me feel 3.x is so stable?  It's e-mails like this from Alex White at intralan.co.uk:&lt;ul&gt;Hi Josh,&lt;br /&gt;&lt;br /&gt;FYI:-&lt;br /&gt;&lt;br /&gt;Been using XDelta for a while now, been working flawlessly (I wish all software could be this stable), been patching up to 1tb of data per day (across many servers), largest single file to date 70gb!!!&lt;br /&gt;&lt;br /&gt;Did some performance testing and with standard SATAII drives with both sources and the patch being created on the same drive the processing was around 300mb per minute (creating patches), setup a dual drive configuration where one of the sources was on a second drive and then the processing was around 1gb per minute (creating patches) .&lt;br /&gt;&lt;br /&gt;Best large file patch to original file size ratio,&lt;br /&gt;&lt;br /&gt;Original file size:  56,147,853,312&lt;br /&gt;&lt;br /&gt;Patch file size: 299,687,049&lt;br /&gt;&lt;br /&gt;Patch file reduction over original file size 99.47%&lt;br /&gt;&lt;br /&gt;This file took 2 hours and 21 minutes to patch in a real world setting.&lt;/ul&gt;Thanks for all the feedback! I like stable software too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-1289505834152466908?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/1289505834152466908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=1289505834152466908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/1289505834152466908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/1289505834152466908'/><link rel='alternate' type='text/html' href='http://xdelta.org/2008/07/re-regression-test-framework-3.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-1441733357676578995</id><published>2008-04-21T23:59:00.000-07:00</published><updated>2008-04-21T21:28:24.064-07:00</updated><title type='text'></title><content type='html'>Update for April 2008:&lt;br /&gt;&lt;br /&gt;I started making beta releases for Xdelta-3.x four years ago.  There were a lot of bugs then.  Now the bug reports are dwindling, so much so that I've had a chance to work on new features, such as one requested by &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=36"&gt;issue 36&lt;/a&gt;. Announcing the &lt;tt&gt;xdelta3 merge&lt;/tt&gt; command.  Syntax:&lt;pre&gt;xdelta3 merge -m input0 [-m input1 [-m input2 ... ]] inputN output&lt;/pre&gt;This command allows you to combine a sequence of deltas, producing a single delta that combines the effect of applying two or more deltas into one.  Since I haven't finished testing this feature, the code is only available in subversion. See &lt;a href="http://code.google.com/p/xdelta/source/checkout"&gt;here&lt;/a&gt; and enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-1441733357676578995?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/1441733357676578995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=1441733357676578995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/1441733357676578995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/1441733357676578995'/><link rel='alternate' type='text/html' href='http://xdelta.org/2008/04/update-for-april-2008-i-started-making.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-7360663256295841565</id><published>2007-12-06T21:00:00.000-08:00</published><updated>2007-12-06T22:02:25.356-08:00</updated><title type='text'></title><content type='html'>Xdelta-3.0t release notes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Improves compression by avoiding inefficient small copies (e.g., copies of length 4 at a distance &gt;= 2^14 are skipped)&lt;/li&gt;&lt;li&gt;Fixes an uninitialized array element in &lt;tt&gt;-S djw&lt;/tt&gt; which did not cause a crash, but caused less than ideal compression and test failures&lt;/li&gt;&lt;li&gt;Fixes bugs in &lt;tt&gt;xdelta3 recode&lt;/tt&gt;, tests added&lt;/li&gt;&lt;li&gt;All tests pass under Valgrind&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-7360663256295841565?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/7360663256295841565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=7360663256295841565' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/7360663256295841565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/7360663256295841565'/><link rel='alternate' type='text/html' href='http://xdelta.org/2007/12/xdelta-3.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-699540730837784498</id><published>2007-11-08T21:00:00.000-08:00</published><updated>2007-11-08T22:30:04.770-08:00</updated><title type='text'></title><content type='html'>Xdelta-3.0s release notes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Faster! Several optimizations to avoid unnecessary arithmetic&lt;/li&gt;&lt;li&gt;&lt;tt&gt;xdelta3&lt;/tt&gt; &lt;tt&gt;-1&lt;/tt&gt; has faster/poorer compression (&lt;tt&gt;xdelta3&lt;/tt&gt; &lt;tt&gt;-2&lt;/tt&gt; is the former configuration)&lt;/li&gt;&lt;li&gt;&lt;tt&gt;-S&lt;/tt&gt; &lt;tt&gt;djw&lt;/tt&gt; exposes secondary compression levels as &lt;tt&gt;-S&lt;/tt&gt; &lt;tt&gt;djw1&lt;/tt&gt; .. &lt;tt&gt;-S&lt;/tt&gt; &lt;tt&gt;djw9&lt;/tt&gt;&lt;/li&gt;&lt;li&gt;Removes "source file too large for external decompression" error check&lt;/li&gt;&lt;li&gt;API support for transcoding other formats into VCDIFF&lt;/li&gt;&lt;/ul&gt;Xdelta-3.0r release notes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fixes an encoder crash caused by &lt;tt&gt;-S&lt;/tt&gt; &lt;tt&gt;djw&lt;/tt&gt; (secondary compressor) on certain data, new tests for code-length overflow&lt;/li&gt;&lt;li&gt;Adds new &lt;tt&gt;recode&lt;/tt&gt; command for re-encoding a delta with different secondary compression settings&lt;/li&gt;&lt;li&gt;Fixes API-specific bugs related to non-blocking calls to &lt;tt&gt;xd3_encode_input&lt;/tt&gt; and &lt;tt&gt;xd3_decode_input&lt;/tt&gt;&lt;/li&gt;&lt;li&gt;Adds new &lt;tt&gt;examples/encoder_decoder_test.c&lt;/tt&gt; program for the non-blocking API&lt;/li&gt;&lt;/ul&gt;As an example of the new &lt;tt&gt;recode&lt;/tt&gt; command and secondary compression options:&lt;pre&gt;$ ./xdelta3 -S none -s xdelta3.h xdelta3.c OUT  # 53618 bytes&lt;br /&gt;$ ./xdelta3 recode -S djw1 OUT OUT-djw1         # 51023 bytes&lt;br /&gt;$ ./xdelta3 recode -S djw3 OUT OUT-djw3         # 47729 bytes&lt;br /&gt;$ ./xdelta3 recode -S djw6 OUT OUT-djw6         # 45946 bytes&lt;br /&gt;$ ./xdelta3 recode -S djw7 OUT OUT-djw7         # 45676 bytes&lt;br /&gt;$ ./xdelta3 recode -S djw8 OUT OUT-djw8         # 45658 bytes&lt;br /&gt;$ ./xdelta3 recode -S djw9 OUT OUT-djw9         # 45721 bytes&lt;br /&gt;&lt;/pre&gt;Secondary compression remains off by default.  Passing &lt;tt&gt;-S&lt;/tt&gt; &lt;tt&gt;djw&lt;/tt&gt; is equivalent to &lt;tt&gt;-S&lt;/tt&gt; &lt;tt&gt;djw6&lt;/tt&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-699540730837784498?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/699540730837784498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=699540730837784498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/699540730837784498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/699540730837784498'/><link rel='alternate' type='text/html' href='http://xdelta.org/2007/11/xdelta-3.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-8392220234815229202</id><published>2007-07-18T21:00:00.000-07:00</published><updated>2007-07-21T00:03:53.052-07:00</updated><title type='text'></title><content type='html'>I'm happy about an e-mail from a manager at Pocket Soft, clarifying what was written in my previous post. Obviously, Pocket Soft deserves recognition here because, commercially speaking, they're the only basis for comparison sent by users. I am posting the entire content here.&lt;ul&gt;Hi, Josh. I'm the Manager of Software Engineering at Pocket Soft, makers of RTPatch. I'd like to address a misquote contained in your June 28th post and hopefully clear the air and explain Pocket Soft's official position with respect to open source, patents and head-to-head comparison with XDelta. I'm happy for you to use all or part of my email within your site, if you feel it is appropriate.&lt;br /&gt;&lt;br /&gt;First of all, the quote "xdelta likely infringes on our patents as well" is inaccurate (nobody from Pocket Soft made that specific remark to anyone at anytime); however, it does embody the essence of a statement made by one of our salesmen to a company in Australia that could have been *construed* to suggest a patent infringement claim. This was a one-time incident, and was not representative of Pocket Soft's corporate position. In fact, our CEO spoke to the CEO of the Australian outfit who received this message and explained that it was the result of an overzealous salesman. We have also addressed this issue internally with all staff.&lt;br /&gt;&lt;br /&gt;In fact, Pocket Soft is a supporter of open source software, and understand that it serves a great purpose in our industry. Further, having spent the last 15+ years on the specific problems associated with byte-level differencing, we have a great appreciation for the work that you have done on XDelta. The purpose of patents for Pocket Soft's use are in fact defensive and to serve as a sales "check list" for our Enterprise customers. Consider the following [&lt;a href="http://www.datadirect.com/developer/jdbc/open-source-database-drivers/index.ssp"&gt;article&lt;/a&gt;].&lt;br /&gt;&lt;br /&gt;In particular, the section of "Legal Risk" comes into play frequently with the OEM and even shrink-wrap sales we make to Enterprise. When you are selling to the Oracles of the world, we are almost always asked "what about indemnity?". The existence of a patent on the core technology helps to alleviate fears of legal risk - regardless of your, or even our own, opinions on software patents themselves.&lt;br /&gt;&lt;br /&gt;Regarding head-to-head comparison, we are well aware of specific places where we could improve speed or patch file size in RTPatch to gain a few points here and there; however, the needs of our customers regarding reliability trump that. Your reader wrote that they had a 4.5 year old version of RTPatch. Some of our users cling to 12 year old versions fearing the possibility of destabilization with a new release. Our Enterprise customers like to hear that we can claim with absolute sincerity that the current patch file format, Build engine, etc., have been thoroughly tested and that the same algorithms are being used for the million+ patches applied every single day by users of RTPatch (McAfee and Trend Micro alone put out that many patches). When the US Navy began using RTPatch for their digitized nautical charts used by ships at sea, they cared less about gaining a few more points on size reduction or even speed of Build. They needed&lt;br /&gt;reliability and robustness.&lt;br /&gt;&lt;br /&gt;This is not to say that your product lacks these characteristics. I am speaking only to the issues that we are faced with daily by our customers and potential customers. We also have to deal with the extended feature-set of RTPatch, including support for Windows Installer, automatic patch delivery mechanisms, as well as a host of Windows-specific features and options (self-registering files, registry support, etc.). The core algorithm is, of course, important, but in our market, there is much more than just byte-level differencing at play.&lt;br /&gt;&lt;br /&gt;Finally, on a personal note, I wanted to say that we're not a big, bad corporation out to squash or bully innovators of open source software. On the contrary, we appreciate the attention you draw to yourself, which in turns brings companies who are in our market, to the attention of RTPatch. I understand that you work at Google now, so I'm sure that you know that not *all* companies are evil. :)&lt;br /&gt;&lt;br /&gt;I hope you took the time to read this far. I certainly appreciate the opportunity to clear the air. Feel free to call or email anytime, and I'd be happy to chat.&lt;br /&gt;&lt;br /&gt;Best of luck to you,&lt;br /&gt;&lt;br /&gt;Tony O-&lt;br /&gt;Manager, Software Engineering&lt;br /&gt;Pocket Soft, Inc.&lt;br /&gt;713-460-5600&lt;/ul&gt;I've received a steady stream of e-mail regarding Xdelta ever since version 0.13 was released (Oct 12 1997) and this is one of the nicest ones ever. Thanks.&lt;br /&gt;&lt;br /&gt;Re: Patents and the Oracles of the world&lt;br /&gt;&lt;br /&gt;The threat model is: I will sell a software license excluding you from the (copyright-related) terms of the GPL, giving you unlimited use for a flat fee, but it's done without representations, warranties, liabilities,  indemnities, etc. The argument is, your company could be sued over intellectual property rights if any of the following technologies and programs should fall to a claim (although they have never to my knowledge been in doubt): Zlib-1.x, Xdelta-1.x, and the draft-standard RFC 3284 (VCDIFF). &lt;br /&gt;&lt;br /&gt;I will say this:&lt;ul&gt;In the event [Company] discovers that Licensor is not the legal owner and title holder of any code sequence within Xdelta delivered under this Agreement, [Company] shall notify Licensor of such discovery in writing, including the specific software code sequence in question, and shall give Licensor One Hundred Eighty (180) days to replace same with a functionally equivalent code sequence that Licensor is the legal owner and title holder of, all prior to invoking any form of relief which may be permitted under this Agreement. (contact me for a sample license)&lt;/ul&gt;But, patents aren't the real issue to me, in this post or the last, it's about support and features. This really is more than "just byte-level differencing at play".&lt;br /&gt;&lt;br /&gt;Re: Support&lt;br /&gt;&lt;br /&gt;In the unlikely event that you find an Xdelta crash or incorrect result, I'm really interested in fixing it. I keep track of &lt;a href="http://code.google.com/p/xdelta/issues/list"&gt;issues&lt;/a&gt;. I respond to e-mail, like this one about directory-diff support:&lt;ul&gt;hi, i'm using your AMAZING(!) xdelta 1.1.3 and is fantastic...i use it for make the patches for my translations and stuff like these...i was wondering...is it possible to implement a feature that expand the process to all the subdirectories? using a for like this for %%i in (*.*) do xdelta delta "OLD\%%i" "NEW\%%i" "%%i.patch" it doesn't recreate the dir tree and it doesn't take the subdirectories...what do you think about that?&lt;/ul&gt;Here's a user-submitted &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=21"&gt;perl script&lt;/a&gt; for recursive directory diff. (To which the sender replied, "I don't know barely nothing about perl," making two of us.) If you have your own engineers, if Xdelta passes your tests, you probably don't need support. If you're McAfee or the US Navy, you need support. Here's someone who needs support:&lt;ul&gt;We are using xdelta3 to compress our backups down at my workplace and it is working excellently, however whichever machine it is run on is put out of commission for the duration due to the xdelta3 executable window popping up for each file. Would it be possible to build the xdelta3 program as a DLL, much like zlib is? I have absolutely no knowledge of C/C++ so I don't know if this is a huge ask or not :)&lt;/ul&gt;I'd rather work on my &lt;a href="http://electriclawnmower.blogspot.com"&gt;car project&lt;/a&gt; than self-registering files, thank you very much. =)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-8392220234815229202?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/8392220234815229202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=8392220234815229202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/8392220234815229202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/8392220234815229202'/><link rel='alternate' type='text/html' href='http://xdelta.org/2007/07/im-happy-about-e-mail-from-manager-at.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-1786326876066769626</id><published>2007-06-28T17:00:00.000-07:00</published><updated>2007-06-29T01:28:48.382-07:00</updated><title type='text'></title><content type='html'>No new versions posted since March, so a few updates. One user sent a MSDOS &lt;code&gt;.bat&lt;/code&gt; &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=40"&gt;script&lt;/a&gt; for xdelta1/xdelta3 command-line compatibility, another sent a &lt;code&gt;perl&lt;/code&gt; &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=21"&gt;script&lt;/a&gt; for recursive directory diff, one user reports good performance for an in-kernel application (&lt;a href="http://xdelta.googlecode.com/svn/trunk/xdelta3/examples/small_page_test.c"&gt;sample code&lt;/a&gt;), and some &lt;a href="http://code.google.com/p/xdelta/issues/list"&gt;feature requests&lt;/a&gt;. Given the lack of bug reports, it's about time to take xdelta3 out of beta.&lt;br /&gt;&lt;br /&gt;Several of you have requested a feature for supporting &lt;em&gt;in-place&lt;/em&gt; updates, allowing you to apply deltas without making a copy of the file, which brings me to another bit of user feedback:&lt;ul&gt;Firstly, I’d just like to let you know that we did a little benchmark at work and xdelta3 came out on top from several utilities in terms of both execution speed and final output size.&lt;br /&gt;&lt;br /&gt;One of those utilities is a 4.5 year old version of RTPatch which we have a license for.&lt;br /&gt;&lt;br /&gt;One of my work colleagues emailed Pocket Soft about this, and as well as the obvious “you’re using an old version” response, and “open source software has no support” arguments, they also said something along the lines of: “xdelta likely infringes on our patents as well”, implying that using it may be illegal.&lt;br /&gt;&lt;br /&gt;Being a great supporter and user of open source in my spare time, I am totally against this sort of spreading of F.U.D., as well as the very idea that software is patentable.&lt;br /&gt;&lt;br /&gt;I’m not sure if my work colleague emailed you as well, but I just thought I’d let you know. :)&lt;/ul&gt;And the funny part is, users were saying 5 years ago that &lt;a href="http://xdelta.org/2007/02/re-performance-from-old-joel-on.html"&gt;Xdelta 1.x beats RTPatch&lt;/a&gt;. :)&lt;br /&gt;&lt;br /&gt;I have to thank the IETF and previous work in open source (e.g., &lt;a href="http://www.ietf.org/rfc/rfc1950.txt"&gt;RFC 1950&lt;/a&gt; &amp;ndash; Zlib, &lt;a href="http://www.ietf.org/rfc/rfc3284.txt"&gt;RFC 3284&lt;/a&gt; &amp;ndash; VCDIFF) for making this possible. &lt;a href="http://zlib.net"&gt;Zlib&lt;/a&gt; bills itself "A Massively Spiffy Yet Delicately Unobtrusive Compression Library (Also Free, Not to Mention Unencumbered by Patents)", and in fact Zlib inspired Xdelta's API from the start (it's "unobtrusive"). Let's not forget Zlib's other main advantage (it's "unencumbered").  As for the the previous request (in-place updates), interest is strong but patents could become an issue.&lt;br /&gt;&lt;br /&gt;Multi-threaded encoding/decoding is another frequent request. The idea is that more CPUs can encode/decode faster by running in parallel over interleaved segments of the inputs. That's future work, and probably a lot of it, but I like the idea.&lt;br /&gt;&lt;br /&gt;Xdelta 3.0q has 11,480 downloads. It's you the user that feeds open source, and thanks for the great feedback!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-1786326876066769626?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/1786326876066769626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=1786326876066769626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/1786326876066769626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/1786326876066769626'/><link rel='alternate' type='text/html' href='http://xdelta.org/2007/06/no-new-versions-posted-since-march.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-117485535226728193</id><published>2007-03-25T13:00:00.000-07:00</published><updated>2007-03-25T19:10:08.690-07:00</updated><title type='text'></title><content type='html'>Xdelta 3.0q features a new &lt;a href="http://code.google.com/p/xdelta/downloads/detail?name=xdelta3q.1.msi"&gt;MSI installer&lt;/a&gt; for Windows.&lt;br /&gt;&lt;br /&gt;Thanks to many of you for your feedback on Windows installation (issues &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=16"&gt;16&lt;/a&gt;, &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=26"&gt;26&lt;/a&gt;, &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=27"&gt;27&lt;/a&gt;). Thanks especially to Nikola Dudar for &lt;a href="http://blogs.msdn.com/nikolad/comments/460368.aspx"&gt;explaining&lt;/a&gt; how to do it.&lt;br /&gt;&lt;br /&gt;Release 3.0q fixes Windows-specific issues: (1) &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=30"&gt;do not buffer stderr&lt;/a&gt;, (2) &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=29"&gt;allow file-read sharing&lt;/a&gt;. Thanks for the feedback!&lt;br /&gt;&lt;br /&gt;Thanks for the following build tools:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wix.sourceforge.net/index.html"&gt;Windows Installer XML (WiX) toolset&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&amp;displaylang=en"&gt;Microsoft Visual C++ 2005 Redistributable Package (x86)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/vstudio/express/"&gt;Microsoft Visual C++ 2005 Express Edition&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB"&gt;Microsoft Platform SDK for Windows Server 2003 R2&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-117485535226728193?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/117485535226728193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=117485535226728193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/117485535226728193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/117485535226728193'/><link rel='alternate' type='text/html' href='http://xdelta.org/2007/03/xdelta-3.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-117265418385711744</id><published>2007-02-27T23:00:00.000-08:00</published><updated>2007-10-31T13:54:07.700-07:00</updated><title type='text'></title><content type='html'>&lt;a href="http://picasaweb.google.com/dotdotisdead/Construction/photo#5036498843233199378"&gt;&lt;img src="http://lh5.google.com/dotdotisdead/ReU9A26UpRI/AAAAAAAAAKo/WN0Jgs8fwrE/s400/round-12-h.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Plot shows the performance of variable compression-level settings, x (time) and y (compressed size), tested on a specific pair of cached 130MB inputs. &lt;br /&gt;&lt;br /&gt;Compression has an inverse relation between time and space performance. The green line is a hyperbola for reference, f(x) = 1.33MB + (30KB*s) / (x - 2.45s). Sample points:&lt;br /&gt;&lt;br /&gt;1.49MB in 2.9sec at ~45MB/sec (98.9% compression)&lt;br /&gt;1.34MB in 6.5sec at ~20MB/sec (99.0% compression)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-117265418385711744?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/117265418385711744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=117265418385711744' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/117265418385711744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/117265418385711744'/><link rel='alternate' type='text/html' href='http://xdelta.org/2007/02/plot-shows-performance-of-variable.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-117184112526920347</id><published>2007-02-18T13:00:00.000-08:00</published><updated>2007-02-18T18:26:46.033-08:00</updated><title type='text'></title><content type='html'>Re: Xdelta 3.0p (&lt;a href="http://code.google.com/p/xdelta/downloads/list"&gt;download&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Xdelta-3.x processes a window of input at a time, using a fixed memory budget.  This release raises some of the default maximums, for better large-file compression. The default &lt;a href="http://code.google.com/p/xdelta/wiki/TuningMemoryBudget"&gt;memory settings&lt;/a&gt; for large files add up to about 100Mb. (*)&lt;br /&gt;&lt;br /&gt;A user wrote to confirm good performance on 3.7Gb &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=23"&gt;WIM&lt;/a&gt; files, great!&lt;ul&gt;So, to answer the question in your &lt;a href="http://xdelta.org/2007/01/re-xdelta-1.html"&gt;post on Jan 28th&lt;/a&gt;, yes we are using xdelta3 with files larger than 1Gb and it's working well.&lt;br /&gt;&lt;br /&gt;I'm off to try boosting the compression and see how much we can scrunch the patch down. Thank-you for an extremely useful tool that is going to hugely improve our ability to distribute updates to our build images.&lt;/ul&gt;At the other extreme, a developer wrote to ask about using xdelta3 in the &lt;a href="http://www.xensource.com/xen/"&gt;Xen&lt;/a&gt; kernel. Here's an &lt;a href="http://xdelta.googlecode.com/svn/trunk/xdelta3/examples/small_page_test.c"&gt;example&lt;/a&gt; of xdelta3 configured for a 4Kb page using 32Kb.&lt;br /&gt;&lt;br /&gt;A user writes about code size:&lt;ul&gt;I saw your post where you said you’d improved the compression in Xdelta3 and that it was now slightly faster than 1.1.  Do you happen to know where the two stand without compression enabled?  (We don’t use Xdelta’s compression because we compress all of our files after the fact with Rar solid compression.)  Thanks too for the link to those benchmarks.  Those were quite helpful, and it’s cool to see Xdelta come out on top. ;)&lt;br /&gt;&lt;br /&gt;I will say this: One nice thing about the new Xdelta is its smaller size!  Xdelta 1.1’s exe is 1Mb when not compressed via UPX, whereas Xdelta3 is 100Kb.  Nice. :)&lt;/ul&gt;Thanks! Xdelta3 is faster and better than Xdelta1 with compression disabled (the &lt;tt&gt;-0&lt;/tt&gt; flag), thanks to &lt;a href="http://www.faqs.org/rfcs/rfc3284.html"&gt;VCDIFF&lt;/a&gt; and other improvements.&lt;br /&gt;&lt;br /&gt;I'm looking for your ideas on &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=21"&gt;recursive directory diff&lt;/a&gt;. One solution uses tar:&lt;ul&gt;&lt;tt&gt;XDELTA="-s source" tar --use-compress-program=xdelta3 -cf ...&lt;/tt&gt;&lt;/ul&gt;This approach is better than computing pairwise differences, since data can be copied across files/directories. Pay attention to file order and source buffer size. Microsoft developers, consider using the &lt;a href="http://en.wikipedia.org/wiki/WIM_image_format"&gt;WIM&lt;/a&gt; disk image format.&lt;br /&gt;&lt;br /&gt;Thanks for the feedback (file a new &lt;a href="http://code.google.com/p/xdelta/issues/entry"&gt;issue&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;(*) Xdelta-1.x processes the whole input at once, and its data structure takes linear space, &lt;tt&gt;(source file size/2)+O(1)&lt;/tt&gt;.  Xdelta-1.x reads the the entire source file fully two times (to generate checksums, to match the input), using at least half as much memory as the source file size.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-117184112526920347?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/117184112526920347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=117184112526920347' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/117184112526920347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/117184112526920347'/><link rel='alternate' type='text/html' href='http://xdelta.org/2007/02/re-xdelta-3.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-117090989064567734</id><published>2007-02-07T19:00:00.000-08:00</published><updated>2007-02-08T01:39:11.113-08:00</updated><title type='text'></title><content type='html'>Users want speed, especially video gamers. I tested with some of your data: &lt;a href="http://openut.sourceforge.net/"&gt;Unreal tournament&lt;/a&gt; and &lt;a href="http://www.wesnoth.org/"&gt;Wesnoth&lt;/a&gt; patches. These patches save 50-100MB per download.&lt;br /&gt;&lt;br /&gt;Xdelta1 remains popular today because of speed, and xdelta3 until now hasn't been as fast (&lt;a href="http://tonelli.sns.it/pub/mennucc1/debdelta/tests/"&gt;debdev&lt;/a&gt; has tests). Xdelta-3.0o has improved compression levels (&lt;a href="http://code.google.com/p/xdelta/downloads/list"&gt;download&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Over my sample data, the new default compression level (same as the command-line flag &lt;tt&gt;-1&lt;/tt&gt;) is a little faster than, with compression roughly the same as Xdelta-1.x.  Compression levels &lt;tt&gt;-3&lt;/tt&gt;, &lt;tt&gt;-6&lt;/tt&gt;, and &lt;tt&gt;-9&lt;/tt&gt; are also improved.&lt;br /&gt;&lt;br /&gt;This release also features &lt;a href="http://code.google.com/p/xdelta/wiki/LanguageInterface"&gt;Swig support&lt;/a&gt;, e.g.,&lt;ul&gt;&lt;tt&gt;&lt;pre&gt;import xdelta3&lt;br /&gt;&lt;br /&gt;# memory interface&lt;br /&gt;source = 'source source input0 source source'&lt;br /&gt;target = 'source source target source source'&lt;br /&gt;&lt;br /&gt;result1, patch = xdelta3.xd3_encode_memory(target, source, len(target))&lt;br /&gt;result2, target1 = xdelta3.xd3_decode_memory(patch, source, len(target))&lt;br /&gt;&lt;br /&gt;assert result1 == 0&lt;br /&gt;assert result2 == 0&lt;br /&gt;assert target1 == target&lt;br /&gt;assert len(patch) &lt; len(target)&lt;br /&gt;&lt;br /&gt;# command-line interface&lt;br /&gt;&lt;br /&gt;source_file = ...&lt;br /&gt;target_file = ...&lt;br /&gt;command_args = ['xdelta3', '-f', '-s', source_file, target_file, output_file]&lt;br /&gt;&lt;br /&gt;xdelta3.xd3_main_cmdline(command_args)&lt;/pre&gt;&lt;/tt&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-117090989064567734?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/117090989064567734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=117090989064567734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/117090989064567734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/117090989064567734'/><link rel='alternate' type='text/html' href='http://xdelta.org/2007/02/users-want-speed-especially-video.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-117094704154990225</id><published>2007-02-07T08:00:00.000-08:00</published><updated>2007-02-08T08:36:04.986-08:00</updated><title type='text'></title><content type='html'>Re: SVN teaser&lt;br /&gt;&lt;br /&gt;SVN 125 has a new &lt;tt&gt;XDELTA&lt;/tt&gt; environment variable for passing flags off the command-line, so you can use xdelta3 in conjunction with tar:&lt;ul&gt;&lt;tt&gt;&lt;pre&gt;export XDELTA&lt;br /&gt;XDELTA="-s source-1.tar"&lt;br /&gt;TAR="tar --use-compress-program=xdelta3"&lt;br /&gt;$TAR -cvf source-1-source2.tar.vcdiff source-2/&lt;br /&gt;...&lt;br /&gt;$TAR -xvf source-1-source2.tar.vcdiff source-2/file&lt;/pre&gt;&lt;/tt&gt;&lt;/ul&gt;This creates/extracts-from a delta-compressed tar file, without using intermediate files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-117094704154990225?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/117094704154990225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=117094704154990225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/117094704154990225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/117094704154990225'/><link rel='alternate' type='text/html' href='http://xdelta.org/2007/02/re-svn-teaser-svn-125-has-new-xdelta.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-117040060331037183</id><published>2007-02-01T22:00:00.000-08:00</published><updated>2007-02-02T00:08:22.973-08:00</updated><title type='text'></title><content type='html'>Re: Performance&lt;br /&gt;&lt;br /&gt;From &lt;a href="http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&amp;ixPost=2931"&gt;The Old Joel on Software Forum&lt;/a&gt;:&lt;ul&gt;I checked out rtpatch and xdelta a little while ago - unless there's something wrong with the demo version rtpatch has on their website, xdelta is significantly faster at making patches, and they are a tiny bit smaller.&lt;br /&gt;&lt;br /&gt;The test I ran was on a 200 Meg application, where about 30 megs of random parts of files was different. Rtpatch took around an hour (not sure since I wandered off while waiting) and xdelta took a couple minutes.&lt;br /&gt;&lt;br /&gt;We ended up rolling our own system anyhow, because our application has pretty serious requirements on robustness. Maybe we should try selling it?&lt;/ul&gt;Thanks! 5 years later.&lt;br /&gt;&lt;br /&gt;Another post in the same thread writes:&lt;ul&gt;I did some research on 'patching' like issues, read some papers on the "Longest Common Subsequence" problem, wrote some prototype code...  And we ultimately decided to defer the issue in our product.  Note that we weren't trying to patch our software, we were interested in including tools in our product that would allow administrators to build patches for applications they support in house.&lt;br /&gt;&lt;br /&gt;Long story short...it's a heavily researched issue in Computer Science, but it's still a difficult problem to solve well.  There are both space and time considerations, although running on a 'modern' OS with virtual memory eases the space consideration.  After my evaluation, my guess was that RTPatch was in no way producing an optimal solution, but that they were relying on compression to keep the size of the patch small.  Their genius lies in being able to generate a patch so quickly...&lt;/ul&gt;&lt;a href="http://en.wikipedia.org/wiki/Longest_common_subsequence"&gt;Longest common subsequence&lt;/a&gt; isn't quite the same problem, but it's true that compression performance should be measured in several dimensions: size (of compression), memory usage, and speed.   Xdelta3 supports compression levels -1 (fast) through -9 (best).&lt;br /&gt;&lt;br /&gt;Virtual memory does not ease the space consideration. Reading from disk is terribly slow, so Xdelta3 avoids seeking backwards in the source file during compression.  Read more about xdelta3 &lt;a href="http://code.google.com/p/xdelta/wiki/TuningMemoryBudget"&gt;memory&lt;/a&gt; settings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-117040060331037183?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/117040060331037183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=117040060331037183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/117040060331037183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/117040060331037183'/><link rel='alternate' type='text/html' href='http://xdelta.org/2007/02/re-performance-from-old-joel-on.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-117040206639820273</id><published>2007-02-01T18:00:00.000-08:00</published><updated>2007-02-02T00:06:03.486-08:00</updated><title type='text'></title><content type='html'>Re: SVN 100&lt;br /&gt;&lt;br /&gt;If you're keeping up-to-date by subversion, with the &lt;a href="http://code.google.com/p/xdelta/source"&gt;xdelta source code&lt;/a&gt;, version 100 has a few recent changes: (1) compiles on &lt;a href="http://www.cygwin.com/"&gt;cygwin&lt;/a&gt; (1.x and 3.x), (2) responding to bug report &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=17"&gt;17&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-117040206639820273?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/117040206639820273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=117040206639820273' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/117040206639820273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/117040206639820273'/><link rel='alternate' type='text/html' href='http://xdelta.org/2007/02/re-svn-100-if-youre-keeping-up-to-date.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-117003081901506301</id><published>2007-01-28T14:00:00.000-08:00</published><updated>2007-01-28T23:15:31.830-08:00</updated><title type='text'></title><content type='html'>Re: Xdelta 1.1.4&lt;br /&gt;&lt;br /&gt;An especially grateful user wrote me to say thanks for the open-source software:&lt;ul&gt;Firstly, Xdelta is an impressive piece of software, and I appreciate you writing it.  I've done some tests and found it to be orders of magnitude faster than &lt;a href="http://www.pocketsoft.com/rtpatch.htm"&gt;RTPatch&lt;/a&gt;, the expensive commercial diffing tool!&lt;br /&gt;&lt;br /&gt;I'm using a Windows ported version of &lt;a href="http://evanjones.ca/software/xdelta-win32.html"&gt;Xdelta 1.1.3&lt;/a&gt; in a project I'm working on here, and it works great. (I realize that XDelta 1.1.3 is old, but I like how fast it is relative to the results).  Because that version is licensed under the GPL, I am including a copy of XDelta.exe with the program instead of integrating the code directly.  I'm content to continue doing this, as obviously I want to respect your licensing wishes for the software. (&lt;a href="http://code.google.com/p/xdelta/wiki/LicensingXdelta"&gt;*&lt;/a&gt;)&lt;/ul&gt;Thanks! Another writes:&lt;ul&gt;I hope you can release a bugfix and rub off the beautymarks. xdelta-1.1.x is still used widely and a maintenance release would be appreciated.&lt;/ul&gt;Thanks again! =)&lt;br /&gt;&lt;br /&gt;This is a maintenence release: &lt;a href="http://code.google.com/p/xdelta/downloads/detail?name=xdelta-1.1.4.tar.gz"&gt;Xdelta 1.1.4&lt;/a&gt; remains substantially unchanged since 1999.  This release fixes a bug: Compressed data from 32-bit platforms failed to decompress on 64-bit platforms. This is fixed in the decoder (it was a badly-designed "hint", now ignored), so you can now read old 32-bit patches on 64-bit platforms. Patches produced by 1.1.4 are still readable by 1.1.3 on the same platform. Still, Xdelta 1.1.x is losing its edge. &lt;br /&gt;&lt;br /&gt;Xdelta3 compresses faster and better, using a standardized data format&amp;mdash;&lt;a href="http://www.rfc-editor.org/rfc/rfc3284.txt"&gt;VCDIFF&lt;/a&gt;, and has no dependence on gzip or bzip2. If using a standardized encoding is not particularly important for you, Xdelta3 supports secondary compression options. Xdelta3 (with the &lt;tt&gt;-9 &lt;a href="http://code.google.com/p/xdelta/wiki/BetterCompression"&gt;-S djw&lt;/a&gt;&lt;/tt&gt; flags) is comparible in terms of compression, but much faster than &lt;a href="http://www.daemonology.net/bsdiff/"&gt;bsdiff&lt;/a&gt;. Xdelta3 includes a Windows &lt;tt&gt;.exe&lt;/tt&gt; in the official release.&lt;br /&gt;&lt;br /&gt;As always, I'm interested in your feedback (file a new &lt;a href="http://code.google.com/p/xdelta/issues/entry"&gt;issue&lt;/a&gt;). Are you compressing gigabyte files with Xdelta3? Have you used &lt;a href="http://www.pocketsoft.com/gorilla.htm"&gt;dfc-gorilla&lt;/a&gt; (by the makers of RTPatch)?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-117003081901506301?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/117003081901506301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=117003081901506301' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/117003081901506301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/117003081901506301'/><link rel='alternate' type='text/html' href='http://xdelta.org/2007/01/re-xdelta-1.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-116945132256425163</id><published>2007-01-21T18:00:00.000-08:00</published><updated>2007-01-22T16:12:17.466-08:00</updated><title type='text'></title><content type='html'>Xdelta3 has a stream-oriented &lt;a href="http://code.google.com/p/xdelta/wiki/ProgrammingGuide"&gt;C/C++ interface&lt;/a&gt;.  The application program can compress and decompress data streams using methods named &lt;tt&gt;xd3_encode_input&lt;b&gt;()&lt;/b&gt;&lt;/tt&gt; and &lt;tt&gt;xd3_decode_input&lt;b&gt;()&lt;/b&gt;&lt;/tt&gt;. With a non-blocking API, it's about as easy as programming &lt;a href="http://www.zlib.net/manual.html#Basic%20functions"&gt;Zlib&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Read about it &lt;a href="http://code.google.com/p/xdelta/wiki/ProgrammingGuide"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks for your feedback (file a new &lt;a href="http://code.google.com/p/xdelta/issues/entry"&gt;issue&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-116945132256425163?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/116945132256425163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=116945132256425163' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/116945132256425163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/116945132256425163'/><link rel='alternate' type='text/html' href='http://xdelta.org/2007/01/xdelta3-has-stream-oriented-cc.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-116892214774279219</id><published>2007-01-15T20:00:00.000-08:00</published><updated>2007-01-21T23:34:53.676-08:00</updated><title type='text'></title><content type='html'>Release 3.0l (&lt;a href="http://code.google.com/p/xdelta/downloads"&gt;download&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;This release raises the instruction buffer size and documents the related performance &lt;a href="http://code.google.com/p/xdelta/wiki/TuningMemoryBudget"&gt;issue&lt;/a&gt;. Problems related to setting &lt;tt&gt;-W&lt;/tt&gt; (input window size) especially small or especially large were fixed: the new minimum is 16KB, the new maximum is 16MB. A regression in the unit test was fixed: the compression-level changes in 3.0k had broken several hard-coded test values.&lt;br /&gt;&lt;br /&gt;The encoder has compression-level settings to optimize variously for time and space, such as the width of the checksum function, the number of duplicates to check, and what length is considered good enough. There are 10 parameters (Zlib, by comparision, has 4), but the flag which sets them (&lt;tt&gt;-C&lt;/tt&gt;) is undocumented. I am documenting these and developing experiments to find better defaults.&lt;br /&gt;&lt;br /&gt;There's a new page about &lt;a href="http://code.google.com/p/xdelta/wiki/ExternalCompression"&gt;external compression&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks for your feedback (file a new &lt;a href="http://code.google.com/p/xdelta/issues/entry"&gt;issue&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-116892214774279219?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/116892214774279219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=116892214774279219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/116892214774279219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/116892214774279219'/><link rel='alternate' type='text/html' href='http://xdelta.org/2007/01/release-3_15.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-116865626282797545</id><published>2007-01-12T18:00:00.000-08:00</published><updated>2007-01-12T18:44:22.840-08:00</updated><title type='text'></title><content type='html'>Release 3.0k (&lt;a href="http://code.google.com/p/xdelta/downloads/list"&gt;download&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;This is the first release making only performance improvements, not bug fixes. The default source buffer size has increased from 8 to 64 megabytes, and I've written some notes on &lt;a href="http://code.google.com/p/xdelta/w/edit/TuningMemoryBudget"&gt;tuning memory performance&lt;/a&gt; for large files. I've been running experiments to find better &lt;em&gt;compression-level&lt;/em&gt; defaults. This release has two default compression levels, fast (-1 through -5) and the default slow (-6 through -9), both of which are faster and better than the previous settings. There's more work to do on tuning in both regards, memory and compression level, but this is a starting point.&lt;br /&gt;&lt;br /&gt;There is a new wiki on &lt;a href="http://code.google.com/p/xdelta/wiki/CommandLineSyntax"&gt;command line syntax&lt;/a&gt;. Thanks for your feedback (file a new &lt;a href="http://code.google.com/p/xdelta/issues/entry"&gt;issue&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-116865626282797545?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/116865626282797545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=116865626282797545' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/116865626282797545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/116865626282797545'/><link rel='alternate' type='text/html' href='http://xdelta.org/2007/01/release-3_12.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-116819443294933200</id><published>2007-01-07T10:00:00.000-08:00</published><updated>2007-01-07T14:10:43.573-08:00</updated><title type='text'></title><content type='html'>Release 3.0j (&lt;a href="http://code.google.com/p/xdelta/downloads/list"&gt;download&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;The self-test (run by &lt;code&gt;xdelta3 test&lt;/code&gt;) now passes. There had been a regression related to external-compression, and several tests had to be disabled on Windows. Also fixes VCDIFF info commands on Windows (e.g., &lt;code&gt;xdelta3 printdelta &lt;em&gt;input&lt;/em&gt;&lt;/code&gt;) and memory errors in the Python module.&lt;br /&gt;&lt;br /&gt;Thanks for your continued feedback (file a new &lt;a href="http://code.google.com/p/xdelta/issues/entry"&gt;issue&lt;/a&gt;). A user reports that &lt;code&gt;xdelta3.exe&lt;/code&gt; should not depend on the C++ 8.0 Runtime. I agree&amp;mdash;this is written in C. The source release includes a &lt;code&gt;.vcproj&lt;/code&gt; file, in case you'd like to try for yourself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-116819443294933200?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/116819443294933200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=116819443294933200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/116819443294933200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/116819443294933200'/><link rel='alternate' type='text/html' href='http://xdelta.org/2007/01/release-3.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-116631562533692998</id><published>2006-12-16T16:00:00.000-08:00</published><updated>2006-12-16T22:34:53.216-08:00</updated><title type='text'></title><content type='html'>Thanks for your feedback. (Submit a new &lt;a href="http://code.google.com/p/xdelta/issues/entry"&gt;report&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Release 3.0i builds with native Windows I/O routines (enabled by &lt;tt&gt;/DXD3_WIN32=1&lt;/tt&gt;) and has been tested on 64 bit files.  (Issue &lt;a href="http://code.google.com/p/xdelta/issues/detail?id=3"&gt;closed&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Windows: &lt;a href="http://xdelta.googlecode.com/files/xdelta30i.x86-32.exe"&gt;download&lt;/a&gt;&lt;br /&gt;Source: &lt;a href="http://xdelta.googlecode.com/files/xdelta30i.tar.gz"&gt;download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-116631562533692998?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/116631562533692998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=116631562533692998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/116631562533692998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/116631562533692998'/><link rel='alternate' type='text/html' href='http://xdelta.org/2006/12/thanks-for-your-feedback.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-116579557831974564</id><published>2006-12-10T16:00:00.000-08:00</published><updated>2006-12-10T17:25:42.536-08:00</updated><title type='text'></title><content type='html'>&lt;tt&gt;#include &amp;lt;windows.h&amp;gt;&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;Ladies and Gents, &lt;br /&gt;Version 3.0h runs on Windows.&lt;br /&gt;Please head straight for the latest download of your choice:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xdelta.googlecode.com/svn/trunk/xdelta3/releases/xdelta30h.tar.gz"&gt;Source&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xdelta.googlecode.com/svn/trunk/xdelta3/releases/xdelta30h.x86-32.exe"&gt;Windows x86-32&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xdelta.googlecode.com/svn/trunk/xdelta3/releases/xdelta30h.ppc-osx.bin"&gt;OSX PPC&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I thought I'd share this first and test it later, let you be the judge.&lt;br /&gt;&lt;br /&gt;There are not a lot of platform dependencies. The main() routine has helpful options:&lt;ul&gt;&lt;li&gt;&lt;tt&gt;/DXD3_STDIO=1&lt;/tt&gt; builds with portable I/O routines&lt;br /&gt;&lt;li&gt;&lt;tt&gt;/DEXTERNAL_COMPRESSION=0&lt;/tt&gt; builds without external compression, which requires POSIX system calls&lt;/ul&gt;A call to gettimeofday() had to be replaced:&lt;pre class=code&gt;&lt;br /&gt;static long&lt;br /&gt;get_millisecs_now (void)&lt;br /&gt;{&lt;br /&gt;#ifndef WIN32&lt;br /&gt;  struct timeval tv;&lt;br /&gt;  gettimeofday (&amp; tv, NULL);&lt;br /&gt;  return (tv.tv_sec) * 1000L + (tv.tv_usec) / 1000;&lt;br /&gt;#else&lt;br /&gt;  SYSTEMTIME st;&lt;br /&gt;  FILETIME ft;&lt;br /&gt;  __int64 *pi = (__int64*)&amp;ft;&lt;br /&gt;  GetLocalTime(&amp;st);&lt;br /&gt;  SystemTimeToFileTime(&amp;st, &amp;ft);&lt;br /&gt;  return (long)((*pi) / 10000);&lt;br /&gt;#endif&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;The remaining changes were minimal, such as the printf format string for 64bit file offsets. I haven't run a 64bit test on Windows&amp;mdash;I was too busy posting this. :-)&lt;br /&gt;&lt;br /&gt;Please file issues &lt;a href="http://code.google.com/p/xdelta/issues/entry"&gt;here&lt;/a&gt; or send mail to &amp;lt;josh&amp;#x2e;macdonald&amp;#x40;gmail&amp;#x2e;com&amp;gt;.&lt;br /&gt;&lt;br /&gt;(Thanks to &lt;a href="http://tortoisesvn.tigris.org/"&gt;TortoiseSVN&lt;/a&gt; for keeping us in &lt;a href="http://xdelta.googlecode.com/svn/trunk/xdelta3/"&gt;sync&lt;/a&gt;.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-116579557831974564?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/116579557831974564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=116579557831974564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/116579557831974564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/116579557831974564'/><link rel='alternate' type='text/html' href='http://xdelta.org/2006/12/include.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-116579078414401971</id><published>2006-12-10T14:00:00.000-08:00</published><updated>2006-12-10T14:47:25.163-08:00</updated><title type='text'></title><content type='html'>To: Microsoft&lt;br /&gt;Re: Windows support&lt;br /&gt;&lt;br /&gt;Dear sirs,&lt;br /&gt;&lt;br /&gt;Thanks for the free downloads!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/vstudio/express/"&gt;Microsoft Visual C++ 2005 Express Edition&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB"&gt;Microsoft Platform SDK for Windows Server 2003 R2&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-116579078414401971?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/116579078414401971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=116579078414401971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/116579078414401971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/116579078414401971'/><link rel='alternate' type='text/html' href='http://xdelta.org/2006/12/to-microsoft-re-windows-support-dear.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-115941869990823004</id><published>2006-09-27T21:00:00.000-07:00</published><updated>2007-01-23T03:01:38.070-08:00</updated><title type='text'></title><content type='html'>&lt;a href="http://dot.kde.org/1067849710/1068041820"&gt;KDE.org&lt;/a&gt; asked how to use xdelta3. Like gzip with the additional &lt;tt&gt;-s SOURCE&lt;/tt&gt;. Like gzip, &lt;tt&gt;-d&lt;/tt&gt; means to decompress, and the default is to compress. For output, &lt;tt&gt;-c&lt;/tt&gt; and &lt;tt&gt;-f&lt;/tt&gt; flags behave likewise. Unlike gzip, xdelta3 defaults to &lt;tt&gt;stdout&lt;/tt&gt; (instead of having an automatic extension). Without &lt;tt&gt;-s SOURCE&lt;/tt&gt;, xdelta3 behaves like gzip for &lt;tt&gt;stdin&lt;/tt&gt;/&lt;tt&gt;stdout&lt;/tt&gt; purposes. &lt;a href="http://code.google.com/p/xdelta/wiki/CommandLineSyntax"&gt;See also&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Compress examples:&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;xdelta3 -s SOURCE TARGET &amp;gt; OUT&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;xdelta3 -s SOURCE TARGET OUT&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;xdelta3 -s SOURCE &amp;lt; TARGET &amp;gt; OUT&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;Decompress examples:&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;xdelta3 -d -s SOURCE OUT &amp;gt; TARGET&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;xdelta3 -d -s SOURCE OUT TARGET&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;xdelta3 -d -s SOURCE &amp;lt; OUT &amp;gt; TARGET&lt;/tt&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-115941869990823004?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/115941869990823004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=115941869990823004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/115941869990823004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/115941869990823004'/><link rel='alternate' type='text/html' href='http://xdelta.org/2006/09/kde_27.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-115908611619957193</id><published>2006-09-24T19:00:00.000-07:00</published><updated>2006-09-24T23:40:20.480-07:00</updated><title type='text'></title><content type='html'>The latest release 3.0g works&amp;mdash;finally!&amp;mdash;with 64-bit files. &lt;a href="http://xdelta.googlecode.com/svn/trunk/xdelta3/releases/xdelta30g.tar.gz"&gt;&lt;tt&gt;xdelta30g.tar.gz&lt;/tt&gt;&lt;/a&gt; (subversion &lt;a href="http://xdelta.googlecode.com/svn/trunk/xdelta3/"&gt;11&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-115908611619957193?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/115908611619957193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=115908611619957193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/115908611619957193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/115908611619957193'/><link rel='alternate' type='text/html' href='http://xdelta.org/2006/09/latest-release-3.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-115915559978762847</id><published>2006-09-24T07:00:00.000-07:00</published><updated>2006-09-28T01:45:18.446-07:00</updated><title type='text'></title><content type='html'>Xdelta3 has support for &lt;b&gt;secondary compression&lt;/b&gt;, part of VCDIFF (&lt;a href="http://www.rfc-editor.org/rfc/rfc3284.txt"&gt;RFC 3284&lt;/a&gt;) that allows external compression algorithms for the three parts of a VCDIFF window (&lt;tt&gt;instruction&lt;/tt&gt;, &lt;tt&gt;address&lt;/tt&gt;, &lt;tt&gt;data&lt;/tt&gt;). VCDIFF is entirely based on byte codes, not variable-length codes.&lt;br /&gt;&lt;br /&gt;Most compression programs are based on &lt;a href="http://en.wikipedia.org/wiki/Huffman_coding"&gt;Huffman coding&lt;/a&gt;, and there's the well-known &lt;a href="http://en.wikipedia.org/wiki/Burrows-Wheeler_transform"&gt;Burrows&amp;ndash;Wheeler&lt;/a&gt; transform implemented by &lt;a href="http://www.bzip.org"&gt;bzip2&lt;/a&gt;. But there's more to it. I asked Julian Seward and he pointed me at two very interesting articles by &lt;a href="http://www.thocp.net/biographies/wheeler_david.htm"&gt;D. J. Wheeler&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;The &lt;a href="ftp://ftp.cl.cam.ac.uk/users/djw3/bred3.ps"&gt;decription&lt;/a&gt;, and the &lt;a href="ftp://ftp.cl.cam.ac.uk/users/djw3/bred3.c"&gt;code&lt;/a&gt;. Fascinating.&lt;br /&gt;&lt;br /&gt;The algorithm works with multiple Huffman-code tables and several iterations. The input is divided into fixed-length chunks, each chunk assigned to a Huffman table. Each iteration, chunks are assigned to the table which gives the shortest encoding, then the tables are recomputed according to the chunks they were assigned.&lt;br /&gt;&lt;br /&gt;The chunk encodings plus the chunk&amp;ndash;table assignments are then transformed by &lt;a href="http://en.wikipedia.org/wiki/Move-to-front_transform"&gt;move-to-front&lt;/a&gt;. Move-to-front works very well (especially following Burrows&amp;ndash;Wheeler), but it presents another problem for later Huffman coding, because after move-to-front coding there tend to be many &lt;tt&gt;0&lt;/tt&gt;s, and a symbol having frequency greater than 50% will not be efficiently encoded by Huffman coding&amp;mdash;even the shortest 1-bit code has redundency. To address this problem, the &lt;tt&gt;0&lt;/tt&gt; symbol is replaced by two symbols (call them &lt;tt&gt;0_0&lt;/tt&gt; and &lt;tt&gt;0_1&lt;/tt&gt;).  These two symbols are used to code the run-length of &lt;tt&gt;0&lt;/tt&gt;s in binary.&lt;br /&gt;&lt;br /&gt;What really fascinates me is how Wheeler does this in &lt;a href="ftp://ftp.cl.cam.ac.uk/users/djw3/bred3.c"&gt;780 lines of code&lt;/a&gt;&amp;mdash;including the Burrows&amp;ndash;Wheeler transform. Amazing.&lt;br /&gt;&lt;br /&gt;Xdelta3 has a secondary compressor based on DJW enabled by &lt;tt&gt;-S djw&lt;/tt&gt; (&lt;a href="http://xdelta.googlecode.com/svn/trunk/xdelta3/xdelta3-djw.h"&gt;2000 lines&lt;/a&gt; w/ no Burrows&amp;ndash;Wheeler transform).  For comparison (*), there's another secondary compression (enabled by &lt;tt&gt;-S fgk&lt;/tt&gt;), based on D. E. Knuth's &lt;a href="http://portal.acm.org/citation.cfm?coll=GUIDE&amp;dl=GUIDE&amp;id=4008"&gt;Dynamic Huffman coding&lt;/a&gt;. A dynamic huffman code updates code-table frequencies after each symbol is encoded or decoded. The routines are efficient (it's Knuth, after all), but still slower than DJW.&lt;br /&gt;&lt;br /&gt;Since there are no standards written for secondary compression, secondary compression is turned off by default, but I recommend giving &lt;tt&gt;-S djw&lt;/tt&gt; a try. Sample results:&lt;br /&gt;&lt;br /&gt;&lt;table cellspacing=3 cellpadding=0&gt;&lt;tr&gt;&lt;td&gt;source&lt;/td&gt;&lt;td align=right&gt;7,064,064&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;target&lt;/td&gt;&lt;td align=right&gt;7,031,808&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;xdelta -e -1&lt;/td&gt;&lt;td align=right&gt;613,032&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;xdelta -e -9&lt;/td&gt;&lt;td align=right&gt;610,560&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;xdelta -e -1 -S djw&lt;/td&gt;&lt;td align=right&gt;461,298&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;xdelta -e -9 -S djw&lt;/td&gt;&lt;td align=right&gt;458,859&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;xdelta -e -1 -S fgk&lt;/td&gt;&lt;td align=right&gt;476,742&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;xdelta -e -9 -S fgk&lt;/td&gt;&lt;td align=right&gt;474,244&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;(*) only because I once implemented FGK in &lt;a href="http://www.xcf.berkeley.edu/~ali/K0D/Algorithms/huff/"&gt;school&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-115915559978762847?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/115915559978762847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=115915559978762847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/115915559978762847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/115915559978762847'/><link rel='alternate' type='text/html' href='http://xdelta.org/2006/09/xdelta3-has-support-for-secondary.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-115671638432170659</id><published>2006-08-27T14:59:00.000-07:00</published><updated>2006-08-27T15:06:24.333-07:00</updated><title type='text'></title><content type='html'>Thanks to &lt;a href="http://code.google.com/p/xdelta/"&gt;Google code hosting&lt;/a&gt;, there's a new Subversion repository for &lt;a href="http://xdelta.googlecode.com/svn/trunk/xdelta3/"&gt;xdelta3&lt;/a&gt; for us to keep in sync. Recently replaced some code, still having trouble crossing the 32bit/64bit boundary. Stay tuned...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-115671638432170659?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/115671638432170659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=115671638432170659' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/115671638432170659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/115671638432170659'/><link rel='alternate' type='text/html' href='http://xdelta.org/2006/08/thanks-to-google-code-hosting-theres.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-115189105353617566</id><published>2006-07-02T18:34:00.000-07:00</published><updated>2006-07-02T18:44:13.546-07:00</updated><title type='text'></title><content type='html'>Thanks for your continuing reports. Release &lt;a href="http://prdownloads.sourceforge.net/xdelta/xdelta30f.tar.gz"&gt;3.0f&lt;/a&gt; fixes a bug in &lt;tt&gt;xd3_iopt_flush_instructions&lt;/tt&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   /* If forcing, pick instructions until the list is empty, otherwise this empties 50% of&lt;br /&gt;    * the queue. */&lt;br /&gt;   for (flushed = 0; ! xd3_rlist_empty (&amp; stream-&gt;iopt.used); )&lt;br /&gt;     {&lt;br /&gt;-      if ((ret = xd3_iopt_add_encoding (stream,&lt;br /&gt;-                    xd3_rlist_pop_front (&amp; stream-&gt;iopt.used)))) { return ret; }&lt;br /&gt;-      // TODO: what about this fraction??&lt;br /&gt;-      if (! force &amp;&amp; ++flushed &gt; stream-&gt;iopt_size / 2) { break; }&lt;br /&gt;+      xd3_rinst *renc = xd3_rlist_pop_front (&amp; stream-&gt;iopt.used);&lt;br /&gt;+      if ((ret = xd3_iopt_add_encoding (stream, renc)))&lt;br /&gt;+       {&lt;br /&gt;+         return ret;&lt;br /&gt;+       }&lt;br /&gt;+&lt;br /&gt;+      if (! force) &lt;br /&gt;+       {&lt;br /&gt;+         if (++flushed &gt; stream-&gt;iopt_size / 2)&lt;br /&gt;+           {&lt;br /&gt;+             break;&lt;br /&gt;+           }&lt;br /&gt;+&lt;br /&gt;+         /* If there are only two instructions remaining, break, because they were&lt;br /&gt;+          * not optimized.  This means there were more than 50% eliminated by the&lt;br /&gt;+          * loop above. */&lt;br /&gt;+         r1 = xd3_rlist_front (&amp; stream-&gt;iopt.used);&lt;br /&gt;+         if (xd3_rlist_end(&amp; stream-&gt;iopt.used, r1) ||&lt;br /&gt;+             xd3_rlist_end(&amp; stream-&gt;iopt.used, r2 = xd3_rlist_next (r1)) ||&lt;br /&gt;+             xd3_rlist_end(&amp; stream-&gt;iopt.used, r3 = xd3_rlist_next (r2)))&lt;br /&gt;+           {&lt;br /&gt;+             break;&lt;br /&gt;+           }&lt;br /&gt;+       }&lt;br /&gt;     }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-115189105353617566?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/115189105353617566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=115189105353617566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/115189105353617566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/115189105353617566'/><link rel='alternate' type='text/html' href='http://xdelta.org/2006/07/thanks-for-your-continuing-reports.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-114873503834623177</id><published>2006-05-27T08:01:00.000-07:00</published><updated>2006-05-27T06:03:58.346-07:00</updated><title type='text'></title><content type='html'>And we're back... The site was down for most of this month. It's a terribly uninteresting story. I've been on vacation, but before leaving I put together a new release, &lt;a href="http://prdownloads.sourceforge.net/xdelta/xdelta30e.tar.gz?download"&gt;3.0e&lt;/a&gt;, which fixes major bugs. Approaching a stable release? Possibly.&lt;br /&gt;&lt;br /&gt;I'd like to thank the users for sending detailed reports, especially test cases.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-114873503834623177?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/114873503834623177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=114873503834623177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/114873503834623177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/114873503834623177'/><link rel='alternate' type='text/html' href='http://xdelta.org/2006/05/and-were-back.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-114031333704556904</id><published>2006-02-18T17:00:00.000-08:00</published><updated>2006-02-18T19:41:17.733-08:00</updated><title type='text'></title><content type='html'>Latest release: &lt;a href="http://xdelta.org/xdelta30d.tar.gz"&gt;xdelta30d.tar.gz&lt;/a&gt; fixes a bug sent in by at least three users. Thanks for great reporting. The bug was an assertion failure during encode, so it's one you would have noticed, had it happened to you.&lt;br /&gt;&lt;br /&gt;Several of you have sent patches for building on Windows, which I appreciate. This version should at least be easier to build (e.g., rename a field from &lt;tt&gt;near&lt;/tt&gt; to &lt;tt&gt;near_array&lt;/tt&gt;, add &lt;tt&gt;"b"&lt;/tt&gt; to the &lt;tt&gt;fopen()&lt;/tt&gt; mode, eliminate unnecessary &lt;tt&gt;sys/&lt;/tt&gt; includes, ...).&lt;br /&gt;&lt;br /&gt;The author of &lt;a href="http://kdiff3.sourceforge.net/"&gt;kdiff3&lt;/a&gt; mailed, asking for help visualizing binary diffs. We'll get that working, but in the meanwhile there is a way to print the contents of a VCDIFF input, &lt;tt&gt;xdelta3 printdelta INPUT&lt;/tt&gt;. It prints the VCDIFF header, followed by the instruction list. For example:&lt;pre&gt;&lt;br /&gt;  Offset Code Type1 Size1 @Addr1 + Type2 Size2 @Addr2&lt;br /&gt;  000000 019  CPY_0 59357 @0     &lt;br /&gt;  059357 013  ADD    12        &lt;br /&gt;  059369 037  CPY_1   5 @120794&lt;br /&gt;  059374 019  CPY_0 2066 @59370 &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-114031333704556904?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/114031333704556904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=114031333704556904' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/114031333704556904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/114031333704556904'/><link rel='alternate' type='text/html' href='http://xdelta.org/2006/02/latest-release-xdelta30d.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-114021095821293447</id><published>2006-02-17T13:00:00.000-08:00</published><updated>2006-02-18T17:09:28.070-08:00</updated><title type='text'></title><content type='html'>A number of people have written me recently regarding xdelta3 on windows. Fact is, I would love it. One writes:&lt;pre&gt;&lt;br /&gt;&gt; Hello,&lt;br /&gt;&gt;&lt;br /&gt;&gt; I have compiled xdelta with cygwin. I have noticed several versions of&lt;br /&gt;&gt; executables produced, but my question is quite simple.&lt;br /&gt;&gt; I want to make diff-like delta from one file to another in the way I could&lt;br /&gt;&gt; in xdelta 1.x, the syntax was&lt;br /&gt;&gt;&lt;br /&gt;&gt;     xdelta delta original_file new_file delta_file&lt;br /&gt;&gt;&lt;br /&gt;&gt; and to create new file from delta&lt;br /&gt;&gt;&lt;br /&gt;&gt;     xdelta patch delta_file original_file new_file&lt;br /&gt;&gt;&lt;br /&gt;&gt; What combination of arguments and what commands shall I issue with xdelta3&lt;br /&gt;&gt; to gain the same effect?&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The syntax is similar to gzip, with the addition of a "-s original_file" argument. By themselves,&lt;br /&gt;&lt;br /&gt;xdelta3 -df&lt;br /&gt;xdelta3 -f&lt;br /&gt;&lt;br /&gt;operate the similarly to gzip, even without the -s flag.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&gt; I can't figured out what is wrong with the module.  But I solve the&lt;br /&gt;&gt; problem calling the C binary from os.system('/usr/bin/xdelta3...').&lt;br /&gt;&gt; &lt;br /&gt;&gt; I whish to tell you that I'm very impressed by xdelta3 and would like&lt;br /&gt;&gt; to see finished and polished.  I just hope you have some time to&lt;br /&gt;&gt; deliver an xdelta3 release.&lt;br /&gt;&gt; &lt;br /&gt;&gt; Again, thank you for xdelta3!&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You're welcome. Thanks for writing in. I have a big pile of mail still to go through, and I have at least one xdelta3 bug report. Stay tuned...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-114021095821293447?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/114021095821293447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=114021095821293447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/114021095821293447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/114021095821293447'/><link rel='alternate' type='text/html' href='http://xdelta.org/2006/02/number-of-people-have-written-me_17.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-113124519369807553</id><published>2005-11-05T18:00:00.000-08:00</published><updated>2005-11-05T18:46:33.706-08:00</updated><title type='text'></title><content type='html'>Think what you will of sourceforge.net, but thanks for all the downloads.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://xdelta.org/2005-12month.png"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-113124519369807553?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/113124519369807553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=113124519369807553' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/113124519369807553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/113124519369807553'/><link rel='alternate' type='text/html' href='http://xdelta.org/2005/11/think-what-you-will-of-sourceforge.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-112769746728691130</id><published>2005-09-25T18:00:00.000-07:00</published><updated>2005-09-28T19:14:15.356-07:00</updated><title type='text'></title><content type='html'>I made the last xdelta3 release on Linux T20 Thinkpad. Today, a Mac G5. After an hour fiddling with minor things (size_t changes, test buffer sizes). The &lt;a href="xdelta30c.OSX10.3.9"&gt;OS X debug binary&lt;/a&gt; passes its unittest. The optimized version, not so. Hmmm. Release &lt;a href="xdelta30c.tar.gz"&gt;xdelta30c.tar.gz&lt;/a&gt;. (Needs tuning!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-112769746728691130?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/112769746728691130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=112769746728691130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/112769746728691130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/112769746728691130'/><link rel='alternate' type='text/html' href='http://xdelta.org/2005/09/i-made-last-xdelta3-release-on-linux.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-109047400351923349</id><published>2004-07-21T22:20:00.000-07:00</published><updated>2004-07-21T23:17:07.383-07:00</updated><title type='text'></title><content type='html'>I admit, the teasers were mean. Here's what you need to know: the first public &lt;a href="http://xdelta.org/xdelta30b.tar.gz"&gt;xdelta3&lt;/a&gt; release. Phew, glad that's out of the way. &lt;a href="http://xdelta.org/xdelta3.html"&gt;Here's&lt;/a&gt; some more information. &lt;a href="http://www.gzip.org/zlib.html"&gt;Here's&lt;/a&gt; an obligatory link to zlib, the inspiration behind the new API.&lt;br /&gt; &lt;br /&gt;I was in Bruxelles 6 years ago today, following a &lt;a href="http://www.cs.colorado.edu/users/andre/scm8-cfp.html"&gt;conference&lt;/a&gt; &lt;a href="http://www.cs.colorado.edu/users/andre/scm8/macdonald.html"&gt;talk&lt;/a&gt; &lt;a href="http://www.ulb.ac.be/"&gt;here&lt;/a&gt;. I remember there were lots of bunnys hopping around the university. Happy Independence Day, Belgium.&lt;br /&gt; &lt;br /&gt;A word on licensing. After much deliberation over the merits of this license and that license, I have chosen to apply the GNU Public License version 2 to my code.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-109047400351923349?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/109047400351923349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=109047400351923349' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/109047400351923349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/109047400351923349'/><link rel='alternate' type='text/html' href='http://xdelta.org/2004/07/i-admit-teasers-were-mean.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-109047453366596342</id><published>2004-07-21T22:10:00.000-07:00</published><updated>2004-07-21T22:42:04.930-07:00</updated><title type='text'></title><content type='html'>Re: Licensing&lt;br /&gt; &lt;br /&gt;You're still reading, I see. I am not a lawyer, nor are you. As of this point in time, I wrote every single line of xdelta3 code, except a few snippets of graciously copied from the public domain, as noted in the code, such as adler32(). Read my &lt;a href="http://xdelta.org/xdelta3.c"&gt;acknowledgements&lt;/a&gt;. If the terms of the GPL are not to your liking, please contact &lt;a class="emailaddr" href="mailto:josh.macdonald@gmail&amp;#x40;gmail.com"&gt;me&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-109047453366596342?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/109047453366596342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=109047453366596342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/109047453366596342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/109047453366596342'/><link rel='alternate' type='text/html' href='http://xdelta.org/2004/07/re-licensing-youre-still-reading-i-see.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-109047503717842042</id><published>2004-07-21T22:00:00.000-07:00</published><updated>2004-07-21T22:45:52.183-07:00</updated><title type='text'></title><content type='html'>Re: Does it work?&lt;br /&gt;&lt;br /&gt;Yes, and there are tests to prove it. However, I decided to release the code as-is and see what comes of it.  I imagine there are correctness bugs remaining, but it's more likely you'll find a performance bug.  There are a lot of knobs in the string-matching implementation, which is relatively untuned.&lt;br /&gt;&lt;br /&gt;If you find a bug, I'll fix it. If you're working for an open-source project and you want help, let me know!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-109047503717842042?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/109047503717842042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=109047503717842042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/109047503717842042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/109047503717842042'/><link rel='alternate' type='text/html' href='http://xdelta.org/2004/07/re-does-it-work-yes-and-there-are.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-108594313825614919</id><published>2004-05-30T11:51:00.000-07:00</published><updated>2004-05-30T15:03:22.883-07:00</updated><title type='text'></title><content type='html'>&lt;a href="http://xdelta.org/xdelta3-api-guide.html"&gt;Teaser1&lt;/a&gt;.  &lt;br /&gt;&lt;a href="http://xdelta.org/xdelta3-cmdline.html"&gt;Teaser2&lt;/a&gt;.  &lt;br /&gt;The regression test has more bugs than it turns up, all I really need is a license.  Hmm.  Happy Memorial Day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-108594313825614919?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/108594313825614919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=108594313825614919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/108594313825614919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/108594313825614919'/><link rel='alternate' type='text/html' href='http://xdelta.org/2004/05/teaser1.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-108415374019773532</id><published>2004-05-09T18:21:00.000-07:00</published><updated>2004-05-09T19:23:06.176-07:00</updated><title type='text'></title><content type='html'>Xdelta release 3 is moving so, so slowly but these days I am working a bit. My old Linux machine died and it took a while to repair my data and re-install. I could not compile &lt;a href="http://prcs.xdelta.org"&gt;PRCS&lt;/a&gt; with g++-3.2, so I spent the afternoon fixing it (&lt;a href="http://prdownloads.sourceforge.net/prcs/prcs-1.3.3.tar.gz"&gt;prcs-1.3.3&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Getting back to Xdelta, I built Python-2.3 because SuSe-8.1's Python-2.2 installation could not compile modules.  Prior to losing that hard drive, nine months ago, I had been working on a regression test.  Sadly, there's not much more weekend.&lt;br /&gt;&lt;br /&gt;Happy Mothers Day. Happy Victory Day, Russia.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-108415374019773532?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xdelta.org/feeds/108415374019773532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6565998&amp;postID=108415374019773532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/108415374019773532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/108415374019773532'/><link rel='alternate' type='text/html' href='http://xdelta.org/2004/05/xdelta-release-3-is-moving-so-so.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6565998.post-107829962386843388</id><published>2004-03-02T23:40:00.000-08:00</published><updated>2004-05-09T19:27:38.963-07:00</updated><title type='text'></title><content type='html'>I promise, I'll post something here soon about past, present, and future releases of xdelta.   I have a bunch of brand-new code to implement RFC 3284 sitting on my hard-drive.  When will I have time to finish it?  Until then, I have a personal &lt;a href="http://dotdotisdead.net"&gt;blog&lt;/a&gt;.  BTW: I work at Google, they keep me busy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6565998-107829962386843388?l=xdelta.org' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/107829962386843388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6565998/posts/default/107829962386843388'/><link rel='alternate' type='text/html' href='http://xdelta.org/2004/03/i-promise-ill-post-something-here-soon.html' title=''/><author><name>jmacd</name><uri>http://www.blogger.com/profile/17070193590860471674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://dotdotisdead.blogspot.com/la_musee_rodin.jpg'/></author></entry></feed>
