[{"data":1,"prerenderedAt":257},["ShallowReactive",2],{"project-15528660":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":39,"post_text":41,"what":42,"said":73,"maker_in_thread":145,"shape":155,"grid":159,"attempts":215,"same_week":220,"maker_shows":31,"maker_hidden":249,"reader_version":250,"card":251},"15528660","Ruby static type checker","proof of concept","title","Show HN: Ruby static type checker – proof of concept","https:\u002F\u002Fgithub.com\u002Fstereobooster\u002Fdiamondback-ruby\u002Ftree\u002Fmaster\u002Fexamples","github.com","stereobooster",1508702803,2017,115,24,377,2242,17,"notable","dev_tools","static type checker","cli",[24,25,26,27],"ruby","static typing","type checker","type inference","mixed",0.125,{"positive":31,"neutral":32,"mixed":33,"critical":34},3,2,0,1,6,{"idea":37,"performance":38},{"positive":31,"critical":34},{"positive":33,"critical":33},[33,33,33,33,33,31,33,33,33,33,40,33,33,34,40,40,33,31,33,33,33,33,33,33],5,null,{"problem":43,"audience":50,"pricing":41,"motivation":58,"time_to_build":41,"stack":63,"openness":70,"stage":71,"team_size":72},{"value":44,"source":45,"evidence":46},"Ruby type errors cause bugs that are only found at runtime","maker",[47],{"id":48,"by":11,"text":49},"15534252","The reason is to fight with bugs, which are caused by type errors. Current approaches are: 1) use guards 2) add tests which check types 3) use error reporting software, like…",{"value":51,"source":52,"evidence":53},"Ruby developers wanting static type checking","inferred",[54,57],{"id":55,"by":11,"text":56},"15534300","Crystal is not Ruby. Please do not advertise it as a drop in replacement. https:\u002F\u002Fgithub.com\u002Fcrystal-lang\u002Fcrystal\u002Fissues\u002F4731#issuecomment-318486278 Imagine you have a big ruby…",{"id":48,"by":11,"text":49},{"value":59,"source":45,"evidence":60},"Help integrate static type checking into big Ruby projects gradually, catching type errors before deployment",[61,62],{"id":55,"by":11,"text":56},{"id":48,"by":11,"text":49},[64],{"value":65,"source":45,"evidence":66},"Ruby",[67],{"id":68,"by":11,"text":69},"15531944","> it only supports 1.8 Yes, it is because this is a fork of a project started in 2009 (and not maintained afterward). I spent a couple of evenings trying to resurrect it and see…","open_source","prototype","unknown",{"praise":74,"objections":87,"requests":102,"questions":110,"alternatives":126},[75],{"value":76,"source":77,"evidence":78},"Impressive project and useful idea for Ruby","commenter",[79,83],{"id":80,"by":81,"text":82},"15530412","wasd","I'm incredibly impressed. @stereo, can you speak a bit to your ambitions? Have you talked with any ruby-core team about integrating what you're doing?",{"id":84,"by":85,"text":86},"15533385","dragonwriter","Optional static verification is becoming the norm in dynamic languages, Ruby has several libraries for it already. (This one seems different from other ruby ones I've seen in…",[88,95],{"value":89,"source":77,"evidence":90},"Ruby does not need static typing; dynamic typing is a strength",[91],{"id":92,"by":93,"text":94},"15533229","krapsna","Perhaps this went completely over my head somehow? I'm not seeing why this is needed, other than people who find comfort in static typing think Ruby is broken without it. I've…",{"value":96,"source":77,"evidence":97},"Static typing unlikely to be widely adopted in the Ruby community",[98],{"id":99,"by":100,"text":101},"15533741","xuejie","Personally I feel we might never get static typing for Ruby anytime soon, at least it won't be widely adopted in the community, so I'd settle on dynamic typing like this. After…",[103],{"value":104,"source":77,"evidence":105},"Support newer Ruby versions such as 2.4 and Rails",[106],{"id":107,"by":108,"text":109},"15531217","ainar-g","So far, the author writes, it only supports 1.8 and not all of standard library. But if it ever supports 2.4 + Rails, that would be enormous.",[111,122],{"value":112,"source":77,"evidence":113},"How does it relate to RDL from UMD",[114,118],{"id":115,"by":116,"text":117},"15530544","jbackus","Another interesting project is RDL: https:\u002F\u002Fgithub.com\u002Fplum-umd\u002Frdl Both Diamondback and RDL come out of UMD. I'm curious what drives this research there. From what I can tell,…",{"id":119,"by":120,"text":121},"15530596","kyleashipley","From what I could gather from this talk at Strangeloop, RDL seems like an evolution or expansion of Diamondback: https:\u002F\u002Fm.youtube.com\u002Fwatch?v=buY54I7mEjA (See ~21:30ish for…",{"value":123,"source":77,"evidence":124},"Whether Ruby core team plans to integrate typing",[125],{"id":80,"by":81,"text":82},[127,135,139],{"value":128,"source":77,"evidence":129},"Crystal",[130,134],{"id":131,"by":132,"text":133},"15532248","hamandcheese","If you’re interested in this, you might also be interested in the Crystal language. > Crystal’s syntax is heavily inspired by Ruby’s, so it feels natural to read and easy to…",{"id":99,"by":100,"text":101},{"value":136,"source":77,"evidence":137},"RDL",[138],{"id":115,"by":116,"text":117},{"value":140,"source":77,"evidence":141},"dry-types and dry-struct",[142],{"id":143,"by":100,"text":144},"15531599","Although this might not be a direct comparison, based on how things go in the Ruby community, personally I feel dry-types & dry-struct…",{"comments":146,"answered":31,"key":147},7,[148,149,152],{"id":55,"text":56},{"id":150,"text":151},"15531903","RDL and Diamondback have a different approach. Diamondback works with given code without modification and able to find (some) errors, RDL needs code modification. See this issue…",{"id":153,"text":154},"15531960","This rather tends to be a middle ground solution while we do not have an idea how to do types right in Ruby. Let me remind you that whole Ruby core team struggles with this…",{"commenters":18,"max_depth":156,"maker_replies":146,"first_comment_mins":157,"lifespan_hours":158},4,420,64,[160,162,166,170,171,174,176,177,179,182,185,187,189,192,194,196,199,201,203,205,206,210,212,213],[131,33,33,161,132,33],"other\u002Fneutral\u002Fnone",[163,33,33,164,165,33],"15533168","commenter\u002Fcritical\u002Fnone","mbell",[167,33,33,168,169,33],"15533684","commenter\u002Fneutral\u002Fnone","pkd",[55,33,33,168,11,34],[172,33,33,168,173,33],"15549368","nine_k",[115,34,31,175,116,33],"project\u002Fneutral\u002Fidea",[119,34,33,161,120,33],[150,34,33,178,11,34],"commenter\u002Fneutral\u002Fdesign",[180,34,33,161,181,33],"15531450","chrisseaton",[183,34,33,161,184,33],"15533768","woodruffw",[80,32,40,186,81,33],"maker\u002Fpositive\u002Fidea",[153,32,33,188,11,34],"maker\u002Fneutral\u002Fdesign",[190,31,33,161,191,33],"15533464","pmontra",[92,156,34,193,93,33],"project\u002Fcritical\u002Fidea",[84,156,40,195,85,33],"project\u002Fpositive\u002Fidea",[197,156,40,195,198,33],"15533909","kazinator",[48,156,33,200,11,34],"commenter\u002Fneutral\u002Fidea",[107,40,31,202,108,33],"project\u002Fneutral\u002Fperformance",[68,40,33,204,11,34],"maker\u002Fneutral\u002Fexecution",[143,35,33,161,100,33],[207,35,33,208,209,33],"15531860","other\u002Fpositive\u002Fnone","vvdcect",[211,35,33,200,11,34],"15531918",[99,35,33,200,100,33],[214,35,33,200,11,34],"15536098",[216,219],{"id":217,"t":218,"points":31,"comments":34},"15526406",1508673754,{"id":4,"t":12,"points":14,"comments":15},[221,226,230,234,239,244],{"id":222,"name":223,"points":224,"category":225},"15534580","Arxiv Vanity",721,"learning_science",{"id":227,"name":228,"points":229,"category":20},"15507538","Gutenberg",241,{"id":231,"name":232,"points":233,"category":20},"15507181","Screen.rip",195,{"id":235,"name":236,"points":237,"category":238},"15551245","US Stock Screener",173,"finance_crypto",{"id":240,"name":241,"points":242,"category":243},"15544432","Product Substitutes",103,"web_saas",{"id":245,"name":246,"points":247,"category":248},"15529963","JSRobot",79,"games",false,"v2",{"id":252,"name":5,"line":6,"ai":249,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":253,"top":18,"kw":254,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":255,"url":9,"mix":256,"praise":76,"objection":89,"sub":21},15528660,0.13,[24,25,26,27],"000003000050015503000000",[31,32,33,34],1794036560038]