Allow me to post a Python user opinion, form the field.
When I started using Python, my cpu only had 1 core and “Python is slow” was the rant of the day. I was happy to write single-threaded code, occasionally venturing into ad-hoc coro-like generators.
CPUs became dual core and quad core over time, and, having exposure and hopefully skills to multi threading from university, I did write multithreaded code. However, looking back it was never for performance, rather to structure programs better or to overcome blocking behaviour. At that time, while there were cores, they were also very often by some other program.
Today, we finally have so many cores that there’s almost always a free core and desktop/laptop cpu is limited by the power envelope, not by cores * single-core performance product. And the code I write is mostly async/await.
Frankly, I feel that free-threading will not bring me direct benefits, and the indirect benefits (e.g. pandas parallel operation that calls a Python user function) are nice but rarely crucial.
What I wish for, instead is speculative execution of runnable coroutines or tasks, given some preconditions that a line developer can understand (eg don’t change module globals, don’t change object class after creation; IO will be serialised for a single file descriptor).
If the extra, “free” cores could be used for that, I’d be very happy
P.S. I suspect that with some caveats, the cooperative multitasking, given it’s clear annotation of yield points, may be more amenable to optimisations than multithreaded code where every byte code instruction may need a guard.