Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Removes all support for ibids in the network protocol. The previous PR #2886 deprecated them, so that they would never be used by the serializer under default settings. Under default settings, the serializer also detects and throws on cycles. In this PR there are no non-default settings for overriding this. The serializer always throws on cycles, and never uses ibids. This part is a compatible transition.
Pass-by-copy DAGs are always encoded as trees. This is potentially explosive of space, but this is the better side to be explosive on. With ibids, DAGs could be sent and cause an explosive amount of computation by the receiver. This is true despite the fact that they were unserialized as the same DAGs, since many of our recursive algorithms treat the pass-by-copy structure as trees anyway.
With this PR, the unserialization no longer recognizes and processes ibids. (Actually, it still recognizes them only to the extent of giving a more informative error message.) This is an incompatible transition we need to figure out how to manage. Once a system is upgraded to this PR, it will no longer be able to understand messages sent by a system running code prior to #2886 . #2886 does serve as a bridge because it is able to speak to systems both prior to #2886 and to systems after this PR.
How should we manage that transition?