Skip to content

Allow to build without vendored openssl, allow to build syntect with regex-onig #1323

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

Merged
merged 3 commits into from
Sep 18, 2022

Conversation

jirutka
Copy link
Contributor

@jirutka jirutka commented Sep 10, 2022

Please see the commit messages and changelog items.

I’m the maintainer of the gitui package in Alpine Linux. The package is build with Onigurama and system-provided libgit2 (without vendored openssl) since the beginning (more than a year ago), so now I’m just upstreaming these changes.

I followed the checklist:

  • I added unittests (N/A)
  • I ran make check without errors
  • I tested the overall application
  • I added an appropriate item to the changelog

jirutka and others added 3 commits September 10, 2022 19:14
Syntect supports two regex engines:

* regex-fancy: a pure-rust regex engine based on the fancy-regex
* regex-onig: a regex engine based on the oniguruma C library

From the syntect's Readme:

> The advantage of fancy-regex is that it does not require the onig
> crate which requires building and linking the Oniguruma C library.
> Many users experience difficulty building the onig crate, especially
> on Windows and Webassembly.

> As far as our tests can tell this new engine is just as correct, but
> it hasn't been tested as extensively in production. It also currently
> seems to be about half the speed of the default Oniguruma engine

Oniguruma engine is faster than the fancy-regex engine and the syntect
project chose the latter as the default only to avoid difficulties with
linking Oniguruma (C library) on some platforms. This is not an issue
for linux distributions - linking against system-provided shared
library is preferred to bundled libraries.

Moreover, gitui built with Oniguruma instead of fancy-regex is by 25%
smaller.

This commit adds two cargo features, regex-fancy and regex-onig, to
enable respective syntect features. The former is enabled by default.
Vendoring (bundling) openssl library is very bad for security and
Linux distributions forbid it. The aim of this change is to simplify
packaging gitui in linux distros.
@extrawurst extrawurst merged commit f69460c into gitui-org:master Sep 18, 2022
@jirutka jirutka deleted the features branch September 18, 2022 13:51
heiskane pushed a commit to heiskane/gitui that referenced this pull request Oct 20, 2022
…regex-onig (gitui-org#1323)

* allow to build syntect with regex-onig

Syntect supports two regex engines:

* regex-fancy: a pure-rust regex engine based on the fancy-regex
* regex-onig: a regex engine based on the oniguruma C library

From the syntect's Readme:

> The advantage of fancy-regex is that it does not require the onig
> crate which requires building and linking the Oniguruma C library.
> Many users experience difficulty building the onig crate, especially
> on Windows and Webassembly.

> As far as our tests can tell this new engine is just as correct, but
> it hasn't been tested as extensively in production. It also currently
> seems to be about half the speed of the default Oniguruma engine

Oniguruma engine is faster than the fancy-regex engine and the syntect
project chose the latter as the default only to avoid difficulties with
linking Oniguruma (C library) on some platforms. This is not an issue
for linux distributions - linking against system-provided shared
library is preferred to bundled libraries.

Moreover, gitui built with Oniguruma instead of fancy-regex is by 25%
smaller.

This commit adds two cargo features, regex-fancy and regex-onig, to
enable respective syntect features. The former is enabled by default.

* allow to build without vendored openssl

Vendoring (bundling) openssl library is very bad for security and
Linux distributions forbid it. The aim of this change is to simplify
packaging gitui in linux distros.

Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
heiskane pushed a commit to heiskane/gitui that referenced this pull request Oct 22, 2022
…regex-onig (gitui-org#1323)

* allow to build syntect with regex-onig

Syntect supports two regex engines:

* regex-fancy: a pure-rust regex engine based on the fancy-regex
* regex-onig: a regex engine based on the oniguruma C library

From the syntect's Readme:

> The advantage of fancy-regex is that it does not require the onig
> crate which requires building and linking the Oniguruma C library.
> Many users experience difficulty building the onig crate, especially
> on Windows and Webassembly.

> As far as our tests can tell this new engine is just as correct, but
> it hasn't been tested as extensively in production. It also currently
> seems to be about half the speed of the default Oniguruma engine

Oniguruma engine is faster than the fancy-regex engine and the syntect
project chose the latter as the default only to avoid difficulties with
linking Oniguruma (C library) on some platforms. This is not an issue
for linux distributions - linking against system-provided shared
library is preferred to bundled libraries.

Moreover, gitui built with Oniguruma instead of fancy-regex is by 25%
smaller.

This commit adds two cargo features, regex-fancy and regex-onig, to
enable respective syntect features. The former is enabled by default.

* allow to build without vendored openssl

Vendoring (bundling) openssl library is very bad for security and
Linux distributions forbid it. The aim of this change is to simplify
packaging gitui in linux distros.

Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
IndianBoy42 pushed a commit to IndianBoy42/gitui that referenced this pull request Jun 4, 2024
…regex-onig (gitui-org#1323)

* allow to build syntect with regex-onig

Syntect supports two regex engines:

* regex-fancy: a pure-rust regex engine based on the fancy-regex
* regex-onig: a regex engine based on the oniguruma C library

From the syntect's Readme:

> The advantage of fancy-regex is that it does not require the onig
> crate which requires building and linking the Oniguruma C library.
> Many users experience difficulty building the onig crate, especially
> on Windows and Webassembly.

> As far as our tests can tell this new engine is just as correct, but
> it hasn't been tested as extensively in production. It also currently
> seems to be about half the speed of the default Oniguruma engine

Oniguruma engine is faster than the fancy-regex engine and the syntect
project chose the latter as the default only to avoid difficulties with
linking Oniguruma (C library) on some platforms. This is not an issue
for linux distributions - linking against system-provided shared
library is preferred to bundled libraries.

Moreover, gitui built with Oniguruma instead of fancy-regex is by 25%
smaller.

This commit adds two cargo features, regex-fancy and regex-onig, to
enable respective syntect features. The former is enabled by default.

* allow to build without vendored openssl

Vendoring (bundling) openssl library is very bad for security and
Linux distributions forbid it. The aim of this change is to simplify
packaging gitui in linux distros.

Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants