Milestone passed with the debut of Linux 6.14 rc1.
Ooo! Now I want to go run scc on the source and see how much of that is Rust.
~15k lines of actual Rust code.
@ ❯ git clone https://github.com/torvalds/linux && cd linux && tokei Cloning into 'linux'... remote: Enumerating objects: 10655741, done. remote: Counting objects: 100% (1067/1067), done. remote: Compressing objects: 100% (208/208), done. remote: Total 10655741 (delta 961), reused 859 (delta 859), pack-reused 10654674 (from 3) Receiving objects: 100% (10655741/10655741), 5.13 GiB | 13.37 MiB/s, done. Resolving deltas: 100% (8681589/8681589), done. Updating files: 100% (87840/87840), done. =============================================================================== Language Files Lines Code Comments Blanks =============================================================================== Alex 2 222 180 0 42 ASN.1 15 656 441 87 128 Assembly 10 5226 4764 0 462 GNU Style Assembly 1336 372898 271937 56600 44361 Autoconf 5 433 377 26 30 Automake 3 31 23 3 5 BASH 59 2029 1368 352 309 C 34961 24854959 18510957 2766479 3577523 C Header 25450 10090846 7834037 1503620 753189 C++ 7 2267 1946 81 240 C++ Header 2 125 59 55 11 CSS 3 295 172 69 54 Device Tree 5582 1744314 1430810 83215 230289 Gherkin (Cucumber) 1 333 199 97 37 Happy 10 6049 5332 0 717 HEX 2 173 173 0 0 INI 2 13 6 5 2 JSON 894 542554 542552 0 2 LD Script 8 377 289 29 59 Makefile 3062 81226 55970 12993 12263 Module-Definition 2 128 113 0 15 Objective-C 1 89 72 0 17 Perl 61 43843 34461 3909 5473 Python 280 84204 66996 5198 12010 RPM Specfile 1 131 111 2 18 ReStructuredText 3672 761388 577410 0 183978 Ruby 1 29 25 0 4 Shell 957 187353 130476 23721 33156 SVG 79 52122 50727 1303 92 SWIG 1 252 154 27 71 TeX 1 234 155 73 6 Plain Text 1455 134747 0 110453 24294 TOML 3 47 28 12 7 Unreal Script 5 671 415 158 98 Apache Velocity 1 15 15 0 0 Vim script 1 42 33 6 3 XSL 10 200 122 52 26 XML 24 22177 19862 1349 966 YAML 4545 512759 417504 19285 75970 ------------------------------------------------------------------------------- HTML 2 28 22 3 3 |- JavaScript 1 7 7 0 0 (Total) 35 29 3 3 ------------------------------------------------------------------------------- Markdown 1 248 0 177 71 |- BASH 1 2 2 0 0 |- C 1 20 12 6 2 (Total) 270 14 183 73 ------------------------------------------------------------------------------- Rust 91 15207 11065 2248 1894 |- Markdown 85 7773 747 5253 1773 (Total) 22980 11812 7501 3667 =============================================================================== Total 82608 39520940 29971358 4591687 4957895 ===============================================================================
One cucumber 🥒 👀
More lines = more attack vectors, more maintenance, more bloat.
Except the vast majority of the kernel is in driver modules.
So for an individual machine, the attack surface is not really any bigger than it needs to be.
The OS will only load modules it needs for your hardware, so the “bloat” only exists at the source code and binary size level. You are free to compile an optimized binary for your hardware. The complete kernel binary should fit in a 200MB boot partition.
As for maintenance, that’s a fair point, but the effort is at least somewhat distributed if hardware devs provide the drivers.
Time to refactor the whole kernel into a one-liner!
A single line of lambda calculus.
With about forty million parentheses.
That’s cheating. It won’t actually make the code smaller.
source?
Common sense. Just making the same code into a single line won’t change much.
that doesn’t sound right, it’s so much smaller if it’s just one line
The line will be like several quadrillion characters long though.
but if there’s a bug I’ll know exactly which line to look at
Easy fix. Just remove newline characters.