aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBlaž Hrastnik2021-01-19 07:51:58 +0000
committerBlaž Hrastnik2021-01-19 07:51:58 +0000
commit22fe2ebe72314681b5c87ed97b6a9d5a03c3dec2 (patch)
tree48b5a52212ac57a1b29f6e677b72f3fae2a5168c
parentd5db8929026e644fac83ba976b45b6606f0277d5 (diff)
helix-syntax: Speed up compilation by compiling langs in parallel.
-rw-r--r--Cargo.lock82
-rw-r--r--helix-syntax/Cargo.toml1
-rw-r--r--helix-syntax/build.rs5
3 files changed, 86 insertions, 2 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 2d2eddcc..fc0d9e5a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -232,6 +232,47 @@ 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"
@@ -290,6 +331,12 @@ 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"
@@ -537,6 +584,7 @@ name = "helix-syntax"
version = "0.1.0"
dependencies = [
"cc",
+ "rayon",
"tree-sitter",
]
@@ -726,6 +774,15 @@ 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.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -919,6 +976,31 @@ 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.1.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/helix-syntax/Cargo.toml b/helix-syntax/Cargo.toml
index 12da3924..86aaf360 100644
--- a/helix-syntax/Cargo.toml
+++ b/helix-syntax/Cargo.toml
@@ -11,3 +11,4 @@ tree-sitter = "0.17"
[build-dependencies]
cc = { version = "1", features = ["parallel"] }
+rayon = { version = "1.5" }
diff --git a/helix-syntax/build.rs b/helix-syntax/build.rs
index 6b721c11..627a0290 100644
--- a/helix-syntax/build.rs
+++ b/helix-syntax/build.rs
@@ -1,3 +1,4 @@
+use rayon::prelude::*;
use std::path::PathBuf;
use std::{env, fs};
@@ -114,10 +115,10 @@ fn main() {
"tree-sitter-cpp".to_string(),
];
let dirs = collect_tree_sitter_dirs(ignore);
- for dir in dirs {
+ dirs.par_iter().for_each(|dir| {
let language = &dir[12..]; // skip tree-sitter- prefix
build_dir(&dir, &language);
- }
+ });
build_dir("tree-sitter-typescript/tsx", "tsx");
build_dir("tree-sitter-typescript/typescript", "typescript");
}