For large C++ audio-plugin codebases, adding support for a new platform (such as Apple Silicon/ARM) can be a scary, expensive endeavor. One of the biggest causes for alarm is C++ undefined behavior (UB), which is an unfortunate part of many legacy codebases. After a brief review of what undefined behavior (UB) is we will discuss what issues it can cause and why it should be avoided. We'll also discuss how paying attention to the details of audio plug-in format "contracts", particularly in regards to threading, can simplify the process of supporting new platforms and new DAWs. Finally, we’ll go over the specific cultural and tooling initiatives we used to eliminate bad behavior in our audio plug-in codebase, including how we used static analysis, plug-in validators, and clang runtime sanitizers to identify and address issues. We hope attendees leave the session with actionable ideas for how to address these sorts of issues in their own codebase.
IF YOU ARE ATTENDING ONLINE, ALL TALK SESSIONS CAN BE ACCESSED FROM THE MAIN LOBBY:
https://conference.audio.dev