diff options
author | Blaž Hrastnik | 2021-01-19 07:51:58 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2021-01-19 07:51:58 +0000 |
commit | 22fe2ebe72314681b5c87ed97b6a9d5a03c3dec2 (patch) | |
tree | 48b5a52212ac57a1b29f6e677b72f3fae2a5168c | |
parent | d5db8929026e644fac83ba976b45b6606f0277d5 (diff) |
helix-syntax: Speed up compilation by compiling langs in parallel.
-rw-r--r-- | Cargo.lock | 82 | ||||
-rw-r--r-- | helix-syntax/Cargo.toml | 1 | ||||
-rw-r--r-- | helix-syntax/build.rs | 5 |
3 files changed, 86 insertions, 2 deletions
@@ -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"); } |