[{"data":1,"prerenderedAt":434},["ShallowReactive",2],{"project-5482081":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":47,"post_text":48,"what":49,"said":86,"maker_in_thread":154,"shape":165,"grid":169,"attempts":397,"same_week":398,"maker_shows":18,"maker_hidden":427,"reader_version":428,"card":429},"5482081","Cap'n Proto","Cap'n Proto, by the ex-maintainer of Protocol Buffers","title","Show HN: Cap'n Proto, by the ex-maintainer of Protocol Buffers","http:\u002F\u002Fkentonv.github.com\u002Fcapnproto\u002F","kentonv.github.com","kentonv",1364936720,2013,286,85,36,1739,3,"legend","languages","serialization library","library",[24,25,26,27,28],"serialization","protocol buffers","rpc","binary format","zero copy","mixed",-0.17,{"positive":32,"neutral":33,"mixed":34,"critical":35},5,12,4,9,30,{"design":38,"privacy":40,"performance":41,"idea":43,"execution":45,"docs":46},{"positive":39,"critical":18},0,{"positive":39,"critical":39},{"positive":39,"critical":42},2,{"positive":18,"critical":44},1,{"positive":39,"critical":44},{"positive":39,"critical":44},[18,44,18,44,39,39,39,44,18,39,18,44,32,39,32,44,44,32,18,32,18,39,39,18,18,18,39,39,44,44,39,18,18,44,39,39,39,32,18,39],null,{"problem":50,"audience":48,"pricing":48,"motivation":60,"time_to_build":48,"stack":66,"openness":83,"stage":84,"team_size":85},{"value":51,"source":52,"evidence":53},"Serialization that avoids decoding cost; random-access messages usable without parsing","maker",[54,57],{"id":55,"by":11,"text":56},"5482739","Well, I'm obviously biased, but: MessagePack is a binary encoding of JSON, which actually makes it pretty different from both Cap'n Proto and Protocol Buffers, both of which…",{"id":58,"by":11,"text":59},"5482802","To some extent, yes. But the total overhead of bounds-checking pointers in a Cap'n Proto message is orders of magnitude smaller than the overhead of decoding an equivalent…",{"value":61,"source":52,"evidence":62},"Maker's frustrations with protobuf quirks and legacy after leaving Google",[63],{"id":64,"by":11,"text":65},"5483504","This is a good point, and something I considered. There are a few reasons I decided against using the .proto format: * In .proto format, it's generally assumed that _removing_ a…",[67,77],{"value":68,"source":52,"evidence":69},"C++",[70,74],{"id":71,"by":72,"text":73},"5482775","stephen","Okay, protocol buffers are awesome, so as constructive feedback, I think using C++ as the source-generation language is a mistake. We use Thrift, which uses the same approach,…",{"id":75,"by":11,"text":76},"5482855","This will tend to depend on the details of the language. In Java, there is java.nio.ByteBuffer which (I think) can basically do everything that is done with pointer arithmetic in…",{"value":78,"source":52,"evidence":79},"Haskell",[80],{"id":81,"by":11,"text":82},"5482829","I absolutely agree, which is why the Cap'n Proto compiler is written in Haskell. :D","open_source","prototype","solo",{"praise":87,"objections":100,"requests":112,"questions":126,"alternatives":138},[88],{"value":89,"source":90,"evidence":91},"Interest in the design and speed goals","commenter",[92,96],{"id":93,"by":94,"text":95},"5482405","neilk","My first question was: whoa, security? But you answer it in the docs, a bit. http:\u002F\u002Fkentonv.github.com\u002Fcapnproto\u002Fencoding.html (at the end) How do we know that…",{"id":97,"by":98,"text":99},"5482881","jmillikin","Overall, I love how this looks -- it's a nice evolution of protobufs. I had a couple issues\u002Fquestions while reading through the site, so I'll just throw them in here: ``` >…",[101,108],{"value":102,"source":90,"evidence":103},"Incomplete, not ready for use",[104],{"id":105,"by":106,"text":107},"5482270","peterwwillis","\"Note: Cap'n Proto is not ready yet\" Okey doke. Closes window (i wonder if you put half the effort into the code that you did this web site whether you'd have a finished…",{"value":109,"source":90,"evidence":110},"C++ as code generator language is a maintenance barrier",[111],{"id":71,"by":72,"text":73},[113,119],{"value":114,"source":90,"evidence":115},"Text serialization format or JSON support",[116],{"id":117,"by":11,"text":118},"5483068","Thanks for the feedback! ``` > Are you set on that syntax, or would you accept patches to change it? ``` I'm not wedded to the syntax. Maybe start a thread on the discussion…",{"value":120,"source":90,"evidence":121},"Implementations in other languages such as Go",[122],{"id":123,"by":124,"text":125},"5483481","thdn","What about using Go?",[127,131],{"value":128,"source":90,"evidence":129},"How security of decoding is ensured against malicious input",[130],{"id":93,"by":94,"text":95},{"value":132,"source":90,"evidence":133},"How interface pointers and RPC capabilities work",[134],{"id":135,"by":136,"text":137},"5482692","skybrian","How large will interface pointers be? It seems like they'd have to be at least as large as an auth cookie since that's basically what they are. Also, it seems like in a cluster,…",[139,143,147],{"value":140,"source":90,"evidence":141},"Protocol Buffers",[142],{"id":71,"by":72,"text":73},{"value":144,"source":90,"evidence":145},"Thrift",[146],{"id":71,"by":72,"text":73},{"value":148,"source":90,"evidence":149},"MessagePack",[150],{"id":151,"by":152,"text":153},"5482630","rburhum","Can somebody comment about this vs MessagePack please?",{"comments":155,"answered":156,"key":157},26,13,[158,159,162],{"id":64,"text":65},{"id":160,"text":161},"5482663","I agree! I actually intend to add maps at some point, just haven't worked out the details yet. It's a little weird in Cap'n Proto since the in-memory structure is also the wire…",{"id":163,"text":164},"5483112","> Do we need to be able to determine the amount of memory used by the map ahead of time? That's a very good question and I debate it a lot. Since Cap'n Proto messages tend to be…",{"commenters":166,"max_depth":167,"maker_replies":155,"first_comment_mins":36,"lifespan_hours":168},39,6,34,[170,174,176,180,181,184,188,189,190,194,197,199,202,205,207,210,213,214,217,219,222,226,228,231,235,237,240,243,245,247,251,253,255,258,260,262,265,266,269,270,273,274,278,280,284,287,289,291,293,296,301,303,305,308,311,313,316,318,322,324,327,332,335,340,343,346,350,353,354,358,360,362,365,369,372,374,376,378,380,382,384,386,389,391,394],[171,39,18,172,173,39],"5483379","project\u002Fmixed\u002Fdesign","haberman",[64,39,39,175,11,44],"maker\u002Fneutral\u002Fdesign",[177,44,44,178,179,39],"5482618","project\u002Fcritical\u002Fdesign","necubi",[160,44,39,175,11,44],[182,44,39,183,98,39],"5482910","other\u002Fneutral\u002Fdesign",[185,44,18,186,187,39],"5483040","project\u002Fneutral\u002Fdesign","justin66",[163,44,39,175,11,44],[71,42,44,178,72,39],[191,42,39,192,193,39],"5482820","commenter\u002Fneutral\u002Fnone","alexchamberlain",[195,42,39,192,196,39],"5482840","brown9-2",[198,42,39,192,193,39],"5482846",[200,42,39,192,201,39],"5483079","barrkel",[203,42,39,192,204,39],"5485834","Strshps1MoreTim",[81,42,39,206,11,44],"project\u002Fneutral\u002Fnone",[208,42,44,209,193,39],"5482842","project\u002Fcritical\u002Fnone",[211,42,39,212,11,44],"5482891","maker\u002Fneutral\u002Fnone",[123,42,18,206,124,39],[215,42,39,192,216,39],"5483879","Jtsummers",[218,42,18,212,72,39],"5484307",[220,42,39,192,221,39],"5482837","Qerub",[223,42,39,224,225,39],"5488990","other\u002Fneutral\u002Fnone","electrum",[93,18,18,227,94,39],"project\u002Fneutral\u002Fprivacy",[229,18,39,230,11,44],"5482606","maker\u002Fpositive\u002Fprivacy",[232,18,44,233,234,39],"5482628","project\u002Fcritical\u002Fperformance","codexon",[58,18,39,236,11,44],"maker\u002Fneutral\u002Fperformance",[238,18,32,239,94,39],"5482643","project\u002Fpositive\u002Fnone",[241,18,18,242,193,39],"5482839","project\u002Fneutral\u002Fperformance",[244,18,39,236,11,44],"5482873",[246,18,39,192,193,39],"5482907",[248,34,32,249,250,39],"5482459","maker\u002Fpositive\u002Fidea","shin_lao",[252,34,39,175,11,44],"5482648",[254,34,18,186,136,39],"5482908",[256,34,44,178,257,39],"5484043","onedognight",[259,34,39,175,11,44],"5484081",[261,34,18,242,250,39],"5484675",[263,32,44,233,264,39],"5482811","prodigal_erik",[75,32,39,175,11,44],[267,32,32,268,201,39],"5483042","project\u002Fpositive\u002Fidea",[97,167,18,172,98,39],[271,167,39,272,201,39],"5483054","commenter\u002Fneutral\u002Fdesign",[117,167,39,175,11,44],[275,276,32,239,277,39],"5482297",7,"_chrismccreadie",[279,276,39,212,11,44],"5482746",[281,282,18,186,283,39],"5482382",8,"famousactress",[285,282,39,272,286,39],"5482483","X-Istence",[288,282,39,175,11,44],"5482535",[290,282,39,272,283,39],"5482584",[292,282,39,175,11,44],"5482637",[294,35,39,224,295,39],"5484322","joshrotenberg",[297,298,18,299,300,39],"5484792",10,"project\u002Fmixed\u002Fperformance","_pmf_",[302,298,39,236,11,44],"5484874",[135,304,18,227,136,39],11,[306,304,39,307,11,44],"5482782","maker\u002Fneutral\u002Fprivacy",[309,33,18,206,310,39],"5482567","wging",[312,33,39,212,11,44],"5482817",[314,33,39,192,315,39],"5484169","ky3",[317,33,39,212,11,44],"5484220",[319,156,39,320,321,39],"5482327","other\u002Fneutral\u002Fperformance","Kequc",[323,156,39,212,11,44],"5482878",[325,156,39,192,326,39],"5483085","mikeash",[328,329,44,330,331,39],"5484813",14,"project\u002Fcritical\u002Fidea","revelation",[333,329,39,334,11,44],"5484883","commenter\u002Fneutral\u002Fidea",[336,337,44,338,339,39],"5485601",15,"project\u002Fcritical\u002Fexecution","tomp",[341,337,39,342,11,44],"5488178","project\u002Fneutral\u002Fexecution",[344,337,39,345,339,39],"5491419","commenter\u002Fneutral\u002Fexecution",[347,348,39,224,349,39],"5485998",16,"Swannie",[151,351,18,352,152,39],17,"project\u002Fneutral\u002Fidea",[55,351,39,352,11,44],[355,356,18,212,357,39],"5483165",18,"wololo",[359,356,39,212,11,44],"5483411",[361,356,39,224,357,39],"5483561",[105,363,44,364,106,39],19,"project\u002Fcritical\u002Fdocs",[366,363,39,367,368,39],"5482324","commenter\u002Fcritical\u002Fdocs","jamesaguilar",[370,363,39,371,106,39],"5482404","commenter\u002Fcritical\u002Fnone",[373,363,39,192,368,39],"5482439",[375,363,39,192,106,39],"5482570",[377,363,39,192,368,39],"5482610",[379,363,39,212,11,44],"5482335",[381,363,32,268,283,39],"5482390",[383,363,39,175,11,44],"5482378",[385,363,18,172,106,39],"5482440",[387,363,39,192,388,39],"5482385","tiredofcareer",[390,363,39,192,106,39],"5482421",[392,363,39,192,393,39],"5482446","BoyWizard",[395,363,39,192,396,39],"5482916","vhiremath4",[],[399,404,408,413,417,422],{"id":400,"name":401,"points":402,"category":403},"5468467","Nightweb",257,"consumer_social",{"id":405,"name":406,"points":407,"category":20},"5480073","Chardin.js",203,{"id":409,"name":410,"points":411,"category":412},"5485513","HN Store",190,"productivity",{"id":414,"name":415,"points":416,"category":403},"5474588","YouFM",132,{"id":418,"name":419,"points":420,"category":421},"5458248","Redstone",125,"infrastructure",{"id":423,"name":424,"points":425,"category":426},"5480685","Mosaic",106,"creative",false,"v2",{"id":430,"name":5,"line":6,"ai":427,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":30,"top":18,"kw":431,"maker":11,"domain":10,"tier":19,"attempts":39,"strip":432,"url":9,"mix":433,"praise":89,"objection":102,"sub":21},5482081,[24,25,26,27,28],"3131000130315051153530033300110331000530",[32,33,34,35],1794036505510]