aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock92
-rw-r--r--helix-syntax/Cargo.toml2
-rw-r--r--helix-syntax/build.rs26
3 files changed, 32 insertions, 88 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 125e7784..bf7920fa 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -227,47 +227,6 @@ dependencies = [
]
[[package]]
-name = "const_fn"
-version = "0.4.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28b9d6de7f49e22cf97ad17fc4036ece69300032f45f78f30b4a4482cdc3f4a6"
-
-[[package]]
-name = "crossbeam-channel"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775"
-dependencies = [
- "cfg-if 1.0.0",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-deque"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9"
-dependencies = [
- "cfg-if 1.0.0",
- "crossbeam-epoch",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-epoch"
-version = "0.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1aaa739f95311c2c7887a76863f500026092fb1dce0161dab577e559ef3569d"
-dependencies = [
- "cfg-if 1.0.0",
- "const_fn",
- "crossbeam-utils",
- "lazy_static",
- "memoffset",
- "scopeguard",
-]
-
-[[package]]
name = "crossbeam-utils"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -326,12 +285,6 @@ dependencies = [
]
[[package]]
-name = "either"
-version = "1.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
-
-[[package]]
name = "event-listener"
version = "2.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -579,7 +532,7 @@ name = "helix-syntax"
version = "0.1.0"
dependencies = [
"cc",
- "rayon",
+ "threadpool",
"tree-sitter",
]
@@ -770,15 +723,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
[[package]]
-name = "memoffset"
-version = "0.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
name = "mio"
version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -972,31 +916,6 @@ dependencies = [
]
[[package]]
-name = "rayon"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674"
-dependencies = [
- "autocfg",
- "crossbeam-deque",
- "either",
- "rayon-core",
-]
-
-[[package]]
-name = "rayon-core"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a"
-dependencies = [
- "crossbeam-channel",
- "crossbeam-deque",
- "crossbeam-utils",
- "lazy_static",
- "num_cpus",
-]
-
-[[package]]
name = "redox_syscall"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1265,6 +1184,15 @@ dependencies = [
]
[[package]]
+name = "threadpool"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
+dependencies = [
+ "num_cpus",
+]
+
+[[package]]
name = "tinyvec"
version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/helix-syntax/Cargo.toml b/helix-syntax/Cargo.toml
index 86aaf360..c50e3091 100644
--- a/helix-syntax/Cargo.toml
+++ b/helix-syntax/Cargo.toml
@@ -11,4 +11,4 @@ tree-sitter = "0.17"
[build-dependencies]
cc = { version = "1", features = ["parallel"] }
-rayon = { version = "1.5" }
+threadpool = { version = "1.0" }
diff --git a/helix-syntax/build.rs b/helix-syntax/build.rs
index 627a0290..89641225 100644
--- a/helix-syntax/build.rs
+++ b/helix-syntax/build.rs
@@ -1,7 +1,8 @@
-use rayon::prelude::*;
use std::path::PathBuf;
use std::{env, fs};
+use std::sync::mpsc::channel;
+
fn get_opt_level() -> u32 {
env::var("OPT_LEVEL").unwrap().parse::<u32>().unwrap()
}
@@ -115,10 +116,25 @@ fn main() {
"tree-sitter-cpp".to_string(),
];
let dirs = collect_tree_sitter_dirs(ignore);
- dirs.par_iter().for_each(|dir| {
- let language = &dir[12..]; // skip tree-sitter- prefix
- build_dir(&dir, &language);
- });
+
+ let mut n_jobs = 0;
+ let pool = threadpool::Builder::new().build(); // by going through the builder, it'll use num_cpus
+ let (tx, rx) = channel();
+
+ for dir in dirs {
+ let tx = tx.clone();
+ n_jobs += 1;
+
+ pool.execute(move || {
+ let language = &dir[12..]; // skip tree-sitter- prefix
+ build_dir(&dir, &language);
+
+ // report progress
+ tx.send(1).unwrap();
+ });
+ }
+ assert_eq!(rx.iter().take(n_jobs).fold(0, |a, b| a + b), n_jobs);
+
build_dir("tree-sitter-typescript/tsx", "tsx");
build_dir("tree-sitter-typescript/typescript", "typescript");
}