[{"data":1,"prerenderedAt":357},["ShallowReactive",2],{"project-11664933":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":35,"aspects":36,"strip":41,"post_text":44,"what":45,"said":85,"maker_in_thread":199,"shape":207,"grid":212,"attempts":320,"same_week":321,"maker_shows":38,"maker_hidden":349,"reader_version":350,"card":351},"11664933","Hydrogen","A multithread non-blocking Linux server framework in Rust","title","Show HN: Hydrogen, a multithread non-blocking Linux server framework in Rust","https:\u002F\u002Fgithub.com\u002Fnathansizemore\u002Fhydrogen","github.com","nathansizemore",1462850010,2016,154,46,209,2264,10,"notable","infrastructure","server framework","library",[24,25,26,27,28],"rust","epoll","non-blocking io","socket server","linux","debated",-0.032,{"positive":32,"neutral":33,"mixed":34,"critical":32},4,8,0,16,{"idea":37,"design":39,"execution":40},{"positive":38,"critical":34},1,{"positive":38,"critical":38},{"positive":34,"critical":38},[42,34,42,34,42,34,34,34,34,34,38,34,38,42,34,34,34,34,34,34,34,34,43,34,43,42,43,34,43,34,42,34,42,38,34,34,34,34,34,38],3,5,null,{"problem":46,"audience":53,"pricing":44,"motivation":62,"time_to_build":44,"stack":71,"openness":83,"stage":84,"team_size":84},{"value":47,"source":48,"evidence":49},"Building high-performance servers that handle many long-lived concurrent connections","maker",[50],{"id":51,"by":11,"text":52},"11666934","Exactly. It is ideal for any type of high performance server that needs to handle many long lived concurrent connections.",{"value":54,"source":55,"evidence":56},"Developers building high-performance socket servers","inferred",[57,58],{"id":51,"by":11,"text":52},{"id":59,"by":60,"text":61},"11665568","Svenstaro","Alright, when would I want to use this? It reads like I would use it for a high-performance and safe network daemon of some kind. So basically it could be used as the lowest…",{"value":63,"source":48,"evidence":64},"Wanted to learn epoll and the full non-blocking I\u002FO process by building it directly",[65,68],{"id":66,"by":11,"text":67},"11666382","Of course! Well, hyper is a lib for dealing with the HTTP protocol. If being cross platform did not matter, hyper could be build atop of this. I did not go the route of mio…",{"id":69,"by":11,"text":70},"11668383","> Why not X? I wanted to use Rust and learn epoll through working with it directly. > I was hoping Rust wouldn't head down this road. To my knowledge, Rust does not have a std…",[72,77],{"value":73,"source":48,"evidence":74},"Rust",[75],{"id":76},"post",{"value":25,"source":48,"evidence":78},[79,80],{"id":66,"by":11,"text":67},{"id":81,"by":11,"text":82},"11665323","Thanks, but it only uses epoll :) mio is a crate that offers more platform agnostic async I\u002FO.","open_source","unknown",{"praise":86,"objections":103,"requests":134,"questions":159,"alternatives":175},[87,95],{"value":88,"source":89,"evidence":90},"Licensed under copyleft MPL","commenter",[91],{"id":92,"by":93,"text":94},"11665264","cyphar","I like the fact that you chose MPL. Not enough people are using copyleft these days. :D",{"value":96,"source":89,"evidence":97},"Useful for high-performance concurrent servers",[98,99],{"id":59,"by":60,"text":61},{"id":100,"by":101,"text":102},"11665148","bradhe","Happy to see projects like this pop up! As a long-time go user, these types of fundamental projects really are what drove the community early on.",[104,111,116,123],{"value":105,"source":89,"evidence":106},"Name conflicts with the Hydrogen drum machine project",[107],{"id":108,"by":109,"text":110},"11666059","txutxu","In software context, for me, the name is taken. ``` Hydrogen: advanced drum machine for GNU\u002FLinux ``` And a very good one, with a long road in the back.…",{"value":112,"source":89,"evidence":113},"Fixed epoll-only design; not cross-platform like mio",[114,115],{"id":81,"by":11,"text":82},{"id":66,"by":11,"text":67},{"value":117,"source":89,"evidence":118},"Send API may lose partial writes on EAGAIN; receive side allocates memory",[119],{"id":120,"by":121,"text":122},"11665622","Matthias247","Just some comments from looking very briefly at it: The send API lets me wonder how it copes when the socket only allows to send half a frame and then returns EAGAIN\u002FWOULDBLOCK?…",{"value":124,"source":89,"evidence":125},"Ecosystem fragmentation of Rust async I\u002FO libraries",[126,130],{"id":127,"by":128,"text":129},"11668137","15155","Why not Boost? \u002F Why not libuv? Why not EventMachine? \u002F Why not Celluloid? Why not Twisted? \u002F Why not gevent? This is a really sad situation unfortunately. I was hoping Rust…",{"id":131,"by":132,"text":133},"11668275","pcwalton","> To preempt: a systems language shouldn't dictate these high-level matters But you cited a whole bunch of languages that do dictate this. Those languages don't have those…",[135,142,148],{"value":136,"source":89,"evidence":137},"Compare with Hyper and Mio",[138],{"id":139,"by":140,"text":141},"11665512","yazaddaruvala","May I ask, Why not Hyper? Why not Mio? Don't misunderstand, I'm all for competing implementations. I just feel like it would be helpful to lay out a comparison for everyone…",{"value":143,"source":89,"evidence":144},"Stay compatible with mio's interface",[145],{"id":146,"by":132,"text":147},"11668291","Is it possible to stay compatible with mio's interface, perhaps via something layered on top?",{"value":149,"source":89,"evidence":150},"Pick a more descriptive name",[151,155],{"id":152,"by":153,"text":154},"11666460","gkya","What about a proper, useful name that hints to the functionality? \"libhttepoll\" (because built on epoll)?",{"id":156,"by":157,"text":158},"11667700","zodPod","THIS. What is with the stupid single noun names that mean nothing? It may be trendy but it's useless..",[160,164,171],{"value":161,"source":89,"evidence":162},"Why not use Hyper or Mio?",[163],{"id":139,"by":140,"text":141},{"value":165,"source":89,"evidence":166},"Can other event notification backends like libev or kqueue be swapped in?",[167],{"id":168,"by":169,"text":170},"11665302","loonattic","Is it built such that a different event notification thing such as libev, libevent, kqueue could be swapped in without too much effort? Well, it's not even that much code.. looks…",{"value":172,"source":89,"evidence":173},"Is the framework suitable for something like an IRC server?",[174],{"id":59,"by":60,"text":61},[176,180,184,191,195],{"value":177,"source":89,"evidence":178},"Mio",[179],{"id":139,"by":140,"text":141},{"value":181,"source":89,"evidence":182},"Hyper",[183],{"id":139,"by":140,"text":141},{"value":185,"source":89,"evidence":186},"Ranch",[187],{"id":188,"by":189,"text":190},"11666880","dberg","So i assume this is similar to Ranch in Erlang ?",{"value":192,"source":89,"evidence":193},"libuv",[194],{"id":127,"by":128,"text":129},{"value":196,"source":89,"evidence":197},"fasthttp",[198],{"id":131,"by":132,"text":133},{"comments":200,"answered":33,"key":201},12,[202,203,206],{"id":66,"text":67},{"id":204,"text":205},"11668822","I'd have to look into it, haven't checked out mio in months, but I don't see any reason why it couldn't be compatible with it. Any particular reason?",{"id":69,"text":70},{"commenters":208,"max_depth":209,"maker_replies":200,"first_comment_mins":210,"lifespan_hours":211},26,6,75,27,[213,215,217,219,221,223,225,227,229,231,233,234,236,239,242,246,247,250,251,254,257,260,263,266,269,271,273,274,276,277,278,281,283,287,289,292,295,296,298,303,305,307,310,312,314,317],[139,34,42,214,140,34],"project\u002Fneutral\u002Fidea",[66,34,34,216,11,38],"maker\u002Fneutral\u002Fidea",[146,34,42,218,132,34],"project\u002Fneutral\u002Fdesign",[204,34,34,220,11,38],"maker\u002Fneutral\u002Fdesign",[222,34,42,218,140,34],"11672839",[127,34,34,224,128,34],"other\u002Fneutral\u002Fnone",[131,34,34,226,132,34],"commenter\u002Fneutral\u002Fnone",[228,34,34,226,128,34],"11670910",[230,34,34,226,132,34],"11672550",[232,34,34,226,128,34],"11672998",[69,34,34,216,11,38],[120,38,38,235,121,34],"project\u002Fcritical\u002Fdesign",[237,38,34,238,11,38],"11666421","maker\u002Fneutral\u002Fdocs",[108,240,38,241,109,34],2,"project\u002Fcritical\u002Fnone",[243,240,42,244,245,34],"11666102","project\u002Fneutral\u002Fnone","amelius",[152,240,42,244,153,34],[248,240,34,224,249,34],"11666603","kachnuv_ocasek",[156,240,34,224,157,34],[252,240,34,224,253,34],"11666843","IIAOPSW",[255,240,34,224,256,34],"11667587","eximius",[258,240,34,259,11,38],"11666478","maker\u002Fneutral\u002Fnone",[261,42,34,224,262,34],"11665434","onion2k",[264,42,34,224,265,34],"11665559","kibwen",[267,42,34,224,268,34],"11666262","ekidd",[270,42,34,259,11,38],"11666979",[168,32,43,272,169,34],"project\u002Fpositive\u002Fdesign",[81,32,34,218,11,38],[92,43,43,275,93,34],"project\u002Fpositive\u002Fnone",[59,209,42,214,60,34],[51,209,34,214,11,38],[100,279,43,280,101,34],7,"project\u002Fpositive\u002Fidea",[282,279,34,259,11,38],"11665208",[284,279,43,285,286,34],"11665303","maker\u002Fpositive\u002Fnone","dengnan",[288,279,34,259,11,38],"11665317",[290,279,42,259,291,34],"11665386","kyllo",[293,279,34,224,294,34],"11667260","adrusi",[188,33,42,214,189,34],[297,33,34,214,11,38],"11666916",[299,300,38,301,302,34],"11665428",9,"project\u002Fcritical\u002Fexecution","idobai",[304,300,34,226,265,34],"11665575",[306,300,34,224,302,34],"11665727",[308,300,34,224,309,34],"11665813","zootm",[311,300,34,224,302,34],"11665828",[313,300,34,224,309,34],"11666137",[315,300,34,316,11,38],"11666458","maker\u002Fneutral\u002Fexecution",[318,18,38,241,319,34],"11668582","yarrel",[],[322,327,331,336,340,344],{"id":323,"name":324,"points":325,"category":326},"11667494","BitKeeper",384,"dev_tools",{"id":328,"name":329,"points":330,"category":326},"11662057","Minoca OS",168,{"id":332,"name":333,"points":334,"category":335},"11652454","dial2verify-twilio",147,"security_privacy",{"id":337,"name":338,"points":339,"category":326},"11658444","Gitsome",85,{"id":341,"name":342,"points":343,"category":335},"11660781","Hackchain",83,{"id":345,"name":346,"points":347,"category":348},"11675108","We Work Contract",71,"web_saas",false,"v2",{"id":352,"name":5,"line":6,"ai":349,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":353,"top":18,"kw":354,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":355,"url":9,"mix":356,"praise":88,"objection":105,"sub":21},11664933,-0.03,[24,25,26,27,28],"3030300000101300000000505350503031000001",[32,33,34,32],1794036544128]