Currently the current task of a loop in stored in a global dict mapping loops to their corresponding current tasks.
However this will perform poorly in free threading build as such I propose to store it in on the loop itself.
asyncio._enter_taskwill set the task on the loop as_current_taskasyncio._leave_taskwill set it to None if the task matches otherwise it’ll raise errorasyncio.current_taskwill just lookup the attribute onloop._current_taskand return it
Note that there isn’t any compatibility issue here because third party tasks already need to call _enter_task/_leave_task so it is just a change of where the data is stored.
