Defining the Rust 2024 edition
Defining the Rust 2024 edition
Posted Jan 30, 2024 16:10 UTC (Tue) by bluca (subscriber, #118303)In reply to: Defining the Rust 2024 edition by farnz
Parent article: Defining the Rust 2024 edition
Posted Jan 30, 2024 16:18 UTC (Tue)
by farnz (subscriber, #17727)
[Link]
That's not my experience of maintaining a binary module for Python in a distro - I have to "recompile the universe" (in as much as I have to recompile the universe for Go or Rust code) every time something changes in the distro. It works, because (like a lot of packagers), I'm putting in the effort to make sure it's not hard to recompile the world when a dependency changes, and I'm doing the work to get those recompiles to happen, but it's not "free" at all.
Effectively, what you're saying is that because people put a lot of work into Python and Perl, but not NodeJS packages for distros, Python and Perl are fine, but NodeJS is a problem because no-one's willing to put the work in to maintain distro packages when npm works just fine for them.
Also worth noting that Fedora has had someone (mostly Fabio) do the work to make it easy to package Rust in Fedora. It's thus fairly trivial to maintain a Rust package in Fedora, because Fabio and a few others have made it easy.
Posted Jan 31, 2024 9:00 UTC (Wed)
by pbonzini (subscriber, #60935)
[Link] (10 responses)
You can do the same in Rust. Let the crates export a stable C ABI that can be used for dynamic linking. That's how librsvg works and in fact it's also how it's often done for C++, see for example libclang (though that didn't prevent them from breaking ABI by mistake at least once).
Posted Jan 31, 2024 11:39 UTC (Wed)
by bluca (subscriber, #118303)
[Link] (9 responses)
Posted Jan 31, 2024 12:16 UTC (Wed)
by pbonzini (subscriber, #60935)
[Link] (8 responses)
Posted Jan 31, 2024 13:22 UTC (Wed)
by bluca (subscriber, #118303)
[Link] (7 responses)
Posted Jan 31, 2024 14:25 UTC (Wed)
by mb (subscriber, #50428)
[Link] (6 responses)
Posted Jan 31, 2024 15:46 UTC (Wed)
by bluca (subscriber, #118303)
[Link] (5 responses)
Posted Jan 31, 2024 16:01 UTC (Wed)
by pbonzini (subscriber, #60935)
[Link] (4 responses)
Posted Jan 31, 2024 19:01 UTC (Wed)
by bluca (subscriber, #118303)
[Link] (3 responses)
Posted Feb 1, 2024 8:38 UTC (Thu)
by pbonzini (subscriber, #60935)
[Link] (2 responses)
Posted Feb 1, 2024 10:07 UTC (Thu)
by farnz (subscriber, #17727)
[Link]
Not just C++; even C has this problem to a small degree. The ELF ABIs don't cover the full C language; if I change a significant preprocessor definition, or a const that my library never takes the address of, the resulting .so will not change, and yet I can change my ABI by doing so.
We just ignore this for C, since distros do the work of making sure that C developers don't destabilize their own ABIs this way, but it's still an issue, even in C.
Posted Feb 1, 2024 14:33 UTC (Thu)
by bluca (subscriber, #118303)
[Link]
Defining the Rust 2024 edition
Defining the Rust 2024 edition
Defining the Rust 2024 edition
Defining the Rust 2024 edition
Defining the Rust 2024 edition
Defining the Rust 2024 edition
Defining the Rust 2024 edition
Defining the Rust 2024 edition
Defining the Rust 2024 edition
Defining the Rust 2024 edition
Defining the Rust 2024 edition
Defining the Rust 2024 edition