Topics /

Systems & Performance

The most popular blog posts about systems & performance on Hacker News. 399 posts.

2024
302

GCC Specs: An Introduction

If you've ever used the GNU Compiler Collection (GCC) then you've worked with the gcc binary. For those who don't know, gcc is a driver, not a compiler. It runs the compiler/assembler/linker as required and coordinates the input and output between them. Use of the driver is so ubiquitous that everyone calls it the…

304

Systemd: Enable indefinite service restarts

When a service fails to start up enough times in a row, systemd gives up on it. On servers, this isn’t what I want — in general it’s helpful for automated recovery if daemons are restarted indefinitely. As long as you don’t have circular dependencies between services, all your services will eventually come up after…

306

What part of Rust compilation is the bottleneck?

Rust compilation times is an ongoing topic that generates many discussions online1. Most people don’t really care about what exactly takes time when compiling Rust program; they just want it to be faster in general. But sometimes, you can see people pointing fingers at specific culprits, like LLVM or the borrow…

308

I found an 8 years old bug in Xorg

Let me set the right expectations first. This bug I found is actually not that complicated, it's very straightforward once you see what's going on. But I still think the process it took me to uncover this bug could be interesting. It's also kind of interesting that a simple bug stayed undiscovered for so long. I will…

311

Waiting for many things at once with io_uring

When doing systems programming we often need to wait for something to happen. Common examples might be waiting for some data to come through a socket or waiting on a lock. We also often want to wait on any of several conditions to become true. A web server might be handling many sockets at once, waiting for any number…

312

Running 9front on an emulated SGI Indy via MAME

I recently found that MAME supports running the SGI Indy while looking for ways to test some modifications I was making to the mips code in 9front. After a fair bit of elbow grease cinap and I (but mostly cinap) were able to get the old 9front indy kernel booting and running within mame. I thought I might as well…

313

Why Linux is not ready for the desktop, the final edition

The previous iteration of this article was too technical, too long, and contained a lot of controversial points, so I've been thinking for a long time about rewriting it completely, making it accessible to the non-technical folks, and exposing the deeper core issues that still make Linux a questionable match for the…

316

Using gRPC for (local) inter-process communication (2021)

Using a full-featured RPC framework for IPC seems like overkill when the processes run on the same machine. However, if your project anyway exposes RPCs for public APIs or would benefit from a schema-based serialisation layer it makes sense to use only one tool that combines these—also for IPC. Microservices for…

317

Fast Shadow Stacks for Go

tl;dr : Software shadow stacks could deliver up to 8x faster stack trace capturing in the Go runtime when compared to the frame pointer unwinding that landed in go1.21. This doesn’t mean that this idea should escape from the laboratory right away, but it offers a fun glimpse into a potential future of hardware…

318

Upgrading my Chumby 8 kernel part 10: RTC

I’m going to start this post off with the obligatory list of links to the previous parts in the series if you’re new here and are interested in seeing the full story: 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , and 9 . This is the tale of how I upgraded my Chumby 8 to run a modern Linux kernel.

319

Hyprland Crash Course

For the past week I have been configuring hyprland and using it as my daily driver. Coming from major Desktop Environments like KDE or Gnome, this was definitely quite challanging, specially when implementing features that we take it for granted on these DEs, like screen sharing or screenshot annotating.

320

Zero or Sign Extend

A while back I had to deal with a bit-packed format that contained a list of integer values encoded in one of a pre-defined sets of bit widths, where both the allowed bit widths and the signed-ness…

324

OpenBSD is a cozy operating system

With the recent release of OpenBSD 7.5, I decided to run through my personal OpenBSD “installer” for laptop/desktop devices. The project is built off of the dwm tiling window manager and only installs a few basic packages. The last time I updated it was with the release of 7.3, so it’s been due for an minor rework.

325

The costs of the i386 to x86-64 upgrade

If you read my previous article on DOS memory models, you may have dismissed everything I wrote as “legacy cruft from the 1990s that nobody cares about any longer”. It's time to see how any of that carried over through the 16-bit to 64-bit evolution.

327

Decompiling Hyper-V Manager to rebuild it from source

This post guides through decompiling Hyper-V Manager to rebuild it from source, aiming to assess its value for potential open-sourcing. It explores manual and automated decompilation processes, including troubleshooting and enhancing the tool, advocating for community-led improvements to this widely-used but neglected…

329

0x01 – Killing Windows Kernel Mitigations

This post was made possible through hard work and determination. Do not feel frustrated if this stuff does not click immediately and remember, the source of truth will always be the source code. For us, our source code is raw assembly. That said it’s important you understand these techniques in detail because when…