news
Programming Leftovers
-
Sandor Dargo ☛ C++26: constexpr virtual inheritance
constexpr has come a long way since its introduction in C++11. Back then, constexpr functions were extremely restricted and could essentially contain only a single return statement. C++14 relaxed those restrictions, allowing local variables, loops, and multiple statements. C++20 was another major milestone, bringing support for constexpr dynamic allocation, enabling types such as std::string and std::vector to become usable in constant evaluation, and allowing constexpr virtual functions. C++23 further relaxed the rules by permitting static local constexpr variables and try blocks inside constexpr functions. C++26 continues the trend, adding support for exception handling during constant evaluation and several other improvements in the language and in the library we’ve already covered on this blog.
-
Alperen Keles ☛ Next Chapter!
Two days ago, I've defended my 5 year, 5 chapter Ph.D. thesis. Today, I write about what's next, a spiritual 6th chapter!
My dissertation, titled "Designing Effective Property-Based Testing Frameworks", comprises of the results of four research papers and projects I've worked on during my Ph.D. Two of these papers are about PBT libraries I have worked on, and two are about PBT libraries I have measured. In the next chapter, I would like to not just develop testing tools, but also leverage them, build applications upon them beyond bug finding.
-
Ben Werdmuller ☛ AI's costs are going through the roof - so businesses are telling LLMs to talk like cavemen
If only we had other limited-vocabulary lexicons designed to talk to computers efficiently!
-
WhatChord ☛ Optimizing an Algorithm That’s Quadratic by Design
WhatChord names the chord you are playing, in real time. Doing that well means generating plausible names and ranking them. That ranking step turned out to eat almost all of the engine’s compute because it cannot use an ordinary sort. In June 2026 we set out to make it fast: first by shaving constant factors, then by questioning a hidden requirement that had made the larger optimization look impossible.
-
Perl / Raku
-
Python
-
LWN ☛ Free-threaded Python: past, present, and future
Probably the biggest change for Python over the last five years or so is the advent of the "free-threaded" version of the language, which removes the global interpreter lock (GIL) and allows multiple threads to run in parallel in the interpreter. At PyCon US 2026, held in Long Beach, California in mid-May, longtime CPython core developer (and current steering council member) Thomas Wouters gave a talk about the feature. He looked at the motivation behind the GIL-removal efforts, some history, the current status of the free-threaded interpreter, and provided a prediction on where it all leads.
He began by noting that he has been doing CPython core development for about 25 years at this point and has been on the steering council for five of the last six years. The steering council is the body that determines the path forward for language features, including free threading. Beyond that, he works for Meta on the free-threaded interpreter and other things. While it was not entirely relevant to the talk, he noted that he has three cats, while putting up slides to show them. ""In an alternate universe, there's a version of this talk where I use my cats as my slides"", he said to laughter and applause.
-
-
Shell/Bash/Zsh/Ksh
-
Jon Udell ☛ “What is the terminal?”
If you are a terminal jockey you may enjoy the more legible display of: agent messages, your messages, pasted screenshots, diffs, tool calls and results. But when I introduce non-coders to agent-assisted coding the first question is usually: “What is the terminal?”
My answer: “It’s where the agent runs the commands needed to do what you want it to do.” For me, over the past few days, the list includes:
awk, bash, bc, cargo, cat, cd, chmod, claude, codex, cp, curl, cut, date, diff, echo, exit, find, gh, git, grep, head, jq, ls, nl, node, paste, perl, pgrep, php, printf, ps, pwd, python3, rg, rm, ruby, rustfmt, sed, seq, set, sh, shasum, sleep, sort, source, sqlite3, stat, sw_vers, sysctl, tail, test, touch, tr, true, uniq, uptime, wc, whoami, zsh
-