on master help sign in
helix-syntax: Speed up compilation by compiling langs in parallel.
commit22fe2ebe72314681b5c87ed97b6a9d5a03c3dec2 authorBlaž Hrastnik <blaz@mxxn.io> dateTue 19 Jan 2021, 16:51 (6 years ago) parentd5db892
3 files changed+86−2
Cargo.lock+82 helix-syntax/Cargo.toml+1 helix-syntax/build.rs+3−2
Cargo.lock+82
@@ -231,6 +231,47 @@ dependencies = [
231231 "cache-padded",
232232]
233233
234+[[package]]
235+name = "const_fn"
236+version = "0.4.5"
237+source = "registry+https://github.com/rust-lang/crates.io-index"
238+checksum = "28b9d6de7f49e22cf97ad17fc4036ece69300032f45f78f30b4a4482cdc3f4a6"
239+
240+[[package]]
241+name = "crossbeam-channel"
242+version = "0.5.0"
243+source = "registry+https://github.com/rust-lang/crates.io-index"
244+checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775"
245+dependencies = [
246+ "cfg-if 1.0.0",
247+ "crossbeam-utils",
248+]
249+
250+[[package]]
251+name = "crossbeam-deque"
252+version = "0.8.0"
253+source = "registry+https://github.com/rust-lang/crates.io-index"
254+checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9"
255+dependencies = [
256+ "cfg-if 1.0.0",
257+ "crossbeam-epoch",
258+ "crossbeam-utils",
259+]
260+
261+[[package]]
262+name = "crossbeam-epoch"
263+version = "0.9.1"
264+source = "registry+https://github.com/rust-lang/crates.io-index"
265+checksum = "a1aaa739f95311c2c7887a76863f500026092fb1dce0161dab577e559ef3569d"
266+dependencies = [
267+ "cfg-if 1.0.0",
268+ "const_fn",
269+ "crossbeam-utils",
270+ "lazy_static",
271+ "memoffset",
272+ "scopeguard",
273+]
274+
234275[[package]]
235276name = "crossbeam-utils"
236277version = "0.8.1"
@@ -289,6 +330,12 @@ dependencies = [
289330 "winapi",
290331]
291332
333+[[package]]
334+name = "either"
335+version = "1.6.1"
336+source = "registry+https://github.com/rust-lang/crates.io-index"
337+checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
338+
292339[[package]]
293340name = "event-listener"
294341version = "2.5.1"
@@ -537,6 +584,7 @@ name = "helix-syntax"
537584version = "0.1.0"
538585dependencies = [
539586 "cc",
587+ "rayon",
540588 "tree-sitter",
541589]
542590
@@ -725,6 +773,15 @@ version = "2.3.4"
725773source = "registry+https://github.com/rust-lang/crates.io-index"
726774checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525"
727775
776+[[package]]
777+name = "memoffset"
778+version = "0.6.1"
779+source = "registry+https://github.com/rust-lang/crates.io-index"
780+checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87"
781+dependencies = [
782+ "autocfg",
783+]
784+
728785[[package]]
729786name = "mio"
730787version = "0.7.7"
@@ -918,6 +975,31 @@ dependencies = [
918975 "proc-macro2",
919976]
920977
978+[[package]]
979+name = "rayon"
980+version = "1.5.0"
981+source = "registry+https://github.com/rust-lang/crates.io-index"
982+checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674"
983+dependencies = [
984+ "autocfg",
985+ "crossbeam-deque",
986+ "either",
987+ "rayon-core",
988+]
989+
990+[[package]]
991+name = "rayon-core"
992+version = "1.9.0"
993+source = "registry+https://github.com/rust-lang/crates.io-index"
994+checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a"
995+dependencies = [
996+ "crossbeam-channel",
997+ "crossbeam-deque",
998+ "crossbeam-utils",
999+ "lazy_static",
1000+ "num_cpus",
1001+]
1002+
9211003[[package]]
9221004name = "redox_syscall"
9231005version = "0.1.57"
helix-syntax/Cargo.toml+1
@@ -11,3 +11,4 @@ tree-sitter = "0.17"
1111
1212[build-dependencies]
1313cc = { version = "1", features = ["parallel"] }
14+rayon = { version = "1.5" }
helix-syntax/build.rs+3−2
@@ -1,3 +1,4 @@
1+use rayon::prelude::*;
12use std::path::PathBuf;
23use std::{env, fs};
34
@@ -114,10 +115,10 @@ fn main() {
114115 "tree-sitter-cpp".to_string(),
115116 ];
116117 let dirs = collect_tree_sitter_dirs(ignore);
117− for dir in dirs {
118+ dirs.par_iter().for_each(|dir| {
118119 let language = &dir[12..]; // skip tree-sitter- prefix
119120 build_dir(&dir, &language);
120− }
121+ });
121122 build_dir("tree-sitter-typescript/tsx", "tsx");
122123 build_dir("tree-sitter-typescript/typescript", "typescript");
123124}