Как генератор тестов помог стабилизировать компилятор в Zing VM

Стабильность и функциональная корректность — это то, чего ждут пользователи Java-машин. А ещё они ждут, что скомпилированный ими код будет работать быстро. Для этого существуют компиляторные оптимизации, но чем агрессивнее они улучшают код, тем больше проблем в них может быть скрыто.
Так как же помирить такие противоречивые цели, как скорость и корректность скомпилированного кода? Особенно если ваш компилятор основан на LLVM, и в него вливаются десятки тысяч строк изменений каждую неделю? Как находить скрытые баги у себя дома до того, как пользователь наткнётся на один из них?
В этом докладе мы расскажем, как мы ищем функциональные проблемы в компиляторе Java-машины Zing, используя автоматический генератор тестовых программ на языке Java.