Skip to content

PerlOnJava 5.44.0: Named Parameters in Signatures

Choose a tag to compare

@fglock fglock released this 17 Jul 09:52
dae5d88

PerlOnJava 5.44.0 updates the project to Perl 5.44 language compatibility and expands support for modern Perl applications on the JVM. This release adds named parameters in signatures, a new interpreter backend, stronger CPAN compatibility, new developer tools, and a large collection of bundled modules—all delivered as a single runnable JAR.


🚀 Highlights

Perl 5.44 and Named Parameters

  • PerlOnJava now identifies as Perl 5.44.0 throughout the runtime, build files, launchers, configuration, and documentation.
  • Named parameters are supported in method and subroutine signatures.
  • Modern class features include class, method, field, :param, :reader, :isa, and ADJUST blocks.

Interpreter, Debugger, and Control Flow

  • New register-based interpreter backend, available with --interpreter.
  • Interactive Perl debugger with the -d command-line option.
  • defer blocks with LIFO execution and exception safety.
  • Non-local control flow with last, next, redo, goto LABEL, and goto $EXPR.
  • Trampolined tail calls for goto &NAME and goto __SUB__.

Tools and CPAN Compatibility

  • New jcpan, jperldoc, and jprove command-line tools.
  • Bundled Moose 2.4000 and Class::MOP 2.4000 support a growing range of real-world CPAN distributions.
  • Java implementations transparently replace native XS backends for supported modules.
  • Improved -s, -C0, and -CA handling for UTF-8 command-line arguments.

New and Expanded Modules

This release adds or expands support for modules including:

  • CPAN, Time::Piece, TOML, DirHandle, and Dumpvalue
  • IO::Socket, IO::Socket::INET, IO::Socket::UNIX, IO::Socket::SSL, and Net::SSLeay
  • Archive::Tar, Archive::Zip, IO::Zlib, Net::FTP, and Net::Cmd
  • IPC::Open2, IPC::Open3, and ExtUtils::MakeMaker
  • XML::Parser, Pod::Html, and Cpanel::JSON::XS
  • Filter::Simple, Scalar::Util, and attributes

JVM Integration and Services

  • Plack::Handler::Netty provides an asynchronous PSGI HTTP/HTTPS server.
  • DBI continues to provide JDBC-backed database access, with SQLite bundled.
  • The JSR-223 script engine supports compile-once, execute-many integration from Java applications.
  • Additional system operators include flock, syscall, fcntl, and ioctl.

Reliability, Security, and Builds

  • Lexical warnings with use warnings and FATAL support.
  • DESTROY support with selective reference counting and global destruction handling.
  • Weak references through Scalar::Util::weaken, isweak, and unweaken.
  • CycloneDX SBOM generation for Java and Perl dependencies.
  • Maven and Gradle clean builds are supported and tested.
  • CI validates the release on Ubuntu and Windows with JDK 22.

🐞 Bug Fixes and Compatibility Improvements

  • Fixed nested @{${...}} dereferencing in push and unshift.
  • Fixed regex octal escapes from \10 through \377.
  • Fixed \K behavior in matching and substitution.
  • Fixed multiline /g handling for ^ and $.
  • Fixed Time::HiRes operator overrides and internal temporary-variable initialization.
  • Improved list assignment and scalar type-resolution performance.
  • Added automatic handling for JVM method-size limits.

PerlOnJava 5.44.0 is a substantial step toward running modern Perl applications and CPAN modules directly on the JVM while preserving the project's single-JAR deployment model.

See the full changelog and documentation.