My preference for JSON was less performance related and more removing the need to align swiftc and swift-syntax. Using strings pretty much bakes in the need for swift-syntax as nothing else has the power to do the job (you can see the crappy hack I had to implement in my SwiftCompilerPlugin project ).
I don’t see Codable being strictly required other than that it’s already used to handle messages between the compiler and macro program.