В связи с выходом ядра Linux 5.9 журналист Майкл Ларабель из издания Phoronix поигрался с утилитой cloc, посчитав количество строк кода.

Ядро Linux 5.9 содержит около 20,49 млн строк кода плюс 3,58 млн строк комментариев и 3,72 млн пустых строк. В целом ядро включает примерно 27,81 млн строк, распределённых между примерно 59 тыс. файлов с исходным кодом.

   69964 text files.
   69494 unique files.                                          
   10737 files ignored.

github.com/AlDanial/cloc v 1.82  T=95.88 s (618.0 files/s, 290045.7 lines/s)
------------------------------------------------------------------------------
Language                    files          blank        comment           code
------------------------------------------------------------------------------
C                           29198        2900014        2367000       14781314
C/C++ Header                21123         588426        1022774        4640918
reStructuredText             2685         135238          59051         369738
Assembly                     1275          45960          99012         225085
JSON                          287              0              0         165799
YAML                         1089          18494           4966          83627
Bourne Shell                  657          16823          11350          66043
make                         2592           9808          10864          44192
SVG                            59            118           1365          37555
Perl                           60           6686           4767          34393
Python                        123           5345           4804          27720
yacc                            9            695            354           4755
PO File                         5            791            918           3077
lex                             9            349            304           2130
C++                            10            345            134           1993
Bourne Again Shell             52            338            297           1750
awk                            10            139            116           1051
Glade                           1             58              0            603
NAnt script                     2            143              0            549
Cucumber                        1             28             50            175
Windows Module Definition       2             15              0            109
m4                              1             15              1             95
CSS                             1             28             29             80
XSLT                            5             13             26             61
vim script                      1              3             12             27
Ruby                            1              4              0             25
INI                             1              1              0              6
sed                             1              2              5              5
------------------------------------------------------------------------------
SUM:                        59260        3729879        3588199       20492875
------------------------------------------------------------------------------

В дерево исходных текстов ядра также входят различные инструменты, система сборки, множество документации и тому подобное. Это объясняет некоторые данные cloc, которые в противном случае могут показаться немного странными.

Графический драйвер AMDGPU содержит более двух миллионов строк кода, что делает его самым большим драйвером ядра в дереве. В Linux 5.9 он включает 2,16 млн строк кода плюс 247 тыс. строк комментариев и ещё 109 тыс. пустых строк. В сумме код драйвера AMD DRM занимает примерно 2,51 млн строк — включая AMDKFD, PowerPlay, DC и весь код ядра, в конечном счёте составляющий поддержку AMD Radeon в этом драйвере (но не более старый драйвер Radeon DRM, который содержит около 157 тыс. строк).

Как сообщалось ранее, кодовая база драйверов AMDGPU настолько велика из-за автоматически генерируемых заголовочных файлов для регистров GPU и т. д. На самом деле 1,79 млн строк драйвера AMDGPU в Linux 5.9 — это просто заголовочные файлы, которые преимущественно генерируются автоматически.

Для сравнения, драйвер Intel i915, поддерживающий в Linux 5.9 графику от старой i915 до Gen12/Xe, содержит 209 тыс. строк кода плюс 39,2 тыс. строк комментариев и 48 тыс. пустых строк.

Если сравнить с опенсорсным драйвером NVIDIA Nouveau, то там всего 149 тыс. строк кода, 25,6 тыс. строк комментариев и ещё 19,9 тыс. пустых строк.

P. S. Несколько часов назад Линус Торвальдс зарелизил ядро Linux 5.9. в котором масса замечательных нововведений, включая базовую поддержку видеокарт Radeon RX 6000 "RDNA 2", графики Intel Rocket Lake, ZNS (Zoned Namespaces) для NVMe и многое другое.