Summary
In this chapter, you've learned how to design libraries for extensibility, and you are probably close to an expert on plugin system design. You've also learned about globally frozen, locally mutable design, and how to properly freeze your libraries and runtime environment. With your knowledge of these topics, you are now much better able to design flexible and robust libraries.
In the next chapter, you'll learn about metaprogramming, and when an appropriate time to use it is.