[{"data":1,"prerenderedAt":421},["ShallowReactive",2],{"project-31599603":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":27,"sentiment":28,"stance_mix":29,"scored_comments":34,"aspects":35,"strip":44,"post_text":46,"what":47,"said":82,"maker_in_thread":164,"shape":175,"grid":178,"attempts":383,"same_week":384,"maker_shows":37,"maker_hidden":414,"reader_version":415,"card":416},"31599603","jasm","I spent my vacation writing a modern JVM assembler","title","Show HN: I spent my vacation writing a modern JVM assembler","https:\u002F\u002Fgithub.com\u002Froscopeco\u002Fjasm","github.com","noone_youknow",1654198828,2022,218,76,249,2570,10,"notable","languages","bytecode assembler","cli",[24,25,26,21],"jvm assembler","java bytecode","jasmin","mixed",0.25,{"positive":30,"neutral":31,"mixed":32,"critical":33},9,8,0,3,20,{"design":36,"idea":38,"performance":41,"docs":42,"execution":43},{"positive":37,"critical":32},2,{"positive":39,"critical":40},4,1,{"positive":32,"critical":32},{"positive":32,"critical":32},{"positive":32,"critical":40},[45,32,45,32,32,32,45,45,32,32,32,32,33,32,32,32,32,33,32,32,32,32,32,33,33,45,33,45,40,32,32,45,40,32,32,32,45,33,40,45],5,null,{"problem":48,"audience":46,"pricing":46,"motivation":59,"time_to_build":70,"stack":78,"openness":79,"stage":80,"team_size":81},{"value":49,"source":50,"evidence":51},"Writing JVM bytecode directly without a compiler","commenter",[52,56],{"id":53,"by":54,"text":55},"31605016","j_ham3","Nice project! At Guardsquare, we have a similar project: https:\u002F\u002Fgithub.com\u002FGuardsquare\u002Fproguard-assembler One of the things we use it for is testing: we can craft specific…",{"id":57,"by":11,"text":58},"31605748","Oh yeah, totally. As another reply mentions, this isn't about performance - by this point Javac is most likely doing the best thing possible (especially given the knowledge of…",{"value":60,"source":61,"evidence":62},"Fun side project built during vacation, a break from other work","maker",[63,66],{"id":64,"by":11,"text":65},"31599625","I had a lot of fun doing this, and along the way I learned a lot about writing Gradle and IntelliJ plugins, and I hope others might find this fun too :)",{"id":67,"by":68,"text":69},"31604029","nnoitra","\"With my recent scaling-back of the rosco_m68k project that’s been getting all my free time for the past couple of years, I needed a fun project to do during my time off, and I…",{"value":71,"source":61,"evidence":72},"Built during a vacation, about a week",[73,75],{"id":74},"post",{"id":76,"by":11,"text":77},"31605770","Thanks :) I definitely got into the flow for the first couple of days when I was laying down the foundations, it was the weekend and there weren't many distractions. If it wasn't…",[],"open_source","unknown","solo",{"praise":83,"objections":103,"requests":118,"questions":125,"alternatives":137},[84,92],{"value":85,"source":50,"evidence":86},"Useful for testing and generating bytecode edge cases",[87,88],{"id":53,"by":54,"text":55},{"id":89,"by":90,"text":91},"31600538","tstack","I used to use jasmin to generate invalid code to test an old JVM. I assume this has the same relaxed attitude that will let you generate invalid code?",{"value":93,"source":50,"evidence":94},"Fun and educational project",[95,99],{"id":96,"by":97,"text":98},"31600169","jpgvm","This is awesome. I have been toying with writing my own little JVM language (for education purposes) and this could go a long way to making that a bunch easier. Thanks for sharing!",{"id":100,"by":101,"text":102},"31599712","recursivedoubts","amazing! I will definitely discuss this in my compilers class, which targets JVM bytecode as a back end!",[104,111],{"value":105,"source":50,"evidence":106},"Javac output may be as fast or faster than hand-written bytecode",[107],{"id":108,"by":109,"text":110},"31603702","mbfg","Looks like a fun project. One thing i'd be interested in, is if it's slower than using javac, given that the JIT can optimize common idioms that the compiler spits out. For…",{"value":112,"source":50,"evidence":113},"Why not Jasmin; README should explain differences",[114],{"id":115,"by":116,"text":117},"31603840","mrslave","Why not Jasmin? Congrats on publishing your application. If this was something more than self-education please sell the benefits over Jasmin in your README? Looking forward to…",[119],{"value":120,"source":61,"evidence":121},"Update README to compare with Jasmin",[122],{"id":123,"by":11,"text":124},"31605778","That's a great suggestion, I'll get the README updated with that. Thanks!",[126,130],{"value":127,"source":50,"evidence":128},"How does this differ from Jasmin?",[129],{"id":115,"by":116,"text":117},{"value":131,"source":50,"evidence":132},"Where to learn Java bytecode",[133],{"id":134,"by":135,"text":136},"31600331","playing_colours","Can anyone recommend a good source (book, articles) to learn Java Bytecode?",[138,143,153,160],{"value":139,"source":50,"evidence":140},"Jasmin",[141,142],{"id":89,"by":90,"text":91},{"id":115,"by":116,"text":117},{"value":144,"source":50,"evidence":145},"ProGuardCORE and ASM",[146,149],{"id":147,"by":54,"text":148},"31604913","Something else that could make your code generation for your JVM language easier: ProGuardCORE (https:\u002F\u002Fgithub.com\u002FGuardsquare\u002Fproguard-core). It can be used to read, generate…",{"id":150,"by":151,"text":152},"31606114","whizzter","What's the main difference compared to the ASM library? When I was still JVM stuff it was really on the right abstraction level for most things. (I was recently doing some .NET…",{"value":154,"source":50,"evidence":155},"Grasmin",[156],{"id":157,"by":158,"text":159},"31606279","brabel","Groovy version of this but based off Jasmine: https:\u002F\u002Fgithub.com\u002Frenatoathaydes\u002FGrasmin",{"value":161,"source":50,"evidence":162},"proguard-assembler",[163],{"id":53,"by":54,"text":55},{"comments":165,"answered":166,"key":167},18,7,[168,171,172],{"id":169,"text":170},"31605802","Awesome, that's a very interesting project! Thanks for the link :)",{"id":64,"text":65},{"id":173,"text":174},"31605722","Thanks :) Small world, I currently help maintain Jasmin (via involvement in Code Shelter).",{"commenters":176,"max_depth":39,"maker_replies":165,"first_comment_mins":37,"lifespan_hours":177},47,31,[179,181,183,185,189,190,194,196,199,202,205,207,211,213,216,218,220,223,225,228,229,230,232,235,238,241,244,246,248,251,254,256,258,261,264,267,270,273,276,278,279,282,284,287,289,293,295,297,301,304,306,310,313,317,320,323,326,329,331,333,337,341,344,346,348,351,354,357,359,362,363,365,370,372,377,381],[53,32,45,180,54,32],"project\u002Fpositive\u002Fnone",[169,32,32,182,11,40],"commenter\u002Fneutral\u002Fnone",[64,40,32,184,11,40],"maker\u002Fneutral\u002Fnone",[186,40,45,187,188,32],"31604944","project\u002Fpositive\u002Fdesign","drdrey",[173,40,32,184,11,40],[191,37,32,192,193,32],"31600704","other\u002Fneutral\u002Fnone","pdpi",[195,37,32,192,11,40],"31600745",[197,37,32,192,198,32],"31602406","weaksauce",[200,37,32,192,201,32],"31605114","jbaiter",[203,33,32,182,204,32],"31600456","dvt",[206,33,32,182,11,40],"31600543",[208,39,45,209,210,32],"31600947","maker\u002Fpositive\u002Fnone","donsupreme",[212,39,32,184,11,40],"31601044",[214,39,32,192,215,32],"31610518","mdaniel",[96,45,45,217,97,32],"project\u002Fpositive\u002Fidea",[219,45,32,184,11,40],"31600199",[221,45,32,182,222,32],"31600729","kjeetgill",[224,45,32,182,97,32],"31600789",[226,45,32,182,227,32],"31600908","hashmash",[147,45,32,182,54,32],[150,45,32,182,151,32],[231,45,32,192,54,32],"31608736",[89,233,33,234,90,32],6,"project\u002Fneutral\u002Fidea",[236,233,32,237,11,40],"31600618","project\u002Fneutral\u002Fnone",[239,166,32,192,240,32],"31600842","Strs2FillMyDrms",[242,166,32,192,243,32],"31601026","wrs",[245,166,32,192,240,32],"31601399",[247,166,32,192,243,32],"31602220",[249,166,32,192,250,32],"31602188","Bytewave81",[252,166,32,192,253,32],"31604855","pjmlp",[255,166,32,192,240,32],"31616456",[257,166,32,192,109,32],"31603742",[259,31,33,184,260,32],"31601332","ElijahLynn",[262,31,33,184,263,32],"31601500","brailsafe",[265,31,32,192,266,32],"31601877","chrisseaton",[268,31,32,182,269,32],"31602558","boardwaalk",[271,31,32,182,272,32],"31602992","saagarjha",[274,31,32,182,275,32],"31602634","bsedlm",[277,31,32,192,266,32],"31606574",[76,31,32,184,11,40],[280,30,32,192,281,32],"31600859","oh_sigh",[283,30,32,192,272,32],"31602998",[285,30,32,192,286,32],"31611362","mindcrime",[108,18,33,288,109,32],"project\u002Fneutral\u002Fperformance",[290,18,32,291,292,32],"31604227","commenter\u002Fneutral\u002Fperformance","pvg",[57,18,32,294,11,40],"maker\u002Fneutral\u002Fperformance",[157,296,33,234,158,32],11,[298,299,45,217,300,32],"31601847",12,"FastEatSlow",[115,302,33,303,116,32],13,"project\u002Fneutral\u002Fdocs",[123,302,32,305,11,40],"maker\u002Fneutral\u002Fdocs",[307,308,33,234,309,32],"31602431",14,"userbinator",[311,308,32,312,11,40],"31605784","maker\u002Fneutral\u002Fidea",[314,315,45,187,316,32],"31600053",15,"cbm-vic-20",[318,315,32,319,11,40],"31600122","maker\u002Fpositive\u002Fdesign",[67,321,40,322,68,32],16,"maker\u002Fcritical\u002Fnone",[324,321,32,182,325,32],"31604066","jdlshore",[327,321,32,182,328,32],"31604090","gavinray",[330,321,32,182,68,32],"31604157",[332,321,32,182,11,40],"31605796",[334,335,45,217,336,32],"31605086",17,"self_awareness",[338,165,40,339,340,32],"31599869","project\u002Fcritical\u002Fexecution","eternalban",[342,165,32,182,343,32],"31599925","newobj",[345,165,32,182,340,32],"31599937",[347,165,32,182,109,32],"31603753",[134,349,32,350,135,32],19,"other\u002Fneutral\u002Fdocs",[352,349,32,350,353,32],"31600373","topbanana",[355,349,32,350,356,32],"31600382","rzzzt",[358,349,32,303,11,40],"31600559",[360,349,32,350,361,32],"31601136","jfengel",[100,34,45,217,101,32],[364,34,32,209,11,40],"31599754",[366,367,33,368,369,32],"31606737",21,"project\u002Fneutral\u002Fdesign","H4sh3",[371,367,32,368,11,40],"31609888",[373,374,40,375,376,32],"31604373",22,"project\u002Fcritical\u002Fidea","rurban",[378,379,45,180,380,32],"31600136",23,"tornadofart",[382,379,32,209,11,40],"31600155",[],[385,390,395,400,405,410],{"id":386,"name":387,"points":388,"category":389},"31607318","webOS Archive",439,"infrastructure",{"id":391,"name":392,"points":393,"category":394},"31595822","Svelvet",354,"dev_tools",{"id":396,"name":397,"points":398,"category":399},"31653726","The Bitcoin Note",344,"finance_crypto",{"id":401,"name":402,"points":403,"category":404},"31668814","Spiral Wiki",331,"security_privacy",{"id":406,"name":407,"points":408,"category":409},"31593726","quaxio.com",281,"games",{"id":411,"name":412,"points":413,"category":389},"31657527","Umbrel",225,false,"v2",{"id":417,"name":5,"line":6,"ai":414,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":28,"top":18,"kw":418,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":419,"url":9,"mix":420,"praise":85,"objection":105,"sub":21},31599603,[24,25,26,21],"5050005500003000030000033535100510005315",[30,31,32,33],1794036621072]