microsoft / vcpkg

C++ Library Manager for Windows, Linux, and MacOS
MIT License
23.26k stars 6.41k forks source link

[Question] How to handle C++17-only upgrades? #5337

Closed zhihaoy closed 5 years ago

zhihaoy commented 5 years ago

The next release of PEGTL (3.0.0) is going to do C++17 only. How do we handle that upgrade? Ignore users with older toolchains, keeping two versions in ports tree side by side, or what.

vicroms commented 5 years ago

The current preference in vcpkg, is to have only one port per library, and that usually means only keeping the latest release available.

However, if you feel that a large portion of the userbase won't be able to upgrade; having two different ports would be the best way to handle it (e.g.: pegtl for the latest, pegtl-27 for the pre-C++17-only version).

An example would be OpenCV which currently has a port for version 3, with a PR in progress to move the current port to opencv3 and have opencv install version 4.

zhihaoy commented 5 years ago

Sounds good. I'll let library authors decide whether to keep an older version under pegtl-27 or so.

d-frey commented 5 years ago

Major version 3 will be incompatible with previous versions, but we are planning to offer a migration guide as well as keeping changes limited and not breaking our users unnecessarily.

We would like to keep an older release of major version 2 around for people stuck with older compilers, e.g. VS2015. We would like the old package to be named pegtl-2 (not pegtl-27), as this keeps the option of a 2.8.x maintenance release if necessary.

(Major version 3.x is not yet released, we are still working on some final changes)