Last week, I wrote three blogs about the situation with starting child processes on Unix and being notified of their exit. I raised several problems with the current implementation, which I have tried to solve and I have now a proposal for. If you haven’t yet, you should take some time to read the previous …
Category Archive: C++
Jul 13
forkfd part 3: QProcess’s requirements and current solution
In the previous posts onmy series of blogs about starting and managing sub-processes on Unix, I talked about how it’s implemented and how the current solutions have limitations. On this post, I’ll show how QtCore has solved the problem (to the extent that it can be solved) and what requirements a new solution must fulfill. …
Jul 10
Continue using QPointer
Early in the Qt 5 development cycle, we had made the decision to deprecate QPointer and replace it with the more modern QWeakPointer. That decision is now reversed, so please continue using QPointer where you were using them. Moreover, don’t use QWeakPointer except in conjunction with QSharedPointer. To understand the reason behind this back and …
Jun 13
AVX-optimised raster painting for Windows too
Yesterday, one of my contributions to Qt was merged which finally adds better support for optimised raster painting on Windows, with SSE2 and AVX instructions. This feature has long been present on the Unix systems, but it was somewhat lacking on Windows. If you’ve read my past blogs, you know I often talk about and …
May 11
Source code must be UTF-8 and QString wants it
I’ve talked about source code encoding in the past, arguing that the C++ language lacks a fundamental setting. However, since this Monday, Qt 5 now starts to enforce that source code must be UTF-8. In a way. The commit that landed on the qtbase repository finally changed the codec used by QString’s 8-bit methods to …
Mar 28
Restricting what you can do
I usually write about C++, since it’s the programming language that I use on my daily work. Today, however, I’m talking about its nearest cousin: C. In specific, about a certain keyword introduced by the C99 standard, which was issued over 12 years ago. Usually, the C standard plays catch-up with the C++ standard (like …
Feb 22
The value of passing by value
I’ve written in the past about how passing certain types by value in C++ would be more efficient than passing by constant reference. But it turns out that the ABI rules are somewhat more complex than what I said back in 2008. Time to investigate. This is also prompted by the discussion on qreal on …
Jan 16
Sorry state of dynamic libraries on Linux
Last week, we identified a bug in Qt with Olivier‘s new signal-slot syntax. Upon further investigation, it turns out it’s not a Qt issue, but an ABI one. Which prompted me to investigate more and decide that dynamic libraries need a big overhaul on Linux. tl;dr (a.k.a. Executive Summary) Shared libraries on Linux are linked …
Jan 09
Assembly developer’s library
Every now and then, when coding in C++, I find myself needing to know some assembly to understand what’s going on. Sometimes, it’s because I am actually writing assembly code, such as when I was writing the new atomic classes for Qt. More often, it’s because I need to read the assembly generated by the …
Sep 30
The future of moc
Two days ago, on his blog on some Qt Creator news, Christian wrote: We’re currently prototyping what would happen if we replaced our own C++ code model with clang’s. The first comment in the blog was praising that research, but that got me thinking: what do we gain from it? Qt Creator already has a …