Rozmiar jądra Linux osiągnął 40 mln linii kodu źródłowego. Z 40 mln linii 24 mln dotyczy kodu sterowników (na przykład kod sterowników dla GPU AMD zajmuje około 5 mln linii), a 4,4 mln jest specyficzne dla różnych architektur sprzętowych (dla wsparcia architektury x86 używa się około 500 tysięcy linii).
Od lipca 2024 roku rozmiar jądra zwiększył się o 5 mln linii. Granica 30 mln linii została przekroczona latem 2022 roku, 20 mln linii — jesienią 2015 roku, a 10 mln — jesienią 2008 roku. Dla porównania, wydanie jądra 0.0.1 zawierało zaledwie 10 tysięcy linii kodu, a 1.0.0 — 176 tysięcy linii.
Dynamika wzrostu bazy kodu (liczba linii kodu źródłowego) jądra:
- 0.0.1 — wrzesień 1991, 10 tys. linii kodu;
- 1.0.0 — marzec 1994, 176 tys. linii kodu;
- 1.2.0 — marzec 1995, 311 tys. linii kodu;
- 2.0.0 — czerwiec 1996, 778 tys. linii kodu;
- 2.2.0 — styczeń 1999, 1,8 mln. linii kodu;
- 2.4.0 — styczeń 2001, 3,4 mln. linii kodu;
- 2.6.0 — grudzień 2003, 5,9 mln. linii kodu;
- 2.6.28 — grudzień 2008, 10,2 mln. linii kodu;
- 2.6.35 — sierpień 2010, 13,4 mln. linii kodu;
- 3.0 — sierpień 2011, 14,6 mln. linii kodu;
- 3.5 — lipiec 2012, 15,5 mln. linii kodu;
- 3.10 — lipiec 2013, 15,8 mln. linii kodu;
- 3.16 — sierpień 2014, 17,5 mln. linii kodu;
- 4.1 — czerwiec 2015, 19.5 mln linii kodu;
- 4.7 — lipiec 2016, 21.7 mln linii kodu;
- 4.12 — lipiec 2017, 24.1 mln linii kodu;
- 4.18 — sierpień 2018, 25.3 mln linii kodu;
- 5.2 — lipiec 2019, 26.55 mln linii kodu;
- 5.8 — sierpień 2020, 28.4 mln linii kodu;
- 5.13 — czerwiec 2021, 29.2 mln linii kodu;
- 5.19 — sierpień 2022, 30.5 mln linii kodu;
- 6.4 — czerwiec 2023, 32.9 mln linii kodu.
- 6.10 — lipiec 2024, 35.1 mln linii kodu.
- 6.13 — styczeń 2025, 39,8 mln linii kodu.
Jako jeden z propozycji skrócenia bazy kodu jądra zaproponowano wydzielenie sterowników do oddzielnego repozytorium, jednak propozycja ta nie jest obecnie poważnie rozważana z powodu skomplikowania procesów testowania i weryfikacji jakości, a także w związku z pojawieniem się dodatkowych nakładów pracy na synchronizację interfejsów programistycznych. Przy opracowywaniu sterowników w głównym składzie jądra wiele regresji wpływających na sterowniki jest natychmiast wykrywanych w trakcie przeglądu przez towarzyszy. W przypadku podziału rozwoju istnieje niebezpieczeństwo, że kodom sterowników poświęci się mniej uwagi.
Źródło: opennet.ru
