Enhancements for OS/390 Version 2 Release 10 Language Environment include the following:
- Extra Performance Linkage(XPLINK)
The Hot Topics newsletter provides an article on Using XPLINK to improve C/C++ program performance.
Language Environment provides greater flexibility in application development on OS/390 with XPLINK support. XPLINK is an enhanced linkage between programs that can significantly improve the performance of your C and C++ programs. This new linkage addresses many issues that you may have in application environments that have frequent calls between small programs.
XPLINK offers the following benefits to your application environment:
- Improved performance for C and C++ subroutine linkage
- Improved performance through reduction in function size
- Increased ease in porting new applications to S/390
XPLINK versions of the following are provided:
- The compiled locale objects and of the code set converter programs
- The C curses archive file, libcursesxp.a
The primary goal of XPLINK is to make subroutine calls as fast and efficient as possible by removing all nonessential instructions form the main program path.
XPLINK can significantly speed up the linkage for C and C++ routines by using a downward-growing stack and by passing parameters in registers. It includes support for calls to functions in Dynamic Link Libraries (DLLs) and compatibility with old code.
XPLINK can also reduce the size of the program that is loaded into memory, allowing your system programmers to fit more functions into memory. This is especially effective for the typically small functions in C++. XPLINK reduces the function footprint as much as possible.
XPLINK introduces a common linkage for C and C++. When all functions are compiled with XPLINK, you can use function pointers without restriction. Casting of integers to function pointers will work as on other platforms. This can ease the porting of new applications to S/390.
The STACK and THREADSTACK run-time options control the allocation of both the standard linkage upward-growing and XPLINK downward-growing stacks.
The THREADSTACK run-time options replaces the NONIPTSTACK run-time option. The NONIPTSTACK run-time option is deprecated but remains for compatibility, but without the XPLINK downward-growing stack support.
Debug Tool supports the debugging of applications that use the XPLINK convention.
For more detailed information on XPLINK, see Language Environment Programming Guide.
- Downward Compatibility
The Hot Topics newsletter provides an article on Downward compatability in Language Environment - Problem solved!.
OS/390 Release 10 Language Environment provides downward compatibility support. Assuming that you have met the required programming guidelines and restrictions, described in Language Environment Programming Guide , this support enables you to develop applications on higher release levels of OS/390 for use on platforms that are running lower release levels of OS/390.
For example, a company may use OS/390 Release 10 with Language Environment on a development system where applications are coded, link-edited, and tested, while using any supported lower release of OS/390 Language Environment on their production systems where the finished application modules are used.
Downward compatibility support is not the roll-back of new function to prior releases of OS/390. Applications developed that exploit the downward compatibility support must not use any Language Environment function that is unavailable on the lower release of OS/390 where the application will be used.
The downward compatibility support includes toleration PTFs for lower releases of OS/390 to assist in diagnosing applications that do not meet the programming requirements for this support. (Specific PTF numbers can be found in the PSP buckets.)
The downward compatibility support provided by OS/390 Release 10 and by the toleration PTFs does not change Language Environment's upward compatibility. That is, applications coded and link-edited with one release of OS/390 Language Environment will continue to run on later releases of OS/390 Language Environment without the need to recompile or re-link edit the application, independent of the downward compatibility support.
- Large File Support
Language Environment provides large file support for 31-bit applications that will improve porting capabilities of C/C++ applications accessing HFS and NFS files larger than 2 GB. This is done by changing some C run-time library I/O functions to support the long long data type for recording file offsets.
- CEEGPID Improvement
The CEEGPID callable service now provides a fully programmable byte-oriented interface, mapping the Language Environment product ID, version, release, and modification levels in the fullword value returned as CEE_Version_ID.
- semop with Timeout Transform
Language Environment provides a timer parameter to control the performance of signals based on semop() and msgrcv() functions.
- Additional National Language Support
Language Environment provides code pages for:
- IBM-1390 Japanese
- IBM-1399 Japanese
- IBM-1364 Korean
- sysconf performance
Language Environment provides sysconf functions to allow for more data to be collected and to improve sysconf performance.
- Retrieval of Machine ID
Language Environment provides a C function to retrieve the CPUID of the current system.
- Changed ABTERMENC Run-Time Option Default
The default value for the ABTERMENC run-time option is changed from RETCODE to ABEND in OS/390 V2R10. This support was also optionally provided in OS/390 V2R9. Please note that if the same default behavior is expected as in previous releases, the default for the ABTERMENC run-time option must be set to RETCODE.