<div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jan 24, 2019 at 12:01 AM Tom Honermann &lt;<a href="mailto:tom@honermann.net">tom@honermann.net</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF">
    <div class="gmail-m_7166301413242416467moz-cite-prefix">On 1/21/19 11:06 PM, Hubert Tong wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">
        <div dir="ltr">
          <div class="gmail_quote">
            <div dir="ltr" class="gmail-m_7166301413242416467gmail_attr">On Wed, Jan 9, 2019 at
              11:21 PM Tom Honermann &lt;<a href="mailto:tom@honermann.net" target="_blank">tom@honermann.net</a>&gt;
              wrote:<br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
              <div bgcolor="#FFFFFF">
                <p>The constraint I&#39;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.<br>
                </p>
              </div>
            </blockquote>
            <div>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 &quot;C++ leaves no room for another
              language between itself and the hardware&quot;, then C++ for
              z/OS would have EBCDIC execution character sets.<br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <p>As best I&#39;ve been able to tell, IBM offers two C++ compilers for
      z/OS:</p>
    <ul>
      <li>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&#39;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&#39;t know if that is true.<br>
      </li>
      <li>njsc/njsc++.  This compiler is included with the IBM SDK for
        Node.js.  I&#39;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.</li>
    </ul>
    <p>I&#39;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.</p>
    <p>I&#39;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.</p>
    <p>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&#39;t indicate whether or when a new release should be expected.<br>
    </p>
    <p>I find the above a bit bleak.  If IBM isn&#39;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&#39;m sure you can&#39;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?<br></p></div></blockquote><div>I expect that some lag will continue to be present, but no intention to increase the lag. All I can say is that IBM is investing in supporting today&#39;s C++ standards (and my participation on the committee should be evidence that IBM is investing in future C++ standards).<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div bgcolor="#FFFFFF"><p>
    </p>
    <p>Tom.<br>
    </p>
    <p>[1]: <a class="gmail-m_7166301413242416467moz-txt-link-freetext" href="https://www.ibm.com/us-en/marketplace/xl-cpp-compiler-zos" target="_blank">https://www.ibm.com/us-en/marketplace/xl-cpp-compiler-zos</a><br>
      [2]:
<a class="gmail-m_7166301413242416467moz-txt-link-freetext" href="https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20170508/004572.html" target="_blank">https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20170508/004572.html</a><br>
      [3]: <a class="gmail-m_7166301413242416467moz-txt-link-freetext" href="http://www.dignus.com/" target="_blank">http://www.dignus.com/</a><br>
    </p>
  </div>

</blockquote></div></div>