{"push_id":2726447530,"size":1,"distinct_size":1,"ref":"refs/heads/fix/boot-time-issue","head":"159da10498730754e3a8856e4baa2a0fee5b6e7b","before":"e585d1038a8b4f35dc64533f0cf412e3a999f48e","commits":[{"sha":"159da10498730754e3a8856e4baa2a0fee5b6e7b","author":{"name":"Markus Schirp","email":"487cf18fb8665f8c1e7d213f5da779f5e3ae539d@schirp-dso.com"},"message":"Fix boot time issue\n\nContext:\n\n* RSpec generates a \"semi dynamic constant\" per shared/regular example\n* These constants have dynamically implemented `#name` which are super\n  slow to evaluate in mass. As they leak lots of intermediary objects\n  behind and cause lots of GC pressure on BIG code bases.\n* Mutant cannot currently mutate 99.95% of typical generated class\n  bodies for various reaons (literal code only, no support for mutating\n  metaprogrammed code).\n\nEffect:\n\n* On big code bases mutant initialization is much faster now, observed\n  speedup is a reduction of boot time between 60 - 95%.\n* If your subjects where previously autoloaded implicitly from mutant\n  loading all rspec examples (via hitting your constant names that\n  trigger autoloads) you'll now be forced to explicitly trigger that\n  autloads in a different way. Use `--require\n  some-file-that-triggers-all.rb` this will be loaded before mutant\n  exands subjects and should be fine. I do not recommend to load rspec\n  from that file, or autoloads in general.\n\nTLDR: Loading rspec before subject matching was a hack to make people\nthat rely on autoloads a bit more content, that was a big mistake, just\nas autoloads in general. Lets call autoloads \"indeterministic constant\nscope\" from now on.","distinct":true,"url":"https://api.github.com/repos/mbj/mutant/commits/159da10498730754e3a8856e4baa2a0fee5b6e7b"}]}
{"actor":{"display_login":"mbj"}}