Hacker News new | ask | show | jobs
by kbwt 2733 days ago
On big projects, linking times are really the bottleneck.

Sure, incremental linkers exist [1], but all of them tend to do O(n) work on every invocation. Source control software, even developed explicitly to scale [2], behaves the same way. Makefiles as well; Tup [3] tries to solve this, in vain since the linking step is still holding everything up. There is so much inherent inability to scale built into our tools. So on big projects everything grinds to a halt as you cannot buy enough developers and hardware to keep up with O(n^2) forever.

[1] MSVC cl, GNU gold

[2] git: http://lkml.iu.edu/hypermail/linux/kernel/0504.0/2022.html

[3] tup: http://gittup.org/tup/manual.html

1 comments

This can be solved by putting individual components into shared libraries.
But then you pay the cost every single time on startup, unless your components barely interact.