Jared Parsons: Designing C# and Testing a Compiler – Episode 287

Challenges

  • Designing a programming language that meets diverse developer needs.
  • Ensuring the compiler is robust and efficient.
  • Balancing new feature integration with maintaining backward compatibility.

Solutions

  • Iterative design process with extensive feedback loops.
  • Implementing comprehensive testing strategies for the compiler.
  • Prioritizing backward compatibility while introducing new features.

Benefits

  • Enhanced language features that improve developer productivity.
  • Reliable and efficient compiler performance.
  • Smooth transition for developers adopting new language features.

Jared Parsons, the Principal Developer Lead on the C# Compiler Team. Everybody tuning in probably uses his code on a day-to-day basis! Jared started at Microsoft 20 years ago as a Developer; moved on to become a Senior Developer; then the Principal Developer on Midori OS; and most recently, the Principal Developer on the C# Compiler Team, which he has been with since 2014.

Topics of Discussion:
[03:14] Jared talks about his twisty career path.
[05:29] What does designing a programming language look like?
[06:18] The two features in C#.
[10:30] The C# language design process.
[14:09] How we get from ideas to designs and implementations.
[16:02] Jared recommends resources to learn more.
[17:34] Jared’s favorite convention for all the member types.
[18:20] Primary constructors.
[24:21] Is the entire compiler open source?
[25:28] Thinking like a customer and pushing on the tools if needed.
[30:33] How the process has changed over the years.
[32:41] Jared’s favorite testing unit.