<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:osnews="http://www.osnews.com/rss2#">
	<channel>
		<title>OSNews: </title>
		<link>http://www.osnews.com/story/21842/Courgette_Significantly_Reduces_Chromium_Update_Sizes</link>
		<description>Exploring the Future of Computing</description>
		<language>en-us</language>
		<copyright>Copyright 2001-2013, David Adams</copyright>
		<webMaster>adam+nospam@osnews.com</webMaster>
		<lastBuildDate>Sat, 18 May 2013 23:24:46 GMT</lastBuildDate>
		<image>
			<url>http://www.osnews.com/images/osnews.gif</url>
			<title>OSNews.com</title>
			<link>http://www.osnews.com</link>
		</image>
		<item>
			<title>Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373775</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373775</guid>
			<description>It basically looks at the machine code of the new and the old executable. Adjusts/aligns the matching parts and then does a diff.(Not 100% correct, but you get the idea)<br />
 Simple but really genius .. just like their page rank algorithm... I am still pissed that I didn't come up with something that obvious .. damn .. I could really use all that money.(I would spent most of it on cars, women and drugs. The rest I would squander.)Edited 2009-07-16 22:06 UTC</description>
			<pubDate>Thu, 16 Jul 2009 22:05:00 GMT</pubDate>
			<author>donotreply@osnews.com (kragil)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>Great work! </title>
			<link>http://www.osnews.com/thread?373776</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373776</guid>
			<description>I'd love to see the detailed algorithm for this (which will hopefully be in the paper that they're working on). That should be well worth waiting for!  <br />
 <br />
 Really good to see work like this being done - looks like a very clever and elegant solution to the &quot;diffing problem&quot;.<br />
<br />
It'll be interesting to see which license the Courgette code is releaed under (if it is released).<br />
I'd love to see it as &quot;public domain&quot; as (say) the LZMA algorithm is (with the LZMA SDK).Edited 2009-07-16 22:20 UTC</description>
			<pubDate>Thu, 16 Jul 2009 22:07:00 GMT</pubDate>
			<author>donotreply@osnews.com (obsidian)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE: Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373779</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373779</guid>
			<description><div class="cquote">It basically looks at the machine code of the new and the old executable. Adjusts/aligns the matching parts and then does a diff.(Not 100% correct, but you get the idea)<br />
<br />
Simple but really genius .. just like their page rank algorithm... I am still pissed that I didn't come up with something that obvious .. damn .. I could really use all that money.(I would spent most of it on cars, women and drugs. The rest I would squander.) </div><br />
<br />
From what I understand, this isn't particularly new - Linux and Windows have delta updates which are binary diffs; I remember Microsoft before Microsoft developed a technology to reduce the size of updates; where a 1MB update might have a 500K file which is only around 30K difference between the old and new file.</description>
			<pubDate>Thu, 16 Jul 2009 22:17:00 GMT</pubDate>
			<author>donotreply@osnews.com (kaiwai)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>No change to the process though...</title>
			<link>http://www.osnews.com/thread?373781</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373781</guid>
			<description>They would also save bandwidth if they only updated when the browser is actually running. Right now if you install Chrome and don't use it for 6 months, you still have that Google service running in the background and downloading updates whenever it feels like it.<br />
<br />
Also they might want to start installing Chrome in the right location on disk instead of in the user's folder. It almost looks like an attempt to help enterprise users circumvent IT policies. Why can't they just install in the Program Files folder like everyone else? Between that and the lack of standalone installer, I don't see Chrome making much progress in the enterprise world.</description>
			<pubDate>Thu, 16 Jul 2009 22:24:00 GMT</pubDate>
			<author>donotreply@osnews.com (Ventajou)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>Neato</title>
			<link>http://www.osnews.com/thread?373784</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373784</guid>
			<description>Wow. Whoever thought that up is pretty clever. I mean its not like this is something that will change the world or anything - just a very neat optimization.<br />
<br />
I wonder how expensive this operation is at runtime. If it was fast enough, this might be a useful approach to building self-extracting compressed executables for languages that produce large, monolithic, statically linked executables (Delphi comes to mind as a prime example of this)... Probably not worth the trouble for Delphi since it isn't very heavily used anymore, but it might be applicable for the output of some other languages.</description>
			<pubDate>Thu, 16 Jul 2009 22:25:00 GMT</pubDate>
			<author>donotreply@osnews.com (galvanash)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[2]: Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373786</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373786</guid>
			<description>This is quite a bit beyond a simple binary diff. The approach currently taken (afaik) is just generating a simple diff and compressing it using zip/bzip/whatever.<br />
<br />
This is doing what amounts to a full disassembly, complete with a symbol table, prior to compression.<br />
<br />
In spirit, this is the same approach that the png format uses to get such high compression rates. Png uses a loss-less filtering pass that converts image data into a format that is more compressible by zlib. The filtering algorithms themselves are not compressing anything - they often make the data bigger, but they create a representation of the data that zlib can compress much more than the original data, resulting in a net gain. What Google has done is essentially the same thing, the disassembly step is used as a filtering pass to make the data more compressible.</description>
			<pubDate>Thu, 16 Jul 2009 22:35:00 GMT</pubDate>
			<author>donotreply@osnews.com (galvanash)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE: Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373787</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373787</guid>
			<description><div class="cquote">It basically looks at the machine code of the new and the old executable. Adjusts/aligns the matching parts and then does a diff.(Not 100% correct, but you get the idea)<br />
Simple but really genius .. just like their page rank algorithm... I am still pissed that I didn't come up with something that obvious .. damn .. I could really use all that money.(I would spent most of it on cars, women and drugs. The rest I would squander.) </div><br />
No, what you described is what they were doing up until now. The problem is that diffs on compiled binaries end up being ineffective because the binary undergoes many more changes between versions then the corresponding source. Remember that programming languages are very often one-to-many mappings for machine instructions. Even if only one line of code changes in the source, many machine instructions will change in the corresponding binary. When you add optimization in to the mix it gets even more messy. As the code changes the available optimizations the compiler can do also change. Some optimizations are no longer possible, while others become available. This has a drastic effect on the resulting binary. <br />
 <br />
 What Google has done is developed a reversible transformation from a regular binary to one that is more condusive to diff'ing. This was they diff the transformed form, send it over the network and then reverse the transformation.Edited 2009-07-16 22:42 UTC</description>
			<pubDate>Thu, 16 Jul 2009 22:37:00 GMT</pubDate>
			<author>donotreply@osnews.com (flynn)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE: Neato</title>
			<link>http://www.osnews.com/thread?373788</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373788</guid>
			<description><div class="cquote">If it was fast enough, this might be a useful approach to building self-extracting compressed executables for languages that produce large, monolithic, statically linked executables (Delphi comes to mind as a prime example of this)... Probably not worth the trouble for Delphi since it isn't very heavily used anymore, but it might be applicable for the output of some other languages. </div><br />
*cough*Haskell*cough*</description>
			<pubDate>Thu, 16 Jul 2009 22:40:00 GMT</pubDate>
			<author>donotreply@osnews.com (flynn)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[2]: Neato</title>
			<link>http://www.osnews.com/thread?373792</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373792</guid>
			<description>Didn't think of Haskell... Thats a VERY good example - the runtime is rather large and is pretty much always statically linked from what I understand (I'm not a user, but I'm somewhat familiar with it).<br />
<br />
Of course the really big gains Google's approach achieves are only apparent on diffs, for the reason that a small code change often creates a rather large change in the resulting binary. But I wouldn't be surprised if a net gain is achievable even for the entire binary image - the disassembly is likely much more compressible than the binary image.</description>
			<pubDate>Thu, 16 Jul 2009 22:52:00 GMT</pubDate>
			<author>donotreply@osnews.com (galvanash)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>Firefox already has it</title>
			<link>http://www.osnews.com/thread?373793</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373793</guid>
			<description>It may not be exact same technology but firefox has incremental updates. They are called &quot;mar&quot; files. I believe their auto-updates use that. Also, you can download them from their ftp site (in update folder) and install them manually (filenames end with partial.mar)<br />
<br />
Mozilla has not advertised it like Google. I am surprised that people are saying Google invented this cool feature.</description>
			<pubDate>Thu, 16 Jul 2009 22:53:00 GMT</pubDate>
			<author>donotreply@osnews.com (vijayd81)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[2]: Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373796</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373796</guid>
			<description>No, they didn't do the disassemble/adjust part before. That is new.</description>
			<pubDate>Thu, 16 Jul 2009 22:59:00 GMT</pubDate>
			<author>donotreply@osnews.com (kragil)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[3]: Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373797</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373797</guid>
			<description>This is new, but what you described in the initial post wasn't. What you described is just a regular diff. Diff (binary or regular) already works by finding long common subsequences and 'aligning' them. But a regular diff doesn't work on compiled binaries all that well because there are very few such long common subsequences.</description>
			<pubDate>Thu, 16 Jul 2009 23:10:00 GMT</pubDate>
			<author>donotreply@osnews.com (flynn)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[4]: Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373800</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373800</guid>
			<description>I maybe didn't do a good job, but a regular diff has absolutly no understanding what machine code is and how to align machine code. I just left out stuff laymen wouldn't understand and I said it wasn't 100% correct.<br />
<br />
So stop telling me what I said, I know.</description>
			<pubDate>Thu, 16 Jul 2009 23:21:00 GMT</pubDate>
			<author>donotreply@osnews.com (kragil)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE: Firefox already has it</title>
			<link>http://www.osnews.com/thread?373803</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373803</guid>
			<description><div class="cquote">It may not be exact same technology but firefox has incremental updates. They are called &quot;mar&quot; files. </div><br />
 No. Actually, MAR files use a variation on the same &quot;bsdiff&quot; algorithm that Google <b>has been using</b>, and has found to be <b>unsatisfactory</b>. Google's new approach looks to be 10x more effective. So no, Firefox doesn't have anything even remotely like it.<br />
 <br />
 I've been saying for ages that we needed competition in the OSS browser area, and that the Firefox monopoly was bad, bad bad. (Konqueror? Oh, please...) And I'm beginning to feel vindicated, thanks to Google and the Webkit guys.Edited 2009-07-16 23:25 UTC</description>
			<pubDate>Thu, 16 Jul 2009 23:24:00 GMT</pubDate>
			<author>donotreply@osnews.com (sbergman27)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[5]: Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373805</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373805</guid>
			<description><div class="cquote">I maybe didn't do a good job, but a regular diff has absolutly no understanding what machine code is and how to align machine code. I just left out stuff laymen wouldn't understand and I said it wasn't 100% correct.<br />
<br />
So stop telling me what I said, I know. </div><br />
Diff doesn't <i>need</i> to understand machine code to do it's job. It looks for long common subsequences and notes the differences of the rest. The fact that the sequence of 1's and 0's it is comparing corresponds to an add instruction or a mul instruction or a jmp or a call or whatever is absolutely inconsequential. It has no bearing on the algorithm. Just like a text file diff doesn't care about the meaning of the words it's compairing so does binary diff not care about which instructions it's operating on. It just cares about finding the long common sequences of 1's and 0's, no matter what they represent.<br />
<br />
The reason binary diff doesn't work all that well isn't because it doesn't 'understant' machine code, it's because changes between two compiled binaries are often so drastic the resulting diff ends ups being almost as large as the file itself, making it almost useless as a space saver.</description>
			<pubDate>Thu, 16 Jul 2009 23:35:00 GMT</pubDate>
			<author>donotreply@osnews.com (flynn)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[2]: Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373806</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373806</guid>
			<description>Exactly - isn't that the way that that rsync has worked for years now?</description>
			<pubDate>Thu, 16 Jul 2009 23:53:00 GMT</pubDate>
			<author>donotreply@osnews.com (StephenBeDoper)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[3]: Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373810</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373810</guid>
			<description>Read the article again. Rsync does nothing even remotely like this.</description>
			<pubDate>Fri, 17 Jul 2009 00:14:00 GMT</pubDate>
			<author>donotreply@osnews.com (galvanash)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[4]: Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373812</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373812</guid>
			<description><div class="cquote">Read the article again. Rsync does nothing even remotely like this. </div><br />
<br />
Or, perhaps, you could provide some (any) reference to, or citation of, the portion of the article which makes that detail clear? Just a thought.</description>
			<pubDate>Fri, 17 Jul 2009 00:20:00 GMT</pubDate>
			<author>donotreply@osnews.com (StephenBeDoper)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[3]: Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373814</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373814</guid>
			<description>rsync just compares chunks by their checksums and sends over the chunks that don't match. When it comes to binary executables the number of differences is gigantic and spread all over the file, which will effectively make rsync transmit the whole file.</description>
			<pubDate>Fri, 17 Jul 2009 00:25:00 GMT</pubDate>
			<author>donotreply@osnews.com (flynn)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[5]: Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373815</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373815</guid>
			<description><div class="cquote">How do we use this to generate a better diff?  With bsdiff we would compute the new file, 'update' from the 'original' like this:<br />
<br />
<b>server:</b><br />
<i>diff = bsdiff(original, update)<br />
transmit diff</i><br />
<br />
<b>client:</b><br />
<i>receive diff<br />
update = bspatch(original, diff)</i><br />
<br />
(The server would pre-compute diff so that it could be transmitted immediately)<br />
<br />
Courgette transforms the program into the primitive assembly language and does the diffing at the assembly level:<br />
<br />
<b>server:</b><br />
<i>asm_old = disassemble(original)<br />
asm_new = disassemble(update)<br />
asm_new_adjusted = adjust(asm_new, asm_old)<br />
asm_diff = bsdiff(asm_old, asm_new_adjusted)<br />
transmit asm_diff</i><br />
<br />
<b>client:</b><br />
<i>receive asm_diff<br />
asm_old = disassemble(original)<br />
asm_new_adjusted = bspatch(asm_old, asm_diff)<br />
update = assemble(asm_new_adjusted)</i><br />
<br />
 </div><br />
<br />
rsync does essentially the same thing as bsdiff.</description>
			<pubDate>Fri, 17 Jul 2009 00:32:00 GMT</pubDate>
			<author>donotreply@osnews.com (galvanash)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE: No change to the process though...</title>
			<link>http://www.osnews.com/thread?373829</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373829</guid>
			<description>If Chrome is inside Program Files, then it can only update when it is running as Administrator. That's why it's done that way.</description>
			<pubDate>Fri, 17 Jul 2009 03:37:00 GMT</pubDate>
			<author>donotreply@osnews.com (3rdalbum)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[2]: Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373830</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373830</guid>
			<description><div class="cquote">From what I understand, this isn't particularly new - Linux and Windows have delta updates which are binary diffs; I remember Microsoft before Microsoft developed a technology to reduce the size of updates; where a 1MB update might have a 500K file which is only around 30K difference between the old and new file. </div><br />
<br />
Here's the relevant info from MS' Binary Delta Compression reference:<br />
<br />
<div class="cquote">The Delta Compression API offers special handling for certain types of executable files (PE files, such as EXE or DLL files.) In particular, executables designed to run on the 32-bit Intel i386 family get special treatment. When the basis and target files are similar executables, this feature can reduce the size of the delta significantlyâ"typically 50-70% further.<br />
<br />
To get the maximum benefit from this feature, symbol files from the LINK process can be supplied during delta creation. This will help the creation process recognize the nature of the changes between the files. Richer symbol info, such as private symbols, will help make smaller deltas. Figure 3 illustrates this process.<br />
<br />
Figure 3. Delta compression using symbol files<br />
<br />
None of the symbol data is passed in the delta, and the symbol files are not needed during the delta apply process.<br />
<br />
See Optional Data for Delta Create for more information on how symbols can be provided.<br />
<br />
<a href="http://msdn.microsoft.com/en-us/library/ms811406.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms811406.aspx</a>   </div></description>
			<pubDate>Fri, 17 Jul 2009 03:39:00 GMT</pubDate>
			<author>donotreply@osnews.com (n4cer)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[3]: Neato</title>
			<link>http://www.osnews.com/thread?373831</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373831</guid>
			<description>Not really, you cant make miracles<br />
 <br />
 mov ax,bx (72 bits)<br />
 add bx,0xF4D4 (104 bits)<br />
 <br />
 (sorry, I never actually wrote assembly before so I know it is wrong) is bigger than the binary counterpart, let say<br />
 <br />
 F4 D3 9A 73 (64 bits)<br />
 F5 D4 9B 74 (64 bits)<br />
 <br />
 so for the complete binary, the assembly code may be more compressible, but it is also slightly bigger. So in my opinion, you make no gain, it is worst.<br />
 <br />
 -I did not test-Edited 2009-07-17 04:18 UTC</description>
			<pubDate>Fri, 17 Jul 2009 04:17:00 GMT</pubDate>
			<author>donotreply@osnews.com (Elv13)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[4]: Neato</title>
			<link>http://www.osnews.com/thread?373838</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373838</guid>
			<description>Of course it is bigger. It is pretty much always going to be bigger. But the point is that it is dramatically more compressible. <br />
<br />
Executable binaries give something like zlib very little to work with. Zlib (and almost any other compression algorithm) does its magic by finding patterns in the data. Binaries have very little in the way of patterns. The assembly code of said binary, however, is chock block full of patterns.  <br />
<br />
I'm not saying that it would definitely make exe files smaller, in fact I doubt it would be worth the trouble - but it isn't outside the realm of possibility. The odds of it being a net gain increase with executable size - hence why I qualified that it would only be appropriate (possibly) for very large binaries.</description>
			<pubDate>Fri, 17 Jul 2009 06:33:00 GMT</pubDate>
			<author>donotreply@osnews.com (galvanash)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[4]: Neato</title>
			<link>http://www.osnews.com/thread?373841</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373841</guid>
			<description>Close, but no cigar. A major problem is not patterns in the code, but rather function addresses. If you add even one byte to the beginning of a file, all addresses beyond that point are now shifted by one byte. Think of all the functions statically linked which are called by address. Every single call now has a new address. That's a lot of cruft to send over a wire. If you replace function addresses with function symbols, most of them are not going to change. Less info to send that way.</description>
			<pubDate>Fri, 17 Jul 2009 07:04:00 GMT</pubDate>
			<author>donotreply@osnews.com (kjmph)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[3]: Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373842</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373842</guid>
			<description>Interesting. What they are doing sounds very similar, but they require the user to supply the symbol tables manually. Google's approach doesn't require anyone to supply the symbol tables, it creates them itself directly from the machine code (at least it creates something _like_ a symbol table and uses it for the same purpose). <br />
<br />
I don't know which approach is more effective, but if they are close then Google's approach would be far more convenient.</description>
			<pubDate>Fri, 17 Jul 2009 07:19:00 GMT</pubDate>
			<author>donotreply@osnews.com (galvanash)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[5]: Neato</title>
			<link>http://www.osnews.com/thread?373845</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373845</guid>
			<description>Well, I just went take a look at the source code:<br />
<br />
<a href="http://src.chromium.org/viewvc/chrome/trunk/src/courgette/" rel="nofollow">http://src.chromium.org/viewvc/chrome/trunk/src/courgette/</a> <br />
<br />
Frankly, my idea that this might be good as a generic exe packer are probably not valid. I only briefly glanced over the code, and frankly alot of it is WAY over my head, but the secret sauce appears to be what Google calls the &quot;adjustment&quot; step, and that step is only of any consequence for production of a delta - which is of no real consequence for a packer. <br />
<br />
The disassembler is designed to produce a representation of the data in a format that is optimal for their adjustment step. It isn't _really_ a disassembler - its much more primitive than that, but it does in effect generate something akin to an instruction stream and a symbol table.<br />
<br />
There is some pretty cool comments in there though that help explain things a bit. Neat stuff.</description>
			<pubDate>Fri, 17 Jul 2009 07:51:00 GMT</pubDate>
			<author>donotreply@osnews.com (galvanash)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[4]: Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373846</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373846</guid>
			<description>Also, from my understanding of the MS documentation: the Delta Compression API when used without the user supplied symbol table is probably roughly equivalent to bsdiff. It may be slightly more effective because it understands PE format, but that is just a guess.I don't see any other magic going on.</description>
			<pubDate>Fri, 17 Jul 2009 07:57:00 GMT</pubDate>
			<author>donotreply@osnews.com (galvanash)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>Nothing new</title>
			<link>http://www.osnews.com/thread?373848</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373848</guid>
			<description>Back in the DOS days there was a compressor (I think just called ABC, advanced binary coder or something) that allowed you to save the dictionary that is generated when compressing a file. You could then re-use that to compress another file. So if you wanted to do a patch you would save the dictionary from compressing the original then use it to compress the updated version. The resulting file would be very small. Then you transfer the patch, use the compressor to temporary compress the original on the client side. That gives you the dictionary which you can then use to decompress the patch.<br />
To get an idea how much you save by this compress a file with something like lzma (or something else with a big dictionary), then make a small change to a copy of the file, concatenate the two files and compress the result. Then compare filesize between the compressed original file and the compressed concatenated file. That difference is the approximate size of such a patch. (it will in fact be a bit larger as the dictionary cannot be modified by the patch without increasing the patch size) <br />
Personally I would prefer this approach be implemented with something like lzma. Specialized data handling modules like courgette could then supplement that approach.</description>
			<pubDate>Fri, 17 Jul 2009 08:45:00 GMT</pubDate>
			<author>donotreply@osnews.com (Nagilum)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE: Nothing new</title>
			<link>http://www.osnews.com/thread?373851</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373851</guid>
			<description>Just did a small test, looks like this doesn't work with lzma, However I did find the compressor:<br />
<a href="ftp://ftp.elf.stuba.sk/pub/pc/pack/acb_200c.zip" rel="nofollow">ftp://ftp.elf.stuba.sk/pub/pc/pack/acb_200c.zip</a></description>
			<pubDate>Fri, 17 Jul 2009 09:03:00 GMT</pubDate>
			<author>donotreply@osnews.com (Nagilum)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[6]: Layman explanation attempt </title>
			<link>http://www.osnews.com/thread?373852</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373852</guid>
			<description>???????<br />
  <br />
  That is what I am saying all along, that the new way analyses and adjusts (understands) machine code, but you obviously don't understand a single word I am saying so I will stop this insanity now. <br />
<br />
ByeEdited 2009-07-17 09:12 UTC</description>
			<pubDate>Fri, 17 Jul 2009 09:05:00 GMT</pubDate>
			<author>donotreply@osnews.com (kragil)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>RE[2]: Firefox already has it</title>
			<link>http://www.osnews.com/thread?373864</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373864</guid>
			<description>Right, i think i can keel over and die now. Firefox being called a monopoly was the last thing on my list of things i thought i'd never hear.</description>
			<pubDate>Fri, 17 Jul 2009 11:30:00 GMT</pubDate>
			<author>donotreply@osnews.com (Blomma)</author>
			<category>Comments</category>
		</item>

		<item>
			<title>first read that as &amp;quot;Cougar-ette&amp;quot;</title>
			<link>http://www.osnews.com/thread?373908</link>
			<guid isPermaLink="true">http://www.osnews.com/thread?373908</guid>
			<description>need more sleep .. or beer.</description>
			<pubDate>Fri, 17 Jul 2009 16:04:00 GMT</pubDate>
			<author>donotreply@osnews.com (rockwell)</author>
			<category>Comments</category>
		</item>
	</channel>
</rss>
