Table of Contents
Audience: developers and operations engineers running PL/I applications migrated with Heirloom. This page tracks notable changes to the runtime — newest first — covering PL/I data types and storage, built-in functions, and embedded SQL, CICS, and IBM MQ behavior. For what each capability does, see the related runtime articles linked at the end.
Overview
This page records notable changes to the Heirloom PL/I runtime, most recent release first. Each entry lists the runtime behaviors added or fixed in that release, so teams running migrated PL/I workloads on Java can see what changed and decide when to move to a newer runtime build.
The runtime is the stage that executes the Java produced by the compiler; how your PL/I source is translated into Java is covered by the compiler documentation. Changes below affect runtime execution — data types, storage, built-ins, and CICS/MQ/SQL behavior — not code generation or deployment.
How to read these notes
- Releases are listed in reverse-chronological order — the most recent build is at the top.
- Added covers new runtime capabilities or supported behavior. Fixed covers corrected runtime behavior. Breaking flags a change that may require updates to existing applications or configuration.
- Unless an entry is marked Breaking, releases preserve backward compatibility with existing applications.
- Version numbers follow a
YY.M.Dscheme (for example,26.6.16was published on June 16, 2026). To pick up a fix or feature, upgrade your runtime to that version or later and redeploy.
2026 Releases
26.6.16 — June 16, 2026
Added
- Long-running CICS and MQ workloads now use a stable, deterministic internal memory layout by default, further reducing memory growth over extended runs.
Fixed
-
ADDRof a non-array structure member now returns the correct address instead of being offset incorrectly. - Comparison operators on character strings now treat an unset value as an empty string, matching PL/I semantics, instead of raising an error — removing a class of failures that could occur inside error-handling paths.
- Arrays of structures that contain a pointer or entry-variable member now keep each element's value independent, so assigning to one element no longer affects the others.
-
ADDRof a character-string structure member now correctly references that member's own storage.
26.6.9 — June 9, 2026
Added
-
HBOUND/LBOUNDnow work correctly on arrays nested inside structures. - Multi-row
EXEC SQL INSERTfrom an array of structures is now supported, includingDECLARE GLOBAL TEMPORARY TABLE. See Supported SQL Features.
Fixed
- Substantially reduced memory growth in long-running CICS and MQ workloads, including transactions with nested
EXEC CICS LINKchains, eliminating out-of-memory conditions seen under sustained load. - Improved handling of
BASEDpointer and structure references so referenced storage is reattached correctly when a new reference is established.
26.6.2 — June 2, 2026
Added
- Improved memory management for
EXEC CICS GETMAINand shared-storage usage, reducing memory growth over long-running transactions.
Fixed
- Resource cleanup for nested
EXEC CICS LINKchains now occurs reliably, preventing memory leaks across linked programs.
26.5.25 — May 25, 2026
Fixed
- Corrected isolation between a
BASEDpointer and the structure it references, preventing one from corrupting the other's content.
26.5.12 — May 12, 2026
Fixed
- Corrected serialization of arrays of structures — element separators and per-element field offsets — so array data is read and written accurately.
- Fixed duplicate-field handling in nested structure access, ensuring nested fields resolve to the correct storage.
26.5.5 — May 5, 2026
Fixed
- Corrected field-offset resolution for inner structures, including
LIKE-based andUNIONstructures, fixing reads and writes within nested structures. - Fixed
BASEDcommunications-area fields that follow an array returning incorrect data.
26.4.28 — April 28, 2026
Fixed
- Corrected element offsets for
LIKE-based structures so the last array element's fields read back correctly. - Fixed offset calculation for structures containing nested groups, so all nested fields are accounted for.
-
STG()now returns the correct storage size forPICTUREitems.
26.4.21 — April 21, 2026
Added
- Automatic cleanup of program-scoped resources when a transaction returns from
EXEC CICS LINK, reducing memory growth in long-running CICS workloads.
Fixed
- Resolved field-offset miscalculations for
LIKE-based nested structures, inner structures, and individual array elements.
26.4.7 — April 7, 2026
Added
- Improved parameter handling for pointer-based
EXEC CICS RETRIEVE SEToperations.
Fixed
- Corrected offset handling for
BASEDvariables referenced through nested pointers, so they resolve to the right storage location.
26.3.31 — March 31, 2026
Added
- Added support for
ALLOCATEofCONTROLLEDarrays.
Fixed
- Fixed population of
LIKEinner structures that are members of an array, which previously failed to initialize correctly. -
DIMnow resolves correctly for members of nested structures.
26.3.24 — March 24, 2026
Fixed
-
DIMnow returns the correct dimension for members of group structures, including nested hierarchies.
26.3.17 — March 17, 2026
Fixed
- Corrected storage sizing for packed-decimal
FIXED DECIMAL(p,s)items for accurate representation.
26.3.3 — March 3, 2026
Fixed
- Structures declared with the
LIKEattribute now resolve their field layout at runtime by matching field names against the parent structure, so member references read and write at the correct positions — matching mainframe PL/ILIKEsemantics.
26.2.24 — February 24, 2026
Added
- Added the
BETWEENbuilt-in function for range checking.
Fixed
- Corrected field positioning for inner structures referenced through a
BASEDdeclaration, so member values resolve at the right offsets.
26.2.19 — February 19, 2026
Added
- Improved reliability of database and messaging work under CICS:
EXEC SQL, SQL cursor, and MQ operations now perform the correct task-mode transitions, and concurrent transactions overlap their I/O for better throughput.
26.2.17 — February 17, 2026
Fixed
- Clearing a populated array of structures now resets every element (numeric fields to zero, character fields to spaces), so arrays reused across iterations in batch loops no longer retain stale values from a prior record.
26.2.10 — February 10, 2026
Fixed
- Fixed an error when assigning to a standalone instance of an inner structure created with the
LIKEattribute.
26.2.5 — February 5, 2026
Fixed
- Programs using
BASEDwith an integer-valued method call now build cleanly instead of failing the build.
26.2.3 — February 3, 2026
Fixed
-
BIT(1)boolean fields inside structures are now read and written correctly.
26.1.27 — January 27, 2026
Fixed
- Resolved a failure when running programs that pass a communications area (
COMMAREA) that had not yet been populated.
26.1.20 — January 20, 2026
Added
-
LIKEdeclarations on substructures are now handled correctly, so structures definedLIKEanother lay out their storage as expected.
Fixed
- Arrays of character strings within a structure are now correctly populated after an
EXEC SQL FETCH.
2025 Releases
25.12.23 — December 23, 2025
Added
-
EXEC CICS READ FILEnow supports theINTOoption.
Fixed
-
BASEDarray access that runs past the end of allocated storage now raises a controlledSUBSCRIPTRANGE-style condition instead of behaving unpredictably, and array/structure operations are faster.
25.12.16 — December 16, 2025
Fixed
- Repeated pointer assignments no longer cause a stack overflow.
25.12.9 — December 9, 2025
Added
- New
MEMCONVERTbuilt-in for in-memory (EBCDIC/ASCII) data conversion.
Fixed
- Corrected pointer assignment so that addresses computed via
ADDRresolve to the right location within arrays and complex structures. - Hardened array serialization: correct buffer positioning when reading structures from byte data, and proper handling of unset values in 2-byte integer arrays.
25.12.2 — December 2, 2025
Added
-
EXEC SQLcalls now work against databases that cannot describe input parameters, improving cross-vendor compatibility. - The
STRINGbuilt-in now supports concatenating fields of array elements via qualified field names. - All
EXEC CICScommands now acceptRESP/RESP2, with or without explicit parameters.
Fixed
- Array handling hardened: support for arrays with a lower bound of
0, accurate serialization of 2-byte integer and boolean fields, and safe handling of null pointers when reading structures from byte data. - Faster array initialization.
-
EXEC CICS LINKnow correctly populates passed structure storage. - Prevented an intermittent failure during concurrent SQL cursor use.
25.11.26 — November 26, 2025
Fixed
- Correctly detect
VARCHARoutput parameters from stored procedures and apply the proper storage offset. - SQL connections and declared cursors are now preserved across a
SYNCPOINT, so cursors are no longer lost when the connection is refreshed.
25.11.25 — November 25, 2025
Added
-
EXEC CICS STARTnow supports theRESP2attribute.
Fixed
- Resolved a memory leak in long-running
EXEC CICSapplications where byte-backed pointers accumulated over time.
25.11.18 — November 18, 2025
Added
- Procedure calls now support structure parameters that use different aliases.
- Initial support for the SQL
TRUNCATEstatement. -
EXEC CICS SYNCPOINTnow acceptsRESPandRESP2.
Fixed
- Picture assignments with an assumed decimal point (
V) now correctly skip the comma position. - Assigning a picture value to a
CHARtarget with non-numeric data no longer raises aCONVERSIONerror. -
EXEC SQLoperations now automatically request a fresh database connection when a closed one is detected.
25.11.11 — November 11, 2025
Added
- Structure-to-structure assignment by name now works when the two structures have different field counts.
Fixed
- Assigning a picture value to a
CHARtarget now handles non-numeric data with byte-copy semantics, preventingCONVERSIONerrors.
25.11.4 — November 4, 2025
Fixed
-
EXEC CICS GET CONTAINERnow correctly calculates offsets and lengths when populating structures and arrays, so data lands in the right fields. - Bit-string and boolean fields are now sized and positioned correctly within structures.
25.10.28 — October 28, 2025
Added
- Added multiplication for picture-formatted and decimal values, including floating-point operands.
Fixed
-
EXEC CICScontainer operations now handle character strings correctly, with proper trimming and encoding. - Picture specifications containing multiple decimal points now format and parse values correctly.
25.10.14 — October 14, 2025
Added
- Character-string parameters passed
BY REFERENCEto procedures now use the caller's storage directly, preserving updates back to the caller. - Newly created character strings are now space-filled rather than null-filled, matching expected PL/I behavior.
Fixed
- Converting a null decimal value to a string no longer raises an error.
- Pointer assignment now resolves the correct offset for nested structures, including structures nested inside array elements.
- Corrected multi-dimensional array initialization and element handling, and applied the correct default decimal scale.
25.10.7 — October 7, 2025
Added
- Faster runtime through cached field, structure-length, and array-size metadata, with array byte generation deferred until needed.
Fixed
- Pointer offset calculations for nested structures are now accurate, and
ADDRof a top-level structure works correctly.
25.9.30 — September 30, 2025
Added
- Character-string values now integrate directly with
EXEC SQLcalls.
Fixed
- Array bulk assignment now handles character strings with correct byte alignment, preventing data corruption.
25.9.23 — September 23, 2025
Added
- The
STRINGbuilt-in now supports array destinations. - Added lambda-based
ENTRYsupport, including entries that wrap value-less routines.
Fixed
- Corrected decimal conversion for picture-formatted input.
- Structure assignment now properly resets array fields in nested structures, and array string assignment handles trailing/empty spaces correctly.
-
BASEDoffset calculation now includes the first array element correctly. -
EXEC SQL PREPAREnow works correctly for cursors declared on a prepared statement.
Related articles
- Understanding Your Migrated PL/I Application — what the product is and how your application runs.
- How SQL Executes in a Migrated PL/I Application and How Heirloom Handles Concurrency and I/O Overlap.
- Supported CICS Features, Supported SQL Features, Supported MQ Features, and Supported PL/I Data Types.
0 Comments