https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107634
--- Comment #8 from Martin Liška <marxin at gcc dot gnu.org> --- About the number of files. Yes, that's the biggest change when it comes to Sphinx and I see it also as a drawback. However, it's the only valid file naming scheme supported by Sphinx and there are projects with non-trivial docs where the average size of a file matches to what we have: gcc manual: TOTAL files: 312 Total LOC: 68643 Average LOC: 220 Median LOC: 104 linux kernel: TOTAL files: 3198 Total LOC: 649105 Average LOC: 202 Median LOC: 485 godot game engine: === TOTAL files: 1262 Total LOC: 308497 Average LOC: 244 Median LOC: 325 coreboot: === TOTAL files: 354 Total LOC: 36916 Average LOC: 104 Median LOC: 139 Note the GCC manual contains many target-specific sections and I don't believe they should be presented at a single HTML page: extensions-to-the-c-language-family/declaring-attributes-of-functions/ - 35 files extensions-to-the-c-language-family/target-builtins/ - 36 files gcc-command-options/machine-dependent-options/ - 62 files Where I can imagine merging the files are following sub-folders: extensions-to-the-c++-language/backwards-compatibility.rst [27] extensions-to-the-c++-language/c++-concepts.rst [44] extensions-to-the-c++-language/c++-interface-and-implementation-pragmas.rst [97] extensions-to-the-c++-language/c++-specific-variable-function-and-type-attributes.rst [95] extensions-to-the-c++-language/deprecated-features.rst [43] extensions-to-the-c++-language/extracting-the-function-pointer-from-a-bound-pointer-to-member-function.rst [48] extensions-to-the-c++-language/function-multiversioning.rst [65] extensions-to-the-c++-language/restricting-pointer-aliasing.rst [52] extensions-to-the-c++-language/type-traits.rst [165] extensions-to-the-c++-language/vague-linkage.rst [80] extensions-to-the-c++-language/when-is-a-volatile-c++-object-accessed.rst [58] extensions-to-the-c++-language/wheres-the-template.rst [131] ./extensions-to-the-c++-language.rst [34] c-implementation-defined-behavior/architecture.rst [47] c-implementation-defined-behavior/arrays-and-pointers.rst [46] c-implementation-defined-behavior/characters.rst [93] c-implementation-defined-behavior/declarators.rst [14] c-implementation-defined-behavior/environment.rst [18] c-implementation-defined-behavior/floating-point.rst [88] c-implementation-defined-behavior/hints.rst [35] c-implementation-defined-behavior/identifiers.rst [28] c-implementation-defined-behavior/integers.rst [66] c-implementation-defined-behavior/library-functions.rst [19] c-implementation-defined-behavior/locale-specific-behavior.rst [12] c-implementation-defined-behavior/preprocessing-directives.rst [54] c-implementation-defined-behavior/qualifiers.rst [53] c-implementation-defined-behavior/statements.rst [14] c-implementation-defined-behavior/structures-unions-enumerations-and-bit-fields.rst [78] c-implementation-defined-behavior/translation.rst [20] ./c-implementation-defined-behavior.rst [46] gnu-objective-c-features/compatibilityalias.rst [26] gnu-objective-c-features/constant-string-objects.rst [64] gnu-objective-c-features/exceptions.rst [79] gnu-objective-c-features/fast-enumeration.rst [221] gnu-objective-c-features/garbage-collection.rst [81] gnu-objective-c-features/gnu-objective-c-runtime-api.rst [98] gnu-objective-c-features/load-executing-code-before-main.rst [141] gnu-objective-c-features/messaging-with-the-gnu-objective-c-runtime.rst [145] gnu-objective-c-features/synchronization.rst [36] gnu-objective-c-features/type-encoding.rst [280] known-causes-of-trouble-with-gcc/actual-bugs-we-havent-fixed-yet.rst [14] known-causes-of-trouble-with-gcc/certain-changes-we-dont-want-to-make.rst [236] known-causes-of-trouble-with-gcc/common-misunderstandings-with-gnu-c.rst [296] known-causes-of-trouble-with-gcc/disappointments-and-misunderstandings.rst [102] known-causes-of-trouble-with-gcc/fixed-header-files.rst [39] known-causes-of-trouble-with-gcc/incompatibilities-of-gcc.rst [233] known-causes-of-trouble-with-gcc/interoperation.rst [153] known-causes-of-trouble-with-gcc/standard-libraries.rst [33] known-causes-of-trouble-with-gcc/warning-messages-and-error-messages.rst [46] language-standards-supported-by-gcc/c++-language.rst [71] language-standards-supported-by-gcc/c-language.rst [139] language-standards-supported-by-gcc/d-language.rst [11] language-standards-supported-by-gcc/go-language.rst [10] language-standards-supported-by-gcc/objective-c-and-objective-c++-languages.rst [62] language-standards-supported-by-gcc/references-for-other-languages.rst [13] That's a reduction of ~50 files. To be honest, the split is mandatory thing and there's not much I can do about it. Just a note for the old .texi files: we used to have files (./gcc/doc/invoke.texi ./gcc/doc/extend.texi, ./gcc/fortran/intrinsic.texi) that tend to have 1000s of lines which is not ideal either.