1 
 2 # Structured Concurrency updates
 3 
 4 The following is a summary of the changes to `StructuredTaskScope` in the `fibers` branch
 5 of the loom repo:
 6 
 7 - The `configFunction` parameter to the 3-arg `open` is changed from
 8   `Function<Configuration, Configuration>` to `UnaryOperator<Configuration>`.
 9 
10 - `Subtask::get` and `Subtask::exception` changed to consistently throw if called from
11   any thread before the scope owner has joined.
12 
13 - `StructuredTaskScope::join` is now specified so that it may be called again if interrupted.
14 
15 - `Joiner:onTimeout` is added  with `join` method changed to invoke this joiner method if
16   a timeout is configured and the timeout expires before or while waiting. The `onTimeout`
17   throws `TimeoutException` or may do nothing. This allows for `Joiner` implementation that
18   are capable of returning a result from the subtasks that complete before the timeout expires.
19 
20 - The parameter on `Joiner::onFork` and `Joiner::onComplete` is changed from
21   `Subtask<? extends T` to `Subtask<T>`.
22 
23 - `Joiner.allSuccessOrThrow` is changed to return a list of results instead of a stream of
24   subtasks. `Joiner.allUntil` is changed to return a list of subtasks.
25 
26 - `Joiner.anySuccessfulResultOrThrow` is renamed to `anySuccessfulOrThrow`.
27 
28 - `Joiner.allUntil(Predicate)` is changed to allow `join` return the stream of all forked
29 subtasks when the timeout expires.
30 
31 - `Joiner` is no longer a `@FunctionalInterface`.