Skip to content

Conversation

@nicoburns
Copy link
Contributor

@nicoburns nicoburns commented Sep 8, 2025

The tendril crate is an important servo-owned dependency of html5ever, not widely used outside of html5ever, and is poorly maintained in it's current home of https://github.com/servo/tendril (which is somewhat concerning given that it contains a large amount of unsafe code).

This PR imports the tendril crate into this repository where it can hopefully get more attention.

Copy link
Member

@mrobinson mrobinson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. I'm definitely in favor of this and archiving the tendril repository. I just have one request:

Comment on lines 1 to 25
name: Tendril CI

on:
push:
branches: [main]
pull_request:
workflow_dispatch:
merge_group:
types: [checks_requested]

jobs:
linux-ci:
name: Linux
runs-on: ubuntu-latest
strategy:
matrix:
toolchain: ["stable", "beta", "nightly", "1.36.0"]
steps:
- uses: actions/checkout@v2

- name: Install toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.toolchain }}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be possible to integrate this into the html5ever CI?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes made:

  • Remove tendril.yml workflow
  • Add step for cargo test --features 'encoding encoding_rs'
  • Port tendril benchmarks to criterion (which means they get picked up by html5ever's CI without any changes to the config)

I have not attempted to maintain the Rust 1.36 check as given that tendril is basically only used by html5ever, it doesn't seem useful to maintain a lower MSRV.

@nicoburns nicoburns force-pushed the tendril branch 5 times, most recently from 8fba460 to 551389b Compare September 8, 2025 18:50
#[cfg(any(feature = "encoding", feature = "encoding_rs"))]
pub type Tests = &'static [(&'static [&'static [u8]], &'static str, usize)];

#[cfg(any(feature = "encoding"))]
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For some reason ignoring the clippy lint for this didn't work. So I just fixed it instead.

Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
@nicoburns
Copy link
Contributor Author

This is now passing CI and ready for review. I have intentionally made as few changes as possible to the code in https://github.com/servo/tendril in this PR so as to maintain history. So I have ignored warning and clippy lints rather than fixing them, haven't updated dependencies, or migrated edition etc. Those changes can be made in follow-up PRs.

We may also wish to consider rebase-merging rather than squash-merging this PR for the same reason.

Once this PR is merged we should:

@nicoburns nicoburns requested a review from mrobinson September 8, 2025 19:15
@nicoburns nicoburns added this pull request to the merge queue Sep 9, 2025
Merged via the queue into servo:main with commit 631dbf5 Sep 9, 2025
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Consider moving this crate into the html5ever repository

2 participants