There is a PR implementing typing ABC cache optimization: https://github.com/python/typing/pull/383

The main idea is straightforward: subscripted generic ABCs like Iterable[int], Iterable[str], etc. should not have separate ABC caches (positive and negative), since they all are equivalent to plain Iterable at runtime.

It is proposed that they will share their caches with a parent ABC from abc module for abstract collections, or with original (unsubscripted) class generic for concrete classes.

Inada-san confirmed that this optimization reduces the memory footprint.
I will be grateful for a code review.

Best regards,
Ivan