ARM MacBook vs. Intel MacBook: A SIMD Benchmark
In my previous blog post, I compared the performance of my new ARM-based MacBook Pro with my 2017 Intel-based MacBook Pro. I used a number parsing benchmark. In some cases, the ARM-based MacBook Pro was nearly twice as fast as the older Intel-based MacBook Pro. I think that the Apple M1 processor is a breakthrough ……
It Is Never a Compiler Bug Until It Is
Last week I was trying to add some testing code to libsecp256k1 and I was pulling out my hair trying to get it to work. No amount of printf was working to illuminate what I was doing wrong. Finally, out of desperation, I thought I would do a quick check to see if there are any compiler bugs related to memcmp , and lo…
The Heart of RISC-V Development Is Unmatched
Today, SiFive introduces the new HiFive platform for professional RISC-V developers, the HiFive Unmatched! The HiFive Unmatched enables developers to create the RISC-V-based software they need for RISC-V platforms. From real-time operating systems to custom Linux distributions, and the compilers, libraries, and…
Microsoft is not rebasing Windows to Linux
The choice will not really be Windows or Linux, it will be whether you boot Hyper-V or KVM first, and Windows and Ubuntu stacks will be tuned to run well on the other.
Ways of Implementing a System Call
Today, we’re going to look at the many ways of implementing user-to-kernel transitions on x86, i.e. system calls. Let’s first quickly review what system calls actually need to accomplish.
The compositor is evil
First, I want to make it clear that I’m not accusing the compositor of true evil, which I define roughly as deliberately causing suffering. There’s unfortunately too much of that in the world. I mean it in the more metaphorical sense that it causes serious problems and forces other parts of the system to be more…
A Requiem for a Dying Operating System (1994)
These views generally result in my being labeled a Luddite by the Unix priesthood. But Ned Ludd was right --- the new machines did not make conditions better for ordinary working folk: the people whose conditions were immediately improved were those who owned the machinery, and whose profits thereby increased…
Against Essential and Accidental Complexity
In the classic 1986 essay, No Silver Bullet , Fred Brooks argued that there is, in some sense, not that much that can be done to improve programmer productivity. His line of reasoning is that programming tasks contain a core of essential/conceptual 1 complexity that's fundamentally not amenable to attack by any…
Linux maintains bugs: The real reason ifconfig on Linux is deprecated (2018)
In my third installment of FreeBSD vs Linux, I will discuss underlying reasons for why Linux moved away from ifconfig(8) to ip(8).
When Parallel: Pull, Don't Push
I’ve noticed a small pattern across a few of my projects where I had vectorized and parallelized some code. The original algorithm had a “push” approach, the optimized version instead took a “pull” approach. In this article I’ll describe what I mean, though it’s mostly just so I can show off some pretty videos…
SeL4 is verified on RISC-V
Sounds great! But what does it mean? seL4 seL4 (pronounced ess-e-ell-four) is arguably the world’s most secure operating system (OS) kernel. The OS kernel is the lowest level of software runn…
On modern hardware the min-max heap beats a binary heap
The heap is a data structure that I use all the time and that others somehow use rarely. (I once had a coworker tell me that he knew some code was mine because it used a heap) Recently I was writin…
Libc++'s Implementation of std::string
I. Introduction
Four features that justify a new Unix shell
On a lobste.rs thread about the rationale for the Fennel language, I posted this summary of why Oil exists:
RISC-V OS using Rust: Filesystems
I have taught operating systems at my university, so I will link my notes from that course here regarding the virt I/O protocol. This protocol has changed over the years, but the one that QEMU implements is the legacy MMIO interface.
Console, the vital tool that Apple abandoned
Console is the epitome of Apple’s problem with tools and support for its users, and is exactly what it needs to fix.
With only free software, a Mali G31 chip can now run GNOME
With only free software, a Mali G31 chip can now run Wayland compositors with zero-copy graphics, including GNOME 3.
Examining ARM vs. x86 Memory Models with Rust
With Apple’s recent announcement that they are moving away from Intel X86 CPU’s to their own ARM CPU’s for future laptops and desktops I thought it would be a good time to take a look at the some differences that can affect systems programmers working in Rust.
Keeping Netflix Reliable Using Prioritized Load Shedding
How viewers are able to watch their favorite show on Netflix while the infrastructure self-recovers from a system failure
GNU Guix 1.2.0
Blog posts about GNU Guix.
The logging framework isn't a bottleneck, and other lies your laptop tells you
Your laptop spends all day lying to you. If you want your code to run well on server hardware, best write it on server hardware.
Raspberry Pi 4 PCIe bridge “chip”
After seeing the work done by Thomasz Mloduchowski and Colin Riley with managing to bridge the Raspberry Pi 4's PCI-Express bus to a USB 3.0 port, and then seeing these comments on hack-a-day, I thought I would give it a go too! So, here's a PCIe bridge chip that simply replaces the VL805 USB 3.
Psychic Paper: iOS Sandbox Escape
Siguza’s Blog
Back of the envelope estimation hacks
There are two types of engineers, the ones that can quickly do estimates and the ones that can’t. Are these people just smarter, or is there more to it? Enrico Fermi was a master at estimation Back of the envelope estimation is a skill that can be learned with practice. It becomes easier once you get familiar with…