Locknote: How Badly Do We Want Correct Compilers? - John Regehr - NDC TechTown 2023

Discover the challenges and trade-offs of compiler development, exploring the importance of correctness, the limitations of fuzz testing, and the potential of program synthesis in creating reliable compilers that balance performance and security.

Key takeaways
  • Correctness is often compromised in pursuit of performance, which can lead to bugs and errors.
  • Compiler developers are often too busy to fix bugs and may not have the resources to do so.
  • Many languages now have fuzzers, which can automatically generate inputs to test for bugs.
  • Compiler optimization can lead to unforeseen effects, making it challenging to ensure correctness.
  • The cost of developing and maintaining correct compilers can be prohibitively high, leading to trade-offs between correctness and performance.
  • Compiler bugs can be difficult to uncover, and even when found, may not be effectively addressed by developers.
  • Program synthesis is a technique for automating the creation of correct code, but its application to compiler development is still in its infancy.
  • The search space for compiler optimizations is vast, making it challenging to find optimal solutions.
  • Even minor errors in compiler implementation can have significant consequences, making it important to prioritize correctness.
  • Compiler developers are often forced to make compromises between correctness and performance, leading to suboptimal solutions.