Specifically, previously, each MUC would be added as a roster item, and
then each join presence would be counted as a resource of that item,
triggering 1 to 5 events and more backend logic in slixmpp.
As a result, joining big rooms is tremendously slow, (JID() calls,
event() calls, __getitem__ calls for nothing), and takes RAM (a quick
tracemalloc tells me around 1 MiB for 3500 participants, i.e. 2 big IRC
rooms). Those resources may not necessarily be cleaned properly, leading
to memory leaks on long-term usage.
This is a micro-optimization that adds an attribute to roster items so
that MUC room events can be ignored safely while not affecting common
roster usage.
The identities should all be at the start, and features at the end, so we
just prepend the identity on add_identity, and append features on
add_feature
In a single commit, because it isn’t that interesting to detail each
change.
List of reverts:
Revert "XEP-0030: allow get_info and get_items to return a coroutine"
This reverts commit 506ca69917.
Revert "XEP-0060: wrap all iq-sending functions with coroutine_wrapper"
This reverts commit e85fa4203e.
Revert "XEP-0163: wrap publish() with coroutine_wrapper"
This reverts commit 69da1c1d7c.
Revert "XEP-0084: wrap functions with coroutine_wrapper"
This reverts commit ea5615f236.
Partially revert 3d243f7 (XEP-0054) - continue wrapping functions but with future_wrapper
Partially revert 115fe95 (xep-0153) - use callbacks rather than coroutine callbacks, and propagate iqtimeouts in set_avatar.
Revert "XEP-0049: wrap functions with coroutine_wrapper"
This reverts commit e68135f59f.
Revert "XEP-0077: wrap functions with coroutine_wrapper"
This reverts commit 1e4944d47e.
Partially revert cd7ff685 (XEP-0199) - remove the iq.send wrapping but keep ping() as a coroutine
Revert "XEP-0257: wrap functions with coroutine_wrapper"
This reverts commit 4da870fd19.
Revert "XEP-0092: wrap get_version() with coroutine_wrapper"
This reverts commit 6e35948276.
Revert "XEP-0191: wrap functions with coroutine_wrapper"
This reverts commit 6e8235544c.
Revert "XEP-0280: wrap functions with coroutine_wrapper"
This reverts commit f795ac02e3.
Revert "XEP-0012: wrap get_last_activity() with coroutine_wrapper"
This reverts commit 2ee05d9616.
Revert "XEP-0202: wrap get_entity_time() with coroutine_wrapper"
This reverts commit 6fb3ecd414.
Revert "XEP-0231: wrap get_bob() with coroutine_wrapper"
This reverts commit 17464b10a4.
Revert "XEP-0258: wrap get_catalog() with coroutine_wrapper"
This reverts commit 18a4978456.
Revert "XEP-0050: wrap send_command() and get_commands() with coroutine_wrapper"
This reverts commit e034b31d6b.
Revert "XEP-0279: wrap check_ip() with coroutine_wrapper"
This reverts commit e112e86475.