MacroTools splitarg interface change RFC

MacroTools splitarg and combinearg no longer work with functions that have keyword argument splats in Julia 1.7. To fix this issue, we need to avoid trying to typeassert the keyword argument splat. MacroTools used to return :Any in the arg_type field of splitarg when an argument had no type, which when passed to combinearg transforms f(; kwargs...) into f(; kwargs::Any...), an error on Julia 1.7.

Any change to splitarg and combinearg capable of fixing this error seems to involve changing the interface to these functions. Therefore, we request users to weigh in here.

2 Likes

To summarize the problem at a high-level, our issue is that

  • MacroTools is used in a lot of packages
  • The most straight-forward fix involves a change of interface to a fairly obscure function (splitarg), suggesting a major version bump (well, in this case minor because it’s 0.x)

I’m not really worried about the interface change per se (users of that function will get errors), but I do wonder if it’s worth pushing CompatHelper PRs across the registry for such a minor change. What’s the general community wisdom? Do we just pull the trigger and change the interface?

I would do anything possible to not have to release a breaking version. For example, instead of modifying the existing function, make a new function with the correct behaviour. Alt, run tests of packages using the function and fix those that would break from the change preemptively. Etc etc.

5 Likes