<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: LLVM Bitcode vs. Protocol Buffers</title>
	<atom:link href="http://blog.reverberate.org/2009/01/11/llvm-bitcode-vs-protocol-buffers/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.reverberate.org/2009/01/11/llvm-bitcode-vs-protocol-buffers/</link>
	<description>parsing, performance, minimalism with C99</description>
	<lastBuildDate>Fri, 19 Feb 2010 23:33:30 -0800</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Ismael Juma</title>
		<link>http://blog.reverberate.org/2009/01/11/llvm-bitcode-vs-protocol-buffers/comment-page-1/#comment-1287</link>
		<dc:creator>Ismael Juma</dc:creator>
		<pubDate>Mon, 09 Mar 2009 00:52:55 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/2009/01/11/llvm-bitcode-vs-protocol-buffers/#comment-1287</guid>
		<description>Hi,

&quot;Space-efficiency in protocol buffers is horrible for repeated-fields. Thus arrays are a problem and the only work around is store a binary blob.&quot;

Note that protocol buffers now supports a packed representation for repeated fields of primitive types:

http://code.google.com/p/protobuf/source/detail?r=92

Ismael</description>
		<content:encoded><![CDATA[<p>Hi,</p>
<p>&#8220;Space-efficiency in protocol buffers is horrible for repeated-fields. Thus arrays are a problem and the only work around is store a binary blob.&#8221;</p>
<p>Note that protocol buffers now supports a packed representation for repeated fields of primitive types:</p>
<p><a href="http://code.google.com/p/protobuf/source/detail?r=92" rel="nofollow">http://code.google.com/p/protobuf/source/detail?r=92</a></p>
<p>Ismael</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: josh</title>
		<link>http://blog.reverberate.org/2009/01/11/llvm-bitcode-vs-protocol-buffers/comment-page-1/#comment-1150</link>
		<dc:creator>josh</dc:creator>
		<pubDate>Tue, 13 Jan 2009 07:17:44 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/2009/01/11/llvm-bitcode-vs-protocol-buffers/#comment-1150</guid>
		<description>@Chris K: yes, the fact that all values are tagged with a key in protocol buffers does give it nice forwards and backwards compatibility.  It&#039;s also true that if you&#039;re using repeated fields as an array you&#039;ll pay 1 byte per array element, which could be as bad as 100% overhead (if your array is bytes) or as low as 12% overhead (if your array is int64s).

@simon: I want to stay 100% C so that the binaries stay as small as possible (currently 20k compiled) and impose as few requirements on the host platform as humanly possible.  You can call C from &lt;i&gt;anything&lt;/i&gt; (like even Objective C or LLVM Assembly Language).  To me staying 100% C is a no-holds-barred way to be as useful as possible in as many weird situations as possible.

@Dave: Cool, though my intention is to write it in such a way that there is no code generation, so that it can be used by bindings to higher-level languages like Perl, Python, Ruby, etc.  So my intended design differs a little from the existing C implementation.

@Eric: thanks man.  I had fun at Amazon and definitely remember coming across your name in association with good things!</description>
		<content:encoded><![CDATA[<p>@Chris K: yes, the fact that all values are tagged with a key in protocol buffers does give it nice forwards and backwards compatibility.  It&#8217;s also true that if you&#8217;re using repeated fields as an array you&#8217;ll pay 1 byte per array element, which could be as bad as 100% overhead (if your array is bytes) or as low as 12% overhead (if your array is int64s).</p>
<p>@simon: I want to stay 100% C so that the binaries stay as small as possible (currently 20k compiled) and impose as few requirements on the host platform as humanly possible.  You can call C from <i>anything</i> (like even Objective C or LLVM Assembly Language).  To me staying 100% C is a no-holds-barred way to be as useful as possible in as many weird situations as possible.</p>
<p>@Dave: Cool, though my intention is to write it in such a way that there is no code generation, so that it can be used by bindings to higher-level languages like Perl, Python, Ruby, etc.  So my intended design differs a little from the existing C implementation.</p>
<p>@Eric: thanks man.  I had fun at Amazon and definitely remember coming across your name in association with good things!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eric</title>
		<link>http://blog.reverberate.org/2009/01/11/llvm-bitcode-vs-protocol-buffers/comment-page-1/#comment-1148</link>
		<dc:creator>Eric</dc:creator>
		<pubDate>Tue, 13 Jan 2009 01:29:57 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/2009/01/11/llvm-bitcode-vs-protocol-buffers/#comment-1148</guid>
		<description>So that&#039;s what you&#039;ve been up to? Amazon could use more folks like you, too bad we lost ya.</description>
		<content:encoded><![CDATA[<p>So that&#8217;s what you&#8217;ve been up to? Amazon could use more folks like you, too bad we lost ya.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave Benson</title>
		<link>http://blog.reverberate.org/2009/01/11/llvm-bitcode-vs-protocol-buffers/comment-page-1/#comment-1147</link>
		<dc:creator>Dave Benson</dc:creator>
		<pubDate>Mon, 12 Jan 2009 19:21:42 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/2009/01/11/llvm-bitcode-vs-protocol-buffers/#comment-1147</guid>
		<description>there is a c binding for protocol buffers now: btw: http://code.google.com/p/protobuf-c/</description>
		<content:encoded><![CDATA[<p>there is a c binding for protocol buffers now: btw: <a href="http://code.google.com/p/protobuf-c/" rel="nofollow">http://code.google.com/p/protobuf-c/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: simon francis</title>
		<link>http://blog.reverberate.org/2009/01/11/llvm-bitcode-vs-protocol-buffers/comment-page-1/#comment-1146</link>
		<dc:creator>simon francis</dc:creator>
		<pubDate>Mon, 12 Jan 2009 17:27:42 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/2009/01/11/llvm-bitcode-vs-protocol-buffers/#comment-1146</guid>
		<description>Why did you want to stay 100% C?</description>
		<content:encoded><![CDATA[<p>Why did you want to stay 100% C?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris K</title>
		<link>http://blog.reverberate.org/2009/01/11/llvm-bitcode-vs-protocol-buffers/comment-page-1/#comment-1145</link>
		<dc:creator>Chris K</dc:creator>
		<pubDate>Mon, 12 Jan 2009 14:42:54 +0000</pubDate>
		<guid isPermaLink="false">http://blog.reverberate.org/2009/01/11/llvm-bitcode-vs-protocol-buffers/#comment-1145</guid>
		<description>I wrote a Haskell implementation of Protocol Buffers and I know nothing about Bitcode.

The binary format for protocol buffers has one outstanding strength: it is backwards and forwards compatible for many kinds of changes in the specification.  Usually one has to resort to a text format for this property or to a self-describing binary format.

Space-efficiency in protocol buffers is horrible for repeated-fields.  Thus arrays are a problem and the only work around is store a binary blob.</description>
		<content:encoded><![CDATA[<p>I wrote a Haskell implementation of Protocol Buffers and I know nothing about Bitcode.</p>
<p>The binary format for protocol buffers has one outstanding strength: it is backwards and forwards compatible for many kinds of changes in the specification.  Usually one has to resort to a text format for this property or to a self-describing binary format.</p>
<p>Space-efficiency in protocol buffers is horrible for repeated-fields.  Thus arrays are a problem and the only work around is store a binary blob.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
