Add ForkContext#212
Conversation
|
This does not work in psalm, because |
|
Additionally, I added some extra error handling logic to handle segfaults in child processes (commonly caused by JIT usage in psalm), would love to see that in this impl as well: https://github.com/vimeo/psalm/blob/fc437245b15a7220de107bc191a3559fdbf94595/src/Psalm/Internal/Fork/ForkContext.php#L61 |
|
|
My local test was running from {main}, so I missed that. Unfortunately running this new context through the usual test suite crashes and burns, of course because we're forking the test process. I removed the event loop queuing from |
|
What is the use case you mentioned? |
@danog Can you please elaborate on how you're using this in Psalm? |
|
I'm using this in psalm to avoid serializing and sending tens of megabytes of data structures containing information about the codebase post-scanning, when starting the analysis phase. |
|
https://github.com/danog/parallel/tree/fork-context contains some more improvements and enables (most) unit tests, working OK in Psalm! |
|
Ping @trowski :) |
* Skip another test * cs-fix
# Conflicts: # src/Context/Internal/functions.php
f4acc56 to
6351f37
Compare
|
Thank you! |
This adds a
Contextimplementation which usespcntl_forkto create another process. This is a strategy which we abandoned some time ago due to the issues with copying parent context into a child, however there are particular case where that behavior can be advantageous.This context is NOT added to
DefaultContextFactory, and in fact has warnings against its use in the class docblock.@danog Can you please check if this works for you in Psalm.