Follow

Heirloom PL/I Runtime Release Notes

Table of Contents

  1. Overview
  2. How to read these notes
  3. 2026 Releases
  4. 2025 Releases
  5. Related articles

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.D scheme (for example, 26.6.16 was 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

  • ADDR of 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.
  • ADDR of a character-string structure member now correctly references that member's own storage.

26.6.9 — June 9, 2026

Added

  • HBOUND / LBOUND now work correctly on arrays nested inside structures.
  • Multi-row EXEC SQL INSERT from an array of structures is now supported, including DECLARE 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 LINK chains, eliminating out-of-memory conditions seen under sustained load.
  • Improved handling of BASED pointer 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 GETMAIN and shared-storage usage, reducing memory growth over long-running transactions.

Fixed

  • Resource cleanup for nested EXEC CICS LINK chains now occurs reliably, preventing memory leaks across linked programs.

26.5.25 — May 25, 2026

Fixed

  • Corrected isolation between a BASED pointer 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 and UNION structures, fixing reads and writes within nested structures.
  • Fixed BASED communications-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 for PICTURE items.

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 SET operations.

Fixed

  • Corrected offset handling for BASED variables referenced through nested pointers, so they resolve to the right storage location.

26.3.31 — March 31, 2026

Added

  • Added support for ALLOCATE of CONTROLLED arrays.

Fixed

  • Fixed population of LIKE inner structures that are members of an array, which previously failed to initialize correctly.
  • DIM now resolves correctly for members of nested structures.

26.3.24 — March 24, 2026

Fixed

  • DIM now 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 LIKE attribute 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/I LIKE semantics.

26.2.24 — February 24, 2026

Added

  • Added the BETWEEN built-in function for range checking.

Fixed

  • Corrected field positioning for inner structures referenced through a BASED declaration, 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 LIKE attribute.

26.2.5 — February 5, 2026

Fixed

  • Programs using BASED with 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

  • LIKE declarations on substructures are now handled correctly, so structures defined LIKE another 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 FILE now supports the INTO option.

Fixed

  • BASED array access that runs past the end of allocated storage now raises a controlled SUBSCRIPTRANGE-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 MEMCONVERT built-in for in-memory (EBCDIC/ASCII) data conversion.

Fixed

  • Corrected pointer assignment so that addresses computed via ADDR resolve 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 SQL calls now work against databases that cannot describe input parameters, improving cross-vendor compatibility.
  • The STRING built-in now supports concatenating fields of array elements via qualified field names.
  • All EXEC CICS commands now accept RESP / 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 LINK now correctly populates passed structure storage.
  • Prevented an intermittent failure during concurrent SQL cursor use.

25.11.26 — November 26, 2025

Fixed

  • Correctly detect VARCHAR output 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 START now supports the RESP2 attribute.

Fixed

  • Resolved a memory leak in long-running EXEC CICS applications 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 TRUNCATE statement.
  • EXEC CICS SYNCPOINT now accepts RESP and RESP2.

Fixed

  • Picture assignments with an assumed decimal point (V) now correctly skip the comma position.
  • Assigning a picture value to a CHAR target with non-numeric data no longer raises a CONVERSION error.
  • EXEC SQL operations 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 CHAR target now handles non-numeric data with byte-copy semantics, preventing CONVERSION errors.

25.11.4 — November 4, 2025

Fixed

  • EXEC CICS GET CONTAINER now 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 CICS container 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 REFERENCE to 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 ADDR of a top-level structure works correctly.

25.9.30 — September 30, 2025

Added

  • Character-string values now integrate directly with EXEC SQL calls.

Fixed

  • Array bulk assignment now handles character strings with correct byte alignment, preventing data corruption.

25.9.23 — September 23, 2025

Added

  • The STRING built-in now supports array destinations.
  • Added lambda-based ENTRY support, 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.
  • BASED offset calculation now includes the first array element correctly.
  • EXEC SQL PREPARE now works correctly for cursors declared on a prepared statement.

Was this article helpful?
0 out of 0 found this helpful
Have more questions? Submit a request

0 Comments

Article is closed for comments.
Powered by Zendesk