Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

consider making onig optional #212

Open
lu-zero opened this issue Feb 25, 2023 · 10 comments
Open

consider making onig optional #212

lu-zero opened this issue Feb 25, 2023 · 10 comments

Comments

@lu-zero
Copy link

lu-zero commented Feb 25, 2023

There are a number of pure rust globs and regex crates, might be better to not have to deal with a C dependency if we could avoid it.

From what I'm seeing regex may lack a mean to select a specific flavour of regex, not sure if somebody already had a mean to restrict the engine to not support extensions compared to posix/emacs.

@tertsdiepraam
Copy link
Member

Yeah, compatibility is generally why we use onig instead of, say, the standard regex crate. I think we could probably make it optional as the additional features aren't used that much (in coreutils as well). It'd be great if there was some regex api that allowed us to switch with just a feature flag and wouldn't require us to write both versions everywhere.

@lu-zero
Copy link
Author

lu-zero commented Feb 26, 2023

ripgrep abstracted quite a bit so it can use pcre2 or regex.

@tavianator
Copy link
Contributor

https://gitlab.redox-os.org/redox-os/posix-regex might be a good option

@lu-zero
Copy link
Author

lu-zero commented Feb 27, 2023

I was convinced that regex supports a superset of the posix one. Probably would be good to make a table of what is supported and what is not. And do the same for the glob crates...

@tavianator
Copy link
Contributor

regex is not a superset of either Posix BREs or EREs, since they both support back-references ((f)ire\1ox) while regex does not. I agree a comparison table would be nice.

Our glob implementation converts globs to Posix BREs, so any POSIX-compatible regex implementation gets us globs for free: https:/uutils/findutils/blob/main/src/find/matchers/glob.rs

@lu-zero
Copy link
Author

lu-zero commented Mar 26, 2023

onig is still not updated, and clang-16 is going to hit more distributions. Given that upstream seems unresponsive should we start looking for alternatives more actively?

@tertsdiepraam
Copy link
Member

Am I missing some part of the conversation? What's going on with clang-16?

@lu-zero
Copy link
Author

lu-zero commented Mar 27, 2023

clang-16 makes onig non-buildable, I sent a patch to fix it more or less as I opened this issue.

@tertsdiepraam
Copy link
Member

tertsdiepraam commented Mar 27, 2023

Oh that's unfortunate. I wonder if https://crates.io/crates/fancy-regex be a good alternative?

@brisingraerowing
Copy link

That explains the error I'm getting when building this using MSYS2 / UCRT64, as that project recently updated to Clang 16.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants