rumdl 0.0.90__tar.gz → 0.0.91__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rumdl might be problematic. Click here for more details.
- {rumdl-0.0.90 → rumdl-0.0.91}/.mise.toml +5 -5
- {rumdl-0.0.90 → rumdl-0.0.91}/CHANGELOG.md +4 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/Cargo.lock +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/Cargo.toml +2 -2
- {rumdl-0.0.90 → rumdl-0.0.91}/Makefile +62 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/PKG-INFO +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/benches/fix_performance.rs +35 -37
- {rumdl-0.0.90 → rumdl-0.0.91}/benches/range_performance.rs +9 -9
- {rumdl-0.0.90 → rumdl-0.0.91}/benches/range_utils_benchmark.rs +3 -3
- {rumdl-0.0.90 → rumdl-0.0.91}/benches/rule_performance.rs +11 -12
- {rumdl-0.0.90 → rumdl-0.0.91}/benches/simple_fix_bench.rs +6 -6
- {rumdl-0.0.90 → rumdl-0.0.91}/rust-toolchain.toml +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/src/bin/benchmark.rs +4 -4
- {rumdl-0.0.90 → rumdl-0.0.91}/src/bin/file_parallel_benchmark.rs +9 -10
- {rumdl-0.0.90 → rumdl-0.0.91}/src/bin/measure_code_span_performance.rs +13 -13
- {rumdl-0.0.90 → rumdl-0.0.91}/src/config.rs +100 -109
- {rumdl-0.0.90 → rumdl-0.0.91}/src/init.rs +37 -35
- {rumdl-0.0.90 → rumdl-0.0.91}/src/lib.rs +61 -71
- {rumdl-0.0.90 → rumdl-0.0.91}/src/lint_context.rs +25 -18
- {rumdl-0.0.90 → rumdl-0.0.91}/src/lsp/mod.rs +47 -48
- {rumdl-0.0.90 → rumdl-0.0.91}/src/lsp/server.rs +58 -58
- {rumdl-0.0.90 → rumdl-0.0.91}/src/lsp/types.rs +14 -20
- {rumdl-0.0.90 → rumdl-0.0.91}/src/main.rs +101 -105
- {rumdl-0.0.90 → rumdl-0.0.91}/src/markdownlint_config.rs +141 -106
- {rumdl-0.0.90 → rumdl-0.0.91}/src/output/formatters/azure.rs +18 -18
- {rumdl-0.0.90 → rumdl-0.0.91}/src/output/formatters/concise.rs +19 -28
- {rumdl-0.0.90 → rumdl-0.0.91}/src/output/formatters/github.rs +16 -16
- {rumdl-0.0.90 → rumdl-0.0.91}/src/output/formatters/gitlab.rs +52 -43
- {rumdl-0.0.90 → rumdl-0.0.91}/src/output/formatters/grouped.rs +19 -18
- {rumdl-0.0.90 → rumdl-0.0.91}/src/output/formatters/json.rs +44 -41
- {rumdl-0.0.90 → rumdl-0.0.91}/src/output/formatters/json_lines.rs +36 -30
- {rumdl-0.0.90 → rumdl-0.0.91}/src/output/formatters/junit.rs +41 -40
- {rumdl-0.0.90 → rumdl-0.0.91}/src/output/formatters/pylint.rs +25 -41
- {rumdl-0.0.90 → rumdl-0.0.91}/src/output/formatters/sarif.rs +89 -64
- {rumdl-0.0.90 → rumdl-0.0.91}/src/output/formatters/text.rs +7 -12
- {rumdl-0.0.90 → rumdl-0.0.91}/src/output/mod.rs +36 -31
- {rumdl-0.0.90 → rumdl-0.0.91}/src/parallel.rs +42 -30
- {rumdl-0.0.90 → rumdl-0.0.91}/src/performance.rs +28 -32
- {rumdl-0.0.90 → rumdl-0.0.91}/src/profiling.rs +36 -33
- {rumdl-0.0.90 → rumdl-0.0.91}/src/python.rs +26 -18
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rule.rs +63 -61
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rule_config.rs +13 -13
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rule_config_serde.rs +55 -43
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/blockquote_utils.rs +93 -48
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/code_block_utils.rs +45 -30
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/code_fence_utils.rs +21 -22
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/front_matter_utils.rs +123 -68
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/heading_utils.rs +67 -46
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/list_utils.rs +52 -47
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md001_heading_increment.rs +2 -2
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md002_first_heading_h1.rs +51 -31
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md003_heading_style/md003_config.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md003_heading_style.rs +3 -6
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md004_unordered_list_style.rs +26 -10
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md005_list_indent.rs +17 -16
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md006_start_bullets.rs +4 -7
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md007_ul_indent.rs +39 -42
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md009_trailing_spaces.rs +23 -17
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md010_no_hard_tabs.rs +13 -14
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md011_no_reversed_links.rs +4 -4
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md012_no_multiple_blanks.rs +8 -7
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md013_line_length.rs +11 -11
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md014_commands_show_output.rs +27 -19
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md019_no_multiple_space_atx.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md020_no_missing_space_closed_atx.rs +4 -6
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md021_no_multiple_space_closed_atx.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md022_blanks_around_headings.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md023_heading_start_left.rs +3 -3
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md024_no_duplicate_heading.rs +11 -9
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md025_single_title.rs +14 -10
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md026_no_trailing_punctuation.rs +16 -8
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md027_multiple_spaces_blockquote.rs +9 -9
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md028_no_blanks_blockquote.rs +5 -5
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md029_ordered_list_prefix.rs +1 -2
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md030_list_marker_space.rs +3 -4
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md031_blanks_around_fences.rs +2 -2
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md032_blanks_around_lists.rs +15 -23
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md034_no_bare_urls.rs +17 -20
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md035_hr_style.rs +27 -27
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md036_no_emphasis_only_first.rs +44 -28
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md037_spaces_around_emphasis.rs +4 -6
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md038_no_space_in_code.rs +4 -4
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md039_no_space_in_links.rs +16 -21
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md040_fenced_code_language.rs +27 -15
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md041_first_line_heading.rs +68 -40
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md042_no_empty_links.rs +22 -10
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md043_required_headings.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md044_proper_names.rs +84 -95
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md045_no_alt_text.rs +31 -25
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md046_code_block_style/md046_config.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md046_code_block_style.rs +26 -26
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md047_single_trailing_newline.rs +0 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md048_code_fence_style/md048_config.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md048_code_fence_style.rs +21 -21
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md049_emphasis_style.rs +30 -31
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md050_strong_style/md050_config.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md050_strong_style.rs +44 -30
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md051_link_fragments.rs +61 -45
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md052_reference_links_images.rs +38 -38
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md053_link_image_reference_definitions.rs +26 -32
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md054_link_image_style.rs +25 -26
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md055_table_pipe_style/md055_config.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md055_table_pipe_style.rs +3 -7
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md056_table_column_count.rs +25 -25
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md057_existing_relative_links.rs +1 -3
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md058_blanks_around_tables.rs +21 -21
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/strong_style.rs +2 -2
- {rumdl-0.0.90 → rumdl-0.0.91}/src/utils/ast_utils.rs +55 -59
- {rumdl-0.0.90 → rumdl-0.0.91}/src/utils/code_block_utils.rs +15 -14
- {rumdl-0.0.90 → rumdl-0.0.91}/src/utils/document_structure.rs +16 -12
- {rumdl-0.0.90 → rumdl-0.0.91}/src/utils/early_returns.rs +52 -52
- {rumdl-0.0.90 → rumdl-0.0.91}/src/utils/element_cache.rs +0 -8
- {rumdl-0.0.90 → rumdl-0.0.91}/src/utils/emphasis_utils.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/src/utils/fix_utils.rs +15 -16
- {rumdl-0.0.90 → rumdl-0.0.91}/src/utils/mod.rs +1 -5
- {rumdl-0.0.90 → rumdl-0.0.91}/src/utils/regex_cache.rs +33 -37
- {rumdl-0.0.90 → rumdl-0.0.91}/src/utils/table_utils.rs +48 -48
- {rumdl-0.0.90 → rumdl-0.0.91}/src/vscode.rs +33 -32
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/advanced_integration_tests.rs +4 -6
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/character_ranges/additional_tests.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/character_ranges/basic_tests.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/character_ranges/comprehensive_tests.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/character_ranges/extended_tests.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/cli_integration_tests.rs +30 -39
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/cli_lsp_fix_consistency.rs +46 -54
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/cli_statistics_test.rs +8 -17
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/commonmark_compliance_tests.rs +5 -8
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/comprehensive_integration_tests.rs +11 -11
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/config_application_tests.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/config_tests.rs +16 -30
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/configuration_inheritance_tests.rs +4 -4
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/cross_platform_compatibility_tests.rs +22 -25
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/final_confidence_assessment.rs +5 -8
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/init_tests.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/lsp_editor_integration_tests.rs +2 -2
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/lsp_integration_tests.rs +6 -10
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/lsp_memory_leak_tests.rs +28 -32
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/lsp_tests.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/malformed_markdown_stress_tests.rs +2 -7
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/markdownlint_cli_integration.rs +6 -9
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/markdownlint_config_test.rs +3 -5
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/output_format_tests.rs +29 -38
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/perf_check.rs +5 -5
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/performance_validation_tests.rs +5 -8
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/pyproject_config_tests.rs +9 -12
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/real_world_repository_tests.rs +4 -4
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/regression_prevention_tests.rs +8 -6
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md002_test.rs +73 -58
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md004_test.rs +27 -18
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md006_test.rs +2 -4
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md007_test.rs +50 -53
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md009_test.rs +2 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md010_test.rs +60 -36
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md012_test.rs +9 -9
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md013_test.rs +43 -25
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md014_test.rs +33 -13
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md022_test.rs +2 -2
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md023_extended_test.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md024_test.rs +2 -2
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md025_test.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md026_test.rs +75 -44
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md029_test.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md030_test.rs +5 -5
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md032_test.rs +6 -8
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md034_test.rs +26 -32
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md037_test.rs +6 -7
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md041_test.rs +2 -2
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md044_test.rs +3 -3
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md045_test.rs +8 -2
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md046_test.rs +6 -4
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md051_test.rs +23 -12
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md052_test.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md053_additional_test.rs +10 -12
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/thread_safety_tests.rs +8 -10
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/unicode_edge_case_tests.rs +2 -6
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/utils/code_block_utils_extended_test.rs +5 -5
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/utils/code_block_utils_test.rs +3 -3
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/utils/line_index_test.rs +2 -2
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/utils_markdown_edge_cases.rs +13 -14
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/utils_tests.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/vscode_extension_fixes.rs +22 -46
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/vscode_test.rs +2 -2
- {rumdl-0.0.90 → rumdl-0.0.91}/.config/nextest.toml +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/.rumdl.toml +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/.rustfmt.toml +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/LICENSE +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/MANIFEST.in +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/README.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/assets/logo.png +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/RULES.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/global-settings.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md001.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md002.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md003.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md004.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md005.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md006.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md007.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md009.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md010.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md011.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md012.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md013.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md014.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md018.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md019.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md020.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md021.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md022.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md023.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md024.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md025.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md026.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md027.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md028.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md029.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md030.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md031.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md032.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md033.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md034.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md035.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md036.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md037.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md038.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md039.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md040.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md041.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md042.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md043.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md044.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md045.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md046.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md047.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md048.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md049.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md050.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md051.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md052.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md053.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md054.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md055.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md056.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md057.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/md058.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/docs/vscode-extension.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/issues/plan-rule-parity-with-markdownlint.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/parity_check.py +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/pyproject.toml +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/python/MANIFEST.in +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/python/PYTHON-README.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/python/rumdl/__init__.py +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/python/rumdl/__main__.py +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/python/rumdl/py.typed +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/rumdl.toml.example +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/scripts/extract-changelog.sh +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/scripts/prepare-release.sh +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/inline_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/output/formatters/mod.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/emphasis_style.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md002_first_heading_h1/md002_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md004_unordered_list_style/md004_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md007_ul_indent/md007_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md009_trailing_spaces/md009_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md010_no_hard_tabs/md010_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md012_no_multiple_blanks/md012_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md013_line_length/md013_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md014_commands_show_output/md014_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md018_no_missing_space_atx.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md022_blanks_around_headings/md022_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md024_no_duplicate_heading/md024_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md025_single_title/md025_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md026_no_trailing_punctuation/md026_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md030_list_marker_space/md030_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md033_no_inline_html/md033_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md033_no_inline_html.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md035_hr_style/md035_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md036_no_emphasis_only_first/md036_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md044_proper_names/md044_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md049_emphasis_style/md049_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md054_link_image_style/md054_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/md057_existing_relative_links/md057_config.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/rules/mod.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/utils/markdown_elements.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/utils/range_utils.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/src/utils/string_interner.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/character_ranges/mod.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/character_ranges/unicode_utils.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/cli_duplication_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/comprehensive_output_format_tests.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/config_file_command_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/consistency_regression_tests.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/init_command_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/inline_config_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/integration_tests.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/json_output_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/lib.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/markdownlintignore_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/md030_edge_cases.md +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/output_format_integration_tests.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md001_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md001_unicode_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md003_test.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md005_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md006_unicode_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md011_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md018_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md019_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md020_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md021_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md023_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md027_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md028_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md031_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md033_extended_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md033_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md035_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md036_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md038_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md039_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md040_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md042_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md043_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md047_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md048_test.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md049_test.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md050_test.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md053_proptest.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md053_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md054_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md054_unicode_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md055_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md056_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md057_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/md058_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/rules/mod.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/utils/blockquote_utils_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/utils/core_utils_test.rs +1 -1
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/utils/front_matter_utils_test.rs +0 -0
- {rumdl-0.0.90 → rumdl-0.0.91}/tests/utils/mod.rs +0 -0
|
@@ -7,7 +7,7 @@ RUST_BACKTRACE = "1"
|
|
|
7
7
|
|
|
8
8
|
[tools]
|
|
9
9
|
# Rust toolchain - version matches rust-toolchain.toml
|
|
10
|
-
rust = "1.
|
|
10
|
+
rust = "1.88.0"
|
|
11
11
|
|
|
12
12
|
# Python for maturin/python bindings
|
|
13
13
|
python = "3.12"
|
|
@@ -24,10 +24,10 @@ uv = "latest"
|
|
|
24
24
|
# Zig for cross-compilation (used by maturin)
|
|
25
25
|
zig = "0.13"
|
|
26
26
|
|
|
27
|
-
#
|
|
28
|
-
#
|
|
29
|
-
|
|
30
|
-
#
|
|
27
|
+
# Additional Rust development tools for dependency management
|
|
28
|
+
"cargo:cargo-edit" = "latest" # For cargo add/rm/upgrade commands
|
|
29
|
+
"cargo:cargo-outdated" = "latest" # Check for outdated dependencies
|
|
30
|
+
# Optional: Security and dependency tools
|
|
31
31
|
# "cargo:cargo-audit" = "latest" # Security audit dependencies
|
|
32
32
|
# "cargo:cargo-deny" = "latest" # Lint dependencies
|
|
33
33
|
|
|
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.0.91] - 2025-07-02
|
|
11
|
+
|
|
10
12
|
## [0.0.90] - 2025-07-01
|
|
11
13
|
|
|
12
14
|
## [0.0.89] - 2025-07-01
|
|
@@ -109,7 +111,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
109
111
|
### Added
|
|
110
112
|
- Initial implementation of remaining rules for markdownlint parity
|
|
111
113
|
|
|
112
|
-
[Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.
|
|
114
|
+
[Unreleased]: https://github.com/rvben/rumdl/compare/v0.0.91...HEAD
|
|
115
|
+
[0.0.91]: https://github.com/rvben/rumdl/compare/v0.0.90...v0.0.91
|
|
113
116
|
[0.0.90]: https://github.com/rvben/rumdl/compare/v0.0.89...v0.0.90
|
|
114
117
|
[0.0.89]: https://github.com/rvben/rumdl/compare/v0.0.88...v0.0.89
|
|
115
118
|
[0.0.88]: https://github.com/rvben/rumdl/compare/v0.0.87...v0.0.88
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "rumdl"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.91"
|
|
4
4
|
edition = "2024"
|
|
5
|
-
rust-version = "1.
|
|
5
|
+
rust-version = "1.88.0"
|
|
6
6
|
description = "A fast Markdown linter written in Rust (Ru(st) MarkDown Linter)"
|
|
7
7
|
authors = ["Ruben J. Jongejan <ruben.jongejan@gmail.com>"]
|
|
8
8
|
license = "MIT"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.PHONY: build test clean fmt check doc version-major version-minor version-patch build-python build-wheel dev-install setup-mise dev-setup dev-verify
|
|
1
|
+
.PHONY: build test clean fmt check doc version-major version-minor version-patch build-python build-wheel dev-install setup-mise dev-setup dev-verify update-dependencies update-rust-version pre-release
|
|
2
2
|
|
|
3
3
|
# Development environment setup
|
|
4
4
|
setup-mise:
|
|
@@ -248,3 +248,64 @@ trigger-pre-commit:
|
|
|
248
248
|
-H "Authorization: Bearer $(PRECOMMIT_DISPATCH_TOKEN)" \
|
|
249
249
|
https://api.github.com/repos/rvben/rumdl-pre-commit/dispatches \
|
|
250
250
|
-d '{"event_type": "pypi_release"}'
|
|
251
|
+
|
|
252
|
+
# Dependency and version update targets
|
|
253
|
+
update-dependencies:
|
|
254
|
+
@echo "Updating Cargo dependencies to latest compatible versions..."
|
|
255
|
+
@cargo update
|
|
256
|
+
@echo "Dependencies updated in Cargo.lock"
|
|
257
|
+
@echo ""
|
|
258
|
+
@if command -v cargo-outdated >/dev/null 2>&1; then \
|
|
259
|
+
echo "Checking for available updates beyond current constraints:"; \
|
|
260
|
+
cargo outdated; \
|
|
261
|
+
else \
|
|
262
|
+
echo "Install cargo-outdated for more detailed update information:"; \
|
|
263
|
+
echo " cargo install cargo-outdated"; \
|
|
264
|
+
fi
|
|
265
|
+
|
|
266
|
+
update-rust-version:
|
|
267
|
+
@echo "Checking for latest stable Rust version..."
|
|
268
|
+
$(eval LATEST_RUST := $(shell curl -s https://api.github.com/repos/rust-lang/rust/releases/latest | grep '"tag_name":' | sed -E 's/.*"([0-9]+\.[0-9]+\.[0-9]+)".*/\1/' | head -1))
|
|
269
|
+
$(eval CURRENT_RUST := $(shell grep '^rust-version' Cargo.toml | sed -E 's/rust-version = "([0-9]+\.[0-9]+\.[0-9]+)"/\1/'))
|
|
270
|
+
@if [ -z "$(LATEST_RUST)" ]; then \
|
|
271
|
+
echo "Failed to fetch latest Rust version"; \
|
|
272
|
+
exit 1; \
|
|
273
|
+
fi
|
|
274
|
+
@echo "Current Rust version: $(CURRENT_RUST)"
|
|
275
|
+
@echo "Latest Rust version: $(LATEST_RUST)"
|
|
276
|
+
@if [ "$(CURRENT_RUST)" = "$(LATEST_RUST)" ]; then \
|
|
277
|
+
echo "Already using the latest Rust version"; \
|
|
278
|
+
else \
|
|
279
|
+
echo "Updating Rust version to $(LATEST_RUST)..."; \
|
|
280
|
+
sed -i.bak -E 's/^rust-version = "[0-9]+\.[0-9]+\.[0-9]+"/rust-version = "$(LATEST_RUST)"/' Cargo.toml; \
|
|
281
|
+
sed -i.bak -E 's/^rust = "[0-9]+\.[0-9]+\.[0-9]+"/rust = "$(LATEST_RUST)"/' .mise.toml; \
|
|
282
|
+
sed -i.bak -E 's/^channel = "[0-9]+\.[0-9]+\.[0-9]+"/channel = "$(LATEST_RUST)"/' rust-toolchain.toml; \
|
|
283
|
+
rm -f Cargo.toml.bak .mise.toml.bak rust-toolchain.toml.bak; \
|
|
284
|
+
echo "Updated Rust version in Cargo.toml, .mise.toml, and rust-toolchain.toml"; \
|
|
285
|
+
echo "Running 'cargo check' to verify compatibility..."; \
|
|
286
|
+
cargo check || (echo "Warning: cargo check failed. You may need to fix compatibility issues."; exit 1); \
|
|
287
|
+
fi
|
|
288
|
+
|
|
289
|
+
pre-release:
|
|
290
|
+
@echo "Preparing for release..."
|
|
291
|
+
@echo "===================="
|
|
292
|
+
@$(MAKE) update-rust-version
|
|
293
|
+
@echo ""
|
|
294
|
+
@$(MAKE) update-dependencies
|
|
295
|
+
@echo ""
|
|
296
|
+
@echo "Running tests to verify everything works..."
|
|
297
|
+
@$(MAKE) test-quick
|
|
298
|
+
@echo ""
|
|
299
|
+
@echo "Pre-release preparation complete!"
|
|
300
|
+
@echo "===================="
|
|
301
|
+
@echo ""
|
|
302
|
+
@echo "Summary of changes:"
|
|
303
|
+
@echo "- Rust version: $$(grep '^rust-version' Cargo.toml | sed -E 's/rust-version = "([0-9]+\.[0-9]+\.[0-9]+)"/\1/')"
|
|
304
|
+
@echo "- Dependencies: Updated to latest compatible versions"
|
|
305
|
+
@echo ""
|
|
306
|
+
@echo "Please review changes and commit if satisfied."
|
|
307
|
+
|
|
308
|
+
# Full release targets that include pre-release preparation
|
|
309
|
+
release-major-full: pre-release version-major version-push
|
|
310
|
+
release-minor-full: pre-release version-minor version-push
|
|
311
|
+
release-patch-full: pre-release version-patch version-push
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
use criterion::{black_box, criterion_group, criterion_main
|
|
1
|
+
use criterion::{Criterion, black_box, criterion_group, criterion_main};
|
|
2
2
|
use rumdl::lint_context::LintContext;
|
|
3
3
|
use rumdl::rule::Rule;
|
|
4
4
|
use rumdl::rules::*;
|
|
@@ -10,7 +10,7 @@ fn generate_problematic_content(size: usize) -> String {
|
|
|
10
10
|
for i in 0..size {
|
|
11
11
|
// MD001 - Heading increment issues
|
|
12
12
|
if i % 10 == 0 {
|
|
13
|
-
content.push_str(&format!("### Heading {} (should be H1)\n\n"
|
|
13
|
+
content.push_str(&format!("### Heading {i} (should be H1)\n\n"));
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
// MD002 - First heading should be H1
|
|
@@ -20,40 +20,40 @@ fn generate_problematic_content(size: usize) -> String {
|
|
|
20
20
|
|
|
21
21
|
// MD003 - Heading style inconsistency
|
|
22
22
|
if i % 15 == 0 {
|
|
23
|
-
content.push_str(&format!("Heading {}\n"
|
|
23
|
+
content.push_str(&format!("Heading {i}\n"));
|
|
24
24
|
content.push_str("=============\n\n");
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
// MD004 - Unordered list style inconsistency
|
|
28
28
|
if i % 8 == 0 {
|
|
29
|
-
content.push_str(&format!("* Item {}\n"
|
|
29
|
+
content.push_str(&format!("* Item {i}\n"));
|
|
30
30
|
content.push_str(&format!("- Item {}\n", i + 1));
|
|
31
31
|
content.push_str(&format!("+ Item {}\n\n", i + 2));
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
// MD005 - List indentation issues
|
|
35
35
|
if i % 12 == 0 {
|
|
36
|
-
content.push_str(&format!("* Item {}\n"
|
|
37
|
-
content.push_str(&format!(" * Badly indented item {}\n\n"
|
|
36
|
+
content.push_str(&format!("* Item {i}\n"));
|
|
37
|
+
content.push_str(&format!(" * Badly indented item {i}\n\n"));
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
// MD006 - Start bullets at beginning
|
|
41
41
|
if i % 20 == 0 {
|
|
42
|
-
content.push_str(&format!(" * Indented bullet {}\n\n"
|
|
42
|
+
content.push_str(&format!(" * Indented bullet {i}\n\n"));
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
// MD007 - Unordered list indentation
|
|
46
46
|
if i % 18 == 0 {
|
|
47
|
-
content.push_str(&format!("* Item {}\n"
|
|
48
|
-
content.push_str(&format!(" * Wrong indent {}\n\n"
|
|
47
|
+
content.push_str(&format!("* Item {i}\n"));
|
|
48
|
+
content.push_str(&format!(" * Wrong indent {i}\n\n"));
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
// MD009 - Trailing spaces
|
|
52
|
-
content.push_str(&format!("Line {} with trailing spaces \n"
|
|
52
|
+
content.push_str(&format!("Line {i} with trailing spaces \n"));
|
|
53
53
|
|
|
54
54
|
// MD010 - Hard tabs
|
|
55
55
|
if i % 25 == 0 {
|
|
56
|
-
content.push_str(&format!("Line {}\twith\ttabs\n"
|
|
56
|
+
content.push_str(&format!("Line {i}\twith\ttabs\n"));
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
// MD012 - Multiple blank lines
|
|
@@ -63,72 +63,72 @@ fn generate_problematic_content(size: usize) -> String {
|
|
|
63
63
|
|
|
64
64
|
// MD013 - Line length (create long lines)
|
|
65
65
|
if i % 7 == 0 {
|
|
66
|
-
content.push_str(&format!("This is a very long line {} that exceeds the default line length limit of 80 characters and should be flagged by MD013 rule for being too long.\n"
|
|
66
|
+
content.push_str(&format!("This is a very long line {i} that exceeds the default line length limit of 80 characters and should be flagged by MD013 rule for being too long.\n"));
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
// MD018 - No space after hash on atx heading
|
|
70
70
|
if i % 22 == 0 {
|
|
71
|
-
content.push_str(&format!("#Heading without space {}\n\n"
|
|
71
|
+
content.push_str(&format!("#Heading without space {i}\n\n"));
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
// MD019 - Multiple spaces after hash on atx heading
|
|
75
75
|
if i % 24 == 0 {
|
|
76
|
-
content.push_str(&format!("## Heading with extra spaces {}\n\n"
|
|
76
|
+
content.push_str(&format!("## Heading with extra spaces {i}\n\n"));
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
// MD020 - No space inside hashes on closed atx heading
|
|
80
80
|
if i % 26 == 0 {
|
|
81
|
-
content.push_str(&format!("#Closed heading{}#\n\n"
|
|
81
|
+
content.push_str(&format!("#Closed heading{i}#\n\n"));
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
// MD021 - Multiple spaces inside hashes on closed atx heading
|
|
85
85
|
if i % 28 == 0 {
|
|
86
|
-
content.push_str(&format!("# Closed heading {} #\n\n"
|
|
86
|
+
content.push_str(&format!("# Closed heading {i} #\n\n"));
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
// MD022 - Headings should be surrounded by blank lines
|
|
90
90
|
if i % 35 == 0 {
|
|
91
|
-
content.push_str(&format!("Text before heading\n# Heading {}\nText after heading\n\n"
|
|
91
|
+
content.push_str(&format!("Text before heading\n# Heading {i}\nText after heading\n\n"));
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
// MD023 - Headings must start at beginning of line
|
|
95
95
|
if i % 40 == 0 {
|
|
96
|
-
content.push_str(&format!(" # Indented heading {}\n\n"
|
|
96
|
+
content.push_str(&format!(" # Indented heading {i}\n\n"));
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
// MD026 - Trailing punctuation in headings
|
|
100
100
|
if i % 16 == 0 {
|
|
101
|
-
content.push_str(&format!("# Heading with punctuation {}!\n\n"
|
|
101
|
+
content.push_str(&format!("# Heading with punctuation {i}!\n\n"));
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
// MD027 - Multiple spaces after blockquote symbol
|
|
105
105
|
if i % 45 == 0 {
|
|
106
|
-
content.push_str(&format!("> Blockquote with extra spaces {}\n\n"
|
|
106
|
+
content.push_str(&format!("> Blockquote with extra spaces {i}\n\n"));
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
// MD030 - Spaces after list markers
|
|
110
110
|
if i % 14 == 0 {
|
|
111
|
-
content.push_str(&format!("- Item with extra space {}\n\n"
|
|
111
|
+
content.push_str(&format!("- Item with extra space {i}\n\n"));
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
// MD031 - Fenced code blocks should be surrounded by blank lines
|
|
115
115
|
if i % 50 == 0 {
|
|
116
|
-
content.push_str(&format!("Text before\n```\ncode {}\n```\nText after\n\n"
|
|
116
|
+
content.push_str(&format!("Text before\n```\ncode {i}\n```\nText after\n\n"));
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
// MD032 - Lists should be surrounded by blank lines
|
|
120
120
|
if i % 55 == 0 {
|
|
121
|
-
content.push_str(&format!("Text before\n* List item {}\nText after\n\n"
|
|
121
|
+
content.push_str(&format!("Text before\n* List item {i}\nText after\n\n"));
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
// MD033 - Inline HTML
|
|
125
125
|
if i % 17 == 0 {
|
|
126
|
-
content.push_str(&format!("Text with <b>HTML tags</b> number {}\n"
|
|
126
|
+
content.push_str(&format!("Text with <b>HTML tags</b> number {i}\n"));
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
// MD034 - Bare URL used
|
|
130
130
|
if i % 19 == 0 {
|
|
131
|
-
content.push_str(&format!("Visit http://example{}.com for more info\n"
|
|
131
|
+
content.push_str(&format!("Visit http://example{i}.com for more info\n"));
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
// MD035 - Horizontal rule style
|
|
@@ -138,17 +138,17 @@ fn generate_problematic_content(size: usize) -> String {
|
|
|
138
138
|
|
|
139
139
|
// MD037 - Spaces inside emphasis markers
|
|
140
140
|
if i % 13 == 0 {
|
|
141
|
-
content.push_str(&format!("Text with * bad emphasis * number {}\n"
|
|
141
|
+
content.push_str(&format!("Text with * bad emphasis * number {i}\n"));
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
// MD038 - Spaces inside code span elements
|
|
145
145
|
if i % 21 == 0 {
|
|
146
|
-
content.push_str(&format!("Text with ` bad code ` number {}\n"
|
|
146
|
+
content.push_str(&format!("Text with ` bad code ` number {i}\n"));
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
// MD039 - Spaces inside link text
|
|
150
150
|
if i % 32 == 0 {
|
|
151
|
-
content.push_str(&format!("[ Link text ](http://example{}.com)\n"
|
|
151
|
+
content.push_str(&format!("[ Link text ](http://example{i}.com)\n"));
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
// MD040 - Fenced code language
|
|
@@ -158,17 +158,17 @@ fn generate_problematic_content(size: usize) -> String {
|
|
|
158
158
|
|
|
159
159
|
// MD042 - No empty links
|
|
160
160
|
if i % 70 == 0 {
|
|
161
|
-
content.push_str(&format!("[empty link {}]()\n"
|
|
161
|
+
content.push_str(&format!("[empty link {i}]()\n"));
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
// MD044 - Proper names
|
|
165
165
|
if i % 11 == 0 {
|
|
166
|
-
content.push_str(&format!("Text mentioning javascript and github number {}\n"
|
|
166
|
+
content.push_str(&format!("Text mentioning javascript and github number {i}\n"));
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
// MD045 - Images should have alternate text
|
|
170
170
|
if i % 75 == 0 {
|
|
171
|
-
content.push_str(&format!("\n"
|
|
171
|
+
content.push_str(&format!("\n"));
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
// MD047 - Files should end with a single newline (we'll handle this separately)
|
|
@@ -176,26 +176,24 @@ fn generate_problematic_content(size: usize) -> String {
|
|
|
176
176
|
// MD049 - Emphasis style
|
|
177
177
|
if i % 23 == 0 {
|
|
178
178
|
content.push_str(&format!(
|
|
179
|
-
"Text with _underscore emphasis_ and *asterisk emphasis* {}\n"
|
|
180
|
-
i
|
|
179
|
+
"Text with _underscore emphasis_ and *asterisk emphasis* {i}\n"
|
|
181
180
|
));
|
|
182
181
|
}
|
|
183
182
|
|
|
184
183
|
// MD050 - Strong style
|
|
185
184
|
if i % 27 == 0 {
|
|
186
185
|
content.push_str(&format!(
|
|
187
|
-
"Text with __underscore strong__ and **asterisk strong** {}\n"
|
|
188
|
-
i
|
|
186
|
+
"Text with __underscore strong__ and **asterisk strong** {i}\n"
|
|
189
187
|
));
|
|
190
188
|
}
|
|
191
189
|
|
|
192
190
|
// MD053 - Link and image reference definitions should be needed
|
|
193
191
|
if i % 80 == 0 {
|
|
194
|
-
content.push_str(&format!("[unused{}]: http://example{}.com\n"
|
|
192
|
+
content.push_str(&format!("[unused{i}]: http://example{i}.com\n"));
|
|
195
193
|
}
|
|
196
194
|
|
|
197
195
|
// Regular content
|
|
198
|
-
content.push_str(&format!("Regular paragraph {} with some content.\n\n"
|
|
196
|
+
content.push_str(&format!("Regular paragraph {i} with some content.\n\n"));
|
|
199
197
|
}
|
|
200
198
|
|
|
201
199
|
content
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
use criterion::{black_box, criterion_group, criterion_main
|
|
2
|
-
use rand::rng;
|
|
1
|
+
use criterion::{Criterion, black_box, criterion_group, criterion_main};
|
|
3
2
|
use rand::Rng;
|
|
4
|
-
use
|
|
3
|
+
use rand::rng;
|
|
5
4
|
use rumdl::LintContext;
|
|
6
5
|
use rumdl::MD053LinkImageReferenceDefinitions;
|
|
6
|
+
use rumdl::rule::Rule;
|
|
7
7
|
|
|
8
8
|
fn create_test_content(size: usize, ratio: f64) -> String {
|
|
9
9
|
let mut content = String::with_capacity(size);
|
|
@@ -20,9 +20,9 @@ fn create_test_content(size: usize, ratio: f64) -> String {
|
|
|
20
20
|
// 50% chance to add a reference
|
|
21
21
|
if rng.random::<f64>() < 0.7 {
|
|
22
22
|
// 70% chance to be a link, 30% to be an image
|
|
23
|
-
content.push_str(&format!("[Link {}][ref-{}]\n"
|
|
23
|
+
content.push_str(&format!("[Link {i}][ref-{i}]\n"));
|
|
24
24
|
} else {
|
|
25
|
-
content.push_str(&format!("![Image {}][ref-{}]\n"
|
|
25
|
+
content.push_str(&format!("![Image {i}][ref-{i}]\n"));
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
}
|
|
@@ -51,7 +51,7 @@ fn create_test_content(size: usize, ratio: f64) -> String {
|
|
|
51
51
|
for i in 0..100 {
|
|
52
52
|
if rng.random::<f64>() < ratio {
|
|
53
53
|
// Only add a portion based on ratio
|
|
54
|
-
content.push_str(&format!("[ref-{}]: https://example.com/ref-{}\n"
|
|
54
|
+
content.push_str(&format!("[ref-{i}]: https://example.com/ref-{i}\n"));
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
@@ -66,17 +66,17 @@ fn create_test_content_legacy() -> String {
|
|
|
66
66
|
for i in 0..200 {
|
|
67
67
|
if i < 100 {
|
|
68
68
|
// Used references
|
|
69
|
-
content.push_str(&format!("[ref{}]: https://example.com/ref{}\n"
|
|
69
|
+
content.push_str(&format!("[ref{i}]: https://example.com/ref{i}\n"));
|
|
70
70
|
} else {
|
|
71
71
|
// Unused references
|
|
72
|
-
content.push_str(&format!("[unused{}]: https://example.com/unused{}\n"
|
|
72
|
+
content.push_str(&format!("[unused{i}]: https://example.com/unused{i}\n"));
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
// Add reference usages
|
|
77
77
|
content.push_str("\n## Content with References\n\n");
|
|
78
78
|
for i in 0..100 {
|
|
79
|
-
content.push_str(&format!("This is a paragraph with a [link][ref{}] reference.\n"
|
|
79
|
+
content.push_str(&format!("This is a paragraph with a [link][ref{i}] reference.\n"));
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
content
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
use criterion::{black_box, criterion_group, criterion_main
|
|
2
|
-
use rand::rng;
|
|
1
|
+
use criterion::{Criterion, black_box, criterion_group, criterion_main};
|
|
3
2
|
use rand::Rng;
|
|
3
|
+
use rand::rng;
|
|
4
4
|
use rumdl::utils::range_utils::LineIndex;
|
|
5
5
|
|
|
6
6
|
// Naive implementation that doesn't use the optimized function
|
|
@@ -38,7 +38,7 @@ fn naive_line_col_to_byte_range(content: &str, line: usize, column: usize) -> st
|
|
|
38
38
|
|
|
39
39
|
fn generate_test_content(line_count: usize) -> String {
|
|
40
40
|
(0..line_count)
|
|
41
|
-
.map(|i| format!("Line {}: This is a test line with some content."
|
|
41
|
+
.map(|i| format!("Line {i}: This is a test line with some content."))
|
|
42
42
|
.collect::<Vec<String>>()
|
|
43
43
|
.join("\n")
|
|
44
44
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
use criterion::{criterion_group, criterion_main
|
|
1
|
+
use criterion::{Criterion, criterion_group, criterion_main};
|
|
2
2
|
use rumdl::rule::Rule;
|
|
3
3
|
use rumdl::rules::{
|
|
4
4
|
MD013LineLength, MD033NoInlineHtml, MD037NoSpaceInEmphasis, MD044ProperNames, MD051LinkFragments,
|
|
@@ -30,8 +30,7 @@ fn bench_md033(c: &mut Criterion) {
|
|
|
30
30
|
// Generate 500 lines with HTML tags
|
|
31
31
|
for i in 0..500 {
|
|
32
32
|
content.push_str(&format!(
|
|
33
|
-
"Line {} with <span class=\"highlight\">HTML</span> and <div>nested <em>tags</em></div>\n"
|
|
34
|
-
i
|
|
33
|
+
"Line {i} with <span class=\"highlight\">HTML</span> and <div>nested <em>tags</em></div>\n"
|
|
35
34
|
));
|
|
36
35
|
}
|
|
37
36
|
|
|
@@ -49,13 +48,13 @@ fn bench_md037(c: &mut Criterion) {
|
|
|
49
48
|
for i in 0..500 {
|
|
50
49
|
if i % 3 == 0 {
|
|
51
50
|
// Incorrect: no spaces around emphasis
|
|
52
|
-
content.push_str(&format!("Line {} with*incorrect emphasis*markers\n"
|
|
51
|
+
content.push_str(&format!("Line {i} with*incorrect emphasis*markers\n"));
|
|
53
52
|
} else if i % 3 == 1 {
|
|
54
53
|
// Incorrect: spaces inside emphasis
|
|
55
|
-
content.push_str(&format!("Line {} with *incorrect emphasis *markers\n"
|
|
54
|
+
content.push_str(&format!("Line {i} with *incorrect emphasis *markers\n"));
|
|
56
55
|
} else {
|
|
57
56
|
// Correct: proper spaces around emphasis
|
|
58
|
-
content.push_str(&format!("Line {} with *correct emphasis* markers\n"
|
|
57
|
+
content.push_str(&format!("Line {i} with *correct emphasis* markers\n"));
|
|
59
58
|
}
|
|
60
59
|
}
|
|
61
60
|
|
|
@@ -115,7 +114,7 @@ fn bench_md051(c: &mut Criterion) {
|
|
|
115
114
|
|
|
116
115
|
// Add 100 headings
|
|
117
116
|
for i in 1..101 {
|
|
118
|
-
content.push_str(&format!("## Heading {}\n\n"
|
|
117
|
+
content.push_str(&format!("## Heading {i}\n\n"));
|
|
119
118
|
}
|
|
120
119
|
|
|
121
120
|
// Add 500 links, some with valid and some with invalid fragments
|
|
@@ -123,10 +122,10 @@ fn bench_md051(c: &mut Criterion) {
|
|
|
123
122
|
if i % 3 == 0 {
|
|
124
123
|
// Valid link
|
|
125
124
|
let heading_number = (i % 100) + 1;
|
|
126
|
-
content.push_str(&format!("This is a [valid link](#heading-{})\n"
|
|
125
|
+
content.push_str(&format!("This is a [valid link](#heading-{heading_number})\n"));
|
|
127
126
|
} else {
|
|
128
127
|
// Invalid link
|
|
129
|
-
content.push_str(&format!("This is an [invalid link](#non-existent-heading-{})\n"
|
|
128
|
+
content.push_str(&format!("This is an [invalid link](#non-existent-heading-{i})\n"));
|
|
130
129
|
}
|
|
131
130
|
}
|
|
132
131
|
|
|
@@ -146,17 +145,17 @@ fn bench_md053(c: &mut Criterion) {
|
|
|
146
145
|
for i in 0..200 {
|
|
147
146
|
if i < 100 {
|
|
148
147
|
// Used references
|
|
149
|
-
content.push_str(&format!("[ref{}]: https://example.com/ref{}\n"
|
|
148
|
+
content.push_str(&format!("[ref{i}]: https://example.com/ref{i}\n"));
|
|
150
149
|
} else {
|
|
151
150
|
// Unused references
|
|
152
|
-
content.push_str(&format!("[unused{}]: https://example.com/unused{}\n"
|
|
151
|
+
content.push_str(&format!("[unused{i}]: https://example.com/unused{i}\n"));
|
|
153
152
|
}
|
|
154
153
|
}
|
|
155
154
|
|
|
156
155
|
// Add reference usages
|
|
157
156
|
content.push_str("\n## Content with References\n\n");
|
|
158
157
|
for i in 0..100 {
|
|
159
|
-
content.push_str(&format!("This is a paragraph with a [link][ref{}] reference.\n"
|
|
158
|
+
content.push_str(&format!("This is a paragraph with a [link][ref{i}] reference.\n"));
|
|
160
159
|
}
|
|
161
160
|
|
|
162
161
|
let rule = MD053LinkImageReferenceDefinitions::default();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
use criterion::{black_box, criterion_group, criterion_main
|
|
1
|
+
use criterion::{Criterion, black_box, criterion_group, criterion_main};
|
|
2
2
|
use rumdl::lint_context::LintContext;
|
|
3
3
|
use rumdl::rule::Rule;
|
|
4
4
|
use rumdl::rules::*;
|
|
@@ -9,7 +9,7 @@ fn generate_test_content() -> String {
|
|
|
9
9
|
|
|
10
10
|
for i in 0..500 {
|
|
11
11
|
// MD009 - Trailing spaces (very common)
|
|
12
|
-
content.push_str(&format!("Line {} with trailing spaces \n"
|
|
12
|
+
content.push_str(&format!("Line {i} with trailing spaces \n"));
|
|
13
13
|
|
|
14
14
|
// MD012 - Multiple blank lines
|
|
15
15
|
if i % 10 == 0 {
|
|
@@ -18,21 +18,21 @@ fn generate_test_content() -> String {
|
|
|
18
18
|
|
|
19
19
|
// MD018 - No space after hash
|
|
20
20
|
if i % 15 == 0 {
|
|
21
|
-
content.push_str(&format!("#Heading without space {}\n\n"
|
|
21
|
+
content.push_str(&format!("#Heading without space {i}\n\n"));
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
// MD026 - Trailing punctuation
|
|
25
25
|
if i % 20 == 0 {
|
|
26
|
-
content.push_str(&format!("# Heading with punctuation {}!\n\n"
|
|
26
|
+
content.push_str(&format!("# Heading with punctuation {i}!\n\n"));
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
// MD037 - Spaces inside emphasis
|
|
30
30
|
if i % 8 == 0 {
|
|
31
|
-
content.push_str(&format!("Text with * bad emphasis * number {}\n"
|
|
31
|
+
content.push_str(&format!("Text with * bad emphasis * number {i}\n"));
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
// Regular content
|
|
35
|
-
content.push_str(&format!("Regular paragraph {} with some content.\n\n"
|
|
35
|
+
content.push_str(&format!("Regular paragraph {i} with some content.\n\n"));
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
content
|
|
@@ -24,7 +24,7 @@ fn main() {
|
|
|
24
24
|
|
|
25
25
|
println!("📋 Benchmark Configuration:");
|
|
26
26
|
println!(" Rules to test: {}", rules.len());
|
|
27
|
-
println!(" Test type: {}"
|
|
27
|
+
println!(" Test type: {test_type}");
|
|
28
28
|
println!(" CPU cores: {}", num_cpus::get());
|
|
29
29
|
println!();
|
|
30
30
|
|
|
@@ -117,7 +117,7 @@ fn save_baseline_results(results: &std::collections::HashMap<String, rumdl::perf
|
|
|
117
117
|
use std::fs;
|
|
118
118
|
|
|
119
119
|
let timestamp = chrono::Utc::now().format("%Y%m%d_%H%M%S");
|
|
120
|
-
let filename = format!("benchmark_baseline_{}.txt"
|
|
120
|
+
let filename = format!("benchmark_baseline_{timestamp}.txt");
|
|
121
121
|
|
|
122
122
|
let mut output = String::new();
|
|
123
123
|
output.push_str("RUMDL Performance Baseline Results\n");
|
|
@@ -164,7 +164,7 @@ fn save_baseline_results(results: &std::collections::HashMap<String, rumdl::perf
|
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
match fs::write(&filename, output) {
|
|
167
|
-
Ok(_) => println!("📄 Baseline results saved to: {}"
|
|
168
|
-
Err(e) => eprintln!("❌ Failed to save baseline results: {}"
|
|
167
|
+
Ok(_) => println!("📄 Baseline results saved to: {filename}"),
|
|
168
|
+
Err(e) => eprintln!("❌ Failed to save baseline results: {e}"),
|
|
169
169
|
}
|
|
170
170
|
}
|
|
@@ -28,11 +28,11 @@ fn main() {
|
|
|
28
28
|
|
|
29
29
|
println!("📋 Benchmark Configuration:");
|
|
30
30
|
println!(" Rules to test: {}", rules.len());
|
|
31
|
-
println!(" File count: {}"
|
|
32
|
-
println!(" Content size: {}"
|
|
31
|
+
println!(" File count: {file_count}");
|
|
32
|
+
println!(" Content size: {content_size}");
|
|
33
33
|
println!(" CPU cores: {}", num_cpus::get());
|
|
34
34
|
if let Some(threads) = thread_count {
|
|
35
|
-
println!(" Thread override: {}"
|
|
35
|
+
println!(" Thread override: {threads}");
|
|
36
36
|
}
|
|
37
37
|
println!();
|
|
38
38
|
|
|
@@ -43,7 +43,7 @@ fn main() {
|
|
|
43
43
|
|
|
44
44
|
println!("📄 Generated Test Files:");
|
|
45
45
|
println!(" Total files: {}", test_files.len());
|
|
46
|
-
println!(" Total content: {} bytes ({} lines)"
|
|
46
|
+
println!(" Total content: {total_content_size} bytes ({total_lines} lines)");
|
|
47
47
|
println!(" Average file size: {} bytes", total_content_size / test_files.len());
|
|
48
48
|
println!();
|
|
49
49
|
|
|
@@ -128,8 +128,7 @@ fn run_file_parallel_comparison(
|
|
|
128
128
|
// Verify correctness (warnings should be the same)
|
|
129
129
|
if sequential_total_warnings != parallel_total_warnings {
|
|
130
130
|
println!(
|
|
131
|
-
"⚠️ WARNING: Different warning counts! Sequential: {}, Parallel: {}"
|
|
132
|
-
sequential_total_warnings, parallel_total_warnings
|
|
131
|
+
"⚠️ WARNING: Different warning counts! Sequential: {sequential_total_warnings}, Parallel: {parallel_total_warnings}"
|
|
133
132
|
);
|
|
134
133
|
}
|
|
135
134
|
|
|
@@ -151,10 +150,10 @@ fn run_file_parallel_comparison(
|
|
|
151
150
|
|
|
152
151
|
if comparison.speedup_factor > 1.0 {
|
|
153
152
|
let improvement = (comparison.speedup_factor - 1.0) * 100.0;
|
|
154
|
-
println!(" ✅ Performance improvement: {:.1}%"
|
|
153
|
+
println!(" ✅ Performance improvement: {improvement:.1}%");
|
|
155
154
|
} else {
|
|
156
155
|
let degradation = (1.0 - comparison.speedup_factor) * 100.0;
|
|
157
|
-
println!(" ❌ Performance degradation: {:.1}%"
|
|
156
|
+
println!(" ❌ Performance degradation: {degradation:.1}%");
|
|
158
157
|
if comparison.parallel_overhead > std::time::Duration::ZERO {
|
|
159
158
|
println!(
|
|
160
159
|
" Parallel overhead: {:.3}ms",
|
|
@@ -170,8 +169,8 @@ fn run_file_parallel_comparison(
|
|
|
170
169
|
|
|
171
170
|
println!();
|
|
172
171
|
println!("📊 Throughput Analysis:");
|
|
173
|
-
println!(" Sequential: {:.2} MB/s"
|
|
174
|
-
println!(" Parallel: {:.2} MB/s"
|
|
172
|
+
println!(" Sequential: {sequential_throughput:.2} MB/s");
|
|
173
|
+
println!(" Parallel: {parallel_throughput:.2} MB/s");
|
|
175
174
|
println!(
|
|
176
175
|
" Throughput improvement: {:.1}%",
|
|
177
176
|
(parallel_throughput / sequential_throughput - 1.0) * 100.0
|