FurryGuy wrote: |
---|
Anywhere a noob programmer can get an understanding of what modules and coroutines will do for them? |
The primary goal of modules is to improve library encapsulation. It is essentially an alternative for #include that works at a semantic rather than textual level.
A module describes the interface of a library or subsystem. The basic idea is that a programmer can list the names that comprise that interface, and form a module out of it. Later, that module can be imported elsewhere, to make that interface (and not implementation details) usable in that file.
p0947r1 is titled "Another Take on Modules", or Atom, for short. Atom will probably remain a decent approximation of the final design. In particular, section 2 gives an overview of the feature, including a list of design goals:
https://wg21.link/p0947r1#overview
If you want to play with Modules in some form or another, both GCC and Clang (and MSVC, I think) have experimental support.
Coroutines are a general mechanism for
asynchronous programming cooperative multitasking. The core language feature is very low-level, but it will interact nicely with the new functional programming stuff that is being added.
This is the best C++-focused explanation I could find (read the articles in chronological order):
https://lewissbaker.github.io/
See also Wikipedia:
https://en.wikipedia.org/wiki/Coroutine
If you want to play with Coroutines, Clang (and MSVC, I think) has experimental support.
See also this page (some links won't work by design until papers are published):
https://herbsutter.com/2019/02/23/trip-report-winter-iso-c-standards-meeting-kona/