Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 6,949 posts.
Slitter: A slab allocator that trusts, but verifies
Slitter is Backtrace’s deliberately middle-of-the-road thread-caching slab allocator, with explicit allocation class tags (rather than derived from the object’s size class). It’s mostly written in Rust, and we use it in our C backend server. Slitter’s design is about as standard as it gets: we hope to dedicate the…
How we wound up with Linux's kernel mode setting ('KMS')
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
Designing a new concurrent data structure
How to design a lock-free data structure? A detective story for curious developers.
Roshi: a CRDT system for timestamped events
Let’s talk about the stream. The SoundCloud stream represents stuff that’s relevant to you primarily via your social graph, arranged in time order, newest-first. The atom of that data model, an event, is a simple enough thing. Timestamp User who did the thing Identifier of the thing that was done For example, At…
Linux System Administration Basics
This guide covers almost everything you wanted to know about Linux system administration but were afraid to ask about.
89 Operating Systems
I occasionally do talks about curl. In these talks I often include a few slides that say something abut curl's coverage and presence on different platforms. Mostly to boast of course, but also to help explain to the audience how curl has manged to reach its ten billion installations. This is current incarnation of…
Why Does My eBPF Program Work on One Kernel but Fail on Another?
How to Build Truly Portable eBPF Programs
Practical comparison of ARM compilers
My inspiration for this article was this thread in r/embedded . There are still many myths and misconception when it comes to the simple questions "Which compiler should I use?" or "Which compiler is the best?". I will try to share my practical experience with GCC, Clang and IAR on Cortex-M ( and Cortex-M only ). This…
You Compiled This, Driver – Trust Me
I was incredibly inspired by Tomasz Stachowiak’s hack of GCN . It made me wish I owned a GCN machine of my own to start trying insane things with. On the other hand, I dooo own an Intel Haswell GPU , and they dooo publish some really dense documentation that’s allegedly enough to write a complete driver with.
Talking to memory: Inside the Intel 8088 processor's bus interface state machine
In 1979, Intel introduced the 8088 microprocessor, a variant of the 16-bit 8086 processor. IBM's decision to use the 8088 processor in the I...
An interactive tour of the spanning tree protocol
Root election, port roles, proposals and agreements, topology changes: explore RSTP through simulations powered by MSTPD compiled to WebAssembly.
A New Back End for Cranelift: Instruction Selection
This post is the first in a three-part series about my recent work on Cranelift as part of my day job at Mozilla. In this first post, I will set some context and describe the instruction selection problem. In particular, I'll talk about a revamp to the instruction selector and backend framework in general that we've…
A resizable concurrent map
In an earlier post, I showed how to implement the “world’s simplest lock-free hash table” in C++. It was so simple that you couldn’t even delete entries or …
Do Not Log
Almost every week I accidentally get into this logging argument. Here’s the problem: people tend to log different things and call it a best-practice. And I a...
Fixing Unix Filenames (2012)
This article will try to convince you that adding some limitations on legal Unix/Linux/POSIX filenames would be an improvement. Many programs already presume these limitations, the POSIX standard already permits such limitations, and many Unix/Linux filesystems already embed such limitations so it'd be better to make…
Garbage Collectors Are Scary
Garbage collectors are expected to be invisible: if programmers (or even users) notice them, something is wrong. Usually, such problems are are performance problems, but there could be correctness issues as well. This makes implementing them a bit scary.
Btrfs Coming to Fedora 33
The default filesystem will be BTRFS for Fedora 33 and onwards. Read more here about what that means for the Fedora community.
Chrome is faster in M91
Since the launch of Chrome in 2008, speed has been one of the 4 core principles that shape the work we do to deliver a highly performant br...
Clang is better than GCC
Yes, this is a problem of weak static typing of pure C. Pure C is a great tool for some jobs, but here be dragons , as they say.
The byte order fallacy
Whenever I see code that asks what the native byte order is, it's almost certain the code is either wrong or misguided. And if the native b...
What “technical” concerns do I have with systemd?
I’ve done a lot of tweeting about systemd lately. My internal conscience constantly reminds me of John Allspaw saying that twitter is just pretty much perfect for snarky comments (paraphrase).
Kubernetes StatefulSets are Broken
Kubernetes was not originally intended for stateful applications. Kubernetes StatefulSets are Kubernetes' answer to storage-centric workloads.
Backpressure explained – the resisted flow of data through software (2019)
Backpressure is something nearly every software engineer will have to deal with at some point, and for some it’s a frequent problem. But…