Split up LibAFL-bolts into reusable libraries
We have a bunch of cool libs hidden inside libafl-bolts. Let's break them apart for people to use individual components outside of libafl more easily.
In general, I propose the following libs (renamed according to crates.io name availability), with descriptions:
shmem: Shared Memory support for Windows, Linux, MacOS, *nix
signal-handler: exception handling library for raw &unsafe exception/crash handling
fast-rands: Non-cryptographically secure (but fast) RNGs
anymap: Map to store and retrieve types, SerDe compatible
build_id2: Updated and maintained build id library
core_affinity2: Updated and maintained core_affinity library with larger OS support
llmp: Low-level message passing: A lockfree IPC library for many-to-one - one-to-many messages
minibsod: Write stack traces on crashes
ownedref: Wrappers that abstracts references (or pointers) and owned data accesses, that deserialize to owned values
tuple_list_ex: Additional methods for compiletime tuple_lists
libafl-simd: SIMD acceleration
libafl-bolts: all the rest
We probably need to move all crates to a ./crates sub folder first
And I would strongly recommend having a cargo-release CI. I will have a look recently if I find some extra time.
Aslo there are actions to automatically generate release notes, which makes each release easier.