I just discovered a shocking, troubling, and as far as I know, undocumented change in Xcode 15: the functions os_log and NSLog now log nil as an empty string. The previous behavior, going back forever as far as I remember, was to log nil as (null).
Here's a sample command-line tool run with Xcode 14:

And here's the same tool run with Xcode 15:

Wow. I'm stunned.
I don't know whether this is a bug or intended behavior, but it makes debugging our apps markedly worse, because now there's no easy way to identify nil objects or to distinguish between nil and @"" in the log output. WTF?!?
I've filed FB13268283 with Apple's Feedback Assistant.
Note: An earlier version of this blog post incorrectly blamed the issue on the iOS 17 and macOS 14 SDKs that come bundled with Xcode 15. It turns out, on further testing, that the issue affects logging only in Xcode. Thankfully, Console log still shows (null) output for nil. In retrospect, I should have realized this before, because I could reproduce the issue on macOS 13, and it doesn't make much sense that an SDK-related change would be backward deployed. I apologize for the confusion.