> All Python has to do is put all interpreter state into a single struct to allow for completely independent interpreter instances.
But that is not what threading means. If you want "completely independent interpreters" just fork. Threading means you share everything.
> Then the GIL can be discarded altogether
And then you start sharing variables between interpreters, and you gets lots of little baby GILs to contend with! How fun will that be? Not very.