[{"data":1,"prerenderedAt":480},["ShallowReactive",2],{"project-19427332":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":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":43,"post_text":45,"what":46,"said":76,"maker_in_thread":166,"shape":178,"grid":183,"attempts":441,"same_week":442,"maker_shows":38,"maker_hidden":472,"reader_version":473,"card":474},"19427332","Drogon","A C++14\u002F17 based high performance HTTP application framework","title","Show HN: Drogon – A C++14\u002F17 based high performance HTTP application framework","https:\u002F\u002Fgithub.com\u002Fan-tao\u002Fdrogon","github.com","an-tao",1552960060,2019,189,105,209,2195,10,"notable","languages","web framework","library",[24,25,26,27],"c++ web framework","http server","high performance http","non-blocking io","mixed",-0.147,{"positive":31,"neutral":32,"mixed":33,"critical":34},3,11,2,9,25,{"docs":37,"design":40,"performance":41,"idea":42},{"positive":38,"critical":39},1,0,{"positive":39,"critical":31},{"positive":39,"critical":39},{"positive":39,"critical":31},[44,31,31,39,31,39,39,39,31,39,39,39,39,39,31,31,39,39,39,39,33,31,38,31,39,31,38,33,38,39,39,39,39,39,39,39,39,39,38,38],5,null,{"problem":45,"audience":47,"pricing":45,"motivation":45,"time_to_build":45,"stack":59,"openness":74,"stage":75,"team_size":75},{"value":48,"source":49,"evidence":50},"C++ developers building web services","inferred",[51,55],{"id":52,"by":53,"text":54},"19427761","ilovecaching","Why not just wrap libevent or some other battle tested network poller? Also, this would be super cool if it were in Rust. As it stands writing web services in C++ is basically…",{"id":56,"by":57,"text":58},"19431172","umvi","I like it, but the API for defining HTTP endpoints seems messy compared to, say, Flask or ExpressJS. Is there any particular reason it is done this way vs something syntactically…",[60,66],{"value":61,"source":62,"evidence":63},"C++14\u002F17","maker",[64],{"id":65},"post",{"value":67,"source":68,"evidence":69},"epoll and kqueue","commenter",[70],{"id":71,"by":72,"text":73},"19429366","twic","> Use a NIO network lib based on epoll (kqueue under MacOS\u002FFreeBSD) to provide high-concurrency, high-performance network IO What is \"NIO\" here? I am familiar with NIO as New…","open_source","unknown",{"praise":77,"objections":89,"requests":108,"questions":124,"alternatives":143},[78],{"value":79,"source":68,"evidence":80},"Fast and high performance design",[81,85],{"id":82,"by":83,"text":84},"19427737","shakna","2 small things. a) Show me the code to start with, don't send me digging for it. A SimpleController example as the very first thing would help give a feel for the project, and…",{"id":86,"by":87,"text":88},"19429778","hawkingrip","It's really awesome",[90,94,101],{"value":91,"source":68,"evidence":92},"Endpoint registration API uses macros and feels messy compared to Flask or Express",[93],{"id":56,"by":57,"text":58},{"value":95,"source":68,"evidence":96},"Does not support HTTP\u002F2",[97],{"id":98,"by":99,"text":100},"19427925","KirinDave","This is cool, and I like it. Very Haskell like, which is a compliment in my book. But one thing that surprises me is that folks are essentially sleeping on HTTP\u002F2. HTTP\u002F2 is just…",{"value":102,"source":68,"evidence":103},"Name means stoner in Spanish",[104],{"id":105,"by":106,"text":107},"19432599","rlopezcc","Just wanted you to know \"Drogon\" means \"Stoner\" in spanish.",[109,113,120],{"value":110,"source":68,"evidence":111},"Show a simple controller example first in docs",[112],{"id":82,"by":83,"text":84},{"value":114,"source":68,"evidence":115},"Submit to TechEmpower benchmarks",[116],{"id":117,"by":118,"text":119},"19429099","StreamBright","It should be submitted to Techempower benchmarks. https:\u002F\u002Fwww.techempower.com\u002Fbenchmarks\u002F",{"value":121,"source":68,"evidence":122},"Add a simpler endpoint syntax like app.get",[123],{"id":56,"by":57,"text":58},[125,132,136],{"value":126,"source":68,"evidence":127},"What is the security story",[128],{"id":129,"by":130,"text":131},"19428070","WalterGR","What’s the security story with this framework?",{"value":133,"source":68,"evidence":134},"Why not HTTP\u002F2 first",[135],{"id":98,"by":99,"text":100},{"value":137,"source":68,"evidence":138},"How big is the hello-world binary",[139],{"id":140,"by":141,"text":142},"19439695","gitgud","How big does this hello-world server binary compile down to?",[144,151,155],{"value":145,"source":68,"evidence":146},"Crow C++ micro framework",[147],{"id":148,"by":149,"text":150},"19428457","utopcell","I've used Crow [1], a C++ web micro framework, in the past and it was delightful. Glad to see more competition in this space. [1] https:\u002F\u002Fgithub.com\u002Fipkn\u002Fcrow",{"value":152,"source":68,"evidence":153},"libmicrohttpd",[154],{"id":82,"by":83,"text":84},{"value":156,"source":68,"evidence":157},"Nginx and HAProxy as reverse proxies",[158,162],{"id":159,"by":160,"text":161},"19428034","blackflame7000","One way to get around this is to use HAProxy as a middleman where it can handle HTTP2 concurrent connections on the frontend and then connect to the HTTP1.1 webservers on…",{"id":163,"by":164,"text":165},"19428118","dvhh","the HTTP\u002F2 part could probably be handled via a reverse proxy",{"comments":167,"answered":31,"key":168},8,[169,172,175],{"id":170,"text":171},"19429633","Your suggestion is very good, I have made some modifications.",{"id":173,"text":174},"19429589","It has recently been submitted to TFB. https:\u002F\u002Fgithub.com\u002FTechEmpower\u002FFrameworkBenchmarks\u002Ftree\u002Fmaster\u002Fframeworks\u002FC%2B%2B\u002Fdrogon",{"id":176,"text":177},"19431379","You can register handler like this in Drogon: ``` drogon::app.registerHttpMethod(\"\u002Ftest\", [=](const HttpRequestPtr& req, const std::function\u003Cvoid (const HttpResponsePtr &)> &…",{"commenters":179,"max_depth":180,"maker_replies":167,"first_comment_mins":181,"lifespan_hours":182},53,13,79,102,[184,186,188,190,193,196,198,201,203,206,209,210,212,214,217,219,221,223,225,227,229,231,233,234,236,239,242,244,246,249,252,255,258,261,265,268,270,271,273,275,278,281,284,287,289,292,295,297,300,302,305,308,310,313,316,321,324,327,330,332,334,337,339,342,344,347,348,350,351,353,357,360,363,365,368,371,373,376,378,381,384,386,388,390,392,394,397,399,401,403,405,407,409,411,413,415,417,419,422,425,428,430,433,435,438],[82,39,44,185,83,39],"project\u002Fpositive\u002Fdocs",[170,39,39,187,11,38],"maker\u002Fneutral\u002Fdocs",[98,38,31,189,99,39],"project\u002Fmixed\u002Fdesign",[191,38,39,192,53,39],"19427941","commenter\u002Fneutral\u002Fnone",[194,38,39,192,195,39],"19427958","stock_toaster",[197,38,39,192,99,39],"19428330",[199,38,31,200,195,39],"19427947","project\u002Fneutral\u002Fdesign",[202,38,39,192,99,39],"19428355",[204,38,39,192,205,39],"19428827","jmgao",[207,38,39,208,99,39],"19431599","other\u002Fneutral\u002Fnone",[159,38,31,200,160,39],[211,38,39,208,99,39],"19428314",[213,38,39,192,160,39],"19428934",[215,38,39,192,216,39],"19429539","shawnz",[218,38,39,192,160,39],"19430247",[220,38,39,192,216,39],"19431388",[222,38,39,192,160,39],"19432153",[224,38,39,192,216,39],"19434329",[226,38,39,192,99,39],"19434757",[228,38,39,192,99,39],"19431453",[230,38,39,192,160,39],"19469417",[232,38,39,192,99,39],"19431311",[163,38,31,200,164,39],[235,38,39,208,99,39],"19428347",[237,38,39,192,238,39],"19428526","dig1",[240,38,39,192,241,39],"19429593","quickthrower2",[243,38,39,192,99,39],"19431612",[245,38,39,208,164,39],"19438130",[247,38,39,208,248,39],"19428822","de_watcher",[250,38,39,208,251,39],"19429261","9dev",[253,38,39,208,254,39],"19429362","HippoBaro",[256,38,39,208,257,39],"19429624","pjmlp",[259,38,39,208,260,39],"19430185","usefulcat",[262,38,39,263,264,39],"19430422","other\u002Fcritical\u002Fnone","zzzcpan",[266,38,39,208,267,39],"19430365","zmodem",[269,38,39,208,99,39],"19430982",[148,33,39,208,149,39],[117,31,31,272,118,39],"project\u002Fneutral\u002Fperformance",[173,31,39,274,11,38],"maker\u002Fneutral\u002Fnone",[276,31,44,277,118,39],"19436604","maker\u002Fpositive\u002Fnone",[129,279,31,280,130,39],4,"project\u002Fneutral\u002Fnone",[282,279,38,283,53,39],"19428136","project\u002Fcritical\u002Fnone",[285,279,39,192,286,39],"19428259","otabdeveloper2",[288,279,39,192,53,39],"19428302",[290,279,39,192,291,39],"19428325","Thorrez",[293,279,39,192,294,39],"19428350","dearrifling",[296,279,39,192,291,39],"19428417",[298,279,39,192,299,39],"19428368","fxfan",[301,279,39,192,291,39],"19428385",[303,279,39,192,304,39],"19430159","steveklabnik",[306,279,39,192,307,39],"19432042","vardump",[309,279,39,192,257,39],"19428420",[311,279,38,283,312,39],"19430286","jokoon",[314,44,31,272,315,39],"19428571","vivekbernard1",[317,318,31,319,320,39],"19428004",6,"project\u002Fneutral\u002Fidea","keyle",[322,318,31,319,323,39],"19430073","securityfreak",[325,318,39,208,326,39],"19430092","dagw",[56,328,38,329,57,39],7,"project\u002Fcritical\u002Fdesign",[176,328,39,331,11,38],"maker\u002Fneutral\u002Fdesign",[71,167,31,333,72,39],"project\u002Fneutral\u002Fdocs",[335,167,39,192,336,39],"19429587","nilskrau",[338,167,39,274,11,38],"19429677",[340,34,31,189,341,39],"19430269","agallego",[343,34,39,331,11,38],"19430414",[345,34,39,346,11,38],"19430451","maker\u002Fneutral\u002Fperformance",[105,18,31,280,106,39],[349,18,39,274,11,38],"19432775",[140,32,31,272,141,39],[352,32,39,272,11,38],"19440453",[354,355,38,329,356,39],"19429048",12,"rienbdj",[358,355,38,329,359,39],"19432401","mellery451",[361,355,38,283,362,39],"19440144","eao197",[86,180,44,364,87,39],"project\u002Fpositive\u002Fnone",[52,366,38,367,53,39],14,"project\u002Fcritical\u002Fidea",[369,366,39,192,370,39],"19427807","svnpenn",[372,366,39,192,53,39],"19427834",[374,366,39,192,375,39],"19427827","oconnor663",[377,366,39,192,53,39],"19427848",[379,366,39,192,380,39],"19427988","ehsanu1",[382,366,39,192,383,39],"19428081","jchw",[385,366,39,192,53,39],"19428096",[387,366,39,192,383,39],"19428128",[389,366,39,192,53,39],"19428162",[391,366,39,192,383,39],"19428234",[393,366,39,192,53,39],"19428343",[395,366,39,192,396,39],"19431178","mempko",[398,366,39,192,304,39],"19432248",[400,366,39,192,396,39],"19432825",[402,366,39,192,304,39],"19433434",[404,366,39,192,160,39],"19429139",[406,366,39,192,257,39],"19428435",[408,366,39,192,53,39],"19428509",[410,366,39,192,257,39],"19428592",[412,366,39,192,53,39],"19430760",[414,366,39,192,257,39],"19434780",[416,366,39,192,396,39],"19431277",[418,366,39,192,396,39],"19432878",[420,366,39,192,421,39],"19428775","millstone",[423,366,39,192,424,39],"19430071","jcelerier",[426,366,38,367,427,39],"19428180","saberience",[429,366,39,192,53,39],"19428215",[431,366,39,208,432,39],"19428033","arkitaip",[434,366,38,367,286,39],"19428272",[436,366,39,192,437,39],"19430158","LambdaComplex",[439,366,39,192,440,39],"19455097","alexeiz",[],[443,448,453,458,463,468],{"id":444,"name":445,"points":446,"category":447},"19393279","2019",2690,"hardware",{"id":449,"name":450,"points":451,"category":452},"19408329","Hello Goodbye",510,"security_privacy",{"id":454,"name":455,"points":456,"category":457},"19386093","Stackroboflow",274,"ai",{"id":459,"name":460,"points":461,"category":462},"19444960","RemoteHub",171,"learning_science",{"id":464,"name":465,"points":466,"category":467},"19443733","Songcraft",152,"creative",{"id":469,"name":470,"points":471,"category":20},"19398932","Python-Prolog-Interpreter",149,false,"v2",{"id":475,"name":5,"line":6,"ai":472,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":476,"top":18,"kw":477,"maker":11,"domain":10,"tier":19,"attempts":39,"strip":478,"url":9,"mix":479,"praise":79,"objection":91,"sub":21},19427332,-0.15,[24,25,26,27],"5330300030000033000023130312100000000011",[31,32,33,34],1794036575874]