Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal: Investigate C++20 #63

Open
BrianMichell opened this issue Aug 2, 2024 · 0 comments
Open

Proposal: Investigate C++20 #63

BrianMichell opened this issue Aug 2, 2024 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@BrianMichell
Copy link
Collaborator

Motivation

  • Keeping up with modern code and standards to reduce overall technical debt.
  • More recent versions of Tensorstore explicitly support C++20.

Expected changes for C++20 support

GCC supports the majority of the C++20 Language Features, but for full (supported) language features we will need to bump to GCC13.

Clang appears to be lagging behind GCC in C++20 support with a notable lack of Modules support. All other sections claim at least partial support. For full (supported) language features we will need to bump to Clang 19.

Staying modern

GCC notes the ISO C++23 standard as evolving and will not attempt to maintain backward compatibility. As such it does not seem sensible to include in this investigation.

Known C++20 features that are lacking or partial

GCC

Clang

What must happen

This is intended to be a living document as requirements are brought to light

  • Basic compilation with GCC13 and Clang19.
  • Validation that defined API behavior remains constant across compilers and C++ versions.
  • Regression testing between C++ versions.
  • Support for multiple C++ versions in CMake and API as needed.
  • Updates to documentation for supported and tested versions.
  • CI/CD pipelines updates for supported versions.
  • A clear and public versioning strategy to reduce technical debt including supported compiler deprecation.
  • Collect user/community feedback from users.
@BrianMichell BrianMichell added the enhancement New feature or request label Aug 2, 2024
@BrianMichell BrianMichell self-assigned this Aug 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant