Skip to content

Python re dialect parity — FROZEN pending a user-needs signal (ADR-0035) #554

Description

@okalldal

Tracking issue for the dialect-parity freeze. Governance: ADR-0035 — Accepted (architect ratified 2026-06-30, merged in #555).

lark-rs lexes terminals with the Rust regex engine; Python Lark uses CPython re. Where the dialects assign different meaning to the same terminal syntax, we have a stream of needs-decision "support vs. categorized-refusal" forks. We are parking the whole cluster rather than resolving the forks one at a time, because:

  1. No user signal — lark-rs has no users yet (ADR-0025); none of these divergences has a reported grammar that needs it.
  2. Already inert — the divergences are committed XFAILs: known, pinned, non-regressing. Parking is the XFAIL bank's intended use, not a new mechanism.
  3. Piecemeal fixes pre-commit an architecture — each ad-hoc "normalise construct X toward Python" is an implicit vote for maximise-compat over regex-crate semantics / selectable modes. We don't want to decide that by accident.

The shipped posture is unchanged: the \</\> normalization and every committed XFAIL stay as-is. This freezes new parity work and defers the dialect-mode decision. It reverses nothing.

Frozen set (carry the frozen label; out of the /next-task, /xfail-burndown, bug-hackathon queues)

Explicitly NOT frozen

Routing rule while frozen

New dialect divergences found by the differential fuzzer / bug-hackathon are catalogued as XFAIL and parked here, not triaged into fix-work.

Un-park trigger (ADR-0035)

The freeze ends when either:

  1. a real user grammar is broken by a dialect divergence (a concrete consumer demand — the ADR-0026 bar), or
  2. the architect decides the dialect-mode architecture (maximise-compat vs. regex-crate semantics vs. selectable modes) independent of a specific report.

At that point, supersede ADR-0035 with the chosen policy and burn the cluster down under it. If modes are adopted, the mode API is escalate-tier (ADR-0025 / §6).

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions