Proposal: a new `exports` field in `findlib` META files

Using a library’s API should not, in general, entail usage of the API of its requires as is the case now (i.e. we should not -I the library directories of requires); if you don’t understand why see here. -H solves this problem.

Now consider the usage section of my proposal and try to solve the cases I mention with -H. You can’t.

You need a way for libraries to indicate which of their dependencies they consider as abstract (requires, -H) and those they don’t (represents, -I). Changes to requires should not break users of libraries while changes to represents do.

We can certainly do without but this entails that:

  1. We can’t deprecate library names without breaking users.
  2. We can’t have library names like my-currated-set-of-libs that stand for using the API of a bunch of other libraries.