summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Gallant <jamslam@gmail.com>2018-09-08 17:12:14 -0400
committerAndrew Gallant <jamslam@gmail.com>2018-09-08 17:12:14 -0400
commiteb18da04506b959c0251099eae83e16d22ce8bcb (patch)
tree7ecd2c8e0afdf81eec1c883a322082f9643834c9
parent0f7494216f55bb5d373027c2039d8c26dbc4a564 (diff)
pcre2: use jit_if_availablegrep-pcre2-0.1.2grep-0.2.3
This will allow PCRE2 to fall back to non-JIT matching when running on platforms without JIT support. ref https://github.com/BurntSushi/rust-pcre2/issues/3
-rw-r--r--Cargo.lock17
-rw-r--r--Cargo.toml2
-rw-r--r--grep-pcre2/Cargo.toml4
-rw-r--r--grep-pcre2/src/matcher.rs22
-rw-r--r--grep/Cargo.toml4
-rw-r--r--src/args.rs2
6 files changed, 34 insertions, 17 deletions
diff --git a/Cargo.lock b/Cargo.lock
index cc5a0896..341288ac 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -165,13 +165,13 @@ dependencies = [
[[package]]
name = "grep"
-version = "0.2.2"
+version = "0.2.3"
dependencies = [
"atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
"grep-cli 0.1.1",
"grep-matcher 0.1.1",
- "grep-pcre2 0.1.1",
+ "grep-pcre2 0.1.2",
"grep-printer 0.1.1",
"grep-regex 0.1.1",
"grep-searcher 0.1.1",
@@ -204,10 +204,10 @@ dependencies = [
[[package]]
name = "grep-pcre2"
-version = "0.1.1"
+version = "0.1.2"
dependencies = [
"grep-matcher 0.1.1",
- "pcre2 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pcre2 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -368,13 +368,12 @@ dependencies = [
[[package]]
name = "pcre2"
-version = "0.1.0"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "cc 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
"pcre2-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
"thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -482,7 +481,7 @@ name = "ripgrep"
version = "0.10.0"
dependencies = [
"clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "grep 0.2.2",
+ "grep 0.2.3",
"ignore 0.4.4",
"lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -736,7 +735,7 @@ dependencies = [
"checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37"
"checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5"
"checksum parking_lot_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "06a2b6aae052309c2fd2161ef58f5067bc17bb758377a0de9d4b279d603fdd8a"
-"checksum pcre2 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0c16ec0e30c17f938a2da8ff970ad9a4100166d0538898dcc035b55c393cab54"
+"checksum pcre2 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ae0a2682105ec5ca0ee5910bbc7e926386d348a05166348f74007942983c319"
"checksum pcre2-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a9027f9474e4e13d3b965538aafcaebe48c803488ad76b3c97ef061a8324695f"
"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c"
"checksum proc-macro2 0.4.18 (registry+https://github.com/rust-lang/crates.io-index)" = "afa4d377067cc02eb5e0b491d3f7cfbe145ad4da778535bfb13c444413dd35b9"
diff --git a/Cargo.toml b/Cargo.toml
index a7ccd5bd..bf11a129 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -45,7 +45,7 @@ members = [
]
[dependencies]
-grep = { version = "0.2.2", path = "grep" }
+grep = { version = "0.2.3", path = "grep" }
ignore = { version = "0.4.4", path = "ignore" }
lazy_static = "1.1.0"
log = "0.4.5"
diff --git a/grep-pcre2/Cargo.toml b/grep-pcre2/Cargo.toml
index 1ec12302..0635a525 100644
--- a/grep-pcre2/Cargo.toml
+++ b/grep-pcre2/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "grep-pcre2"
-version = "0.1.1" #:version
+version = "0.1.2" #:version
authors = ["Andrew Gallant <jamslam@gmail.com>"]
description = """
Use PCRE2 with the 'grep' crate.
@@ -14,4 +14,4 @@ license = "Unlicense/MIT"
[dependencies]
grep-matcher = { version = "0.1.1", path = "../grep-matcher" }
-pcre2 = "0.1.0"
+pcre2 = "0.1.1"
diff --git a/grep-pcre2/src/matcher.rs b/grep-pcre2/src/matcher.rs
index e9c51be2..105448fe 100644
--- a/grep-pcre2/src/matcher.rs
+++ b/grep-pcre2/src/matcher.rs
@@ -199,16 +199,34 @@ impl RegexMatcherBuilder {
self
}
- /// Enable PCRE2's JIT.
+ /// Enable PCRE2's JIT and return an error if it's not available.
///
/// This generally speeds up matching quite a bit. The downside is that it
/// can increase the time it takes to compile a pattern.
///
- /// This is disabled by default.
+ /// If the JIT isn't available or if JIT compilation returns an error, then
+ /// regex compilation will fail with the corresponding error.
+ ///
+ /// This is disabled by default, and always overrides `jit_if_available`.
pub fn jit(&mut self, yes: bool) -> &mut RegexMatcherBuilder {
self.builder.jit(yes);
self
}
+
+ /// Enable PCRE2's JIT if it's available.
+ ///
+ /// This generally speeds up matching quite a bit. The downside is that it
+ /// can increase the time it takes to compile a pattern.
+ ///
+ /// If the JIT isn't available or if JIT compilation returns an error,
+ /// then a debug message with the error will be emitted and the regex will
+ /// otherwise silently fall back to non-JIT matching.
+ ///
+ /// This is disabled by default, and always overrides `jit`.
+ pub fn jit_if_available(&mut self, yes: bool) -> &mut RegexMatcherBuilder {
+ self.builder.jit_if_available(yes);
+ self
+ }
}
/// An implementation of the `Matcher` trait using PCRE2.
diff --git a/grep/Cargo.toml b/grep/Cargo.toml
index 8faf7082..1ddcd4a2 100644
--- a/grep/Cargo.toml
+++ b/grep/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "grep"
-version = "0.2.2" #:version
+version = "0.2.3" #:version
authors = ["Andrew Gallant <jamslam@gmail.com>"]
description = """
Fast line oriented regex searching as a library.
@@ -15,7 +15,7 @@ license = "Unlicense/MIT"
[dependencies]
grep-cli = { version = "0.1.1", path = "../grep-cli" }
grep-matcher = { version = "0.1.1", path = "../grep-matcher" }
-grep-pcre2 = { version = "0.1.1", path = "../grep-pcre2", optional = true }
+grep-pcre2 = { version = "0.1.2", path = "../grep-pcre2", optional = true }
grep-printer = { version = "0.1.1", path = "../grep-printer" }
grep-regex = { version = "0.1.1", path = "../grep-regex" }
grep-searcher = { version = "0.1.1", path = "../grep-searcher" }
diff --git a/src/args.rs b/src/args.rs
index 1a38d3ef..7aed9144 100644
--- a/src/args.rs
+++ b/src/args.rs
@@ -633,7 +633,7 @@ impl ArgMatches {
// For whatever reason, the JIT craps out during regex compilation with
// a "no more memory" error on 32 bit systems. So don't use it there.
if !cfg!(target_pointer_width = "32") {
- builder.jit(true);
+ builder.jit_if_available(true);
}
if self.pcre2_unicode() {
builder.utf(true).ucp(true);