Developing tooling for C++ modules is challenging to say the least. Module implementation maturity in compilers varies, they all work slight...| nibblestew.blogspot.com
In an earlier blog post we looked into some of the problems that the current C++ module implementation (specifically using Clang and CMake)...| nibblestew.blogspot.com
A gathering of development thoughts of Jussi Pakkanen. Some of you may know him as the creator of the Meson build system. jpakkane at gmail dot com| nibblestew.blogspot.com
Note: Everything that follows is purely my personal opinion as an individual. It should not be seen as any sort of policy of the Meson buil...| nibblestew.blogspot.com
One of the pieces of the Python standard library I tend to use the most is argparse . It is really convenient so I chose to implement that i...| nibblestew.blogspot.com
A gathering of development thoughts of Jussi Pakkanen. Some of you may know him as the creator of the Meson build system. jpakkane at gmail dot com| nibblestew.blogspot.com
Recently the CEO of Github wrote a blog post called Developers reinvented. It was reposted with various clickbait headings like GitHub CEO Thomas Dohmke Warns Developers: "Either Embrace AI or Get Out of This Career" (that one feels like an LLM generated summary of the actual post, which would be ironic if it wasn't awful). To my great misfortune I read both of these. Even if we ignore whether AI is useful or not, the writings contain some of the absolute worst reasoning and stretched logic...| Nibble Stew
Most CI systems I have seen have been stateless. That is, they start by getting a fresh Docker container (or building one from scratch), doing a Git checkout, building the thing and then throwing everything away. This is simple and matematically pure, but really slow. This approach is further driven by the way how in cloud computing CPU time and network transfers are cheap but storage is expensive (or at least it is possible to get almost infinite CI build time for open source projects but no...| Nibble Stew
In an earlier blog post I wrote about a potential way of speeding up C++ compilations (or any language that has a big up-front cost). The basic idea is to have a process that reads in all stdlib header code that is suspended. Compilations are done by sending the actual source file + flags to this process, which then forks and resumes compilation. Basically this is a way to persist the state of the compiler without writing (or executing) a single line of serialization code.| Nibble Stew
In the past I may have spoken critically on Truetype fonts and their usage in PDF files. Recently I have come to the conclusion that it may have been too harsh and that Truetype fonts are actually somewhat nice. Why? Because I have had to add support for CFF fonts to CapyPDF. This is a font format that comes from Adobe. It encodes textual PostScript drawing operations into binary bytecode. Wikipedia does not give dates, but it seems to have been developed in the late 80s - early 90s. The name...| Nibble Stew
Are exceptions faster and/or bloatier than using error codes? Well...| Nibble Stew
I have just released version 0.14 of CapyPDF. This release has a ton of new functionality. So much, in fact, that I don't even remember them all. The reason for this is that it is actually starting to see real world usage, specifically as the new color managed PDF exporter for Inkscape. It has required a lot of refactoring work in the color code of Inkscape proper. This work has been done mostly by Doctormo, who has several videos on the issue.| Nibble Stew
The developers of Git have been considering switchibg build systems for a while. No definitive decision have been made as of yet, but they gave merged Meson build definitions in the main branch. Thus it now possible, and even semi-supported, to develop and build Git with Meson instead of the vintage Makefile setup (which, AFAICT, remains as the default build system for now).| Nibble Stew
Did you know that Jpeg supports images in the CMYK colorspace? And that people are actually using them in the wild? This being the case I needed to add support to them into CapyPDF. The development steps are quite simple, first you create a CMYK Jpeg file, then you create a test document that embeds it and finally look at the result in a PDF renderer.| Nibble Stew
According to information I have picked up somewhere (but can't properly confirm via web searches ATM) there was a compiler in the 90s (the IBM VisualAge compiler maybe?) which had a special caching daemon mode. The basic idea was that you would send your code to that process and then it could return cached compile results without needing to reparse and reprocess same bits of code over and over. A sort of an in-compiler CCache, if you will. These compilers no longer seem to exist, probably b...| Nibble Stew
Note: the PDF/A specification is not freely available so everything here is based on reverse engineering. It might be complete bunk.| Nibble Stew
A few months ago this happened.| Nibble Stew
I have just made the 0.12 release of CapyPDF. It does not really have new features, but the API has been overhauled. It is almost guaranteed that no code developed against 0.11 will work without code changes. Such is the joy of not having any users.| Nibble Stew
I wrote a post about so called "M type" and "S type" processes in software development. Unfortunately it discusses the concept of human sexuality. Now, just to be sure, it does not have any of the "good stuff" as the kids might say. Nonetheless this blog is syndicated in places where such topics might be considered controversial or even unacceptable.| Nibble Stew
When doing a major refactoring in Meson, I came up with a interesting refactoring technique, which I have not seen before. Some search engi...| nibblestew.blogspot.com
A gathering of development thoughts of Jussi Pakkanen. Some of you may know him as the creator of the Meson build system. jpakkane at gmail dot com| nibblestew.blogspot.com
A gathering of development thoughts of Jussi Pakkanen. Some of you may know him as the creator of the Meson build system. jpakkane at gmail dot com| nibblestew.blogspot.com
A gathering of development thoughts of Jussi Pakkanen. Some of you may know him as the creator of the Meson build system. jpakkane at gmail dot com| nibblestew.blogspot.com
In an earlier blog post we found that optimizing the memory layout of a red-black tree does not seem to work . A different way of implement...| nibblestew.blogspot.com
| Nibble Stew
An ordered map is typically slower than a hash map, but it is needed every now and then. Thus I implemented one in Pystd . This implementati...| nibblestew.blogspot.com
Some years ago I wrote a book. Now I have written a second one, but because no publisher wanted to publish it I chose to self-publish a smal...| nibblestew.blogspot.com
A gathering of development thoughts of Jussi Pakkanen. Some of you may know him as the creator of the Meson build system. jpakkane at gmail dot com| nibblestew.blogspot.com
Writing your own standard library is all fun and games until someone (which is to say yourself) asks the important question: could this be actually used for real? Theories and opinions can be thrown about the issue pretty much forever, but the only way to actually know for sure is to do it.| Nibble Stew
Implementing a variant type in C++ is challenging to say the least. I tried looking into the libstd++ implementation and could not even deci...| nibblestew.blogspot.com
Previously it was mentioned that Python and C++ do iteration quite differently. Python has "statefull" objects that have a .next() method that returns a new object or throws a StopIteration exception. Incidentally Rust does exactly the same thing, except that it uses an optional type rather than an exception. C++ does not work like this, instead it has a concept of a "start" and "end" of a sequence and the machinery keeps incrementing the start until it reaches the end.| Nibble Stew
Earlier in this blog we looked at how to generate a justified block of text, which is nowadays usually done with the Knuth-Plass algorithm ...| nibblestew.blogspot.com
This blog post talked about the "self written C++ standard library" I wrote for the fun of it ( code here ). The post got linked by Hackern...| nibblestew.blogspot.com
The C++ standard library (also know as the STL) is, without a doubt, an astounding piece of work. Its scope, performance and incredible back...| nibblestew.blogspot.com