C++ Logo

SG16

Advanced search

Subject: Re: [SG16-Unicode] [isocpp-direction] DG answer to the Unicode Direction paper (P1238R0)
From: Tom Honermann (tom_at_[hidden])
Date: 2019-01-23 23:01:54


On 1/21/19 11:06 PM, Hubert Tong wrote:
> On Wed, Jan 9, 2019 at 11:21 PM Tom Honermann <tom_at_[hidden]
> <mailto:tom_at_[hidden]>> wrote:
>
> The constraint I'd most like feedback on is 1.1 (The ordinary and
> wide execution encodings are implementation defined).  If
> Microsoft were to support use of UTF-8 as the execution encoding
> (something they are making steps towards), it may be conceivable
> that we could standardize the execution encoding as UTF-8 and have
> that actually reflect existing practice (implementations would
> presumably continue to offer support for legacy encodings as an
> extension). However, this would leave some platforms behind; z/OS
> being the primary example.  z/OS continues to maintain a
> significant presence in the industry (as I understand it, good
> numbers are hard to find), but IBM has not been keeping up with
> C++ standards.  Some guidance regarding how to think about
> platforms that are not keeping up with the standard would be
> appreciated.
>
> IBM offers C++11 compilers compiling EBCDIC applications from EBCDIC
> source on z/OS. IBM also produces offerings of applications based on
> LLVM on z/OS, which would necessitate advances in the C++ support on
> the platform. Note that one of the advantages C++ has on z/OS over
> Java is that it is capable of communicating with the EBCDIC-based
> libraries and system services without a translation layer. If "C++
> leaves no room for another language between itself and the hardware",
> then C++ for z/OS would have EBCDIC execution character sets.

As best I've been able to tell, IBM offers two C++ compilers for z/OS:

  * z/OS XL C/C++ [1].  The latest version is 2.3 released in September
    2017.  This release includes some, but not all, features of C++11. 
    I've heard rumors that IBM internally has a C++11 compliant version
    of this compiler that is not publicly available (due to ABI
    differences with the publicly released version), but I don't know if
    that is true.
  * njsc/njsc++.  This compiler is included with the IBM SDK for
    Node.js.  I've so far been unable to find any documentation
    regarding this compiler; just statements in the accessible Node.js
    SDK docs indicating its existence and that it has C++11 language
    support.

I've also found hints [2] that IBM has internally ported LLVM and Clang
to z/OS as part of its Swift effort.  For all I know, the njsc/njsc++
compiler could be related to this LLVM/Clang port.

I've been unable to find any evidence of IBM working towards providing a
C++14 or C++17 (or C++20) compliant compiler for z/OS.

It appears that Dignus, LLC provides a C++14 compiler [3] for z/OS based
on LLVM.  The latest version of their compiler, Systems/C++, is 2.10
released in July of 2017.  Their website doesn't indicate whether or
when a new release should be expected.

I find the above a bit bleak.  If IBM isn't going to invest in
supporting current and future C++ standards, then I find it unnecessary
for the C++ standard to continue supporting implementation variances
that are particular to z/OS; particularly when removing such variances
could bring benefits for all other implementations.  I'm sure you can't
comment publicly on internal IBM product plans, but is there something
that can be said about the prospect for C++ compilers on z/OS that
implement the latest standards?

Tom.

[1]: https://www.ibm.com/us-en/marketplace/xl-cpp-compiler-zos
[2]:
https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20170508/004572.html
[3]: http://www.dignus.com/



SG16 list run by sg16-owner@lists.isocpp.org