pperl 0.6.23 is released. As announced in the
addendum
to the last release post, the complete record of what changed is no longer this post's job: it is
in the changelog, one page per version, at
https://perl.petamem.com/docs/eng/changelog/index.html. That leaves
the post free for three things. One is a rant, about licences and how
pperl came to have its own line editor. One is a prompt: pperl has an
interactive mode now, a REPL for Perl that keeps your variables from
line to line and tells you whether your loop was compiled. And one is
speed: MIME::Base64, Digest::SHA and Encode, three modules whose
perl5 versions are C, now run significantly faster in pperl than in perl with that
C.
Discussions about some case-matching syntax ideas continue on the mailing list. PSC is following along but for now there does not seem to be a need to come to an official response.
From this it sounds like finding a better solution to controlling Perl’s autovivification (especially in deep hash accesses) is a useful goal and can be pursued independently. Potentially addressed by optional chaining (PPC0021).
Adding a builtin::rand_bytes function as per [PR24722](https://github.com/Perl/perl5/pull/24722
) sounds worthwhile. There are portability concerns that still need to be addressed on the subject of platform-dependent entropy sources (such as on VMS).
The basic purpose of these is to deal with the upgrade of TiddlyWiki from V 4 to V5.
Up to V 4, CamelCase words were treated as links to be clicked.
From V 5. all links to be clicked must be in double brackets: [[...]].
I have updated Perl.Wiki & Mojo.Wiki to use [[...]] and will progressively upload updated versions of the other wikis to match.
Dancer2 2.2.1 is now on CPAN. This is a security release; upgrading is recommended.
Dancer2::Serializer::YAML handed request bodies straight to YAML::Load. A body tagged !!perl/hash:Some::Class could therefore instantiate an arbitrary blessed object, and !!perl/code could ask for a string eval. Both
are now refused explicitly rather than left to YAML.pm's defaults.
Note that you can be exposed without having configured YAML yourself: Serializer::Mutable maps both text/x-yaml and text/html to this serializer.
Two packaging notes for this release: the minimum YAML version is now 1.30, and Dancer2 now declares the minimum CLI::Osprey it needs (0.09).
Peta::NN is a neural network library written in Perl: models are
defined, trained, measured and shipped from a Perl script, with no
dependency beyond perl 5.36. It is not a binding to somebody else's
framework and it does not try to be PyTorch. It trains micro models -
a few thousand to a few hundred thousand weights, each answering one
narrow question about a string - and composes them: in a pipeline, or
fused into one model that runs a whole batch on the graphics card
without coming back to Perl in between. It runs on perl5 and on
pperl, on three backends, and under pperl one of them is the GPU.
Two models of 18,761 and 10,002 weights form the plural of 98.3% of
German nouns they were never shown, and of every single noun of the
core vocabulary.
We did some initial handover tasks (github groups, mailing lists)
We intend to do some point releases for 5.44 and 5.42 to include some security fixes and build issue bugfixes. We will take suggestions on what other fixes to be included.
We began discussing ideas on what it would look like to support the idea of local::lib and similar techniques better by perl core itself, handling perl version upgrades and so on.
We discussed improving the dual-life module release process to make it easier and prevent mistakes.
I've been developing the WebDyne framework to make creation of Perl-based web applications easier (for me anyway). Most of the apps I write now use John Napiorkowski's excellent PAGI design, as it supports modern asynchronous web services such as SSE and WebSockets.
One of the challenges has always been: "where do I host them?"
They run fine in Docker containers, and the demo website currently runs on Sevalla in a relatively cheap container. I could also run them in an AWS Lambda environment, but with either option I have to pick a region, and — especially with full Docker containers — hosting multiple sites can be relatively expensive for "small" applications.
Thanks again to all people presenting their projects and insights!
Much of the credit for the video production goes to Lee Johnson for recording
all of them during the event. The postproduction happened thanks to ffmpeg.
This blog entry has no release attached to it. 0.6.21 is an internal
version, not for release. In the four days since 0.6.20 a few things
happened, but this post is not about new things. It is about old
things the 0.6.20 post forgot, about how a project moving at this
pace should announce anything at all, and about a question that
deserves an answer in public: who pperl is for, at a time when you
can ask an AI to port your Perl script to the language of your choice
and be done.
AmberDB is an embedded, schema-driven NoSQL database engine
for Perl, designed for applications that need structured records,
fast indexed queries, full-text search, transactions, and a simple
deployment model.
It is built on top of Berkeley DB through DB_File,
but AmberDB provides a much higher-level database API rather than
exposing the underlying key-value store directly.
Why AmberDB?
AmberDB brings several capabilities together in a single Perl
database engine:
a simple Perl-native CRUD API
schemaless and schema-driven data structures
indexed matching and filtering
full-text search
sorting and faceted queries
relational and repeated data blocks
multi-table transactions
concurrency control
high-throughput batch operations
portable database archives and restore tools
The result is a database where operations that often require
additional layers, services, or complex query logic can be handled
directly by the database itself.
For example, a Perl application can insert, read, modify, search,
and delete records using a small and consistent API, while the schema
controls validation and indexing behind the scenes.
AmberDB is built around a straightforward principle:
WHEN: Saturday 21 November 2026
WHERE: The Café at Zoopla, The Cooperage, 5 Copper Row, London SE1 2LH
Registrations and talk submissions are now open. As on previous years, we welcome talks for anything and everything people think might interest the Perl and Raku communities, even if it's not specifically about those languages.
We have a large room for the main track, and a breakout room for ~15 people that is available for smaller sessions, BOFs, hackathons, etc. Submissions for use of that room is also open.
We would like to encourage people to register in advance, to make it easier to access the venue and to give us an idea of numbers.
Looking forward to seeing you all, and the crazy things you've come up with.
Since almost forever, Emacs supports editing Perl sources with CPerl mode. As of now, CPerl mode is not only shipped with Emacs, but also available on GNU ELPA. ELPA stands for Emacs Lisp Package Archive, it is for Emacs what CPAN is for Perl. This means that to use the newest CPerl mode, you do not have to wait for the next Emacs version: If you use
M-x list-packages, you should see cperl-mode in the list and can install it if you have Emacs 27 or newer.
The current version of CPerl mode supports Perl syntax up to Perl 5.44.
For bug reports and change requests, you can use M-x report-emacs-bug from within Emacs (be sure to add "cperl-mode" to the subject), or create an issue on my GitHub mirror. Development will not happen on GitHub, though, this happens in the GNU Emacs repository at savannah.
pperl 0.6.20 is released, and readers of the two previous posts -
Shall we play a game?
and Doing a REJIT -
know what that means. This post carries the Benchmarks Game
scoreboard. It also covers a native Memoize whose cache hit is
compiled into the caller, a GPU binding on the wgpu crate for the
other kind of games, and a few smaller items.
Talked about the two “match case” proposals. The two seem to cover different intents, so it’s not clear that either just replaces the other. The destructuring concept is nice in principle but needs further discussion. We will let discussions continue on the mailing list for now.
The PrePPC about @INC dirs seems good enough to progress to a full PPC document for further discussion of details; in particular specifics about non-UNIX operating systems.
We want to find a more coherent concept for “hooking core functionality” and possibly the %{^HOOKS} hash in particular, before considering such possibilities as a replacable random number generator. E.g. do $SIG{__WARN__} and $SIG{__DIE__} belong in here?
Specifically on providing a hook for generating random data, it feels like the rand() (and srand()) function interface provided by Perl is itself a limitation for getting good behaviour. This might need looking into before simply replacing a better source of randomness.
We have just released Dancer2 2.2.0. It is a maintenance release containing a number of bug fixes, several important security updates, and one breaking change (see below).
First and foremost, please read the following security announcements; if you are running affected versions of Dancer2, you should plan to update immediately:
The previous post - pperl 0.6.12+ - Shall we play a
game? -
closed with a promise: the next release will compete in every
benchmark of the Computer Language Benchmarks Game with the best
scripted language entry there. The current build already takes several
rows outright; the tally belongs to the release post. This one is
about a row where the promise cannot be kept with the guns we have. On
regex-redux the opponent is V8's Irregexp, a compiler that turns
regular expressions into machine code, and no amount of work on the
Perl JIT will close that gap, because the time is not spent in Perl
ops at all. The answer is a second compiler: ReJIT.
Every 8-12'ish months I get sentimental/nostalgic over the good 'old days. I'll head over to CPAN and look at the latest releases investigate a few projects, maybe even make a contribution. I'll then head over to Perlmonks to see what's going on.
Well yesterday, and still today all I see is a fastly "Opps, something went wrong" screen. Is Perlmonks dead? The title of the page is "Client Challenge" so I hope that it's some fastly issue and not that the plug has been pulled on PM.