Multi-phase init extension modules may now indicate that they support
running in subinterpreters that have their own GIL. This is done by using
Py_MOD_PER_INTERPRETER_GIL_SUPPORTED
as the value for the
Py_mod_multiple_interpreters
module def slot. Otherwise the module, by
default, cannot be imported in such subinterpreters. (This does not affect
the main interpreter or subinterpreters that do not have their own GIL.) In
addition to the isolation that multi-phase init already normally requires,
support for per-interpreter GIL involves one additional constraint:
thread-safety. If the module has external (linked) dependencies and those
libraries have any state that isn't thread-safe then the module must do the
additional work to add thread-safety. This should be an uncommon case.