EventManager
is refactored to avoid calling function fromFuzzer
, thus we do not evaluate testcases inEventManager
anymore.- Now we have
EventReceiver
inevents
module, andEventProcessor
infuzzer
module. EventReceiver
is responsible for receiving testcases and delegates its evaluation toEventProcessor
.EventProcessor
is responsible for evaluating the testcases passed by theEventReceiver
.- Since we don't evaluate testcases in the
EventManager
anymore.on_fire
andpost_exec
have been deleted fromEventManagerHook
. - Similarly
pre_exec
has been renamed topre_receive
.
- Now we have
AsanModule
now uses abuilder()
method for constructing its instances.Monitor
is refactored. Most statistics have been extracted into an individualstats
module undermonitors
.- There is a
ClientStatsManager
to manage client statistics, and is owned byEventManager
. Most of previousMonitor
's trait methods have been moved to theClientStatsManager
. user_monitor
has been renamed touser_stats
,introspection_monitor
has been renamed tointrospection_stats
, perf-related structure definitions have been renamed, and all were moved to thestats
module.OnDiskTomlMonitor
,OnDiskJsonMonitor
,OnDiskJsonAggregateMonitor
are now no longer takes a base monitor to wrap. If you want to use multiple monitors together, simply use atuple_list
.
- There is a
MultipartInput
is now implemented as key-value tuples in aListInput
. The interface slightly changed, all functionality is maintained.- Instead of names,
MultipartInput
uses generickey
s (function names were changed accordingly). - If you don't need the keys to identify individual parts, consider using
ListInput
directly.
- Instead of names,
MmapShMem::new
andMmapShMemProvider::new_shmem_with_id
now takeAsRef<Path>
instead of a byte array for the filename/id.- The closure passed to a
DumpToDiskStage
now provides theTestcase
instead of just theInput
. StatsStage
is deleted, and it is superceded byAflStatsStage
- Renamed and changed mapping mutators to take borrows directly instead of
MappedInput
s. Seebaby_fuzzer_custom_input
for example usage- Related:
MutVecInput
is deprecated in favor of directly using&mut Vec<u8>
- Related:
MappedInputFunctionMappingMutator
andToMappedInputFunctionMappingMutatorMapper
have been removed as now duplicates ofMappingMutator
(previouslyFunctionMappingMutator
) andToMappingMutator
(previouslyToFunctionMappingMutatorMapper
) - Related:
ToOptionMappingMutatorMapper
andToFunctionMappingMutatorMapper
have been renamed toToOptionalMutator
andToMappingMutator
respectively
- Related:
Qemu
cannot be used to initializeEmulator
directly anymore. Instead,Qemu
should be initialized throughEmulator
systematically ifEmulator
should be used.- Related:
EmulatorBuilder
uses a single function to provide aQemu
initializer:EmulatorBuilder::qemu_parameters
. For now, it can be either aVec<String>
or aQemuConfig
instance. - Related: Qemu's
AsanModule
does not need any special call toQemu
init methods anymore. It is now possible to simply initializeAsanModule
(orAsanGuestModule
) with a reference to the environment as parameter. CustomBufHandlers
has been deleted. Please useEventManagerHooksTuple
from now on.
- Related:
- Trait restrictions have been simplified
- The
UsesState
andUsesInput
traits have been removed in favor of regular Generics. - For the structs/traits that used to use
UsesState
, we bring back the generic for the state. Input
is now only accessible through generic.Input
associated types have been definitely removed.HasCorpus
bound has been removed in many places it was unused before.StdMutationalStage::transforming
must now explicitly state the Inputs types. As a result,StdMutationalStage::transforming
must be writtenStdMutationalStage::<_, _, FirstInputType, SecondInputType, _, _, _>::transforming
.- The
State
trait is now private in favour of individual and more specific traits
- The
- Restrictions from certain schedulers and stages that required their inner observer to implement
MapObserver
have been lifted in favor of requiringHash
- Related: removed
hash_simple
fromMapObserver
- Related: removed
- Removed
with_observers
fromExecutor
trait. MmapShMemProvider::new_shmem_persistent
has been removed in favour ofMmapShMem::persist
. You probably want to do something like this:let shmem = MmapShMemProvider::new()?.new_shmem(size)?.persist()?;