Added
- MD057:
relative-to-docsoption - New config option for validating absolute
link paths relative to a documentation root directory
Performance
-
2.5x faster on real-world repositories - Comprehensive performance audit and
optimization across the core pipeline, rule implementations, and infrastructure.
Validated against ripgrep, ruff, and rust repositories (1,832 files, 276K lines)
with zero regressions.Key optimizations:
- Switch release profile from size optimization (
opt-level = "z") to speed (opt-level = 3) - Zero-allocation line ending normalization for LF-only files (common case)
- Replace
chars().nth()O(n) calls with O(1) byte indexing for ASCII checks - Promote MD034 regex patterns to
LazyLockstatics (eliminated ~160K mutex cycles per 10K-line file) - Reduce
LineInfomemory 79% by boxing rare struct variants (3.4MB → 720KB for 10K-line files) - Eliminate redundant
Vec<char>allocation in horizontal rule detection - Cache debug environment variable lookups in list parser
- Move
ListBlockby value instead of cloning - Fix MD044 O(n×m) boundary checks and full-document regex scans
- Fix MD052 repeated full-document HTML comment scans
- Replace per-line
HashMapcloning inInlineConfigwith state-transition storage - Deduplicate
content.lines().collect()across 48 call sites in 27 rules - Compute content lines once in
LintContext, share viactx.raw_lines() - Unify code block detection into a single pass shared with
LineIndex - Eliminate redundant
InlineConfigparsing (parse once inLintContext) - Deduplicate line offset and front matter computation during context construction
- Add O(1) line access via pre-computed line starts in
LineIndex - Lazy-initialize rule registry with
LazyLock(eliminated 5+ redundantall_rules()calls) - Remove unused mmap code path from file reading
- Switch release profile from size optimization (
Changed
explaincommand completeness - Now uses the full rule registry instead of
a manually maintained list, ensuring all rules (including MD069-MD074) are included
Downloads
| File | Platform | Checksum |
|---|---|---|
| rumdl-v0.1.15-x86_64-unknown-linux-gnu.tar.gz | Linux x86_64 | checksum |
| rumdl-v0.1.15-x86_64-unknown-linux-musl.tar.gz | Linux x86_64 (musl) | checksum |
| rumdl-v0.1.15-aarch64-unknown-linux-gnu.tar.gz | Linux ARM64 | checksum |
| rumdl-v0.1.15-aarch64-unknown-linux-musl.tar.gz | Linux ARM64 (musl) | checksum |
| rumdl-v0.1.15-x86_64-apple-darwin.tar.gz | macOS x86_64 | checksum |
| rumdl-v0.1.15-aarch64-apple-darwin.tar.gz | macOS ARM64 (Apple Silicon) | checksum |
| rumdl-v0.1.15-x86_64-pc-windows-msvc.zip | Windows x86_64 | checksum |
Installation
Using uv (Recommended)
uv tool install rumdlUsing pip
pip install rumdlUsing pipx
pipx install rumdlDirect Download
Download the appropriate binary for your platform from the table above, extract it, and add it to your PATH.