The source project of this merge request has been removed.
Fix undefined behavior
Transmuting from an immutable to a mutable reference is undefined behavior in Rust, with the exception of UnsafeCell which tells the optimizer to not draw too many conclusions. Sadly UnsafeCell::get cannot yet be used in statics (see https://github.com/rust-lang/rust/issues/51718), so this works around that by making the statics into functions and making C macros to call those.