Repository navigation
Releases: ned14/outcome
Release list
All tests passed 32f203695dea0073722699890d8f3faca58ff9bb
Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:
All tests passed aa170c34c9969dadb37558aa6ee942aeef12ab85
Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:
All tests passed 5179c9ca7f0dd8e04ef769cdefc549b690d8adf1
Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:
v2.2.15 Boost 1.91 release
Enhancements:
-
Added the beginnings of a complete reimplementation of Experimental Outcome
from scratch, but written 100% in C. This reimplementation will be usable from
any ISO C right back to 1989, and it is 100% ABI compatible with this C++
implementation i.e. you can cast pointers to the types from one
implementation to the other if you wish, and virtual functions do correctly
call into 100% C implementations and vice versa. -
The C reimplementation required that the C++
status_code_domain's virtual
and thunk functions had to be refactored so calling them with__thiscall
would also work when called with__cdeclon all major architectures and
calling conventions. I also made them able to return failure without throwing
a C++ exception. If you have created your ownstatus_code_domain's
you will need to update your code (the refactoring is very minor), otherwise
you shouldn't notice any change. -
The C reimplementation simplified the implementation of
atomic_refcounted_string_ref,
and the C++ implementation was updated to match. The biggest change is that the
input string is now ALWAYS COPIED and is no longer amallocpointer whose
ownership is taken. If you have usedatomic_refcounted_string_refin your own
code, you'll need to refactor it to no longer allocate the input buffer using
mallocand instead pass in the originalcharbuffer. -
The complete C reimplementation is currently NOT YET FIT FOR PRODUCTION USE and
you should use instead the current, mature, C API to the C++ implementation.
The documentation currently makes no reference to the complete C reimplementation,
though if/when it becomes production ready, it will be updated. -
Finally, the C reimplementation is what is being proposed for standardisation
into the C standard library, so expect the usual renaming and other mild changes
that standards committees like to do. As I no longer serve on WG21 C++ standards,
I don't expect any further changes from that standards commitee.
Bug fixes:
- In Experimental.Outcome, the
make_status_code()ADL customisation point in
status_codekinda supported transforming between kinds of status code, but it
also kinda didn't. Now it definitely does. This fix may cause corner case breakage.
Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:
All tests passed f8e42c422ca58acab231539fb1272ee65fe02395
upd
Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:
All tests passed 2db94be7aa1c65115d1942042238317d53ab601c
Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:
All tests passed e4f14947525fac8085c6df1dfd30cdbee6ccfb1c
Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:
All tests passed 2d68740981f3302a20d6ca0c3f1bf9f07abaa686
upd
Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:
All tests passed de43eb42269b33f29aca110f786234375dbadb0a
Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:
All tests passed f86010b0963049d59884fa23aacd1edbb649614d
upd
Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies: