Skip to content

PerlOnJava 5.42.2: 250k+ Tests, Perl 5.38 Class Features, System V IPC, Sockets, and More

Latest

Choose a tag to compare

@fglock fglock released this 04 Dec 20:16
· 850 commits to master since this release

PerlOnJava 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

  • class keyword with block syntax
  • Method declarations with automatic $self injection
  • 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

  • :isa attribute for class inheritance
  • Version checks in :isa(Parent vX.Y)
  • Parent class field inheritance fully functional

Object Behavior

  • OBJECT(...) stringification instead of HASH(...)
  • Context-aware readers for array/hash fields
  • ClassRegistry tracks 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

  • alarm with working $SIG{ALRM}
  • pipe operator
  • do \&subroutine
  • do $filehandle
  • Declared references:
    my \$x, my(\@arr), my(\%hash)
  • Subroutines declared my, state, or our
  • File descriptor duplication in open:
    <&, >&, <&=, >&=
  • format statements and write operator
  • formline operator and $^A accumulator
  • Special variables: @{^CAPTURE}, ${^LAST_SUCCESSFUL_PATTERN}
  • Pack format: x
  • Single-quote as a package separator
  • Dereferencing via $$var{...} and $$var[...]

📦 New Modules

  • Storable
  • experimental
  • Unicode::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