PerlOnJava 5.42.2: 250k+ Tests, Perl 5.38 Class Features, System V IPC, Sockets, and More
LatestPerlOnJava reaches another major milestone: it now passes over 250,000 tests from the standard Perl test suite, bringing the project significantly closer to full Perl 5 compatibility on the JVM — all delivered in a single JAR file. (“Perl on a JAR,” anyone?)
This release dramatically expands language support with full Perl 5.38 class features, adds complete System V IPC, brings socket programming to the JVM-backed runtime, and introduces many long-standing operators and modules that increase compatibility with real-world Perl applications.
🚀 250,000+ Tests Passed
PerlOnJava now successfully runs a quarter million tests, validating more built-ins, syntax forms, modules, and edge-case behaviors than ever before.
This is a major jump from v5.42.1 and reflects extensive work on core semantics, class handling, operators, and I/O behavior.
🏛️ Perl 5.38 Class Features
This is one of the largest language expansions in the project’s history. PerlOnJava now supports the full Perl 5.38 class syntax, including:
Class Syntax & Methods
classkeyword with block syntax- Method declarations with automatic
$selfinjection - Lexical private method calls:
$self->&priv __CLASS__keyword with compile-time evaluation
Fields
- Field declarations with all sigils:
$,@,% - Constructor parameter fields:
field $x :param - Reader methods via
:reader - Default field values
- Field transformation inside methods (
$self->{field}) - Field transformation works inside string interpolation
Inheritance & Versioning
:isaattribute for class inheritance- Version checks in
:isa(Parent vX.Y) - Parent class field inheritance fully functional
Object Behavior
OBJECT(...)stringification instead ofHASH(...)- Context-aware readers for array/hash fields
ClassRegistrytracks objects
ADJUST blocks
- Fully functional with transformation logic applied
Together, these features allow modern Perl OOP code to run unmodified.
🗄️ System V IPC
Full support for all major SysV IPC operators:
msgctl, msgget, msgrcv, msgsnd,
semctl, semget, semop,
shmctl, shmget, shmread, shmwrite
Perl scripts using legacy or enterprise IPC mechanisms can now run directly on PerlOnJava.
🌐 Networking and Sockets
Network Enumeration Operators
gethostent, getnetent, getprotoent, getservent,
with full sets of set*ent and end*ent functions.
Socket Operators
socket, bind, listen, accept, connect, send, recv,
shutdown, socketpair, setsockopt, getsockopt,
getsockname, getpeername
Socket.pm
The full Socket module is now included, with constants and helper functions.
🧰 New Operators, Syntax, and Features
alarmwith working$SIG{ALRM}pipeoperatordo \&subroutinedo $filehandle- Declared references:
my \$x,my(\@arr),my(\%hash) - Subroutines declared
my,state, orour - File descriptor duplication in
open:
<&,>&,<&=,>&= formatstatements andwriteoperatorformlineoperator and$^Aaccumulator- Special variables:
@{^CAPTURE},${^LAST_SUCCESSFUL_PATTERN} - Pack format:
x - Single-quote as a package separator
- Dereferencing via
$$var{...}and$$var[...]
📦 New Modules
StorableexperimentalUnicode::UCD
These additions increase compatibility with CPAN modules and modern Perl codebases.
🐞 Bug Fixes
- Correct behavior for regex
/r - Fixed transliteration with octal values
- Fixed nested heredocs
PerlOnJava 5.42.2 is one of the most substantial compatibility steps to date — with modern class features, extensive system interfaces, network support, and hundreds of thousands of validated test cases. The project continues moving toward full Perl 5 behavior while remaining a single, self-contained JAR file.
Explore the project:
https://github.com/fglock/PerlOnJava