author | Raphaël Gomès <rgomes@octobus.net> |
Thu, 16 Jan 2020 13:34:04 +0100 | |
changeset 44348 | d8d4fa9a7f18 |
permissions | -rw-r--r-- |
44348
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
1 |
/// re2 module |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
2 |
/// |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
3 |
/// The Python implementation of Mercurial uses the Re2 regex engine when |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
4 |
/// possible and if the bindings are installed, falling back to Python's `re` |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
5 |
/// in case of unsupported syntax (Re2 is a non-backtracking engine). |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
6 |
/// |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
7 |
/// Using it from Rust is not ideal. We need C++ bindings, a C++ compiler, |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
8 |
/// Re2 needs to be installed... why not just use the `regex` crate? |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
9 |
/// |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
10 |
/// Using Re2 from the Rust implementation guarantees backwards compatibility. |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
11 |
/// We know it will work out of the box without needing to figure out the |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
12 |
/// subtle differences in syntax. For example, `regex` currently does not |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
13 |
/// support empty alternations (regex like `a||b`) which happens more often |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
14 |
/// than we might think. Old benchmarks also showed worse performance from |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
15 |
/// regex than with Re2, but the methodology and results were lost, so take |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
16 |
/// this with a grain of salt. |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
17 |
/// |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
18 |
/// The idea is to use Re2 for now as a temporary phase and then investigate |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
19 |
/// how much work would be needed to use `regex`. |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
20 |
mod re2; |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
21 |
pub use re2::Re2; |