We are now using C++14

As of today we are using the C++14 standard.
Our new reference compilers are:

  • GCC 6.3.1 (Linux)
  • Clang 800.0.42.1 (macOS)

On CentOS (6&7) please use devtoolset-6 to get the proper compiler.

See https://developer.lsst.io/services/lsst-dev.html#lsst-dev-tools for updated instructions on compiling on lsst-dev, and https://developer.lsst.io/coding/cpp_style_guide.html#we-are-writing-c-14 for the new style rule.

1 Like

I guess this means that for installing the stack from source we will need GCC 6.3.1 from now on.

Does this also mean that for using the stack on CentOS 7 we need the runtime libraries of GCC 6.3.1 available on the execution machine?

A clarification would be welcome: the section of the documentation related to the RedHat / CentOS system prerequisites does not mention any particular version of the GCC compiler, so yum install gcc-c++ installs GCC 4.8.5.

1 Like

You will need a compiler that supports C++14. devtoolset-5 might work but we aren’t testing it. Base gcc for CentOS-7 definitely won’t work. We are testing with devtoolset-6 so that is the compiler we recommend for building the stack now.

@jsick should @pschella have updated the pipelines docs as well as the dev guide? Or is someone else going to fix that?

P.S. This was discussed in RFC-332.

Will w_2017_49 be built using devtoolset-6?

Yes, we’ll need to update https://pipelines.lsst.io/install/prereqs/index.html (https://github.com/lsst/pipelines_lsst_io/blob/master/install/prereqs/index.rst) and more specifically, the linked pages for each platform. I’d prefer having @pschella, @timj, or @josh do the documentation update so that it’s accurate and tested. I can review.

Alternatively, if someone can pass me notes on how to configure compilers for each platform I can draft the actual documentation.

One thing to note is that pipelines.lsst.io is formally tied to the v14_0 release still, and so it needs to continue documenting the old compilers. That said, folks do use pipelines.lsst.io to install newer versions of the stack. So I think the new compilers need to be documented in a conditional note.

I was wondering about that. It seems to me that pipelines needs a 14.0 install section and a “install the most recent weekly” type section that will evolve into the 15.0 install section.

That could work. I need to design a way to do that find of in-place fork without duplicating content.

Perhaps at this point someone involved in the technical implementation could create a documentation ticket for me on JIRA that specifies the changes needed to the current docs and I can figure out the implementation.

This sort of issue will go away once @josh and I sit down and start building pipelines.lsst.io on Jenkins so that different /v/ editions are tied directly to the code bases’s master and release tags.

This is why that wasn’t updated. Instead there is a note in the dev-guide saying: “But note that installation instructions for stack versions 14.0 and below refer to our older baseline compilers. These are now superseded by the minimum required compiler versions listed above.”

It would be good if we had versioned installation instructions indeed.

Woo-hoo! std::make_unique() here I come!