Date: Fri, 18 Jun 2021 20:07:38 -0400
On Fri, Jun 18, 2021, 19:48 Bjarne Stroustrup via SG15 <
sg15_at_[hidden]> wrote:
> we have lived with the fundamentally messy header files for almost 5
> decades and have pretty good ideas of how to deal with them, so they can
> seem simple and fit with many tool chains.
>
There are different axis of complexity.
Headers are super messy from a language perspective, but are very much
straightforward from a tooling perspective, particularly in POSIX systems,
where they are uncontroversially mapped to files on disk with a well
defined lookup order and standardized compiler arguments.
Modules are much more straightforward from the language perspective, but
they force the issue of package management, which has been an area with
very little convergence in the past, and they force the issue because they
are a lot more semantically complex for the build system.
That is not a bad trade off, most other languages have successfully pushed
all of that complexity to a standardized package manager.
C++ (and the languages it can do ABI interoperability with) have been
avoiding the convergence on the package management conversation, which
makes the adoption of modules by build systems much harder (particularly
when consuming pre-built artifacts).
I am not very hopeful that we could get an universally interoperable
solution to this problem, but I'm confident we can get the posix-like
systems to converge.
I do agree with the sentiment on the rest of the thread that this is not
likely going to happen by fiat.
Daniel
sg15_at_[hidden]> wrote:
> we have lived with the fundamentally messy header files for almost 5
> decades and have pretty good ideas of how to deal with them, so they can
> seem simple and fit with many tool chains.
>
There are different axis of complexity.
Headers are super messy from a language perspective, but are very much
straightforward from a tooling perspective, particularly in POSIX systems,
where they are uncontroversially mapped to files on disk with a well
defined lookup order and standardized compiler arguments.
Modules are much more straightforward from the language perspective, but
they force the issue of package management, which has been an area with
very little convergence in the past, and they force the issue because they
are a lot more semantically complex for the build system.
That is not a bad trade off, most other languages have successfully pushed
all of that complexity to a standardized package manager.
C++ (and the languages it can do ABI interoperability with) have been
avoiding the convergence on the package management conversation, which
makes the adoption of modules by build systems much harder (particularly
when consuming pre-built artifacts).
I am not very hopeful that we could get an universally interoperable
solution to this problem, but I'm confident we can get the posix-like
systems to converge.
I do agree with the sentiment on the rest of the thread that this is not
likely going to happen by fiat.
Daniel
Received on 2021-06-18 19:07:52