Even more fun with building and benchmarking Firefox with GCC and Clang
Recent switch of official Firefox builds to Clang on all platforms has triggered some questions about the quality of code produced by GCC c...
The latest blog posts to take off on Hacker News. 271 posts.
Recent switch of official Firefox builds to Clang on all platforms has triggered some questions about the quality of code produced by GCC c...
Fast programs are always fast, slow programs are slow even on a most powerful computers. Knowing that fast solution exists makes slow one plain wrong.
I always love when I find a really dumb solution that works reliably to fix a problem that should never really be a problem in the first place. But having worked with audio devices before—though nothing nearly as complex as the AirPods—I am willing to cut Apple some slack in building a seamless aural experience with…
Note: If this topic has peaked your interest, you can join me for a Webinar on August 15 where I’ll dive deep into Cloud Native Operations with Kubernetes and CI/CD Pipelines. Peering into the crystal ball Kubernetes as a technology has been very important to my career this year, and will be even more so for next year…
Massive concurrency and hardware parallelism are sexy topics in the 21st century. There are a couple of good reasons for this and one rather unfortunate one.
In this post, we model and explore the two-phase commit protocol using TLA+. The two-phase commit protocol is practical and is used in man...
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…
One of my tasks (as GCC maintainer of the inter-procedural optimization framework) is to make sure that it works well with real world progra...
I have been doing a lot of competitive programming problems on Kattis lately. It is my favourite online judge, and I have been enjoying my climb up the Irish scoreboard in an attempt to regain my former glory of first place. In particular, today I was tackling the problem Pivot.
In this tutorial, I will teach you how to write your own virtual machine (VM) that can run assembly language programs, such as my friend’s 2048 or my Roguelike . If you know how to program, but would like to gain a deeper understanding of what is going on inside a computer and better understand how programming…
xhyve is port of bhyve to OS X. It is built on top of Hypervisor.framework in OS X 10.10 Yosemite and higher, runs entirely in userspace, and has no other dependencies.
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…
One of the concerns that often comes up when someone creates a new HTTP header is how much “bloat” it will add on the network. This is especially relevant in requests, when a little bit of extra data can introduce a lot of latency when repeated on every request.
(Adapted from a Quora answer .) OS/2 1.x was a clean-sweep, largely legacy-free OS with only limited backwards compatibility with DOS. OS/2 2.x and later used VMs to do the hard stuff of DOS emulation, because they ran on a chip with hardware-assisted DOS VMs: the 80386s Virtual86 mode.…
We describe a systematic approach for replacing locks with tasks. In this approach thread blocking is replaced by properly scheduling of tasks.
Subtitle: Making Windows Slower Part 3: Process Destruction In the summer of 2017 I wrestled with a Windows performance problem. Process destruction was slow, serialized, and was blocking the syste…
Electronics, Embedded Systems, and Software are my breakfast, lunch, and dinner.
(Updated Dec 11, 2018)
The tar format is one of the oldest archive formats in use. It comes as no surprise that it is ugly — built as layers of hacks on the older format versions to overcome their limitations. However, given the POSIX standarization in late 80s and the popularity of GNU tar, you would expect the interoperability problems to…
🦑 Informal definitions of terms used in concurrency modeling
The majority of performance improvements in modern processors are due to increased core count rather than increased instruction execution frequency. To maximise hardware utilization, applications need to use multiple processes and threads. Servers that process discrete requests are a good candidate for both…
tl;dr: Rebuilding a target because its mtime is older than the mtimes of its dependencies, like `make` does, is very error prone. redo does...
In this article we’ll go on a journey from 4-bit microcontrollers to room-sized mainframes and learn how porting C to each of them helped people separate the essence of the language from the environment of its birth. I’ve found technical manuals and videos for this article to help bring each computer to life.
As of last nightly (20181115100051), Firefox now supports Wayland on Linux, thanks to the work from Martin Stransky and Jan Horak, mostly.
Modern processors execute instructions in parallel in many different ways: multi-core parallelism is just one of them. In particular, processor cores can have several outstanding memory access requests "in flight". This is often described as "memory-level parallelism". You can measure the level of memory-level…