Linux: Kernel-Entwickler will der "Abhängigkeitenhölle" entkommen

Der langjährige Linux-Kernel-Entwickler Ingo Molnar hat sein Projekt für schnellere Kernel-Header vorgestellt(öffnet im neuen Fenster) , wie er es selbst nennt. Dabei handelt es sich um eine "umfassende Überarbeitung der Header-Hierarchie und Header-Abhängigkeiten des Linux-Kernels" . Hauptziel der Arbeiten sei es, die Build-Zeit des Kernels zu beschleunigen sowie die Typen- und API-Definitionen voneinander zu trennen.
Laut Molnar umfasst der Linux-Quellcode rund 10.000 einzelne Header-Dateien. Dazu schreibt der Entwickler: "In den letzten 30+ Jahren haben sie sich zu einer komplizierten und schmerzhaften Ansammlung von gegenseitigen Abhängigkeiten entwickelt, die wir liebevoll 'Abhängigkeitenhölle' nennen." Mit Hilfe der Arbeiten von Molnar soll dieses Problem zumindest teilweise gelöst werden.
In der Ankündigung beschreibt der Entwickler seinen iterativen Prozess für das Projekt, das er in mehreren Anläufen im Zeitraum von über einem Jahr immer wieder in Angriff genommen hat. Bei der nun verfügbaren ersten öffentlichen Vorstellung handelt es sich letztlich um insgesamt mehr als 2.200 einzelne Beiträge. Damit würden sogar mehr als die Hälfte aller Kernel-Quellcode-Dateien verändert. "Dies ist also wahrscheinlich die größte einzelne Funktionsankündigung in der Geschichte der Linux-Kernel-Mailingliste" , vermutet Molnar.
Weniger Abhängigkeiten für schnellere Builds
Die von Molnar vorgestellten ersten Benchmark-Ergebnisse deuten dabei zumindest darauf hin, dass er mit dem massiven Arbeiten sein Ziel erreicht hat. Die Build-Zeit verbessert sich demnach um 78 Prozent. Die Verbesserungen für inkrementelle Builds liegen darüber hinaus bei teils deutlich über 100 Prozent. Erreicht wird dies durch eine massive Reduzierung der einzelnen Abhängigkeiten und der Code-Zeilen in den Header-Dateien. So werden letztlich auch die durch den Präprozessor entstandenen Code-Zeilen reduziert, die der Compiler verarbeiten muss.
Molnar hat dazu die Abhängigkeiten einiger vielfach genutzter Header zueinander aufgelöst, Inline-Funktionen aus Headern entfernt, Typen- und API-Header voneinander entkoppelt und Header so umgebaut, dass diese eigenständig gebaut werden können. Der Entwickler zählt zusätzlich dazu einige weitere Techniken auf, schreibt jedoch selbst, dass er bei über 2.200 Beiträgen wohl einige vergessen habe.
Bisher seien die Patches auf vier CPU-Architekturen portiert worden und Molnar selbst nutze die Änderungen bereits produktiv auf seiner x86-Entwicklungsmaschine. Dabei sei es nur zu einigen wenigen Fehlern gekommen. Das könnte bei anderen aber auch ganz anders sein, gibt Molnar zu bedenken. Weitere Architekturen sollen folgen und die Patches so aufgearbeitet werden, dass sie vollständig in den Kernel eingepflegt werden können.
Noch gibt es nur eine, dafür aber positive Rückmeldung auf die massiven von Molnar vorgeschlagenen Änderungen. Diese stammt von Greg Kroah-Hartman(öffnet im neuen Fenster) , der nach Linux-Erfinder Torvalds in der Community als Nummer zwei der Kernel-Entwicklung gilt. Ob die Patches aber wirklich in den Hauptzweig eingepflegt werden, ist derzeit völlig unklar und wird wohl für zahlreiche Diskussionen innerhalb der Kernel-Community sorgen.



