The PerlOnJava talk from FOSDEM 2026 is now online.
PerlOnJava: A Perl distribution for the JVM
๐
Feb 1, 2026 - Flavio Soibelmann Glock
Video:
https://video.fosdem.org/2026/h2215/NGYLQZ-perlonjava_a_perl_distribution_for_the_jvm.av1.webm
The PerlOnJava talk from FOSDEM 2026 is now online.
PerlOnJava: A Perl distribution for the JVM
๐
Feb 1, 2026 - Flavio Soibelmann Glock
Video:
https://video.fosdem.org/2026/h2215/NGYLQZ-perlonjava_a_perl_distribution_for_the_jvm.av1.webm
What this means in practice:
โข Modules >10k LOC (Nikon.pm, Sony.pm, Canon.pm)
โข Subroutines >1000 LOC
โข 600 tests in 113 files โ all pass
Perl compiles to native JVM bytecode.
When a method exceeds the JVMโs 64KB limit, the compiler transparently falls back to PerlOnJavaโs high-capacity internal VM.
Project: https://github.com/fglock/PerlOnJava
296k lines of Perl code running on the JVM.
PerlOnJava milestone: Image::ExifTool 13.44 (Phil Harvey) runs unmodified.
#FOSDEM was awesome as always! Lots of action around the Perl and Raku table. Well done to everyone who volunteered! It was a blast!
We had stickers for #perl, #rakulang , @metacpan , @cpansec , @mojolicious , @the_underbar , and a bunch with #NoAI that disappeared quickly!
PerlOnJava v5.42.2 released โ now passing 250k+ tests from the standard Perl test suite.
Highlights:
- Full Perl 5.38 class features (class, fields, methods, inheritance, ADJUST, __CLASS__, โฆ)
- System V IPC (msg*, sem*, shm*)
- Sockets + Socket.pm
- New ops: alarm, pipe, formline, fd duplication in open
- New modules: Storable, experimental, Unicode::UCD
Still a single file โ true Perl on a JAR.
๐ https://github.com/fglock/PerlOnJava/releases/tag/v5.42.2
Iโll be presenting โPerlOnJava: A Perl Distribution for the JVMโ at the London Perl & Raku Workshop 2025!
๐ 29 Nov 2025
๐ International Students House, London
๐ค Talk details: https://act.yapc.eu/lpw2025/talk/7996
๐
Schedule: https://act.yapc.eu/lpw2025/schedule?day=2025-11-29
LPW is a free one-day technical conference in Central London โ hope to see you there!
PerlOnJava now passes 239,400 tests from the standard Perl test suite โ up from 150k just a month ago.
A big step toward full Perl 5 compatibility on the JVM.
๐ฎ Gamifying LLM development with GPU hours
I made a reward system where LLMs earn "GPU hours" for good practices:
- Fix blocked test: +50 hours
- Run full test suite: +5 hours
- Break the build: -50 hours
The LLM updates its balance in git after each session. Surprisingly effective at reinforcing good habits!
Yes, I'm bribing AI with compute time ๐
https://github.com/fglock/PerlOnJava/blob/master/dev/prompts/llm-rewards.json
My debugging AI writes back what worked and what failed after each session. The doc evolves based on actual experience:
"Parser changes MUST use clean shadowJar - learned the hard way"
"Validation fixes often unlock 50+ tests - prioritize these"
It's self-improving documentation. The LLM debugs itself.
https://github.com/fglock/PerlOnJava/blob/master/dev/prompts/high-yield-test-analysis-strategy.md
Major milestone for PerlOnJava v5.42.1:
150,991 official Perl tests pass on the JVM.
Added operator overloading (<=>, cmp, qr), mro, List::Util, and system ops.
A from-scratch implementation achieving performance comparable to the standard Perl 5.
๐ https://github.com/fglock/PerlOnJava/releases/tag/v5.42.1
Tested a few JAPHs in PerlOnJava today โ all worked perfectly ๐ #Perl #Java #PerlOnJava
PerlOnJava v5.42.0: 100k+ tests passed! ๐
- Full tie support (scalar, array, hash, handle)
- New ops: sysread, syswrite, kill, utime, umask, โฆ
- Regex: \N, \b{gcb}, ${^MATCH} + Perl-only props
- Modules: Encode, XSLoader, Digest::MD5/SHA, MIME::Base64, โฆ
- UTF-16 source, .pmc files, DATA handle, $^X
- Major bugfixes (sprintf, large strings, foreach globals)
๐ https://github.com/fglock/PerlOnJava/releases/tag/v5.42.0
PerlOnJava is now 1 year old - and it passes 25k+ tests!
PerlOnJava - a Perl 5 implementation on the JVM -now passes 23,177 tests from the Perl 5 test suite.
A shitpost that's been brewing in my head for a while now
PerlOnJava now has a complete implementation of `tie`
**PerlOnJava v3.1.0: Perl to JVM Bytecode!**
- Generates fast JVM bytecode from Perl code
- Perl 5.42.0 + new keywords: `all`, `any`
- Pipe, redirect, interactive input modes
- 20+ new ops incl. `system`, `exec`, `seek`
- Full sub prototypes, I/O layers, in-memory files
- Modules: `Fcntl`, `Text::CSV`, `Test`
- `make deb` for Debian packages
๐ https://github.com/fglock/PerlOnJava/releases/tag/v3.1.0
**PerlOnJava v3.0.0: Faster, Lighter, Smarter! ๐**
- On-demand code generation for faster loading
- Lower memory usage with optimized scalars
- Faster execution via JVM `MethodHandle`
- New modules: `Time::HiRes`, `Benchmark`
- `/ee` regex modifier for advanced text processing
- `Dockerfile` + `--upgrade` for smooth setup
PerlOnJava v2.3.0: Modern Perl meets the JVM! ๐
- New modules: YAML, Text::Balanced, Unicode::Normalize.
- Subroutine signatures + experimental `class` keyword.
- Regex upgrades: named captures, Unicode properties, atomic groups.
- jperl/jperl.bat wrappers for easy CLI execution.
- Chained operators, stacked file tests, here docs.
- Overloading (`""`, `0+`, bool).
Bringing Perlโs flexibility to Java ecosystems!