According to the API docs, Dry::Struct.new has a safe
parameter, but it’s not documented. What does this parameter do? Does it have anything to do with security, e.g. whether the method becomes safe to use against untrusted input?
It is an internal argument used for separating call paths, making code faster in some cases. It has nothing to do with security and it’s not part of the public API. We could theoretically do it in some other way but that would be a breaking change since people may override new
in their struct classes. In other words, because reasons