Top all-time · #647
Ulrich Drepper
Personal blog · akkadia.orgprogrammingsystems
Ulrich Drepper writes Nothing, a personal blog at akkadia.org about programming and systems. Since 2010, 97 different Hacker News readers have linked it 110 times, most often “What every programmer should know about memory (2007) [pdf]”. No feed was found, so read it on the site itself.
Sometimes recommended · 15 of 40 sampled comments recommend it?
Why HN links it
HN readers link Ulrich Drepper's PDFs on memory, shared libraries, futexes and TLS as go-to references. His 'no static linking' essay draws sharp disagreement.
- Recommended for · 15 comments
- Called a 'fantastic paper', 'ultimate guide', 'go-to reference' and 'goldmine of systems programming wisdom'.
Summarised by Claude from a sample of 40 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- What every programmer should know about memory (2007) [pdf]26 people · 26 mentions · first linked 2011-09-25
- What every programmer should know about memory [pdf]13 people · 13 mentions · first linked 2016-02-23
- How to Write Shared Libraries (2011) [pdf]9 people · 9 mentions · first linked 2010-08-22
- How to Write Shared Libraries (2011) [pdf]8 people · 10 mentions · first linked 2016-02-16
- /drepper/dsohowto.pdf5 people · 5 mentions · first linked 2018-11-15
- Static Linking Considered Harmful (2004)5 people · 5 mentions · first linked 2020-03-25
- Static Linking Considered Harmful5 people · 5 mentions · first linked 2012-01-28
- /drepper/tls.pdf4 people · 4 mentions · first linked 2019-09-02
- Static Linking Considered Harmful3 people · 3 mentions · first linked 2018-07-31
- /drepper/userapi-ipv6.html2 people · 2 mentions · first linked 2016-01-18
What Hacker News says?
You shouldn't see that much difference, at least on a system designed for static linking (modern GNU/Linux is explicitly not such a system, see http://www.akkadia.org/drepper/no_static_linking.html ). There's still quite a bit of potential for interprocess resource-sharing. If you somehow managed to get a statically linked Firefox (I think it would be very difficult, given the degree to which Drepper has abandoned t…
Comment linking /drepper/no_static_linking.html
on “Understanding the bin, sbin, usr/bin , usr/sbin split”Submitted What Every Programmer Should Know About Memory (2007) [pdf] as a story · 214 points
HN discussionN°1 most harmful post on the internet : https://akkadia.org/drepper/no_static_linking.html I am convinced that Drepper's insistence on dynamic linking has set the linux desktop useability and developer friendliness back literal decades.
Comment linking /drepper/no_static_linking.html
on “Zig cc: A drop-in replacement for GCC/Clang”Submitted How to Write Shared Libraries (2011) [pdf] as a story · 53 points
HN discussionIdeally a mutex is just a cmpxchg. It gets more expensive when it is contended. See the Drepper paper on futexes: http://www.akkadia.org/drepper/futex.pdf
Comment linking /drepper/futex.pdf
on “Linux page table isolation is not needed on AMD processors”Submitted Static Linking Considered Harmful (2004) as a story · 39 points
HN discussionYou can write mostly C code. Each processor will have different quirks. https://en.wikipedia.org/wiki/CPU_cache https://www.akkadia.org/drepper/cpumemory.pdf These are great places to start. Especially Ulrich Drepper's PDF on memory. edit: even simple things like looping can require knowledge of "bits" and "memory layout" and "CPU cache" to write the fastest code. Most people don't need to write the fastest code tho…
Comment linking /drepper/cpumemory.pdf
on “FizzleFade”Submitted How to Write Shared Libraries (2011) [pdf] as a story · 13 points
HN discussionThis is the paper people usually use to explain some of the performance benefits you could reap, besides the talk about row vs column based performance: https://www.akkadia.org/drepper/cpumemory.pdf Note that I wouldn't really recommend it unless you're really going to do low level programming for high performance. It's super long, explains all the details, if you've got a basic CS college education you should know…
Comment linking /drepper/cpumemory.pdf
on “Talks that changed the way I think about programming”Submitted What every programmer should know about memory (2007) [pdf] as a story · 4 points
HN discussionSome Ulrich Drepper papers: - on memory access/caches/memory hierarchy: https://www.akkadia.org/drepper/cpumemory.pdf - on DSO: https://www.akkadia.org/drepper/dsohowto.pdf - Agner Fog on CPU optimization, latencies, vectors etc: https://www.agner.org/optimize/
Comment linking /drepper/dsohowto.pdf
on “Ask HN: What should a systems/low-level software engineer know?”Submitted What Every Programmer Should Know About Memory as a story · 4 points
HN discussionI'm not sure how likely that'll be. It's definitely possible, but I think there are going to be a few hurdles. The main one being, symbol versioning. This is important if you export multiple symbols for a function, that is, have a program that depends on a specific implementation of a function. That could mean you depend on different versions of the same library ("functionname@@VERSION_1, functionname@@VERSION_2"),…
Comment linking /drepper/dsohowto.pdf
on “Glibc getaddrinfo stack-based buffer overflow”Submitted How to Write Shared Libraries [pdf] as a story · 3 points
HN discussionDon't forget that the principles of the LGPL (originally the "library GPL") were/are pretty much tied to the technical concept of a shared library object that an end-user can change, etc; IANAL so I can't say anything about the legal soundness of this interpretation. Moreover, in a recent discussion about this topic on HN, someone said the introduction of shared libs into the Linux user space was mainly in support o…
Comment linking /drepper/dsohowto.pdf
on “Dynamic linking”Submitted Static Linking Considered Harmful as a story · 3 points
HN discussionThe best introduction is probably the original presentation paper from 2002. Fuss, Futexes, and Furwoks: Fast Userlevel Locking in Linux https://www.kernel.org/doc/ols/2002/ols2002-pages-479-495.pd... Another great paper that came after some additional experience by glibc developers: Futexes are Tricky, by Ulrich Drepper https://www.akkadia.org/drepper/futex.pdf
Comment linking /drepper/futex.pdf
on “Proposed futex2 allows Linux to mimic the NT kernel for better Wine performance”Submitted Static Linking Considered Harmful as a story · 3 points
HN discussionIt is best practice and I wish it was common practice, but there's a lot of friction in the way and some people will actively work against you. Static linking glibc is painful because the former maintainer has some strong opinions: https://www.akkadia.org/drepper/no_static_linking.html Most distros force you to dynamically link every dependency if you want them to package it. So the default build for most projects i…
Comment linking /drepper/no_static_linking.html
on “Tiny Container Challenge: Building a 6kB Containerized HTTP Server”Submitted How to Write Shared Libraries (2011) [pdf] as a story · 3 points
HN discussionWe have that implemented in Rust too. It's a user-mode thread implementation called mioco. It's not used very much because the performance tends to be worse than 1:1 threads. This is a lesson that we all learned during the NPTL/NGPT era [1] and have subsequently forgotten and will have to relearn. [1]: https://akkadia.org/drepper/nptl-design.pdf
Comment linking /drepper/nptl-design.pdf
on “Await in Rust”Submitted Static Linking Considered Harmful as a story · 3 points
HN discussionComments are good, this particular instance, not so much. This description spends a lot of time stating the blindingly obvious, eg: if (addedFiles.length === 0) { // Abort if no files matched path. throw new Error(files.pathFromRepoRoot(path) + " did not match any files"); Or: // If --bare was passed, write to the Git config indicating that the repository is bare. // If --bare was not passed, write to the Git config…
Comment linking /drepper/SHA-crypt.txt
on “Gitlet.js – Git implemented in 1k lines of JavaScript (2015)”Submitted What Every Programmer Should Know About Memory as a story · 3 points
HN discussion> I'm not so sure the Linux design where copies are done in syscalls must be inherently less efficient. Windows overlapped IO can map the user buffer directly to the network hardware, which means that in some situations there will be zero copies on outbound traffic. > especially the RX copy I also don't think you need more than one copy, if you design the network stack with that in mind. When the interrupt occurs, t…
Comment linking /drepper/cpumemory.pdf
on “How the Windows Subsystem for Linux Redirects Syscalls”Submitted How to write shared libraries as a story · 3 points
HN discussionThere is a really good paper by Ulrich Drepper on dynamic linking with ELF and glibc (+ a bunch of other important stuff if you're writing libraries) [1], but it's way too low level for what GP wants. I'm sure there must be something simpler around but I haven't seen it. [1] https://akkadia.org/drepper/dsohowto.pdf
Comment linking /drepper/dsohowto.pdf
on “The C++ Build Process Explained”Submitted What every programmer should know about memory [pdf] as a story · 2 points
HN discussionThe aversion to static linkage predates that, back many years static linkage also had other issues that have been solved today (ALSR ..). Many of the very basic points that Ulrich Drepper made some odd 20 years back ( https://akkadia.org/drepper/no_static_linking.html ) still hold.
Comment linking /drepper/no_static_linking.html
on “Swift Static Linux SDK”Submitted What Every Programmer Should Know About Memory – PDF (2007) as a story · 2 points
HN discussion