Interface files =============== Should they be manually created or automatically generated? Or should they be used to generate templates for the implementation files? It appears that manually created interfaces, that are used to generate templates for the implementation files, is the best option. Manually created interface files -------------------------------- Pros: * It could make libraries more "consumable" (the library interface file could serve as documentation) - and can be viewed directly in e.g. a repo viewer like cgit * Exports are more explicit. * Encourages "interface-driven design" Cons: * Duplication. * The interface file could get large (because it's a single file) Automatically created interface files ------------------------------------- Pros: * No duplication Cons: * It might not be clear that comments become part of the interface * Requires multiple output files (.so and interface .slul file) Manually created interface files, used for generating templates --------------------------------------------------------------- Pros: * All from "Manually created interface". * No duplication. Cons: * The interface file could get large (because it's a single file) Conclusion ---------- Use manually created interface files, with template generation. However, the template generation feature can be skipped in the bootstrap compiler.