pperl 0.6.23 - RANT, REPL and SPEED

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.

This week in PSC (237) | 2026-09-28

All three of us (plus Graham’s cat) met as usual.

  • 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).

[P5P posting of this summary]

ANNOUNCE: Perl.Wiki V 1.54, Mojo.Wiki V 1.26

From my Wiki Haven you can now download:
  • Perl.Wiki V 1.55
  • cpan.metacurator.tree.html V 1.32
  • Mojo.Wiki V 1.26
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 released (security)

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).

Thanks to David Precious for the YAML work.

Peta::NN - Surface Detail

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.

This week in PSC (235) | 2026-09-14

The first meeting of the newly-elected group.

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.

[P5P posting of this summary]

Running Perl/PAGI applications on Cloudflare Workers via WebAssembly

Background

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.

Cloudflare Workers and WASM

The videos of the German Perl Workshop 2026 are online

The videos are now online on Youtube.

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.

pperl 0.6.21 - addendum

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 - An Embedded NoSQL Database Engine for Perl

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:

Announcing the London Perl & Raku Workshop 2026

The London Perl & Raku Workshop is back again this year!

https://act.yapc.eu/lpw2026

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.

CPerl mode for Emacs is now on GNU ELPA

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.

Happy hacking!

-- haj, your friendly CPerl mode maintainer

pperl 0.6.20 - The Player of Games

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.

This week in PSC (236) | 2026-09-22

All three of us met.

  • 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.

[P5P posting of this summary]

Dancer2 2.2.0 released; security updates PLEASE READ

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:

A recap of all changes follows.

Security fixes

  • Path traversal in static file serving. Dancer2::Handler::File could serve files from outside public_dir. (GHSA-6xw8-v24c-m783)
  • Hook exception handling. If an on_hook_exception handler halted, the route that the hook refused could still run. (GHSA-v527-r4px-7vx7)
  • Header injection. CR and LF are now stripped from response header names, as they already were from header values.
  • AutoPage no longer serves a layout as a page on case-insensitive filesystems.
  • Session IDs are now always generated with Crypt::URandom, and validate_id rejects invalid session IDs more strictly.

ANNOUNCE: Perl.Wiki V 1.54, etc

From my Wiki Haven you can now download:
  • Perl.Wiki.html V 1.54
  • cpan.metacurator.tree.html V 1.31
  • Mojo Wiki V 1.25

pperl: Doing a REJIT

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.

PerlOnJava 5.44.1 released

I released PerlOnJava 5.44.1 yesterday:

https://github.com/fglock/PerlOnJava/releases/tag/v5.44.1

This is a big milestone, with the regex implementation, ithreads, taint mode, and async/await now complete.

Is Perlmonks Dead?

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.

ANNOUNCE: Perl.Wiki V1.53, Mojo.Wiki V1.24

As usual, get them and cpan.metacurator.tree.html from my
Wiki Haven.

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.