It is a specification with multiple implementations, some of them are even bootstrapped in Java.
Curiously, IronPython did better than anything (but still slow). Haven't tried Jython.
Compiling the whole thing with Cython was less effective than PyPy.
GIL is for safety and correctness, not speed.
Python's global interpreter lock was added for single threaded speed and c library integrations, which often can't be used multithreaded
There was some talk about removing it recentlish to improve pythons multithreaded performance and Guido said something along the lines of
> "I'll remove it as long as single threaded performance doesn't suffer"
Which nobody succeeded in
To be fair, the GC can be disabled. But it's only safe to do so when you know there are no cycles, and even when such guarantee can be had for your own code, I've never seen a library guarantee that to API clients.
No, but then you run into Go's GC and green threads. File systems fit squarely in the realms of "systems programming" (old definition [1], not new). Languages like Ada, Pascal, C/C++, Rust and D (without GC).
[1] - https://en.wikipedia.org/wiki/System_programming_language
Python is only slow if you use it wrong:
This is not true. A FUSE implementation is wanted though: https://github.com/zfsonlinux/zfs/issues/8
A good filesystem implementation requires tight memory management and good control of what happens at the OS level. I am not saying it can't be be done in python, but it clearly isn't the right tool for the job.
I meant that for a production implementation. Python is perfectly fine for a proof of concept, in fact, it may be better than jumping straight down to C. But keeping it for production is foolish IMHO.
1: I say 1.5 because there is only one false value, but it has 2 idiomatic meanings: nil (equivalent to python's None) and the empty list.
Except, it seems this is BSD-licensed, so I'm not sure how that would work in the kernel (which is GPLv2).