Skip to content

Repository files navigation

spider-markup5ever

A Send-friendly fork of markup5ever for high-concurrency HTML parsing.

crates.io

Why this fork?

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.

Use

[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.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option, matching the upstream markup5ever license.

Upstream sync

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.

About

Send-able fork of markup5ever, depends on spider-tendril

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages