Skip to content

v2.0.0: Towards a Complete Perl Port on the JVM

Compare
Choose a tag to compare
@fglock fglock released this 28 Nov 17:05
· 634 commits to master since this release

v2.0.0: A Major Leap Towards a Complete Perl Port on the JVM 🚀

With v2.0.0, we mark a significant milestone in the journey of implementing Perl on the JVM. This release focuses on expanding core module support, introducing advanced language features, and bridging compatibility gaps with the native Perl ecosystem.

New Features

Core Perl Modules Added (Unmodified):
    File::Basename, File::Find, Data::Dumper, Term::ANSIColor, Time::Local, HTTP::Date, HTTP::CookieJar.

Additional Module Support:
    Cwd, File::Spec, File::Spec::Functions, HTTP::Tiny.

Feature Pragma (use feature): Implemented support for:
    fc, say, current_sub, isa, state, try, bitwise, postderef.

Hash-like Stash Access:
    $namespace::{entry} to access the symbol table directly as a hash.

Stash Constants:
    Define constants in the stash: $constant::{_CAN_PCS} = \$const;.

Enhanced Subroutine Handling:
    Check existence: exists &sub.
    Check definition: defined &sub.

Pragma Improvements:
    builtin: Added true, false, is_bool.
    re: Added is_regexp.
    vars: Introduced support for the vars pragma.

Class and Method Resolution:
    Added support for SUPER::method.

Default Subroutine Handling:
    Implemented AUTOLOAD.

Operators:
    Added stat, lstat (with some fields returning undef where JVM limitations apply).
    Directory operators like opendir, readdir, and closedir.

Regex Enhancements:
    Added patterns: [[:ascii:]], [[:print:]], (?#comment).
    Introduced the /xx regex modifier.

Work in Progress

While this release significantly narrows the gap between Perl and its JVM port, several features are still under development:

lexical_subs feature.
Network-related operators: socket, bind, etc.
Compatibility with use VERSION and require VERSION.
Lexical scoping for warnings, features, strictness, and UTF-8 source code.
Operators: truncate, seek.
Preprocessor directives: # line.
Legacy support: use subs.
Modules: Getopt::Long, JSON.
Subroutine prototypes.

Looking Ahead

Version 2.0.0 is not just a feature-rich release but a clear statement of progress towards a full-featured, robust Perl runtime on the JVM. With an extensive library of core modules and enhanced language capabilities, we are closer than ever to making the JVM a viable and performant platform for Perl development.