A Send-friendly fork of markup5ever for high-concurrency HTML parsing.
This crate depends on spider-tendril instead of tendril. spider-tendril flips Tendril<F, A>'s default atomicity from NonAtomic to Atomic, making StrTendril Send by default. As a result, every type defined in markup5ever that holds a tendril (Attribute, BufferQueue, Doctype, etc.) is now Send. which lets html5ever's Tokenizer, TreeBuilder, and Parser cross thread boundaries.
The crate also uses spider-web-atoms 0.3.0 for upstream main's atoms and phf 0.14 support. The source code and parse behavior are otherwise identical to upstream.
[dependencies]
spider-markup5ever = "0.40"use markup5ever::{Attribute, QualName, ...};The library still imports as markup5ever, so existing code requires no changes, only the dependency line in Cargo.toml needs to swap.
Pair with spider-html5ever for the full Send-able parser stack.
Licensed under either of Apache License, Version 2.0 or MIT license at your option, matching the upstream markup5ever license.
Vendored from servo/html5ever a193ea7f2492d1e51eb32955a09c241345348dba (0.40.0-dev). Requires Rust 1.85. UPSTREAM.toml records the source directory and fork delta.
Run scripts/check-drift.sh to list upstream commits since the pin. Run scripts/sync-upstream.sh --to <ref> from a clean tree to apply source changes and advance the pin. The sync preserves Cargo.toml, README.md, and the recorded exclusions; review dependencies and fork invariants before committing.