[{"data":1,"prerenderedAt":356},["ShallowReactive",2],{"project-25160474":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":43,"post_text":46,"what":47,"said":75,"maker_in_thread":203,"shape":211,"grid":216,"attempts":320,"same_week":321,"maker_shows":34,"maker_hidden":349,"reader_version":350,"card":351},"25160474","Lunatic","Actor System for Rust\u002FWebAssembly","title","Show HN: Lunatic – Actor System for Rust\u002FWebAssembly","https:\u002F\u002Fgithub.com\u002Flunatic-lang\u002Flunatic","github.com","bkolobara",1605880745,2020,141,47,433,3028,15,"notable","languages","actor runtime","library",[24,25,26,27,28],"actor model","webassembly","rust","erlang","wasmtime","loved",0.24,{"positive":32,"neutral":33,"mixed":34,"critical":34},7,13,1,22,{"idea":37,"docs":38,"execution":40,"performance":41,"design":42},{"positive":32,"critical":34},{"positive":39,"critical":39},0,{"positive":39,"critical":39},{"positive":39,"critical":39},{"positive":39,"critical":39},[44,39,39,39,39,39,39,44,39,34,44,39,39,39,39,45,39,39,39,45,39,45,45,44,45,45,45,45,44,44,39,39,45,45,44,45,39,39,39,45],5,3,null,{"problem":46,"audience":46,"pricing":46,"motivation":48,"time_to_build":46,"stack":55,"openness":73,"stage":74,"team_size":73},{"value":49,"source":50,"evidence":51},"Motivation explained in a linked write-up on the author's site","maker",[52],{"id":53,"by":11,"text":54},"25161503","Hi! Author here. I wrote more about the motivation behind Lunatic if you are interested, check it out: https:\u002F\u002Fkolobara.com\u002Flunatic\u002Findex.html#motivation",[56,64,69],{"value":57,"source":58,"evidence":59},"Rust","commenter",[60],{"id":61,"by":62,"text":63},"25161640","Snitch-Thursday","> OTP inspired actor systems that run Webassembly code are a brilliant (and potentially way superior) alternative to microservice madness I very much agree with this. While Actor…",{"value":65,"source":50,"evidence":66},"WebAssembly",[67],{"id":68},"post",{"value":70,"source":58,"evidence":71},"Wasmtime",[72],{"id":61,"by":62,"text":63},"unknown","prototype",{"praise":76,"objections":97,"requests":122,"questions":141,"alternatives":167},[77,89],{"value":78,"source":58,"evidence":79},"Actor-per-wasm-instance design seen as a promising alternative to microservices",[80,84,85],{"id":81,"by":82,"text":83},"25160700","the_duke","Erlang\u002FOTP inspired actor systems that run Webassembly code are a brilliant (and potentially way superior) alternative to microservice madness. Until now adopting Erlang or Akka…",{"id":61,"by":62,"text":63},{"id":86,"by":87,"text":88},"25160803","nahuel0x","This is the way forward. A wasm-instance-per-actor architecture enables: - Actor prioritization - Actor pausing - Killing actors at arbitrary points - Actor serialization \u002F…",{"value":90,"source":58,"evidence":91},"Fits well with Erlang\u002FOTP ideas like supervision and isolation",[92,96],{"id":93,"by":94,"text":95},"25169084","elcritch","It's more about fine grained control of errors. WASM\u002FLunatic could bring many of the benefits of Erlang application design to any wasm friendly language. The creator of Elixir…",{"id":86,"by":87,"text":88},[98,109,116],{"value":99,"source":58,"evidence":100},"Unclear whether WASM actors remove the need for containers and orchestration",[101,105],{"id":102,"by":103,"text":104},"25162479","justsomeuser","> All while avoiding the complexities of grpc, building Docker images, Kubernetes, service meshes, \"serverless\" frameworks, I don't think this will happen to be honest. The WASM…",{"id":106,"by":107,"text":108},"25163129","bird_monster","It seems I've been in my \"ignore all new tech stuff\" hole for too long when I open a project link and don't understand most of the value\u002Fcode. It seems very interesting though, I…",{"value":110,"source":58,"evidence":111},"Actor concept and examples were hard to understand from the README",[112],{"id":113,"by":114,"text":115},"25161754","uglycoyote","Thanks, because from the github page I had no idea what \"Actor\" meant, though I was interested to know more. Reading the code sample did not give me any better idea what was…",{"value":117,"source":58,"evidence":118},"Examples look more like channels (CSP) than mailbox actors",[119],{"id":120,"by":94,"text":121},"25169040","Fantastic project! The ability to transform serial compiled languages to run atop an async engine is great. The examples, though, remind me more of Go routines and CSP rather…",[123,133,137],{"value":124,"source":58,"evidence":125},"Shared buffers for passing data between actors without copying",[126,130],{"id":127,"by":128,"text":129},"25162978","octopoc","Nice work! How do you pass complex objects between actors in Lunatic? Do you have to pass a byte array, or is there a more sophisticated approach where you don't have to…",{"id":131,"by":11,"text":132},"25163723","Thanks! Currently the heaps and stacks of each actor are completely separate and it's impossible to pass anything without copying it. In the future I would like to add an option…",{"value":134,"source":58,"evidence":135},"Binary message formats such as MessagePack or CBOR",[136],{"id":120,"by":94,"text":121},{"value":138,"source":58,"evidence":139},"Supervision trees and process linking",[140],{"id":120,"by":94,"text":121},[142,156],{"value":143,"source":58,"evidence":144},"Memory overhead per actor compared with Erlang processes",[145,148,152],{"id":146,"by":87,"text":147},"25163523","just a question: how much memory a wasm process in lunatic consumes as minimum?",{"id":149,"by":150,"text":151},"25162317","dnautics","> Has the potential to be better than Erlang what's the overhead of a wasm instance?",{"id":153,"by":154,"text":155},"25165363","cutemonster","What about Erlang? 4k sound like not that much to me? Imagine a server with 1M concurrent connections, could it need just 4G? (Plus lots of overheard. And without heap)",{"value":157,"source":58,"evidence":158},"How it compares with actix and Go channels",[159,163],{"id":160,"by":161,"text":162},"25163109","cercatrova","Any comparison with actix(-web)? I know the latest version of actix-web doesn't use the actor model, but actix itself still does.",{"id":164,"by":165,"text":166},"25170035","nsonha","how does this compare to other \"green thread\" approaches? Like go channel?",[168,172,179,189,196],{"value":169,"source":58,"evidence":170},"wascc",[171],{"id":81,"by":82,"text":83},{"value":173,"source":58,"evidence":174},"Bastion",[175],{"id":176,"by":177,"text":178},"25160701","ignoramous","See also, Bastion: Highly-available distributed fault-tolerant runtime in Rust https:\u002F\u002Fnews.ycombinator.com\u002Fitem?id=22403713",{"value":180,"source":58,"evidence":181},"Erlang\u002FOTP and Elixir",[182,186],{"id":183,"by":184,"text":185},"25161067","macintux","> single language ecosystem The BEAM supports at least 20 languages.",{"id":187,"by":82,"text":188},"25161465","All of which are tiny niche languages, except Elixir... I actually think think BEAM gaining the ability to run WASM would be a smart development. It would make using high…",{"value":190,"source":58,"evidence":191},"Akka",[192],{"id":193,"by":194,"text":195},"25163788","dragonwriter","> Until now adopting Erlang or Akka meant restricting yourself to a single language ecosystem, \"Erlang\" itself is a single language, but the BEAM\u002FOTP ecosystem isn't usable only…",{"value":197,"source":58,"evidence":198},"Orleans",[199],{"id":200,"by":201,"text":202},"25167162","reubenbond","Have you seen Orleans? https:\u002F\u002Fgithub.com\u002Fdotnet\u002Forleans",{"comments":44,"answered":204,"key":205},4,[206,207,210],{"id":53,"text":54},{"id":208,"text":209},"25161822","Thanks for the suggestion! I have added the link to the Readme.",{"id":131,"text":132},{"commenters":212,"max_depth":213,"maker_replies":44,"first_comment_mins":214,"lifespan_hours":215},31,6,30,25,[217,219,221,224,225,228,231,234,236,237,241,243,245,247,248,250,253,255,257,258,261,264,267,269,270,272,274,276,278,279,281,282,284,287,290,292,295,296,298,299,301,302,307,311,314,317,318],[81,39,44,218,82,39],"project\u002Fpositive\u002Fidea",[183,39,39,220,184,39],"commenter\u002Fneutral\u002Fnone",[222,39,39,220,223,39],"25161108","indigo747",[187,39,39,220,82,39],[226,39,39,220,227,39],"25161691","__jem",[229,39,39,220,230,39],"25161909","xiphias2",[232,39,39,220,233,39],"25163614","nesarkvechnep",[235,39,39,220,230,39],"25163878",[61,39,44,218,62,39],[238,39,39,239,240,39],"25164427","other\u002Fneutral\u002Fnone","ReactiveJelly",[102,39,34,242,103,39],"project\u002Fcritical\u002Fidea",[244,39,44,218,240,39],"25164479",[246,39,39,220,103,39],"25165410",[193,39,39,220,194,39],[249,39,39,220,165,39],"25170019",[251,39,39,239,252,39],"25164127","tester756",[53,34,39,254,11,34],"maker\u002Fneutral\u002Fdocs",[113,34,45,256,114,39],"project\u002Fneutral\u002Fdocs",[208,34,39,254,11,34],[259,34,39,260,114,39],"25162018","other\u002Fneutral\u002Fdocs",[262,34,39,239,263,39],"25163396","scns",[265,34,39,239,266,39],"25164031","pdimitar",[127,34,45,268,128,39],"project\u002Fneutral\u002Fexecution",[131,34,39,268,11,34],[146,34,45,271,87,39],"project\u002Fneutral\u002Fperformance",[273,34,39,271,11,34],"25163677",[120,34,45,275,94,39],"project\u002Fmixed\u002Fidea",[86,277,44,218,87,39],2,[149,277,45,271,150,39],[280,277,45,271,240,39],"25164501",[153,277,45,271,154,39],[283,277,45,271,87,39],"25165444",[285,277,45,271,286,39],"25166217","e12e",[288,45,44,218,289,39],"25161294","whalesalad",[291,204,44,218,62,39],"25161487",[293,204,39,294,11,34],"25161535","maker\u002Fneutral\u002Fnone",[176,44,39,239,177,39],[160,213,45,297,161,39],"project\u002Fneutral\u002Fidea",[106,32,45,297,107,39],[300,32,45,297,240,39],"25164728",[93,32,44,218,94,39],[303,304,45,305,306,39],"25162359",8,"project\u002Fneutral\u002Fdesign","staticassertion",[308,309,39,239,310,39],"25162065",9,"dmarlow",[312,309,39,239,313,39],"25162217","gameswithgo",[315,309,39,239,316,39],"25169185","joshsyn",[200,309,39,239,201,39],[164,319,45,297,165,39],10,[],[322,327,332,337,341,345],{"id":323,"name":324,"points":325,"category":326},"25148000","Zfs.rent",403,"infrastructure",{"id":328,"name":329,"points":330,"category":331},"25161117","PMAlerts",261,"productivity",{"id":333,"name":334,"points":335,"category":336},"25170078","john-doe",200,"dev_tools",{"id":338,"name":339,"points":340,"category":336},"25158588","QuickPYTHON",181,{"id":342,"name":343,"points":344,"category":331},"25168900","Presenta",124,{"id":346,"name":347,"points":348,"category":331},"25150804","Screenity",103,false,"v2",{"id":352,"name":5,"line":6,"ai":349,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":30,"top":18,"kw":353,"maker":11,"domain":10,"tier":19,"attempts":39,"strip":354,"url":9,"mix":355,"praise":78,"objection":99,"sub":21},25160474,[24,25,26,27,28],"5000000501500003000303353333550033530003",[32,33,34,34],1793991019089]