diff options
author | Blaž Hrastnik | 2021-02-24 04:13:49 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2021-02-24 04:17:10 +0000 |
commit | c6456d04b9f16ed8f5ad0f256a38218b514de5dc (patch) | |
tree | 63a43d8a0b01cdedb0f51e2be0e9b4816cae092e | |
parent | 41c0d5828fe301edf3bbc1dbd8fad7adf507e03e (diff) |
syntax: Drop the rayon dependency for threadpool.
We just need a small concurrent threadpool for compilation.
-rw-r--r-- | Cargo.lock | 92 | ||||
-rw-r--r-- | helix-syntax/Cargo.toml | 2 | ||||
-rw-r--r-- | helix-syntax/build.rs | 26 |
3 files changed, 32 insertions, 88 deletions
@@ -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"); } |