[{"data":1,"prerenderedAt":339},["ShallowReactive",2],{"project-30960509":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":34,"aspects":35,"strip":45,"post_text":47,"what":48,"said":89,"maker_in_thread":190,"shape":192,"grid":195,"attempts":299,"same_week":300,"maker_shows":281,"maker_hidden":331,"reader_version":332,"card":333},"30960509","Zaplib","Speed up your webapp with Rust+Wasm","title","Show HN: Zaplib – Speed up your webapp with Rust+Wasm","https:\u002F\u002Fzaplib.com\u002Fdocs\u002F","zaplib.com","stevekrouse",1649441178,2022,175,41,344,2570,14,"notable","languages","rust webassembly runtime library","library",[24,25,26,27],"rust","webassembly","wasm","web performance","curious",-0.072,{"positive":31,"neutral":32,"mixed":33,"critical":31},7,19,2,35,{"idea":36,"performance":39,"execution":40,"docs":42,"design":43,"pricing":44},{"positive":37,"critical":38},1,0,{"positive":33,"critical":37},{"positive":37,"critical":41},5,{"positive":37,"critical":38},{"positive":38,"critical":38},{"positive":38,"critical":37},[46,46,46,46,37,46,37,46,46,41,41,46,37,37,46,38,38,38,46,38,46,46,41,46,37,38,46,46,38,46,46,41,41,41,37,46,46,37,46,41],3,null,{"problem":49,"audience":57,"pricing":47,"motivation":62,"time_to_build":47,"stack":66,"openness":87,"stage":88,"team_size":87},{"value":50,"source":51,"evidence":52},"JavaScript performance and manual memory handling are painful for intensive browser apps","commenter",[53],{"id":54,"by":55,"text":56},"30960673","janpaul123","Hey HN, one of the creators here! I made it at Cruise because it was super painful to develop https:\u002F\u002Fwebviz.io with manual memory management (lots of ArrayBuffers), WebWorkers,…",{"value":58,"source":59,"evidence":60},"developers building performance-heavy web apps","inferred",[61],{"id":54,"by":55,"text":56},{"value":63,"source":51,"evidence":64},"Developing intensive browser apps with manual memory management was painful at Cruise",[65],{"id":54,"by":55,"text":56},[67,76,81],{"value":68,"source":69,"evidence":70},"Rust","maker",[71,73],{"id":72},"post",{"id":74,"by":55,"text":75},"30961372","Great question! I wrote a blog post yesterday going into the nuances of this a bit: https:\u002F\u002Fzaplib.com\u002Fdocs\u002Fblog_ts++.html The short of it is that Rust+Wasm isn't much faster…",{"value":77,"source":69,"evidence":78},"WebAssembly",[79,80],{"id":72},{"id":74,"by":55,"text":75},{"value":82,"source":51,"evidence":83},"Web Workers",[84],{"id":85,"by":55,"text":86},"30961403","Re audio: yeah we currently only use Web Workers and we don't have audio support yet. We do use SAB, but we're thinking of adding support for running without SAB so you can use…","unknown","beta",{"praise":90,"objections":108,"requests":137,"questions":149,"alternatives":164},[91,97],{"value":92,"source":51,"evidence":93},"Built-in Rust source map debugging in the browser",[94],{"id":95,"by":55,"text":96},"30961304","That looks awesome! For debugging we support full Rust source maps in the browser (using DWARF). :D (This is something that wasm-bindgen doesn't support, for example!) See…",{"value":98,"source":51,"evidence":99},"Interesting approach to Rust and Wasm performance",[100,104],{"id":101,"by":102,"text":103},"30963531","andrew_shay","Great to see more work in the Rust+Wasm space. Interested in trying this out at some point.",{"id":105,"by":106,"text":107},"30960820","jxjshaw","this is dope!!",[109,116,123,130],{"value":110,"source":51,"evidence":111},"Commercial licensing plans for Zapium runtime",[112],{"id":113,"by":114,"text":115},"30962528","priansh","This is really cool but I can’t say I’m a fan of Zapium given it would move to a commercial license in the future. If you have to ship CEF anyhow, what is the performance…",{"value":117,"source":51,"evidence":118},"Rendering lag on low-end mobile and continuous animation",[119],{"id":120,"by":121,"text":122},"30961322","cglong","Just tried opening this on my cheap Android phone; really appreciate that the whole page stayed usable! There was some noticable lag though, which I don't see on advanced…",{"value":124,"source":51,"evidence":125},"Demos did not work on older iOS Safari",[126],{"id":127,"by":128,"text":129},"30960951","nrabulinski","None of the demos work in Safari on iOS. iPhone XS on iOS 15.0.2",{"value":131,"source":51,"evidence":132},"Flickering display caused problems for a viewer",[133],{"id":134,"by":135,"text":136},"30963252","FullyFunctional","Hot damn I nearly got a seissure from watching the demo page. I'm sure flickering mess I see with Firefox 98.0.2 wasn't what they intended! I can't really say much else about it,…",[138,145],{"value":139,"source":51,"evidence":140},"Support for older browsers without SharedArrayBuffer",[141,142],{"id":85,"by":55,"text":86},{"id":143,"by":55,"text":144},"30961035","Safari only very recently added support for threading in Wasm, which we use. Try upgrading to the latest iOS (15.4.1)? It's definitely bleeding-edge stuff; we should add some…",{"value":146,"source":51,"evidence":147},"Audio support",[148],{"id":85,"by":55,"text":86},[150,157],{"value":151,"source":51,"evidence":152},"How much faster is Rust+Wasm than vanilla JS",[153],{"id":154,"by":155,"text":156},"30961323","areis","Super cool! I'm sure this is highly situational, but roughly how much faster can Rust -> WASM be than vanilla JS? 2x, 10x, 100x?",{"value":158,"source":51,"evidence":159},"Can it be used as a standard library without the GUI",[160],{"id":161,"by":162,"text":163},"30971170","rklaehn","Yes, I also went with the 1st one. Basically the main thread sends a command to an io executor thread, and then waits on the result, which is done using atomics under the hood.…",[165,172,182,186],{"value":166,"source":51,"evidence":167},"Dear ImGui with C++ and WASM",[168],{"id":169,"by":170,"text":171},"30961065","ggerganov","I've been using a similar stack (C++ and WASM) to build some simple applications and I enjoy it very much. For the UI components, text rendering and layout I use Dear ImGui [0]…",{"value":173,"source":51,"evidence":174},"Yew",[175,179],{"id":176,"by":177,"text":178},"30961109","rozgo","Usually not an issue with very interactive apps. We have a similar workflow targeting web and desktop, but Rust + WASM. Using BevyEngine for real-time apps, and Yew for web apps.",{"id":180,"by":55,"text":181},"30965587","Overhead of calling into JS from Wasm is very low; DOM calls are no problem since the DOM call itself is much slower than the overhead of switching from Wasm to JS. See e.g. this…",{"value":183,"source":51,"evidence":184},"Bevy Engine",[185],{"id":176,"by":177,"text":178},{"value":187,"source":51,"evidence":188},"Electron",[189],{"id":113,"by":114,"text":115},{"comments":38,"answered":38,"key":191},[],{"commenters":193,"max_depth":41,"maker_replies":38,"first_comment_mins":18,"lifespan_hours":194},22,33,[196,198,202,203,206,208,211,214,216,220,222,225,227,229,231,234,236,238,241,243,246,249,251,253,257,260,263,266,269,272,273,274,278,280,283,286,288,291,293,294,297],[54,38,46,197,55,38],"maker\u002Fneutral\u002Fidea",[199,38,46,200,201,38],"30963801","project\u002Fneutral\u002Fperformance","tylerhou",[180,38,46,200,55,38],[204,38,46,200,205,38],"30965722","pjmlp",[134,37,37,207,135,38],"project\u002Fcritical\u002Fexecution",[209,37,46,210,55,38],"30965575","maker\u002Fneutral\u002Fexecution",[212,37,37,207,213,38],"30965994","grncdr",[215,37,46,210,55,38],"30969614",[217,33,46,218,219,38],"30961271","maker\u002Fneutral\u002Fnone","chaosprint",[95,33,41,221,55,38],"project\u002Fpositive\u002Fdocs",[223,33,41,224,219,38],"30961366","project\u002Fpositive\u002Fnone",[85,33,46,226,55,38],"project\u002Fneutral\u002Fexecution",[228,33,37,207,219,38],"30961466",[230,33,37,207,55,38],"30961505",[232,33,46,233,219,38],"30961550","project\u002Fneutral\u002Fdocs",[169,46,38,235,170,38],"other\u002Fneutral\u002Fperformance",[176,46,38,237,177,38],"commenter\u002Fneutral\u002Fperformance",[239,46,38,240,55,38],"30961201","commenter\u002Fneutral\u002Fidea",[242,46,46,200,55,38],"30961182",[244,46,38,235,245,38],"30965039","Unit520",[247,248,46,226,162,38],"30965457",4,[250,248,46,226,55,38],"30969624",[161,248,41,252,162,38],"project\u002Fpositive\u002Fexecution",[254,41,46,255,256,38],"30969851","project\u002Fmixed\u002Fdesign","wngr",[113,258,37,259,114,38],6,"project\u002Fcritical\u002Fpricing",[261,258,38,240,262,38],"30962703","ayanb",[264,258,46,233,265,38],"30962893","heavyset_go",[267,258,46,233,268,38],"30963347","price",[270,258,38,271,265,38],"30974152","commenter\u002Fneutral\u002Fnone",[154,31,46,200,155,38],[74,31,46,200,55,38],[275,31,41,276,277,38],"30961622","project\u002Fpositive\u002Fperformance","mattgreenrocks",[279,31,41,276,55,38],"30965589",[101,281,41,282,102,38],8,"project\u002Fpositive\u002Fidea",[120,284,37,285,121,38],9,"project\u002Fcritical\u002Fperformance",[287,284,46,200,55,38],"30961389",[289,284,46,290,121,38],"30961502","project\u002Fmixed\u002Fperformance",[127,292,37,207,128,38],10,[143,292,46,226,55,38],[295,292,46,226,296,38],"30964128","alphabettsy",[105,298,41,224,106,38],11,[],[301,306,311,316,321,326],{"id":302,"name":303,"points":304,"category":305},"30946792","Redditle.com",448,"web_saas",{"id":307,"name":308,"points":309,"category":310},"30970911","Explordle",390,"learning_science",{"id":312,"name":313,"points":314,"category":315},"30956775","Eight Colors",368,"games",{"id":317,"name":318,"points":319,"category":320},"31002171","indieblog.page",241,"productivity",{"id":322,"name":323,"points":324,"category":325},"30992587","Multiplayer",221,"infrastructure",{"id":327,"name":328,"points":329,"category":330},"30991235","howto-wasm-minimal",217,"dev_tools",false,"v2",{"id":334,"name":5,"line":6,"ai":331,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":335,"top":18,"kw":336,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":337,"url":9,"mix":338,"praise":92,"objection":110,"sub":21},30960509,-0.07,[24,25,26,27],"3333131335531130003033531033033555133135",[31,32,33,31],1794036619044]