This week in PSC (188) | 2025-04-24

All of us showed up for a long meeting of identifying release blockers. First we went over the issues and PRs submitted since last week, none of which turned out to be new potential blockers. Then we examined all of the issues and PRs of interest we had previously identified. We applied the “Release Blocker” label where necessary, left comments, and merged a few of the PRs. Out of 20 issues and 11 PRs on our list, we identified 5 issues and 1 PR as blockers, of which the PR and several of the issues all pertain to the same problem with retention of errors on filehandles across I/O operations. This issue needs an informed decision, which we did not have the time for in this meeting, but will pursue next.

Our next meeting will be in person at the PTS.

[P5P posting of this summary]

Class data for cheapskates

sub some_field : lvalue { state $value = 'some_default' }

(We know, of course, that “class data” is OOPese for “global variable”.)

Random in Perl

Environment variable PERL_RAND_SEED in Perl v5.38
Please checkout the post for more information:
https://theweeklychallenge.org/blog/random-in-perl

Die Hochschule der Bayerischen Wirtschaft unterstützt den Perl Workshop 2025 in München

Die Hochschule der Bayerischen Wirtschaft unterstützt den Perl Workshop 2025 in München.

Wir freuen uns über die Unterstützung durch die HDBW!

Von der bayerischen Wirtschaft, mit der bayerischen Wirtschaft, für die
bayerische Wirtschaft: Die Hochschule der Bayerischen Wirtschaft (HDBW) ist
eine private, staatlich anerkannte Hochschule für angewandte
Wissenschaften - mit Fokus auf Wirtschaft, Technik und Digitalisierung. An der 2012 gegründeten HDBW mit Sitz in
München-Riem studieren derzeit knapp 500 Studierende.

This week in PSC (187) | 2025-04-17

We were all present.

  • CVE-2024-56406 is published and has been addressed by new point releases. Please upgrade or patch your perl promptly if affected. We thank Steve Hay, Andreas König and Stig Palmquist for doing the heavy lifting, as well as Nathan Mills for discovering the problem, and Karl Williams for providing the fix. We re-/learned a number of old and new lessons about the handling of security issues, which we will write up as new process for the PSC, the Perl Security Team, and the CPANSec group, to be jointly reviewed and agreed at the looming PTS.

  • We started winnowing this release cycle’s pull requests for potential release blockers. We briefly reviewed all 72 pull requests and identified 11 of interest for a closer look.

  • We reviewed the 2 new issues filed since last week for release blocker potential and put one of them on our list for closer review. We then started a closer examination of the 20 issues we identified as candidate blockers. We got through 5 issues, none of which we considered blockers.

[P5P posting of this summary]

Announcing the Perl Toolchain Summit 2025!

This announcement comes a bit late in the year, but the preparations for the next Perl Toolchain Summit have been going on for several months now. Today I am proud to announce that the 15th Perl Toolchain Summit will be held in Leipzig, Germany, from Thursday May 1st till Sunday May 4th, 2025.

This post is brought to you by Deriv, a Gold Sponsor of the Perl Toolchain Summit 2024.

For 25 years, Deriv has been committed to making online trading accessible to anyone, anywhere. Trusted by over 2.5 million traders worldwide, the company offers an expansive range of trade types and boasts over 200 assets across popular markets on its award-winning, intuitive trading platforms. With a workforce of more than 1,400 people globally, Deriv has cultivated an environment that celebrates achievements, encourages professional growth, and fosters talent development which reflects in its Platinum accreditation by Investors in People.

Polishing the T-urtle

Cellgraph 0.7 is out. (I introduced it here and there.) And I will tell you about the great new features in the next paragraph and how it helps you to play with logical structures and deepen your understanding of them. But first please let me mention the why!

sqrt.png

CGI::Tiny - Perl CGI, but modern

Originally published at dev.to

In a previous blog post, I explored the modern way to write CGI scripts using frameworks like Mojolicious. But as pointed out in comments, despite the many benefits, there is one critical problem: when you actually need to deploy to a regular CGI server, where the scripts will be loaded each time and not persisted, frameworks designed for persistent applications add lots of overhead to each request.

CGI scripts have historically been written using the CGI module (or even more ancient libraries). But this module is bulky, crufty, and has serious design issues that led to it being removed from Perl core.

This week in PSC (185) | 2025-04-03

The three of us attended.

  • Preparations for the point release are now in full swing.
  • In relation to that, we ran into infrastructure permissions discrepancies that have cropped up due to an absence of onboarding/offboarding procedures. We need to address both the immediate and long-term issues here.
  • We started winnowing this release cycle’s issues for potential release blockers. Out of about 95 issues, we have so far reviewed half, of which we identified 8 of interest. Additionally there are 72 pull requests to review.

[P5P posting of this summary]

When Laziness Isn't

I just needed a few rows of UUIDs in a column of a spreadsheet, more for esthetics than anything else. uuidgen to the rescue.

At the time I didn't realize that uuidgen natively supports outputting multiple ids like so
uuidgen -C 8


The truly lazy path would have been to read the fine uuidgen manual.

Alas, supposing I needed to make multiple calls to uuidgen, I went with a Perl one-liner with a loop, as I couldn't recall the Bash loop syntax.

Here comes the laziness... I I didn't want to write something like this:

perl -e 'print `uuidgen` for @{[1..5]}';


I'm not so found of of perl's de-reference syntax these days, also that array reference/range was giving "the ick" as my kids would say. I needed something lazier, cleaner. I wondered if there were any default/exported arrays available to me that don't have too many elements to them.... Ah, I know!

nicsell supports the German Perl Workshop

Sie bieten, wir catchen!
nicsell ist ein Domain-Backorder-Dienst, auch Dropcatcher genannt, der es Ihnen ermöglicht, auf eine Vielzahl freiwerdender Domains zu bieten, die sich aktuell in der Löschungsphase befinden.
Schon ab einem geringen Startgebot von 10 € können Sie an unseren Auktionen teilnehmen und haben die Chance an Ihre Wunschdomain zu gelangen.
Übrigens: Zur Verstärkung unseres Teams in Osnabrück suchen wir engagierte Perl-Entwickler (m/w/d). Bei Interesse freuen wir uns auf Ihre Bewerbung!

Nicsell

Premium XS Integration, Pt 2

This is a continuation of a series of articles about how to write XS libraries that are more convenient and foolproof for the Perl users, while not blocking them from using the actual C API.

If you spot anything wrong, or want to contribute suggestions, open an issue at the GitHub repo

Wrapping Transient Objects

One frequent and difficult problem you will encounter when writing XS wrappers around a C library is what to do when the C library exposes a struct which the user needs to see, but the lifespan of that struct is controlled by something other than the reference the user is holding onto.

This week in PSC (184) | 2025-03-27

All three were present.

  • We went over developments on the point release front. Things are now finally moving, if slowly.
  • We discussed some internal quality-of-life improvements to the PSC meeting workflow.
  • We briefly reflected on our work as the PSC given our various personal circumstances this year.
  • We discussed PPC 0027 (any/all), prompted by the Mojolicious::Lite DSL question. We went over its status, how the work got merged, and current issues with the design. We confirmed an already possible technical solution to the Mojolicious issue and agreed that it satisfies us for now, but we still intend to pick up the further issues at a later time.

[P5P posting of this summary]

Announce Perl.Wiki.html V 1.23

Available now: Perl.Wiki.html V 1.23.

As from today, when I announce a new version of one of my TiddlyWikis, I'll list the 2 most recent parts of the change log. These are just copies of the most recent parts of the para called VersionInfo.

And why 2 parts? To help those who missed the last announcement.

o Author:
- Ron Savage
- Melbourne, Victoria, Australia
- http://savage.net.au
- https://symboliciq.au
- https://quantumiq.au
- https://metacpan.org/author/RSAVAGE

o version:
- Perl extension for Version Objects
- https://metacpan.org/dist/versionhttps://metacpan.org/dist/version

Going to release TurboVision bindings sometime soon

Hi there!

Recently I tried this port of turbovision and was really impressed by it.

Now I want it to be available for Perl and in progress of coding it.
The progress is happening here

The progress is happening at a moderate pace.
Currently this runs okay on windows, and should also be okay everywhere else (not tested)

Lots of progress is done already.
Lots of work needs to be done.
I think I've crossed an imaginary equator recently and expect it to be finished in a month or two.
Please let me know here about your ideas, so I could add to the module.

PS.
This post is a slight misuse of the "blogs.perl.org" resource, because I want to create some small corner for developers discussion about it, so I am doing an attempt to invite interested people comment about development here.

Other possibilities include:
  • wiki
  • discord
  • please let me know what else

How to properly and immutably create a timestamp for a document (using Blockchain technology)

I had written a Math paper which was not good enough to be published in a journal, yet I wanted to have proof of the date I wrote it on so I could post the paper on the web without other people later being able to question who first came up with the idea.

The way I thought was more correct to do this was to publish the paper's sha256 checksum on the Bitcoin blockchain. Posting the SHA on social media (such as x.com) was not enough, as paid members can edit their old posts.

I got in touch with BBRTJ, the maintainer of Bitcoin::Crypto, who was very helpful in teaching me how to use his module and achieving my aim.

The goal, he told me, was to include the SHA256 checksum as the comment (technically the 'NULLDATA') of a small bitcoin transaction.

This week in PSC (183) | 2025-03-20

We didn’t have a meeting last week. This week, everyone was here.

  • We briefly talked about builtin. We think a numify function is quite necessary.
  • We started reviewing release blockers for v5.42.

[P5P posting of this summary]

Perl Regex

Special variable ${^LAST_SUCCESSFUL_PATTERN} in Perl v5.38
Please checkout for more information in the post below:
https://theweeklychallenge.org/blog/perl-regex

Resigning from the TPF and TPRF board

I'm resigning from the board position at TPF (The Perl Foundation) also known as TPRF (The Perl and Raku Foundation).

tl;dr

After eight years with the foundation board, the time has come for me to step down. While I'm leaving the board, I intend to remain an active member of the Perl community and continue contributing in meaningful ways for Perl users and developers. You'll still see me at various Perl events; and perhaps Raku ones, too.

Over the years, I've learned a great deal, (hopefully) made a positive impact, and had a lot of fun.

Why I'm stepping down #1. The board needs a refresh

As I've noted before, having long-term board members at a nonprofit has advantages and disadvantages. My resignation opens the door for new perspectives and ideas. The foundation's board has started searching for backfill, which is good for the board's long-term success.

A deep dive into the Perl type systems

People usually don't think about Perl's type system. Some would even mistakenly claim it doesn't have one. It is, however, a most unusual one that doesn't really look like anything else.

What is a type anyway? And what is a type system? I'm not going to precisely define it here, that's for academics, but generally speaking a type is a fundamental property of a variable or value that determines what operations can and can not be done with it and what invariants it must hold. In a strong type system it is a stable trait: it can't change over the lifetime of the value/variable.

In some type systems containers are typed (such as C) and values really don't exist separate from containers. In other typed systems containers are typeless but values are typed (e.g. Python, Javascript, …). There are languages where both values and containers are typed (e.g. Java, C#), typically this means that the container constrains the values in it.

Contrary to what you might expect, Perl has the latter sort of typesystem, but with a twist.

About blogs.perl.org

blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.