Yeah. Pretty horrible design flaw. Being able to add parameters in a backwards compatible way is essential for software development. I guess the only way to do it is via passing an object, which is like passing keyword parameters in other languages.
A better language might have a special syntax or specific types for mapping functions but that's not the argument you were making.
- Version should be bumped - Dependencies should be informed via the changelog - Existing tests of dependencies should fail
Not if your language has default parameters and does not allow callers to pass "extra" parameters. Then you can easily add a new parameter with a default value and older callers will work as expected.
[array mapSelector:@selector(toReadableNumber:withOptions:)
fromObject:[NSFormattingManager localizedFormattingManager]
withArguments:@[@{kCFNumberFormattingBaseKey:@(10)}]];
Thank god they invented @-syntax for core type literals.