[{"data":1,"prerenderedAt":500},["ShallowReactive",2],{"project-19756505":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":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":26,"sentiment":27,"stance_mix":28,"scored_comments":33,"aspects":34,"strip":42,"post_text":43,"what":44,"said":77,"maker_in_thread":193,"shape":199,"grid":204,"attempts":461,"same_week":462,"maker_shows":393,"maker_hidden":492,"reader_version":493,"card":494},"19756505","Sauron","A web framework in Rust that adheres to the Elm architecture","title","Show HN: Sauron – A web framework in Rust that adheres to the Elm architecture","https:\u002F\u002Fgithub.com\u002Fivanceras\u002Fsauron","github.com","ivanceras",1556279709,2019,305,97,2195,5,"legend","languages","web framework","library",[23,24,25,20],"rust","wasm","elm architecture","curious",-0.141,{"positive":29,"neutral":30,"mixed":31,"critical":32},4,19,1,8,32,{"idea":35,"docs":36,"performance":38,"design":41},{"positive":31,"critical":29},{"positive":37,"critical":37},0,{"positive":39,"critical":40},2,3,{"positive":37,"critical":31},[37,37,37,37,37,37,37,31,40,31,40,40,17,40,40,40,37,37,40,37,40,40,40,17,37,40,37,40,40,40,31,40,17,40,31,37,37,31,31,37],null,{"problem":45,"audience":43,"pricing":43,"motivation":55,"time_to_build":43,"stack":59,"openness":74,"stage":75,"team_size":76},{"value":46,"source":47,"evidence":48},"Building web UIs in Rust compiled to WebAssembly with an Elm-style architecture","maker",[49,52],{"id":50,"by":11,"text":51},"19756937","Because elm is elegant. I have written web-app with elm on the client side and rust in the backend. It was great, except for duplication of code when serializing\u002Fdeserializing…",{"id":53,"by":11,"text":54},"19756758","1.) The syntax in creating the view: is just plain function calls which the rust compiler can accurately tell you about errors in your code, ie: typo, unclosed…",{"value":56,"source":47,"evidence":57},"Wanted Elm-style code in Rust without duplicated JSON serialization code between Elm frontend and Rust backend",[58],{"id":50,"by":11,"text":51},[60,64,70],{"value":61,"source":47,"evidence":62},"Rust",[63],{"id":53,"by":11,"text":54},{"value":65,"source":47,"evidence":66},"WebAssembly",[67],{"id":68,"by":11,"text":69},"19757090","You need to use the script for release mode. $> wasm-pack build --target no-modules --release -- --features \"wee_alloc\" It will shrink it down to 165KB",{"value":71,"source":47,"evidence":72},"wasm-bindgen",[73],{"id":53,"by":11,"text":54},"open_source","prototype","unknown",{"praise":78,"objections":91,"requests":120,"questions":143,"alternatives":162},[79,84],{"value":80,"source":81,"evidence":82},"Concise code with no parser and compiler-checked view syntax","commenter",[83],{"id":53,"by":11,"text":54},{"value":85,"source":81,"evidence":86},"Good branding of the name",[87],{"id":88,"by":89,"text":90},"19756801","owens99","Looks cool, really like the name. It’s always interesting to me to see other developers who are good at branding, despite no obvious marketing background.",[92,102,109],{"value":93,"source":81,"evidence":94},"Wasm bundle size is large (1.17MB minimal, 165KB release)",[95,99],{"id":96,"by":97,"text":98},"19757016","K0nserv","Sauron looks really great and I for one am super excited about the future of Rust + WASM for web apps(with Backend). However I am a bit concerned that even the minimal example is…",{"id":100,"by":97,"text":101},"19757135","Doh. My bad for being a dummy. 165kb is still fairly big for a minimal example, much smaller than 1.17MB though, compared to React for example. Are there ways to analyze what…",{"value":103,"source":47,"evidence":104},"Performance not yet optimized",[105,106],{"id":53,"by":11,"text":54},{"id":107,"by":11,"text":108},"19757231","I think If you start adding more code, the growth of the release binary will diminish. The todomvc code is only 207KB when compiled and has relatively more code than the minimal…",{"value":110,"source":81,"evidence":111},"Name may evoke Lord of the Rings trademark concerns",[112,116],{"id":113,"by":114,"text":115},"19757029","eljimmy","Slightly off topic - I can’t imagine calling the framework Sauron and posting a photo from the LOTR movie is legal.",{"id":117,"by":118,"text":119},"19757618","jerf","Is that the Internet's idea of \"fair use\" which is \"I can pretty much do whatever I want as long as I say 'fair use'\", or the legal one? Calling it Sauron is almost certainly OK.…",[121,132],{"value":122,"source":81,"evidence":123},"JSX-like syntax support",[124,128],{"id":125,"by":126,"text":127},"19756812","Octoth0rpe","Would there be an easy\u002Fstraightforward way to put a jsx transpiler in front of the rust compilation step, potentially with hot reloading? I realize that jsx in react is really…",{"id":129,"by":130,"text":131},"19757495","mdtusz","Look into the framework Yew. It sits somewhere between elm and react in how it's designed, and makes use of an html macro that allows for jsx-like markup.",{"value":133,"source":81,"evidence":134},"Better bundle size reduction",[135,139],{"id":136,"by":137,"text":138},"19757793","wyldfire","> EDIT: It's 68KB gzipped and 165KB is the uncompressed size What's the state of brotli content type support in browsers? Wasn't that supposed to be the next generation beyond…",{"id":140,"by":141,"text":142},"19758438","tiuPapa","I think you can still reduce that size further with binaryen",[144,155],{"value":145,"source":81,"evidence":146},"How does it compare to Yew?",[147,151],{"id":148,"by":149,"text":150},"19756677","dbrgn","Obvious questions first: How does it compare to Yew?",{"id":152,"by":153,"text":154},"19761462","asdkhadsj","Do you have any experience with Sauron vs Yew? I'm quite interested in Yew due to the benchmark and that their code examples look similar to me. Yew also says Elm inspired. Since…",{"value":156,"source":81,"evidence":157},"How does caching work with a single wasm binary?",[158],{"id":159,"by":160,"text":161},"19760804","yumraj","(Disclaimer: very limited knowledge about WASM) Curious as to how WASM impacts browser caching? In the JS scenario, several modules will be cached and change in one may still…",[163,168,179,186],{"value":164,"source":81,"evidence":165},"Yew",[166,167],{"id":148,"by":149,"text":150},{"id":129,"by":130,"text":131},{"value":169,"source":81,"evidence":170},"Blazor",[171,175],{"id":172,"by":173,"text":174},"19757595","twoquestions","Between this and Blazor ( http:\u002F\u002Fblazor.net\u002F, among other wasm projects I'm forgetting right now), I'm glad more complicated UIs are being once again designed on the backend and…",{"id":176,"by":177,"text":178},"19757611","ksejka","Check out http:\u002F\u002Fblazor.net\u002F",{"value":180,"source":81,"evidence":181},"Phoenix LiveView",[182],{"id":183,"by":184,"text":185},"19758108","lostjohnny","Another lightweight contender, not WASM though, is Phoenix Live View[1] [1] https:\u002F\u002Fgithub.com\u002Fphoenixframework\u002Fphoenix_live_view",{"value":187,"source":81,"evidence":188},"Elm",[189],{"id":190,"by":191,"text":192},"19756823","frou_dh","Elm gets plundered repeatedly before it ever reaches version 1.0. Is name-brand Elm still growing in adoption?",{"comments":194,"answered":40,"key":195},10,[196,197,198],{"id":68,"text":69},{"id":107,"text":108},{"id":50,"text":51},{"commenters":200,"max_depth":201,"maker_replies":194,"first_comment_mins":202,"lifespan_hours":203},68,6,28,35,[205,207,210,214,215,218,221,224,227,231,234,236,239,242,245,247,250,252,255,259,263,266,269,272,274,276,278,279,280,283,287,288,291,294,297,299,301,303,305,308,311,314,317,320,323,326,329,332,334,336,337,340,342,345,348,349,351,354,357,360,363,366,368,370,372,375,378,381,383,384,387,388,391,396,399,402,404,407,409,411,414,418,420,423,425,429,430,433,435,438,441,445,447,450,454,456,458],[172,37,37,206,173,37],"other\u002Fneutral\u002Fperformance",[208,37,37,206,209,37],"19757944","gameswithgo",[211,37,37,212,213,37],"19762040","other\u002Fneutral\u002Fnone","tracker1",[183,37,37,212,184,37],[216,37,37,212,217,37],"19758445","mrdoops",[219,37,37,212,220,37],"19758532","jchw",[222,37,37,212,223,37],"19758745","jweir",[225,37,37,212,226,37],"19763354","Can_Not",[228,37,37,229,230,37],"19758475","commenter\u002Fneutral\u002Fperformance","bfrydl",[232,37,37,206,233,37],"19762268","hu3",[235,37,37,206,230,37],"19763717",[237,37,37,238,173,37],"19762785","commenter\u002Fneutral\u002Fnone",[240,37,37,238,241,37],"19762994","austincheney",[243,37,37,212,244,37],"19766454","heavenlyblue",[246,37,37,229,230,37],"19763701",[248,37,37,206,249,37],"19761364","Reedx",[251,37,37,206,213,37],"19761982",[253,37,37,206,254,37],"19762345","GiorgioG",[256,37,31,257,258,37],"19763090","project\u002Fcritical\u002Fidea","namelosw",[260,31,40,261,262,37],"19757817","project\u002Fneutral\u002Fdocs","donpdonp",[264,31,37,212,265,37],"19758431","antonvs",[267,31,37,212,268,37],"19761824","Groxx",[270,31,37,212,271,37],"19768105","solidsnack9000",[96,39,31,273,97,37],"project\u002Fcritical\u002Fperformance",[68,39,37,275,11,31],"maker\u002Fneutral\u002Fperformance",[100,39,40,277,97,37],"project\u002Fneutral\u002Fperformance",[107,39,37,275,11,31],[136,39,37,206,137,37],[281,39,40,277,282,37],"19757862","steveklabnik",[284,39,17,285,286,37],"19758007","project\u002Fpositive\u002Fperformance","ppseafield",[140,39,40,277,141,37],[289,39,17,285,290,37],"19761732","stjohnswarts",[292,39,31,273,293,37],"19762718","structural",[295,39,40,277,296,37],"19762829","paulddraper",[298,39,37,229,97,37],"19766215",[190,40,37,300,191,37],"other\u002Fneutral\u002Fidea",[50,40,37,302,11,31],"maker\u002Fpositive\u002Fidea",[152,40,40,304,153,37],"maker\u002Fneutral\u002Fidea",[306,40,37,212,307,37],"19757931","Latty",[309,40,37,212,310,37],"19762877","rickycook",[312,40,37,300,313,37],"19758092","childintime",[315,40,37,212,316,37],"19758585","rtfeldman",[318,40,37,212,319,37],"19761196","iLemming",[321,40,37,212,322,37],"19760691","MagicPropmaker",[324,40,37,212,325,37],"19762273","worble",[327,29,40,277,328,37],"19757266","leshow",[330,29,37,206,331,37],"19759422","pohl",[333,29,37,206,328,37],"19759822",[335,29,37,206,282,37],"19759928",[148,17,40,304,149,37],[338,17,40,339,97,37],"19756722","project\u002Fneutral\u002Fidea",[341,17,40,261,149,37],"19756832",[343,17,37,344,11,31],"19756886","maker\u002Fneutral\u002Fdocs",[346,17,40,277,347,37],"19756724","romanovcode",[53,17,37,302,11,31],[350,17,17,302,149,37],"19756845",[352,17,37,212,353,37],"19757900","kouteiheika",[355,17,37,212,356,37],"19760686","eigenrick",[358,17,37,238,359,37],"19760891","jxub",[361,17,37,212,362,37],"19760986","dmit",[364,201,40,277,365,37],"19757576","holtalanm",[367,201,37,275,11,31],"19757775",[369,201,37,238,365,37],"19757875",[371,201,37,206,209,37],"19757960",[373,201,37,206,374,37],"19761920","penagwin",[125,376,40,377,126,37],7,"project\u002Fneutral\u002Fdesign",[379,376,40,377,380,37],"19757489","rimunroe",[382,376,37,212,282,37],"19757855",[129,376,40,339,130,37],[385,376,40,377,386,37],"19758145","rbalicki",[159,32,40,277,160,37],[389,32,37,206,390,37],"19760942","saagarjha",[392,393,40,394,395,37],"19756893",9,"project\u002Fmixed\u002Fdesign","bazza451",[397,393,37,398,11,31],"19756908","maker\u002Fneutral\u002Fdesign",[400,393,31,401,395,37],"19760055","maker\u002Fcritical\u002Fdesign",[403,393,37,398,11,31],"19760610",[405,393,40,377,406,37],"19757072","mattigames",[408,393,37,344,11,31],"19757122",[88,194,17,410,89,37],"project\u002Fpositive\u002Fnone",[412,194,37,413,11,31],"19756960","maker\u002Fpositive\u002Fnone",[415,416,40,277,417,37],"19758413",11,"yuchi",[176,419,37,212,177,37],12,[421,422,31,273,141,37],"19758453",13,[113,424,31,257,114,37],14,[426,424,37,427,428,37],"19757088","commenter\u002Fneutral\u002Fidea","zbentley",[117,424,37,427,118,37],[431,424,37,427,432,37],"19759751","xaqfox",[434,424,37,427,118,37],"19760188",[436,424,37,427,437,37],"19757213","hartator",[439,424,37,427,440,37],"19757414","jrs95",[442,443,31,257,444,37],"19760378",15,"fxfan",[446,443,37,212,319,37],"19761226",[448,443,37,427,449,37],"19764162","raquo",[451,452,31,257,453,37],"19759222",16,"ryanmarsh",[455,452,37,238,444,37],"19760369",[457,452,37,238,213,37],"19762017",[459,452,37,238,460,37],"19763228","vultour",[],[463,468,473,478,482,487],{"id":464,"name":465,"points":466,"category":467},"19774019","Lorem Picsum",880,"dev_tools",{"id":469,"name":470,"points":471,"category":472},"19772097","1MB",744,"web_saas",{"id":474,"name":475,"points":476,"category":477},"19791073","CC Search",375,"creative",{"id":479,"name":480,"points":481,"category":467},"19780790","Stretch",213,{"id":483,"name":484,"points":485,"category":486},"19801546","IPFS-Deploy",150,"infrastructure",{"id":488,"name":489,"points":490,"category":491},"19752317","Quinesnake",131,"games",false,"v2",{"id":495,"name":5,"line":6,"ai":492,"cat":19,"year":13,"points":14,"comments":15,"rec":26,"s":496,"top":17,"kw":497,"maker":11,"domain":10,"tier":18,"attempts":37,"strip":498,"url":9,"mix":499,"praise":80,"objection":93,"sub":20},19756505,-0.14,[23,24,25,20],"0000000131335333003033350303331353100110",[29,30,31,32],1794036577040]