JSON Canvas

Tags:

JSON Canvas looks interesting. It is far from the interactive infinite canvas display that I like and try to get towards with SVG::Drawboard but having an interactive (enough) renderer for simple input data would be nice, especially if I don't have to program it myself.

Live streaming the release of Perl 5.39.7

Tags:

I missed last year but in 2024 I'm doing a dev release of Perl again. This time it is version 5.39.7. And again, you can watch it live on Saturday 20th of January on Twitch:

You can expect to watch me talk through the steps of the Perl Release Managers Guide and if you join the Twitch chat, or #p5p on irc.perl.org, we can chat a bit.

I assume I'll start Saturday at 08:00 UTC (10:00 CET), and the whole thing will take around 4 hours unless there are some major mishaps.

Idle Thoughts on Old Perl Versions for New Distributions

Tags:

My upgrade of my home server from Debian 11 ("bullseye") to Debian 12 ("bookworm") went almost without a hitch. Yesterday I realized that the Postgres data hadn't been migrated from the old DB to the Debian package of Postgres 15. But luckily, the good Pg people provide a Debian package of 9.6 (the version which held my data) for Debian 12. I could install that one, fire it up, dump all data into SQL, fire up Pg 15 from Debian and import it there. Now I run such an SQL dump daily, just to have the data available as SQL files.

I wonder if it would be worthwhile for Perl to provide prebuilt binaries/packages of old Perl versions for current OSes, but then, there are so many build options that it's not worth the effort in general.

The only use case I see would be to provide an emergency Perl when your dist-upgrade nuked the system Perl [^1] , but some custom XS modules or XS modules installed via cpan instead of the package manager relied on that version. This would reduce the number of build options, but I'm still not sure if that actually helps anybody.

Maybe simply taking the (Debian) build files for old packages/distributions and running them for new distributions, with a prefix of /opt/perl5-xx could already help. People would still need to edit the path of their scripts to bring things back up.

This only makes sense when also rebuilding all the old CPAN modules for the new OS version, except under /opt. That's a lot of effort for little to no gain, except when people really need it.

[^1] : well, not nuked, but replaced with a newer major version that is not binary compatible

Git-Frankenstein - Transplant Patches Between Repos

Tags:

How it started

I keep all files related to my Perl distributions in a separate git repository. The files needed to build a distribution, the author tests and some other scaffolding get copied from that repository when I start a fresh repository. I then customize the copied files. But of course, my author tests, or the Makefile.PL evolve, and most changes never propagate to old distributions.

Of course, from time to time, I copy the changed files from Dist::Template into whatever distribution I'm working on.

How it's going

git-frankenstein.pl automates this process. It transplants patches to Dist::Template onto other repos, when they fit. It basically is

for $patch in (`git log $source`) { if( `git-apply --check` ) { git-apply } }

... except that it also can list the applicable patches, before applying them:

corion#speech-recognition-vosk: git-frankenstein.pl list 626d986cdb25f2c71e7eef277c7c998f5cc87e28 update_file() handles (only) UTF-8 files 033e53e0cd9866ed281be0924bed2a265e3e5295 Remove -T from tests d5de9059421538580edbc604e64432b3211f16c7 Don't warn for every thing in our own distribution and test prerequisites 07ec7b5592e6cd96e8d5da9f4643022a52a940b1 Don't use ->import() for version checking

Also, to satisfy a real need, there also is the auto command, which automatically applies all patches that apply.

corion#speech-recognition-vosk: git-frankenstein.pl auto 626d986cdb25f2c71e7eef277c7c998f5cc87e28 update_file() handles (only) UTF-8 files 033e53e0cd9866ed281be0924bed2a265e3e5295 Remove -T from tests d5de9059421538580edbc604e64432b3211f16c7 Don't warn for every thing in our own distribution and test prerequisites 07ec7b5592e6cd96e8d5da9f4643022a52a940b1 Don't use ->import() for version checking

The code lives on Github.