Programming Leftovers
-
Noel Rappin ☛ The Pickaxe is out and I am Happy
I am extremely excited to say that Programming Ruby 3.3, also known as The Pickaxe Book, is now done done, finished, completely available as an ebook, and winding its way to distributors to ship to people as a genuine physical book.
-
Qt ☛ [Proprietary] LTS Qt 6.2.11 Released
We have released Qt 6.2.11 LTS for [proprietary] license holders today. As a patch release, Qt 6.2.11 does not add any new functionality but provides bug fixes and other improvements.
-
Rakulang ☛ Rakudo Weekly 2024.03 Draig
An idea launched at the Raku Core Summit last summer, is coming to fruition: Richard Hainsworth introduces Draig, a Welsh localization of the Raku Programming Language. Along with some nice-to-have helper scripts! Cool stuff! Weeklies Weekly Challenge #252 is available for your perusal.
-
James Bottomley ☛ James Bottomley: Debugging Android Early Boot Failures
Back in my blog post about Securing the Surveillance Giant Google SIP Stack, I did say I’d look at re-enabling SIP in Android-12, so with a view to doing that I tried building and booting LineageOS 19.1, but it crashed really early in the boot sequence (after the boot splash but before the boot animation started). It turns out that information on debugging the android early boot sequence is a bit scarce, so I thought I should write a post about how I did it just in case it helps someone else who’s struggling with a similar early boot problem.
-
Stuart Langridge: Making a Discord bot with PHP
Discord have changed the way bots work quite a few times. Recently, though, they built a system that lets you create and register “slash commands” — commands that you can type into the Discord chat and which do things, like
/hello
— and which are powered by “webhooks”. -
GNU ☛ GNU Guix: Building packages targeting psABIs
Starting with version 2.33, the GNU C library (glibc) grew the capability to search for shared libraries using additional paths, based on the hardware capabilities of the machine running the code. This was a great boon for x86_64, which was first released in 2003, and has seen many changes in the capabilities of the hardware since then. While it is extremely common for Linux distributions to compile for a baseline which encompasses all of an architecture, there is performance being left on the table by targeting such an old specification and not one of the newer revisions.
One option used internally in glibc and in some other performance-critical libraries is indirect functions, or IFUNCs (see also here) The loader,
ld.so
uses them to pick function implementations optimized for the available CPU at load time. GCC's (functional multi-versioning (FMV))[https://gcc.gnu.org/wiki/FunctionMultiVersioning] generates several optimized versions of functions, using the IFUNC mechanism so the approprate one is selected at load time. These are strategies which most performance-sensitive libraries do, but not all of them.With the
--tune
using package transformation option, Guix implements so-called package multi-versioning, which creates package variants using compiler flags set to use optimizations targeted for a specific CPU. -
R
-
Rlang ☛ A simple workflow for async `{shiny}` with `{mirai}`
In my previous post,
I developed a shiny module to encapsulate the logic of sending and monitoring background async
tasks. The main advantage of this approach was to simplify making repeated async calls
in larger applications. -
Rlang ☛ Poor Dude’s Janky Bluesky Feed Reader CLI Via atrrr
Have you ever wanted to see your favourite social control media posts in your command line?
-