I think we could go with the way @chivitli suggested. If we check the type of the first or second argument (old: int, new: string), we can detect if someone tries the new way or the old way. And if someone tries the old way we can run the old code and log a deprecated message.
That would be 100% backward compatible.