html-conformv0.2.1

Changelog

Generated from CHANGELOG.md in the project repository. Never maintained twice.

Unreleased

  • addedassertion.elements.img-missing-alt: an img without alt is now an error outside figure, with vnu's exemptions (aria-label, aria-labelledby, a non-empty title; role and other aria-* attributes keep their more specific accessible-name rules). Previously only the figure-without-figcaption case was checked.
  • addedassertion.elements.*-in-a: interactive content inside a (button, select, textarea, label, details, dialog, embed, iframe, a, non-hidden input, video/audio with controls, img/object with usemap, any element with tabindex or an interactive role), matching vnu's list.
  • changedBumped html5-parser to 0.4.0. parser.html5 now also reports stray end tags with no matching element in scope (</div>, </li>, </h2>, …), start tags the parser ignores (a second <body>, <td> outside a table, …) and misnested formatting elements (<b><i>…</b></i>), all of which 0.3.0 dropped silently. Documents containing them get additional parser.html5 errors. The differential corpus result is unchanged (0 false positives).
  • changedREADME and docs no longer imply complete tree-construction error coverage; "What's not covered" lists the parse errors html5-parser 0.4.0 still does not record (e.g. <div><span></div>).
  • changedMSRV raised from 1.85 to 1.88 (rust-version = "1.88.0"). 1.85 was never actually buildable: html5-parser 0.4.0, csp-parse 0.1.0 and xpath-eval use let chains (stable since 1.88), and urlidnaidna_adapter 1.2.2 pulls in the icu_* 2.3 crates, which require 1.88. The CI MSRV job now builds with 1.88.0.

0.2.1

4 September 2026

  • addedFuzzing: fuzz/ (cargo-fuzz), a whole-pipeline fuzz target on check(). Local dev tool, not run in CI.
  • addedBenchmarks: benches/check.rs (criterion), timing check() against a small typical page and a large table-heavy page from tests/corpus/. CI only compiles them (cargo bench --no-run).
  • changedPrecision claim in the README narrowed to what the differential test suite actually measures (0 false positives, 99.98 % accuracy across 4,655 fixtures), instead of implying finding-level (rule-ID/message/position) parity with vnu.
  • changedCI now runs the full cargo-deny check (licenses, bans, sources, advisories) instead of just check licenses, and adds a dedicated MSRV job pinned to rust-version = "1.85.0".
  • fixedREADME install example and CHANGELOG were still on 0.1.0 despite the 0.2.0 release.

0.2.0

1 September 2026

  • added**Table Cell Grid (tables.integrity):** 2D grid layout of colspan/rowspan values to detect overlapping cells, cells spanning past the end of their row group, and columns no cell ever begins in (src/table_integrity.rs).
  • addedReal-World Sanity Tooling: xtask/fetch-real-world.sh and xtask/compare-real-world.sh to compare html-conform against a locally-run vnu jar on live websites (supplementary, not part of the pinned corpus baseline).
  • changedBumped html5-parser to 0.3.0, closing the tree-construction-error false-negative bucket.
  • changedDropped "pure" from the crate description/README wording.
  • fixedRecognize RDFa Lite <meta property> (Open Graph) in the RELAX NG schema layer.
  • fixedCorrected dl duplicate-dt, rb/rtc, and active role=tab Schematron rules.
  • fixedImplemented the missing-lang warning (elements-html-missing-lang) and corrected the differential test's harness-artifact comparison for it.
  • fixedFixed an invalid crates.io category slug (development-tools::validation doesn't exist).

0.1.0

29 August 2026

  • addedCore Engine: HTML5 conformance checking library combining 5 validation layers (Parser, RELAX NG Schema, Datatype Microsyntaxes, Schematron Co-constraints, JSON/CSP validators).
  • addedSchema Layer: Full vendored W3C RELAX NG schemas for HTML5, SVG 1.1, and MathML 3 via relax-ng.
  • addedDatatype Library: 50 custom W3C attribute datatype checkers (w:image-candidate-strings for srcset, w:content-security-policy, w:media-query, w:datetime, w:iri-ref, BCP 47 language tags).
  • addedAssertions: Schematron rule engine with 100+ co-constraint rules across ARIA 1.2, HTML structural restrictions, element nesting, heading hierarchy, and link/script attribute combinations.
  • addedDedicated Script/CSP Validators: Spec-compliant JSON checkers for <script type="importmap"> and <script type="speculationrules">, plus Content Security Policy enforcement for <meta http-equiv="Content-Security-Policy">.
  • addedDifferential Test Suite: 4,655 W3C/vnu corpus test fixtures with 98.8% accuracy and 0 False Positives.
  • addedCompliance & Tooling: REUSE compliance, deny.toml for cargo-deny, and THIRD-PARTY-NOTICES.md.