Kernel-Log: Mehr als 10 Millionen Zeilen in den Linux-Quellen

Die Dateien eines aktuelle Git-Checkouts von Linux enthalten seit Kurzem über 10 Millionen Zeilen Text; zählt man nur die Quellcode-Dateien sind es immer noch über 9 Millionen Zeilen.

In Pocket speichern vorlesen Druckansicht 321 Kommentare lesen
Lesezeit: 6 Min.
Von
  • Thorsten Leemhuis

Kernel-Log-Logo

Nach der Freigabe von Linux 2.6.27 integrieren die Kernel-Entwickler derzeit fleißig Patches für die nächste Kernel-Version in den Hauptentwicklungszweig von Linux. Wie üblich fliegt dabei ein wenig alter Code raus und neuer kommt hinzu – unterm Strich sind es aber meist mehr neue als alte Zeilen, wodurch der Kernel stetig wächst.

Bei diesem Prozess haben die Kernel-Entwickler nun die Marke von 10 Millionen Zeilen Text durchbrochen, sofern man denn alle Leerzeilen, Kommentare und Textdateien im Quellcode eines aktuelle Git-Checkouts von Linux mitzählt (find . -type f -not -regex '\./\.git.*' | xargs cat | wc -l). Feiern kann man aber auch, wenn man nur die Zeilen Text in Dateien mit Quellcode zählt, denn die belaufen sich seit kurzem auf mehr als 9 Millionen Zeilen Text (find . -name *.[hcS] -not -regex '\./\.git.*' | xargs cat | wc -l).

Mit Programmen wie SLOCCount lässt sich der Quellcode des Linux-Kernels genauer unter die Lupe nehmen. So sind es laut dem Tool nicht mehr als 9 Millionen Zeilen Quellcode, sondern exakt 6.399.191 (Source Lines of Code/SLOC), da das Programm Leerzeilen, Kommentare und einigen andere Dinge in Quellcodedateien nicht in die Berechnung mit einbezieht. Bei mehr als der Hälfte der Codezeilen handelt es sich um Hardware-Treiber; der zweitgrößte Brocken ist das Verzeichnis arch/, indem sich der Quellcode für die verschiedenen von Linux unterstützten Architekturen findet.

SLOC Directory SLOC-by-Language (Sorted) 3301081 drivers ansic=3296641,yacc=1680,asm=1136,perl=829,lex=778, sh=17 1258638 arch ansic=1047549,asm=209655,sh=617,yacc=307,lex=300, awk=96,python=45,pascal=41,perl=28 544871 fs ansic=544871 376716 net ansic=376716 356180 sound ansic=355997,asm=183 320078 include ansic=318367,cpp=1511,asm=125,pascal=75 74503 kernel ansic=74198,perl=305 36312 mm ansic=36312 32729 crypto ansic=32729 25303 security ansic=25303 24111 scripts ansic=14424,perl=4653,cpp=1791,sh=1155,yacc=967, lex=742,python=379 17065 lib ansic=17065 10723 block ansic=10723 7616 Documentation ansic=5615,sh=926,perl=857,lisp=218 5227 ipc ansic=5227 2622 virt ansic=2622 2287 init ansic=2287 1803 firmware asm=1598,ansic=205 833 samples ansic=833 493 usr ansic=491,asm=2 0 top_dir (none)

96,4 Prozent des Codes sind laut SLOCCount in C geschrieben, 3,3 Prozent in Assembler. Alle anderen Programmiersprachen führen ein Nischendasein: Das für einige Hilfsscripte beim Bauen eines Kernels genutzte Perl etwa schafft es auf magere 0,1 Prozent. Im Assembler-lastigen Architektur-Verzeichnis will SLOCCount zudem 41 Zeilen Pascal-Code gefunden haben – dabei dürfte es sich wohl um eine Fehlerkennung handeln.

Totals grouped by language (dominant language first): ansic: 6168175 (96.39%) asm: 212699 (3.32%) perl: 6672 (0.10%) cpp: 3302 (0.05%) yacc: 2954 (0.05%) sh: 2715 (0.04%) lex: 1820 (0.03%) python: 424 (0.01%) lisp: 218 (0.00%) pascal: 116 (0.00%) awk: 96 (0.00%)

SLOCCount versucht sich auch an einer groben Berechnung des Quellcodewertes; demnach würde es mit etwas mehr als 200 Entwicklern ungefähr neuneinhalb Jahre dauern und 267 Millionen US-Dollar kosten, den Code komplett neu zu schreiben. Man kann aber sicherlich darüber streiten, wie exakt diese Kalkulation des seit vier Jahren nicht mehr aktualisierten Programms ist; speziell die angegebenen Kosten pro Entwickler müsste man mittlerweile sicherlich höher ansetzen.

Total Physical Source Lines of Code (SLOC) = 6,399,191 Development Effort Estimate, Person-Years (Person-Months) = 1,983.63 (23,803.60) (Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05)) Schedule Estimate, Years (Months) = 9.59 (115.10) (Basic COCOMO model, Months = 2.5 * (person-months**0.38)) Estimated Average Number of Developers (Effort/Schedule) = 206.81 Total Estimated Cost to Develop = $ 267,961,839 (average salary = $56,286/year, overhead = 2.40).

SLOCCount, Copyright (C) 2001-2004 David A. Wheeler SLOCCount is Open Source Software/Free Software, licensed under the GNU GPL. SLOCCount comes with ABSOLUTELY NO WARRANTY, and you are welcome to redistribute it under certain conditions as specified by the GNU GPL license; see the documentation for details. Please credit this data as "generated using David A. Wheeler's 'SLOCCount'."

Ein Ende des Wachstums in der mittlerweile nun schon seit einigen Jahren stetig innerhalb der Linux-2.6-Serie weiterentwickelten Kernels ist indes nicht abzusehen – mit jeder neuen Version erweitern die Kernel-Hacker den Linux-Kernel wieder um neue Funktionen und Treiber, was die Hardware-Unterstützung verbessert oder Linux flexibler, besser oder schneller macht. Ein Blick auf einige Zahlen zu den jüngsten Kernel-Versionen zeigt zudem, dass nicht nur die Zahl der Zeilen Quellcode nach und nach steigt, sondern auch die Zahl der pro Kernel-Version vorgenommenen Änderungen weiter wächst.


Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich auch in den vorangegangen Ausgaben des Kernel-Logs auf heise open:

Ältere Kernel-Logs finden sich über das Archiv oder die Suchfunktion von heise open.

(thl)