Re: musings on rust packaging [was Re: F38 proposal: RPM Sequoia (System-Wide Change proposal)]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/20/22 10:01, Neal Gompa wrote:
> On Thu, Oct 20, 2022 at 9:39 AM Kevin Kofler via devel <devel@xxxxxxxxxxxxxxxxxxxxxxx> wrote:
>> Rust needs to adapt to become relevant in GNU/Linux distributions.
>>
> 
> There is nobody pushing for Rust to improve anymore. When Igor and I
> were building out Fedora Rust, we did some engagement with Rust
> upstream about stabilizing Rust's ABI so we could ship dynamic
> libraries. While one or two members of the Rust core team were
> sympathetic, most of the Rust community attacked me for "trying to
> make Rust like C" and I got crap from people on the Rust community
> channels, Twitter, and other places. Eventually, I flamed out because
> there's only so much punishment someone can take over it.

Personal attacks are not okay.

> A couple of years ago, there was a revival of the topic[1], but it
> went nowhere again.
> 
> Until the situation changes, I'm very firmly anti-Rust. Unfortunately,
> sometimes I have no choice but to deal with it.
> 
> [1]: https://github.com/slightknack/rust-abi-wiki

There are a couple major constraints that apply to Rust:

1. Rust implements generics via monomorphisation.  This means that e.g. Vec *has no ABI
   at all*: code will only be generated for Vec<T> when it is instantiated.

2. Rust relies heavily on cross-crate inlining to get good performance.  If e.g.
   Option::map is not inlined into the caller, performance will be terrible.

Neither of those constraints are unique to Rust.  C++ template libraries have exactly
the same problems.  It’s just that we think of C++ headers as being the interface to a
library, instead of the implementation.  Trying to ship the implementation of types
like Vec and Option in a shared library makes no more sense than doing so with C++’s
std::vector and std::optional, which is to say, none at all.

Another factor is maintaining a stable ABI severely limits library evolution.  In C++,
ABI stability has resulted in std::regex being *far* slower than third-party regular
expression libraries.  I am not surprised that Rust wants to avoid similar problems.
-- 
Sincerely,
Demi Marie Obenour (she/her/hers)
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux