Skip to content

Releases: ned14/outcome

All tests passed 32f203695dea0073722699890d8f3faca58ff9bb

Choose a tag to compare


Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:

All tests passed aa170c34c9969dadb37558aa6ee942aeef12ab85

Choose a tag to compare


Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:

All tests passed 5179c9ca7f0dd8e04ef769cdefc549b690d8adf1

Choose a tag to compare


Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:

v2.2.15 Boost 1.91 release

Choose a tag to compare

@github-actions github-actions released this 18 Jan 22:35

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 __cdecl on all major architectures and
    calling conventions. I also made them able to return failure without throwing
    a C++ exception. If you have created your own status_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 a malloc pointer whose
    ownership is taken. If you have used atomic_refcounted_string_ref in your own
    code, you'll need to refactor it to no longer allocate the input buffer using
    malloc and instead pass in the original char buffer.

  • 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_code kinda 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

Choose a tag to compare

upd

Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:

All tests passed 2db94be7aa1c65115d1942042238317d53ab601c

Choose a tag to compare


Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:

All tests passed e4f14947525fac8085c6df1dfd30cdbee6ccfb1c

Choose a tag to compare


Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:

All tests passed 2d68740981f3302a20d6ca0c3f1bf9f07abaa686

Choose a tag to compare

upd

Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:

All tests passed de43eb42269b33f29aca110f786234375dbadb0a

Choose a tag to compare


Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies:

All tests passed f86010b0963049d59884fa23aacd1edbb649614d

Choose a tag to compare

upd

Use the 'all-sources' tarball below, NOT the github generated one which is missing dependencies: