From e484435ca30bd93b6a5c95c48bb36a47932743f6 Mon Sep 17 00:00:00 2001 From: "Garen J. Torikian" Date: Wed, 3 Jan 2024 17:21:30 -0500 Subject: [PATCH 1/5] Bump to Ruby 3.3.0 --- .ruby-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ruby-version b/.ruby-version index e4604e3..15a2799 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.2.1 +3.3.0 From d5f4bd2081c5d071a238ef868e17b0296f590af5 Mon Sep 17 00:00:00 2001 From: "Garen J. Torikian" Date: Wed, 3 Jan 2024 17:21:54 -0500 Subject: [PATCH 2/5] modernize Cargo defs --- Cargo.lock | 185 +++++++++++++++++++++++++++++-------------- Cargo.toml | 2 + ext/selma/Cargo.toml | 2 + 3 files changed, 129 insertions(+), 60 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1dec415..f5ba9e1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,13 +4,14 @@ version = 3 [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" dependencies = [ "cfg-if", "once_cell", "version_check", + "zerocopy", ] [[package]] @@ -24,11 +25,11 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.66.1" +version = "0.69.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7" +checksum = "9ffcebc3849946a7170a05992aac39da343a90676ab392c51a4280981d6379c2" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "cexpr", "clang-sys", "lazy_static", @@ -39,7 +40,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.38", + "syn 2.0.46", ] [[package]] @@ -50,9 +51,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "byteorder" @@ -77,9 +78,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clang-sys" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" dependencies = [ "glob", "libc", @@ -116,7 +117,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.38", + "syn 2.0.46", ] [[package]] @@ -179,7 +180,7 @@ checksum = "eecf8589574ce9b895052fa12d69af7a233f99e6107f5cb8dd1044f2a17bfdcb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.46", ] [[package]] @@ -246,18 +247,18 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.149" +version = "0.2.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" dependencies = [ "cfg-if", - "winapi", + "windows-sys", ] [[package]] @@ -272,7 +273,7 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10662f7aad081ec900fd735be33076da75e0389400277dc3734e2b0aa02bb115" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "cfg-if", "cssparser", "encoding_rs", @@ -306,7 +307,7 @@ checksum = "5968c820e2960565f647819f5928a42d6e874551cab9d88d75e3e0660d7f71e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.46", ] [[package]] @@ -317,9 +318,9 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "mime" @@ -351,9 +352,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "peeking_take_while" @@ -435,18 +436,18 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "2de98502f212cfcea8d0bb305bd0f49d7ebdd75b64ba0a68f937d888f4e0d6db" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -504,18 +505,18 @@ dependencies = [ [[package]] name = "rb-sys" -version = "0.9.82" +version = "0.9.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e6bf79bf4c711917cacfaf46dfab4314dbfdd89a8ee3ec4b98336cd23f1ebf" +checksum = "05b780e6858b0b0eced1d55d0f097c024b77a37b41f83bd35341130f78e37c51" dependencies = [ "rb-sys-build", ] [[package]] name = "rb-sys-build" -version = "0.9.82" +version = "0.9.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5482a1ed4cde58dddaf162b6aebcb5c25645822547832b8be101f2acd40bcdd6" +checksum = "44957a3bc513dad1b0f20bdd0ee3b82e729a59da44086a6b40d8bc71958a6db8" dependencies = [ "bindgen", "lazy_static", @@ -523,7 +524,7 @@ dependencies = [ "quote", "regex", "shell-words", - "syn 2.0.38", + "syn 2.0.46", ] [[package]] @@ -534,9 +535,9 @@ checksum = "a35802679f07360454b418a5d1735c89716bde01d35b1560fc953c1415a0b3bb" [[package]] name = "regex" -version = "1.10.0" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d119d7c7ca818f8a53c300863d4f87566aac09943aef5b355bb83969dae75d87" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", @@ -546,9 +547,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "465c6fc0621e4abc4187a2bda0937bfd4f722c2730b29562e19689ea796c9a4b" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", @@ -557,9 +558,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56d84fdd47036b038fc80dd333d10b6aab10d5d31f4a366e20014def75328d33" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "rustc-hash" @@ -614,9 +615,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] name = "seq-macro" @@ -654,9 +655,9 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "smallvec" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "stable_deref_trait" @@ -677,9 +678,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.38" +version = "2.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +checksum = "89456b690ff72fddcecf231caedbe615c59480c93358a93dfae7fc29e3ebbf0e" dependencies = [ "proc-macro2", "quote", @@ -694,22 +695,22 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" [[package]] name = "thiserror" -version = "1.0.49" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.49" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.46", ] [[package]] @@ -731,23 +732,87 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] -name = "winapi" -version = "0.3.9" +name = "windows-sys" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "windows-targets", ] [[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" +name = "windows-targets" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.46", +] diff --git a/Cargo.toml b/Cargo.toml index b3c1bb9..edc5c13 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,3 +4,5 @@ [workspace] members = ["ext/selma"] +resolver = "2" + diff --git a/ext/selma/Cargo.toml b/ext/selma/Cargo.toml index cd4104c..52e9054 100644 --- a/ext/selma/Cargo.toml +++ b/ext/selma/Cargo.toml @@ -2,6 +2,8 @@ name = "selma" version = "1.0.0" edition = "2021" +rust-version = "1.75.0" +publish = false [dependencies] enum-iterator = "1.4" From 7e625134b3ec20ef28a53f96feaee7fc97b190f7 Mon Sep 17 00:00:00 2001 From: "Garen J. Torikian" Date: Wed, 3 Jan 2024 17:21:57 -0500 Subject: [PATCH 3/5] lint --- ext/selma/src/rewriter.rs | 9 +++++---- ext/selma/src/tags.rs | 2 +- rakelib/test.rake | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/ext/selma/src/rewriter.rs b/ext/selma/src/rewriter.rs index 296299a..392d5b6 100644 --- a/ext/selma/src/rewriter.rs +++ b/ext/selma/src/rewriter.rs @@ -42,9 +42,9 @@ pub struct SelmaRewriter(std::cell::RefCell); type RewriterValues = (Option>>, Option); impl SelmaRewriter { - const SELMA_ON_END_TAG: &str = "on_end_tag"; - const SELMA_HANDLE_ELEMENT: &str = "handle_element"; - const SELMA_HANDLE_TEXT_CHUNK: &str = "handle_text_chunk"; + const SELMA_ON_END_TAG: &'static str = "on_end_tag"; + const SELMA_HANDLE_ELEMENT: &'static str = "handle_element"; + const SELMA_HANDLE_TEXT_CHUNK: &'static str = "handle_text_chunk"; /// @yard /// @def new(sanitizer: Selma::Sanitizer.new(Selma::Sanitizer::Config::DEFAULT), handlers: []) @@ -56,13 +56,14 @@ impl SelmaRewriter { let sanitizer = match rb_sanitizer { None => { + // no `sanitizer:` provided, use default let default_sanitizer = SelmaSanitizer::new(&[])?; let wrapped_sanitizer = Obj::wrap(default_sanitizer); wrapped_sanitizer.funcall::<&str, (), Value>("setup", ())?; Some(wrapped_sanitizer.get().to_owned()) } Some(sanitizer_value) => match sanitizer_value { - None => None, + None => None, // no `sanitizer:` provided, use default Some(sanitizer) => { sanitizer.funcall::<&str, (), Value>("setup", ())?; Some(sanitizer.get().to_owned()) diff --git a/ext/selma/src/tags.rs b/ext/selma/src/tags.rs index 7cf0dc9..94c7966 100644 --- a/ext/selma/src/tags.rs +++ b/ext/selma/src/tags.rs @@ -205,7 +205,7 @@ impl Tag { || tag.index == HTMLTag::XMP as usize } - pub const ESCAPEWORTHY_TAGS_CSS: &str = + pub const ESCAPEWORTHY_TAGS_CSS: &'static str = "title, textarea, style, xmp, iframe, noembed, noframes, script, plaintext"; pub fn html_tags() -> Vec { diff --git a/rakelib/test.rake b/rakelib/test.rake index 52efcaa..9b3103e 100644 --- a/rakelib/test.rake +++ b/rakelib/test.rake @@ -61,7 +61,7 @@ class ValgrindTestTask < Rake::TestTask matches << formatted_ruby_version.split(".")[0, 3].join(".") # e.g. "ruby-2.5.1" matches << formatted_ruby_version.split(".")[0, 2].join(".") # e.g. "ruby-2.5" matches << formatted_ruby_version.split(".")[0, 1].join(".") # e.g. "ruby-2" - matches << formatted_ruby_version.split("-").first # e.g. "ruby" + matches << formatted_ruby_version.split("-").first # e.g. "ruby" matches end end From ecfd01cfa2cc6d89a06de4f1ca2f308beb2de07c Mon Sep 17 00:00:00 2001 From: "Garen J. Torikian" Date: Wed, 3 Jan 2024 17:30:21 -0500 Subject: [PATCH 4/5] Use repo ruby --- .github/workflows/test.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9b4c35a..20a25d2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,15 +12,12 @@ jobs: - ubuntu-latest - macos-latest - windows-latest - ruby: - - 3.2 steps: - uses: actions/checkout@v4 - uses: oxidize-rb/actions/setup-ruby-and-rust@main with: - ruby-version: ${{ matrix.ruby }} rubygems: latest bundler-cache: true cargo-cache: true From 2b0cf69869885344acef704741f8826b77d06367 Mon Sep 17 00:00:00 2001 From: "Garen J. Torikian" Date: Wed, 3 Jan 2024 17:38:54 -0500 Subject: [PATCH 5/5] imrpove lint test --- .github/workflows/lint.yml | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3da4081..adc0544 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -19,17 +19,31 @@ jobs: clippy_format: runs-on: ubuntu-latest - strategy: - matrix: - rust: - - stable + steps: - uses: actions/checkout@v4 with: submodules: true - - name: Obtain Rust - run: rustup override set ${{ matrix.rust }} + + - name: Set up Rust + id: toolchain + uses: dtolnay/rust-toolchain@stable + with: + components: clippy, rustfmt + + - uses: actions/cache@v3 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + tmp/ + target/ + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}-v1 + - name: Check clippy - run: rustup component add clippy && cargo clippy + run: cargo clippy + - name: Check formatting - run: rustup component add rustfmt && cargo fmt -- --check + run: cargo fmt -- --check