🛠️ P3/COBOL 25.1.0-SNAPSHOT is available for preview.
Release Notes
25.1

Release notes - P3/COBOL Compiler - Version 25.1

General information

P3/COBOL 25.1 requires Java 25, designated LTS by the OpenJDK project, and supports later Java releases. Testing used the latest versions from the following binary providers:

on Windows, Linux, and macOS. Other OpenJDK distributions from providers such as Oracle® and IBM® should also work with P3/COBOL 25.1, but verify behavior on one of the tested platforms above before reporting a potential problem.

💡

Compiled class files target Java 25 bytecode and will not load on earlier JVMs.

Migration from 25.0.x to 25.1

Programs written for the most recent P3/COBOL 17.1 release do not generally require source changes to run on 25.1. Update the runtime and build environment as follows.

Java Runtime and Bytecode

Install a Java 25 (or later) JDK and point JAVA_HOME / P3_JAVA_HOME at that installation. Rebuild COBOL and Java artifacts with the 25.1 toolchain so generated classes match the Java 25 class-file format.

Java Options

Use the Java 25 and later options.

Eclipse P3/COBOL launch configurations add the required JVM options automatically by default. Java Application launch configurations can opt in to the same behavior through the P3/COBOL launch support. Applications launched outside Eclipse must supply those options explicitly.

Native Access

The <native-access-enabled> runtime option continues to direct the runtime to use restricted methods for access to native, non-Java resources when the JVM is launched with --enable-native-access=ALL-UNNAMED.

runtime.p3c
<native-access-enabled>false</native-access-enabled>

See runtime options for details.

⚠️

This option is required to be set to true, to enable P3/COBOL CALLs to native libraries!

Indexed File Volumes

P3/COBOL 25.1 stores MVCC indexed-file volumes using a newer H2 MVStore on-disk format. Volumes created by P3/COBOL 17.1 or by earlier 25.0 builds (designated "25.0-" in this document) that used the legacy format are rewritten to the current format the first time they are opened, unless automatic rewrite is disabled. Offline conversion is also available through the volume utility. See Upgrading Existing MVCC Volumes and rewrite-volume.

Highlights of this Release

✨ Platform

This release establishes Java 25 as the minimum supported platform:

  • Runtime and compiler require Java 25 (LTS) or later.
  • Generated bytecode targets Java 25.
  • Required JVM access options are those for Java 25 and later; incubating FFM module flags and --enable-preview paths used on earlier JVMs are no longer part of the supported configuration.

🛠️ Improvements

The MVCC indexed file system now uses the H2 2.4 MVStore stack. Existing 25.0- .mvc volumes are converted automatically on open (with a verified .bak_<fletcher> golden backup retained beside the volume). Operators can also run rewrite-volume offline, or disable automatic rewrite via advanced configuration.

📘 Compatibility Notes

Applications that retain .mvc volumes from P3/COBOL 25,0- should plan for a one-time volume rewrite (automatic on open by default). Keep disk space available for the golden .bak_<fletcher> copy, a temporary rewritten copy, and verification. After a successful upgrade, the rewritten volume is not readable by the 25.0- runtime.