From APIv1 to v2
Sometime last year I took a look at the bug reports and feature
requests that had accumulated on Bordeaux-Threads and I decided it was
time to bring the code back into shape. The code had insufficient test
coverage, which had allowed bugs to make their way into releases, with
some egregious examples like with-lock-held
having incongruent
signatures on some implementations.
That wasn’t the only case though: join-thread
was inconsistently
implemented, in some cases not returning the thread function’s return
values at all, or returning only the first value. Thread termination
due to a non-local exit was sometimes ignored, and other times
signaled by implementation-specific conditions.
Fixing all the bugs would sometimes require changing the API in ways
that are backwards-incompatible so I decided to develop the new API
afresh, in a separate package. This allows migrating to the new API in
a more controlled manner: for convenience, both APIs are loaded at the
same time so .asd
files can stay the same, one only needs to switch
package imports or symbol qualifiers from package bordeaux-threads
(or bt
) to bordeaux-threads-2
(nicknamed bt2
).
The new API is mostly compatible with the old one, so most users won’t
notice the difference