Repository navigation
v1.4.0
Lint
- 21 new CLOS, condition-system, and iteration lint rules (#81).
- 8 new REPL-debug-leftover lint rules catching stray
print/describe/trace-style debugging calls (#78). - Macro hygiene checks are now enforceable (not just report-only) across all eight dialects, with 4 new checks and a scoped auto-fix (#71, #79).
lint-custom(defrule) gained dialect scoping, pattern fragments, self-collision detection, and per-rule timing (#68).defrule's pattern language is now unified with the--query/--rewriteengine — the same pattern syntax works in both places (#62).inspect lint --suggest-severityadvises when a rule's observed finding density disagrees with its configured severity (#57).- Custom-rule parity:
--test-rulesJSON,--docs, and--explainnow cover custom rules the same as built-in ones (#58); loaded custom rules are recognized bylint.enable/disable/deny/warn(#61);config checkdetects custom-rule severity conflicts (K7). - 9 additional lint rules from Section C, part 1 of 13 (#66).
Format
paredit.tomlgained a project-overridable indent table, width profiles, and quote style (#74).- Section J: numeric-case normalization, clause alignment, auto-width, and
.editorconfigsupport (#77). - Trailing-comment alignment and blank-line normalization (#69).
- Fixed width counting, added diff-stat aggregation, and block-comment reindent (#67).
New commands and surfaces
inspect data-checkandedit kill-ring(Phase 0), with a--formatflag and 5 format-specific detectors added todata-check(Phase 1).edit canonicalizenormalizes alist/plist data files, refusing files that carry a comment to avoid silently dropping it (K10, plus a follow-up fix).- A
schemanamespace with adefschemaDSL (Phase 4);config checkrejects duplicate spec keywords and documents:optional. - Named checkpoints for refactor state (FR-008).
--explain-errorand inline ambiguous-selector candidates on refusal (FR-001, FR-002).refactor plan/applygained a risk aggregate, next-command chaining, a compact headline, and grouped apply output (FR-003–007).PAREDIT_CACHE_DIRandcache.dirconfig layering (FR-012).
Semantic analysis
- Type inference widened to Emacs Lisp, Scheme, and Racket (FR-002, FR-003).
- Effects analysis widened to Emacs Lisp (FR-005); contradiction detection widened to Elisp/Scheme/Racket (FR-007).
- Value-layer constant folding/propagation widened to Emacs Lisp and fed into effect purity (FR-004, FR-008/A11).
- Per-dialect
--fail-under-dialectcoverage thresholds (semantic-coverage). - The six semantic introspection commands report per-layer dialect granularity in
inspect capabilities(FR-001). defmethodbinds its parameters, not its specializers, in the semantic model (FR-009).- Read-time-eval handling made cross-dialect (Phase 2).
Agent/MCP experience
- MCP now surfaces write outcome and carries trimmed tool descriptions (FR-009/FR-010).
inspect capabilitiesreports a per-commandwritesflag and each command's possible error codes (FR-011).- Closed a gap where two newer write commands were missing from MCP's
--read-onlygate; fixed anapply/diffconflict.
Accessibility
- Output-wide accessibility:
NO_COLORconsistency, verbosity levels, plain-language errors (#54). TERM=dumb/FORCE_COLORhandling, an HTML palette, screen-reader-friendly structure, JSON envelope pinning, and CJK-aware clipping (#60).
Performance
- Dynamic scheduling, a
Nodestruct size reduction, and a redundant-parse fix for the highest-risk performance/scale items (#76). - Lower-risk performance/scale gap fixes across the engine (#64).
Fixes
config'scustom_conflictsreads now go through the bounded reader.data-checkno longer misclassifiestyped/racket-flavored files asracket-data.
No commands, flags, or JSON fields were removed or renamed since v1.3.0 — this is a purely additive minor release.