-
-
Notifications
You must be signed in to change notification settings - Fork 330
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Asynchronous executors #913
Conversation
Cc @epi052 you may like this |
Well, the CI is broken, but I've tested the fuzzers locally and they do be worky 👍 |
This is still missing a lot of perf items and such which are likely desirable for introspection. Working on that still, but it's in a semi-stable state. |
Stages that need async support (check is complete, cross-out is deemed impossible):
Other things that need doing:
|
Is this ready to merge? |
No, I need to complete the checklist above. |
Closing this, a lot has happened since. Feel free to reopen if it's still relevant. |
This PR introduces asynchronous executors will task batching for use with asynchronous execution environments. This enables many new use cases, including (but not limited to):
The process for performing asynchronous fuzzing prefers task batching. This is done using
DeferredExecutionResult
and expects each stage to offer a batching execution where possible, e.g. for a mutational stage:DeferredExecutionResult
sDeferredExecutionResult
DeferredExecutionResult
:Because a blanket impl of
AsyncExecutor
exists for allExecutor
s with observers, synchronous executors may be used in an asynchronous pipeline at the cost of an extra clone of the observers. Additionally,AsyncBridge
may be used to use asynchronous executors in a synchronous pipeline, but may suffer execution speed due to being used without batching.