418
you are viewing a single comment's thread
view the rest of the comments
[-] d_k_bo@feddit.de 35 points 11 months ago

Rust has pretty strong stability guarantees. Backwards incompatible changes are only made using "editions" where every compiler version supports all previous editions and editions are fully interoperable.

https://doc.rust-lang.org/stable/edition-guide/editions/index.html#what-are-editions

[-] PeterPoopshit@sh.itjust.works 8 points 11 months ago* (last edited 11 months ago)

The versions still make me reluctant to try rust. I'm sure it's reliable in theory but I'm always getting cockblocked when someone's python project doesn't work because of dependencies and different versions. I once remade a python 3d object format converter in c++ because that was easier than a) fixing whatever dependency and runtime version shenanigans or b) using whatever bullshit ass Windows-only propriety software most people used to make that file conversion

[-] Rian@lemmy.sdf.org 12 points 11 months ago

I use both python and rust extensively and they are literally day and night when it comes to dependency issues. The only problems I've ever had with rust are when there is a non-rust dependency that's not cross platform (which would be a problem in c as well). The editions (which are different from versions) are nothing to be afraid of either, iirc a rust 2021 project can depend on 2018 and 2015 libraries without issues.

[-] vox@sopuli.xyz 1 points 11 months ago* (last edited 11 months ago)

rust doesn't install dependencies globally, and packages or versions can't be deleted from crates.io (they are instead yanked which prevents them from being used in new projects, while throwing a warning in existing ones)
rust editions are fully compatible with each other so you can use 2015 crate in a 2021 project and vise versa.
rust also allows having multiple versions of dependencies at the same time.
if crate A depends on B 0.1 and crate C depends on B 0.2, rust will download and use both versions of B.
you can run into issues if:

  • ...you're using c dependencies
  • ...you have incompatible crate versions; cargo treats different versions as completely separate crates (please note that this is not a big issue, this shouldn't scare you off; for example if there's a crate A that depends on crate B 0.1 and provides fn A::dostuff(B::TypeFromB) and you have A and B 0.2 specified as dependencies, you won't be able to use your B::TypeFromB as an argument in A::dostuff(...), and you'll have to downgrade your version of B to 0.1 or ask the crate developer to update their library)
  • ...you have a multi-crate cargo workspace or monorepo and forgot to specify resolver="2" (it uses resolver="1" by default for compatability, which is incompatible with a lot of crates)
[-] darcy@sh.itjust.works 1 points 11 months ago

@Rian is correct. the only dependency problems ive had are relating c libraries

load more comments (1 replies)
this post was submitted on 27 Jul 2023
418 points (95.8% liked)

Programmer Humor

31228 readers
51 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 4 years ago
MODERATORS