<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://fileformats.archiveteam.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://fileformats.archiveteam.org/index.php?action=history&amp;feed=atom&amp;title=Cap%27n_Proto</id>
		<title>Cap'n Proto - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://fileformats.archiveteam.org/index.php?action=history&amp;feed=atom&amp;title=Cap%27n_Proto"/>
		<link rel="alternate" type="text/html" href="http://fileformats.archiveteam.org/index.php?title=Cap%27n_Proto&amp;action=history"/>
		<updated>2026-05-20T07:23:54Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.2</generator>

	<entry>
		<id>http://fileformats.archiveteam.org/index.php?title=Cap%27n_Proto&amp;diff=31946&amp;oldid=prev</id>
		<title>Effect2: &quot;either&quot; -&gt; &quot;easier&quot;</title>
		<link rel="alternate" type="text/html" href="http://fileformats.archiveteam.org/index.php?title=Cap%27n_Proto&amp;diff=31946&amp;oldid=prev"/>
				<updated>2019-05-29T06:26:04Z</updated>
		
		<summary type="html">&lt;p&gt;&amp;quot;either&amp;quot; -&amp;gt; &amp;quot;easier&amp;quot;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 06:26, 29 May 2019&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Segments ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Segments ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Cap'n Proto messages are generally divided into several units called &amp;quot;segments&amp;quot; in order to make construction of the message &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;either&lt;/del&gt;.&amp;lt;ref&amp;gt;https://capnproto.org/encoding.html#messages&amp;lt;/ref&amp;gt; Messages using segments begin with a &amp;quot;segment table&amp;quot;&amp;lt;ref&amp;gt;https://capnproto.org/encoding.html#serialization-over-a-stream; name is from https://capnproto.org/encoding.html#canonicalization&amp;lt;/ref&amp;gt; and then the content of those segments. It is possible to write a &amp;quot;flat&amp;quot; message that takes up a single segment, however, the help text of the CLI calls this &amp;quot;rare&amp;quot;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Cap'n Proto messages are generally divided into several units called &amp;quot;segments&amp;quot; in order to make construction of the message &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;easier&lt;/ins&gt;.&amp;lt;ref&amp;gt;https://capnproto.org/encoding.html#messages&amp;lt;/ref&amp;gt; Messages using segments begin with a &amp;quot;segment table&amp;quot;&amp;lt;ref&amp;gt;https://capnproto.org/encoding.html#serialization-over-a-stream; name is from https://capnproto.org/encoding.html#canonicalization&amp;lt;/ref&amp;gt; and then the content of those segments. It is possible to write a &amp;quot;flat&amp;quot; message that takes up a single segment, however, the help text of the CLI calls this &amp;quot;rare&amp;quot;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Packing ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Packing ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Effect2</name></author>	</entry>

	<entry>
		<id>http://fileformats.archiveteam.org/index.php?title=Cap%27n_Proto&amp;diff=31740&amp;oldid=prev</id>
		<title>Effect2: Added comma</title>
		<link rel="alternate" type="text/html" href="http://fileformats.archiveteam.org/index.php?title=Cap%27n_Proto&amp;diff=31740&amp;oldid=prev"/>
				<updated>2019-05-20T02:27:57Z</updated>
		
		<summary type="html">&lt;p&gt;Added comma&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 02:27, 20 May 2019&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Packing ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Packing ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Cap'n Proto defines a very simple compression format called the &amp;quot;packing&amp;quot; format, which is essentially a variant of [[run-length encoding]] that only encode runs of bytes with value 0x00. This is especially useful because Cap'n Proto does not leave out zero-valued fields&amp;lt;ref&amp;gt;https://capnproto.org/encoding.html#structs, and the fact that fast pointer access requires this to be true&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://capnproto.org/news/2014-06-17-capnproto-flatbuffers-sbe.html&amp;lt;/ref&amp;gt;, and so without packing messages may consist of long runs of zero bytes for the values of uninitialized fields. Packing can in many cases significantly reduce file size. See [https://capnproto.org/encoding.html#packing] for details on the format.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Cap'n Proto defines a very simple compression format called the &amp;quot;packing&amp;quot; format, which is essentially a variant of [[run-length encoding]] that only encode runs of bytes with value 0x00. This is especially useful because Cap'n Proto does not leave out zero-valued fields&amp;lt;ref&amp;gt;https://capnproto.org/encoding.html#structs, and the fact that fast pointer access requires this to be true&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://capnproto.org/news/2014-06-17-capnproto-flatbuffers-sbe.html&amp;lt;/ref&amp;gt;, and so without packing&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, &lt;/ins&gt;messages may consist of long runs of zero bytes for the values of uninitialized fields. Packing can in many cases significantly reduce file size. See [https://capnproto.org/encoding.html#packing] for details on the format.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Canonical Form ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Canonical Form ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Effect2</name></author>	</entry>

	<entry>
		<id>http://fileformats.archiveteam.org/index.php?title=Cap%27n_Proto&amp;diff=31736&amp;oldid=prev</id>
		<title>Effect2: Created page with &quot;{{FormatInfo |formattype=electronic |subcat=Serialization |extensions={{ext|capnp}} |released=2013&lt;ref&gt;https://capnproto.org/news/2013-04-01-announcing-capn-proto.html&lt;/ref&gt; }...&quot;</title>
		<link rel="alternate" type="text/html" href="http://fileformats.archiveteam.org/index.php?title=Cap%27n_Proto&amp;diff=31736&amp;oldid=prev"/>
				<updated>2019-05-20T01:25:30Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{FormatInfo |formattype=electronic |subcat=Serialization |extensions={{ext|capnp}} |released=2013&amp;lt;ref&amp;gt;https://capnproto.org/news/2013-04-01-announcing-capn-proto.html&amp;lt;/ref&amp;gt; }...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{FormatInfo&lt;br /&gt;
|formattype=electronic&lt;br /&gt;
|subcat=Serialization&lt;br /&gt;
|extensions={{ext|capnp}}&lt;br /&gt;
|released=2013&amp;lt;ref&amp;gt;https://capnproto.org/news/2013-04-01-announcing-capn-proto.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
'''Cap'n Proto''' is a [[serialization]] format and RPC system meant to be an improved version of [[Protobuf|Protocol Buffers]], written by the same author&amp;lt;ref&amp;gt;https://capnproto.org/index.html, section &amp;quot;Why do you pick on Protocol Buffers so much?&amp;quot;&amp;lt;/ref&amp;gt;. Its major claimed advantage over Protocol Buffers is fast serialization and very fast deserialization; parsing is done lazily and much more simply than in Protocol Buffers, mostly amounting to a small amount of bounds-checking. Compare [[Simple Binary Encoding]] and [[FlatBuffers]] in this regard.&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
Cap'n Proto schema files have the extension &amp;quot;.capnp&amp;quot;&amp;lt;ref&amp;gt;https://capnproto.org/language.html&amp;lt;/ref&amp;gt;. It is not clear what, if any, extensions may be in use for the serialized format.&lt;br /&gt;
&lt;br /&gt;
== Segments ==&lt;br /&gt;
Cap'n Proto messages are generally divided into several units called &amp;quot;segments&amp;quot; in order to make construction of the message either.&amp;lt;ref&amp;gt;https://capnproto.org/encoding.html#messages&amp;lt;/ref&amp;gt; Messages using segments begin with a &amp;quot;segment table&amp;quot;&amp;lt;ref&amp;gt;https://capnproto.org/encoding.html#serialization-over-a-stream; name is from https://capnproto.org/encoding.html#canonicalization&amp;lt;/ref&amp;gt; and then the content of those segments. It is possible to write a &amp;quot;flat&amp;quot; message that takes up a single segment, however, the help text of the CLI calls this &amp;quot;rare&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Packing ==&lt;br /&gt;
Cap'n Proto defines a very simple compression format called the &amp;quot;packing&amp;quot; format, which is essentially a variant of [[run-length encoding]] that only encode runs of bytes with value 0x00. This is especially useful because Cap'n Proto does not leave out zero-valued fields&amp;lt;ref&amp;gt;https://capnproto.org/encoding.html#structs, and the fact that fast pointer access requires this to be true&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://capnproto.org/news/2014-06-17-capnproto-flatbuffers-sbe.html&amp;lt;/ref&amp;gt;, and so without packing messages may consist of long runs of zero bytes for the values of uninitialized fields. Packing can in many cases significantly reduce file size. See [https://capnproto.org/encoding.html#packing] for details on the format.&lt;br /&gt;
&lt;br /&gt;
== Canonical Form ==&lt;br /&gt;
&amp;quot;Canonicalized&amp;quot; messages are those belonging to a well-defined subset of the regular message format. Where packing is used on canonicalized messages, it is taken as a container rather than as part of the format (unlike for non-canonicalized messages). See [https://capnproto.org/encoding.html#canonicalization] for a specification.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
* [https://github.com/capnproto/capnproto Official library]&lt;br /&gt;
** Includes a CLI capable of dumping, converting, etc. messages&lt;br /&gt;
** Debian packages capnproto, libcapnp-*&lt;br /&gt;
* List at [https://capnproto.org/otherlang.html]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://capnproto.org/ Official website]&lt;br /&gt;
* [https://news.ycombinator.com/item?id=5482081 Show HN: Cap'n Proto, by the ex-maintainer of Protocol Buffers]&lt;br /&gt;
* [https://news.ycombinator.com/item?id=12471266 Hacker news: Cap’n Proto]&lt;br /&gt;
* [https://stackoverflow.com/questions/25356551/whats-the-difference-between-the-protocol-buffers-and-the-flatbuffers What's the difference between the Protocol Buffers and the Flatbuffers?]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Effect2</name></author>	</entry>

	</feed>