We would like to change the cabal subcommands feature such that cabal-install does not pass the subcommand’s name as argv[1] anymore.
This was originally added to mirror cargo and has some advantages for executables that have multiple subcommands that are less important in the Haskell context than they are in the rust context, but do not affect the average use case where you just want to invoke cabal-foo as cabal foo.
We would like to announce the proposed change here, since we want to warn and survey users who have a single executable that serves multiple cabal subcommands.
If that is not the case for you, your live will become simpler and we will probably not break you, either.
If that is the case for you, we would like to hear about your usecase and discuss how to avoid breakage for you.
This is the proposed change: cabal-install: do not pass the executable name to cabal external commands by MangoIV · Pull Request #11232 · haskell/cabal · GitHub
This is the original discussion that led up to this: external commands need to explicitly handle their own name being passed to the executable · Issue #10275 · haskell/cabal · GitHub