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.
<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-previewpaths 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.