|
|
|
|
|
by mattbillenstein
177 days ago
|
|
Why do you consider using forkserver as the default a breaking change? This should be transparent to most users? fork() is very hard to get right as it keeps a lot of state around from the parent process you have to cleanly discard... |
|
With fork, you could pass objects that couldn't be pickled (lambdas, local functions, file handles, database connections). With forkserver, everything must be pickleable. That alone breaks thousands of repos of code.
You can no longer work with global module-level objects, so it fundamentally changes how scoping rules work.
It launches a server with some extra machinery at runtime - startup cost and hidden complexity just snuck its your app without you knowing.
forkserver may be technically a better choice. But that's irrelevant. Changing the default breaks existing code.