People and packages are unhappy about the Zstd compatibility mismatch, for good reasons, because it is a bit of a hack. Maybe we should consider lowering the log-level of this warning?
"For safety" probably freaks people out, because they run Tor for safety and they wonder if something about their system is making them unsafe.
But maybe we shouldn't just get rid of the message entirely, because then we will develop a new class of surprises, where people think they installed the zstd package but for some reason their Tor isn't performing zstd actions?
What is the advanced functionality that we opt out of doing? Is it something that the user might notice (as a relay or as a client), or is it just about what kind of compression we ask for, and we auto fall back to a perfectly valid choice if we choose not to use this part of zstd?
If it is something the user might notice, maybe we want to pick 'notice' level and craft a more reassuring message. But if it something Tor adapts to automatically and the user will realistically never care about, moving to info level seems best.
What is the advanced functionality that we opt out of doing? Is it something that the user might notice (as a relay or as a client), or is it just about what kind of compression we ask for, and we auto fall back to a perfectly valid choice if we choose not to use this part of zstd?
IIRC it is our ability to discover how much memory is used in zstd buffers so that we can better respond to memory-based DoS attacks. When we can't do that, we instead make a wild guess, and risk using too much RAM or making worse decisions under RAM pressure.
I just looked in the more recent Zstd releases and unfortunately these calls are still considered experimental even though they haven't changed since we adopted Zstd a while ago :-(