Index: ruff/Cargo.toml
===================================================================
--- ruff.orig/Cargo.toml
+++ ruff/Cargo.toml
@@ -54,7 +54,6 @@ tracing-subscriber = { version = "0.3.17
 unicode-ident = "1.0.12"
 unicode-width = "0.1"
 uuid = { version = "1.4.1", features = ["v4", "fast-rng", "macro-diagnostics", "js"] }
-wsl = { version = "0.1.0" }
 
 # v1.0.1
 libcst = { version = "0.1.0", default-features = false }
Index: ruff/crates/ruff_linter/Cargo.toml
===================================================================
--- ruff.orig/crates/ruff_linter/Cargo.toml
+++ ruff/crates/ruff_linter/Cargo.toml
@@ -72,7 +72,6 @@ toml = { workspace = true }
 typed-arena = { version = "2.0" }
 unicode-width = { workspace = true }
 unicode_names2 = { version = "0.6.0" }
-wsl = { version = "0.1.0" }
 
 [dev-dependencies]
 insta = { workspace = true }
Index: ruff/crates/ruff_linter/src/rules/flake8_executable/rules/shebang_missing_executable_file.rs
===================================================================
--- ruff.orig/crates/ruff_linter/src/rules/flake8_executable/rules/shebang_missing_executable_file.rs
+++ ruff/crates/ruff_linter/src/rules/flake8_executable/rules/shebang_missing_executable_file.rs
@@ -3,7 +3,6 @@
 use std::path::Path;
 
 use ruff_text_size::{Ranged, TextRange};
-use wsl;
 
 use ruff_diagnostics::{Diagnostic, Violation};
 use ruff_macros::{derive_message_formats, violation};
@@ -43,11 +42,6 @@ impl Violation for ShebangMissingExecuta
 /// EXE002
 #[cfg(target_family = "unix")]
 pub(crate) fn shebang_missing_executable_file(filepath: &Path) -> Option<Diagnostic> {
-    // WSL supports Windows file systems, which do not have executable bits.
-    // Instead, everything is executable. Therefore, we skip this rule on WSL.
-    if wsl::is_wsl() {
-        return None;
-    }
     if let Ok(true) = is_executable(filepath) {
         return Some(Diagnostic::new(
             ShebangMissingExecutableFile,
Index: ruff/crates/ruff_linter/src/rules/flake8_executable/rules/shebang_not_executable.rs
===================================================================
--- ruff.orig/crates/ruff_linter/src/rules/flake8_executable/rules/shebang_not_executable.rs
+++ ruff/crates/ruff_linter/src/rules/flake8_executable/rules/shebang_not_executable.rs
@@ -3,7 +3,6 @@
 use std::path::Path;
 
 use ruff_text_size::{Ranged, TextRange};
-use wsl;
 
 use ruff_diagnostics::{Diagnostic, Violation};
 use ruff_macros::{derive_message_formats, violation};
@@ -43,12 +42,6 @@ impl Violation for ShebangNotExecutable
 /// EXE001
 #[cfg(target_family = "unix")]
 pub(crate) fn shebang_not_executable(filepath: &Path, range: TextRange) -> Option<Diagnostic> {
-    // WSL supports Windows file systems, which do not have executable bits.
-    // Instead, everything is executable. Therefore, we skip this rule on WSL.
-    if wsl::is_wsl() {
-        return None;
-    }
-
     if let Ok(false) = is_executable(filepath) {
         return Some(Diagnostic::new(ShebangNotExecutable, range));
     }
