QtCS2024 Error handling: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Created page with "==Session Summary== ==Session Owners== ==Notes== Category:QtCS2024")
 
m (Fixed boost links)
 
(2 intermediate revisions by 2 users not shown)
Line 2: Line 2:


==Session Owners==
==Session Owners==
Volker Hilsheimer
Note taker: Thiago


==Notes==
==Notes==
Intro: we already have too many attempts at this, going back at least as far back as 2017.
[[File:QtCS2024 Error Handling.pdf|alt=Proposal to use Sy Brand's std::expected implementation in Qt|center|thumb]]
Volker's proposal:
* use the C++17-compatible full implementation by Sy Brand at https://github.com/tartanllama/expected
** Licence: CC0 (QtC legal needs to confirm it's ok to use even for commercial, but Thiago thinks it is [but he isn't a lawyer])
** Includes things that even most of Standard Library implementations don't yet
* import into Qt
* use it internally


Should we use it in public API?
* If we do, then we can't switch to <tt>std::expected</tt> (C++23) before at least Qt 7.0
* It becomes part of our ABI
* Shouldn't be named <tt>q23::expected</tt> because it conveys the wrong message
* Do we need to use it in public API?
** No, we don't '''need''' it
** But it's very useful for that; the type is designed for use in interface boundaries
* Suggestion:
** Use it internally ''first'' so we gain experience with its issues and how to use it
** Then, later, make it public to use it
Alternatives:
* [https://www.boost.org/doc/libs/1_79_0/libs/leaf/doc/html/index.html Boost LEAF]
* [https://www.boost.org/doc/libs/1_85_0/libs/outcome/doc/html/index.html Boost Outcome]


[[Category:QtCS2024]]
[[Category:QtCS2024]]

Latest revision as of 11:45, 6 September 2024

Session Summary

Session Owners

Volker Hilsheimer Note taker: Thiago

Notes

Intro: we already have too many attempts at this, going back at least as far back as 2017.

Proposal to use Sy Brand's std::expected implementation in Qt

Volker's proposal:

  • use the C++17-compatible full implementation by Sy Brand at https://github.com/tartanllama/expected
    • Licence: CC0 (QtC legal needs to confirm it's ok to use even for commercial, but Thiago thinks it is [but he isn't a lawyer])
    • Includes things that even most of Standard Library implementations don't yet
  • import into Qt
  • use it internally

Should we use it in public API?

  • If we do, then we can't switch to std::expected (C++23) before at least Qt 7.0
  • It becomes part of our ABI
  • Shouldn't be named q23::expected because it conveys the wrong message
  • Do we need to use it in public API?
    • No, we don't need it
    • But it's very useful for that; the type is designed for use in interface boundaries
  • Suggestion:
    • Use it internally first so we gain experience with its issues and how to use it
    • Then, later, make it public to use it

Alternatives: