Part 3. Advanced module system features
Whereas parts 1 and 2 were akin to four-course dinners, this part of the book is more like a buffet. It covers the module system’s advanced features, and you’re free to pick whatever interests you the most in whatever order you prefer.
Chapter 10 introduces services, a great mechanism to decouple users and implementations of an API. If you’re more interested in refining requires and exports—for example, to model optional dependencies—check out chapter 11. Look into chapter 12 to prepare your modules for reflective access by your favorite framework and to learn how to update your own reflecting code.
The module system doesn’t process module version information, but you can record it when building modules and to evaluate them at run time. Chapter 13 explores that as well as the reasons why there is no further support for versions, for example to run multiple versions of the same module.
Chapter 14 takes a step back from developing modules and instead sees them as input for creating custom run-time images that contain just the modules you need to run your project. Going one step further, you can include your entire application and create a single deployable unit to ship to your customers or servers.