- Don't use volatile for thread-safety (not a good way to handle this). Use sig_atomic_t instead (int on x86 and arm). Memory barrier are still necessary, as clang can inline variable accessors.
- About global default key size and last crypto error:
  - Use clang c11_atomic_load / c11_atomic_store, as stdatomic is not available in Xcode (clang ?) for now.
  - Remove the memory barrier as, in fact, we want only to be atomic : we doesn't care about eventual re-ordering, because this functions are usefull only if written / read on the same thread. We use atomicity only to prevent corruption.
  - Enum (resolved as int by default) are already atomic in x86 / arm, so this atomic load / store are in fact no-ops. There are only there to enforce / make explict the atomicity.