Skip to content

Roadmap 2.0.0 — from codec to platform #104

Description

@EONRaider

Tier 2 of the post-1.3.0 roadmap. Target version: 2.0.0 (major).

The highest-leverage tier: the things people need before they can build
on the library rather than merely call it.

#Item
#87A public protocol registry
#88Ship decode_frame() — the chain walker belongs in the library
#89Flow keys — hashable 5-tuples with a canonical bidirectional form
#90Make Packet pull its weight — type indexing, hashing, a rename
#91Structured parse diagnostics on ProtocolError
#92A named lax decode mode for deliberately truncated input

Why major

#90 renames Packet.payload, which is a breaking change. Everything
else in the tier is additive, so if #90 is deferred or handled with a
deprecation period, the rest could ship as 1.5.0 instead.

Sequencing

#87 first, and design it with #82 in hand — a public registry is a
module-level dict built once, which is exactly the internal table #82
introduces. They are the same change at different levels of
visibility; doing them independently means doing dispatch twice.

#91 before #92. The lax mode's "reason for stopping" should be the
same structured diagnostic object #91 introduces, not a second
parallel concept. #88's lenient mode is the multi-layer version of #92
— all three want one shared notion of partial success.

#89 and #90 are independent, though #89 may want to live on Packet.

The two gaps behind this tier

Neither appeared in the original differentiation advice, and both
matter more than anything that did:

  1. There is no extension point. No registry, no __init_subclass__,
    no hook. Nobody can add a protocol without editing library source.
  2. Errors carry no structure. Strictness is the security story, but
    every exception is a formatted string with no offset or field.

Part of the post-1.3.0 roadmap: #107

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestroadmapPost-1.0 roadmap

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions