We could think about moving to a newer version and updating the standard.  I'm 
using gcc 4.9 with my work builds, but more modern compilers everywhere else 
(and is be willing to update the work compiler).

One of the cons is that it makes our code less portable. When we update the 
minimum required compiler (in Linux) then we use a toolchains with a new libc 
version, meaning MXNet could not be used on older platforms without using 
docker or virtualization.  In our case updating to a cpp17 compiler might mean 
dropping centos5 or Ubuntu 14.04 support.

If you look at CUDA releases as an example the continually releases binaries 
compiled against older toolchains to support libc on most platforms.

What are the features you'd like to see in C++17?  I'd recommend we call out 
interesting features and then see what compiler support we would need to use 
the feature.  It could be the case that the feature is supported in a fairly 
old compiler version.

If we want to immediately modernize the codebase, I've noticed that their are 
actually a few C++14/11 features we could be using but aren't.  (Clang-tidy 
lists a number of them in each build).  We could start with those.

On Aug 27, 2019 2:53 AM, Leonard Lausen <leon...@lausen.nl> wrote:
Hi,

"Currently, we only support gcc-4.8 build." [1]

Do we ever want to change this? gcc-4.8 is now available since more than
6 years and a lot has happened during that time. Also platforms have
upgraded their default compiler versions, and gcc-7 is now commonly
available (eg. Ubuntu 18.04 LTS, Amazon Linux 2). With gcc-7 we could
for example rely on C++17.

Wikipedia says:
- GCC since version 7 has complete support for C++17.
- Clang 5 and later implement all the features of C++17.
- Visual Studio 2017 15.7 (MSVC 19.14) supports almost all of C++17.

As Mu mentioned "Conservatism is not an option" if we want to bring
MXNet forward. The benefits of 6 years of work on compilers as well as
C++ ISO committee work may help us with that.

Should we adapt a newer compiler toolchain and perhaps C++17 standard?

Best regards
Leonard

[1]: 
https://github.com/apache/incubator-mxnet/blob/681cfc4/tools/dependencies/README.md


On Aug 27, 2019 2:53 AM, Leonard Lausen <leon...@lausen.nl> wrote:
Hi,

"Currently, we only support gcc-4.8 build." [1]

Do we ever want to change this? gcc-4.8 is now available since more than
6 years and a lot has happened during that time. Also platforms have
upgraded their default compiler versions, and gcc-7 is now commonly
available (eg. Ubuntu 18.04 LTS, Amazon Linux 2). With gcc-7 we could
for example rely on C++17.

Wikipedia says:
- GCC since version 7 has complete support for C++17.
- Clang 5 and later implement all the features of C++17.
- Visual Studio 2017 15.7 (MSVC 19.14) supports almost all of C++17.

As Mu mentioned "Conservatism is not an option" if we want to bring
MXNet forward. The benefits of 6 years of work on compilers as well as
C++ ISO committee work may help us with that.

Should we adapt a newer compiler toolchain and perhaps C++17 standard?

Best regards
Leonard

[1]: 
https://github.com/apache/incubator-mxnet/blob/681cfc4/tools/dependencies/README.md

Reply via email to