1. 11
  1.  

  2. 2

    One of the things that makes me much happier hacking on the FreeBSD kernel than Linux: FreeBSD adopted an acquire / release semantics that was fairly trivial to map to C/C++11 atomics. I’ve replaced the FreeBSD kernel atomics header with a trivial wrapper around a standard C <stdatomic.h> and it works on weak memory-model systems. In contrast, Linux basically mapped the set of barrier instructions present in the Alpha to macros and made other architectures define the subset that were necessary. I (and my C compiler) find this much harder to reason about. It also means that it’s much easier to bridge to other languages with a modern memory model.