Ruby's parser is notoriously complex; if I remember correctly, only a few members of the core team even know how to maintain it without introducing regressions.<p>The craziest part of this is that Ruby does not provide a full featured Ruby parser, so its entire static and dynamic analysis ecosystem depends on a (actually very high quality) 3rd party parser, begrudgingly maintained by someone who (AFAIK) doesn't even write Ruby anymore: <a href="https://github.com/whitequark/parser" rel="nofollow">https://github.com/whitequark/parser</a><p>When I see new language features like this, I think of how Ruby's entire tooling ecosystem depends on the dramatically underfunded (and therefore primarily goodwill) efforts of high output maintainers like whitequark and a few others. Ruby's highly dynamic and untyped nature means these tools are all the non-runtime guarantees you can get, basically. Epitome of digital infrastructure.<p>Consider asking your company to fund some of these people:<p>* <a href="https://github.com/whitequark" rel="nofollow">https://github.com/whitequark</a> (maintains parser)<p>* <a href="https://github.com/sponsors/bbatsov" rel="nofollow">https://github.com/sponsors/bbatsov</a> (maintains RuboCop)<p>* <a href="https://github.com/sponsors/mbj" rel="nofollow">https://github.com/sponsors/mbj</a> (maintains unparser and mutant)<p>---<p>As context, I know this stuff intimately because I used to contribute heavily to most static and dynamic analysis tools in the Ruby ecosystem (<a href="https://github.com/backus?tab=overview&from=2017-12-01&to=2017-12-31" rel="nofollow">https://github.com/backus?tab=overview&from=2017-12-01&to=20...</a>) and used to track new ruby changes really closely: <a href="https://cognitohq.com/new-features-in-ruby-2-4/" rel="nofollow">https://cognitohq.com/new-features-in-ruby-2-4/</a>