I was speaking from the point of view of someone with the performance issue @paugier had described. I don’t have that problem myself, and as far as I’m concerned I have never found the performance of Python applications shipped via pipx or similar to be a problem.
Sorry for being unclear.
I see that as well, on Windows. But black is still fast enough (227 milliseconds on my PC) that it doesn’t matter in practice to me. Steve was quoting 2-5 second startup times caused by AV. Again, I’ve never seen that myself, but what I’m trying to establish is whether that 2-5 second overhead is exclusive to Python programs, or if it’s just a feature of “unsigned executables” in general.
Very probably 
Let me ask a non-hypothetical question. You say you see 2-5 second delays when running unsigned executables. On that system, do black
and ruff
have the same 2-5 second delay, or does black
see a significantly longer delay (twice as much - 4-10 seconds - for example)?
Because my point is that unless Python is demonstrably worse than non-Python executables on a system with an AV causing that sort of overhead, I don’t think it’s something we should be worrying about solving. A developer who is concerned about that situation can solve it for Rust or C code (by signing the executable) and they can also solve it for Python (albeit with a bit more effort, by creating an executable and signing it, and distributing that executable).
That’s not true for .exe
wrappers (which is what I thought we were talking about here) as they are extremely small executables that just forward to the Python interpreter. Speeding up the startup time of the Python interpreter is a worthy goal, but not something that would explain the different startup times between black
and python -m black
(the example reported by @paugier here).
The version of black
I have isn’t compiled - it’s just a standard entry point wrapper that runs the black.patched_main
function, as defined here.
Agreed - but comparing ruff against black isn’t the real question here. I confused the issue by mentioning ruff, as an example of a program built in Rust that wasn’t signed, not as an example of something that should have comparable performance to a Python program.
The question @paugier raised was why black
ran slower than python -m black
. No-one knows why that is, and the only plausible explanation anyone has come up with is AV programs and unsigned executables.