New
The latest blog posts to take off on Hacker News. 6,947 posts.
Apple Silicon Hardware: SPRR and Guarded Exception Levels (GXF)
Over a year ago siguza published a write-up about Apple’s APRR - a custom ARM extension that redefines pagetable permissions and protects certain parts of the kernel from itself. Since then Apple has released their M1 chip which not only features an updated version of APRR but also easily allows to run bare-metal code…
The Pinecone Overlay Network
Matrix, the open protocol for secure decentralised communications
Where the top of the stack is on x86 (2011)
I've noticed more than once that some programmers are confused about the direction in which the stack grows on x86, and what "top of the stack" and "bottom of the stack" mean. It appears that this confusion is caused by a basic mismatch in the way people are used to thinking about stacks, and in the way the stack on…
Faster DISTINCT queries on PostgreSQL
Learn common performance pitfalls and discover techniques to optimize your DISTINCT PostgreSQL queries. Read the full article on the Tiger Data blog.
Hardening macOS (2018)
Quick and easy guide for securing macOS systems, for both laymen and security enthusiasts. Last updated for Golden Gate.
Branch predictor: How many “if”s are too many?
Is it ok to have if clauses that will basically never be run? Surely, there must be some performance cost to that...
Deep Diving into the Strengths of FreeBSD
Discover the strengths of FreeBSD in this article. Learn about its advanced networking, performance, security, and compatibility features that set it apart.
SeL4 on RISC-V Verified to Binary Code
… and seL4 and RISC-V Foundations form an alliance In June 2020 we announced that the seL4 microkernel, the world’s first operating system (OS) kernel with a machine-checked proof of implemen…
Just Say No to Paxos Overhead: Replacing Consensus with Network Ordering (2016)
Jialin Li, Ellis Michael, Naveen Kr. Sharma, Adriana Szekeres, and Dan R. K. Ports, University of Washington
Branchless Coding in Go
So, I was recently inspired by a coworker’s design to pack what would have been JSON (JavaScript Object Notation) data into a bunch of bit fields in an array of 64-bit elements. Binary arithmetic, bit-packing, and high performance are fun for me, so I thought of some ways to improve it, for learning purposes. Then I…
An opinionated map of incremental and streaming systems
Disclaimer: I used to work for Materialize which is one of the systems being compared in this post.
The Unix Magic Poster
I understand the classic UNIX Magic poster by Gary Overacre was distributed at past USENIX conferences, and I’ve known of it for years but now in confinement, I’ve decided I want one to hang in my ...
Dissecting the Apple M1 GPU, Part IV
After beginning a compiler for the Apple M1 GPU , the next step is to develop a graphics driver exercising the compiler. Since the last post two weeks ago, I’ve begun a Gallium driver for the M1, implementing much of the OpenGL 2.1 and ES 2.0 specifications. With the compiler and driver together, we’re now able to run…
The compiler will optimize that away
A lot of programmers believe that compilers are magic black boxes in which you put your messy code in and get a nice optimized binary out. The hallway philosophers will often start a debate on which language features or compiler flags to use in order to capture the full power of the compiler’s magic. If you have ever…
Query Engines: Push vs. Pull
People talk a lot about “pull” vs. “push” based query engines, and it’s pretty obvious what that means colloquially, but some of the details can be a bit hard to figure out.
Implicit In-order Forests: Zooming a billion trace events at 60fps
In the course of trying to figure out how to smoothly zoom timelines of a billion trace events, I figured out a cool tree structure that I can’t find elsewhere online, which it turned out two of my friends have independently derived after not finding anything on their own searches. It’s a way of implementing an index…
Ideal divisors: when a division compiles down to just a multiplication
The division instruction is one of the most expensive instruction in your CPU. Thus optimizing compilers often compile divisions by known constants down to a multiplication followed by a shift. However, in some lucky cases, the compiler does not even need a shift. I call the corresponding divisors ideal. For the math…
Diving Deep on S3 Consistency
A deep dive on why we changed Amazon S3's consistency model
Leaving No Pixel Behind: Three Years in Xenia's GPU Emulation
xenia is a BSD licensed open source research project for emulating Xbox 360 games on modern PCs.
Fedora Linux 34 is officially here
Fedora Linux 34 is released and ready for you to install or upgrade today.
QEMU Internals
A series of posts about QEMU internals:
2021 Williams F1 Computational Fluid Dynamics
Thanks to some clever people I was able to get a CAD model of the current 2021 Williams F1 car — that’s not something that happens every day, so of course I had to run CFD on it. CAD Ge…
Parsing Protobuf at 2+GB/S: How I Learned to Love Tail Calls in C
[Note: there have been several developments in this space since thisarticle was published. See A Tail Calling Interpreter For Python (And Other Updates) for...
How Facebook encodes videos
People upload hundreds of millions of videos to Facebook every day. Making sure every video is delivered at the best quality — with the highest resolution and as little buffering as possible — mean…