Repository navigation
v1.2.0
No command, flag, exit code, or JSON field changed in this release: the
capability catalogue is byte-identical to v1.1.0. What changed is the shape of
the source tree behind it, and — for anyone using the crate as a library — the
type of every error it can return.
Changed
- The single crate is now a 24-package Cargo workspace: six
paredit-core-*
packages (syntax, semantics, edit, lint-engine, workspace, cli) and eighteen
paredit-feature-*packages, with the binary as a thin composition root.
Theparedit_clifaçade re-exports every package module, so existing import
paths such asparedit_cli::domain::sexprstill resolve. - The lint engine no longer depends on the rule registry. Rules are supplied
through aRuleCatalog, which breaks the cycle that previously forced the
engine and the 134 rules into one compilation unit. - Breaking for library consumers. Fallible entry points return typed error
enums instead ofanyhow::Result—SexprError,EditRefusal,LintError,
CliError, and per-feature equivalents. A caller that names a return type or
matches on an error must be updated;?into ananyhow::Resultstill
compiles unchanged. The CLI's own stderr text is unchanged, becausemain
still converts at the boundary. - Several types now make invalid states unrepresentable rather than checking
for them: inline-function's call selection, split-file's destination, and the
refactor manifest's hash and flag comparisons, which are derived rather than
stored. - The compatibility guide no longer lists the Rust library API as a stable
surface. The crate ispublish = falsewith no registry release, and the
supported interface is the command line — see
Releases and compatibility.