On 2016-11-18 20:37, Marc Mutz wrote:
On Friday 18 November 2016 09:30:03 Lars Knoll wrote:
On 17/11/16 23:03, Thiago Macieira wrote:
[...]
>    But GSL is another story. If it is sensibly developed, with a promise
>    to binary compatibility for extended periods of time and no nonsense
>    stuff like inline namespaces, we could accept it. Especially the
>    header-only parts of it.
[...]
Let's wait a bit how this develops, and whether they are even interested in
keeping compatibility between versions. But it would be another
dependency, something I don't want to introduce without getting enough
benefit out of it.

The GSL is header-only. There are no BC guarantees, and, "worse", there are different implementations. All the compiler, or a static checker, cares about is the name of type: ::gsl::owner, ::gsl::non_null, ::gsl::string_span. It
does not care about the implementation.

To see how simple gsl::owner markup is to incorporate into Qt, I sat down, added it to QtGlobal and marked up QScopedPointer (incl. docs) with gsl::owner.

https://codereview.qt-project.org/178107

Anything other than gsl::owner is hitting the incompatibility wall, but, given some form of reliable detection of GSL alternatives, could be used with a Qt implementation as a fallback. In that case, Qt would only give BC guarantees for the version compiled with its own version of the GSL. This is a stop-gap measure to enable the use of more of GSL in Qt while still being bound by the current restrictive API rules. Personally, I wouldn't bother with anything but gsl::owner until those rules are relaxed to allow upstream GSL's types in the ABI.

The use of gsl::owner now also marks places where we might want to use unique_ptr in the future, reducing this amount of conceptual work when moving to Qt 6.

Thanks,
Marc

_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to