github rvben/rumdl v0.1.15

5 hours ago

Added

  • MD057: relative-to-docs option - 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 LazyLock statics (eliminated ~160K mutex cycles per 10K-line file)
    • Reduce LineInfo memory 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 ListBlock by 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 HashMap cloning in InlineConfig with state-transition storage
    • Deduplicate content.lines().collect() across 48 call sites in 27 rules
    • Compute content lines once in LintContext, share via ctx.raw_lines()
    • Unify code block detection into a single pass shared with LineIndex
    • Eliminate redundant InlineConfig parsing (parse once in LintContext)
    • 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+ redundant all_rules() calls)
    • Remove unused mmap code path from file reading

Changed

  • explain command 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 rumdl

Using pip

pip install rumdl

Using pipx

pipx install rumdl

Direct Download

Download the appropriate binary for your platform from the table above, extract it, and add it to your PATH.

Don't miss a new rumdl release

NewReleases is sending notifications on new releases.