Rust 1.x seems to not always be backward compatible in practice

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • Cargo

    The Rust package manager

  • Interesting that this is basically the same point as a comment on another submission last week from the same blog: https://news.ycombinator.com/item?id=27386666

    > But they never made this complaint in the actual Bugzilla where someone could consider their feedback, they skipped straight to the "complain via blog post" phase. [...] My advice to the author is that perhaps they should extend a little more charity and "just ask" first, before they jump at the opportunity to complain in public - without having mentioned the issue to anyone with the ability to fix it.

    Which comment links in turn to another post, for which the blogger writes,

    > I would file a bug report but I cannot imagine that Fedora would accept it. They already know that this feature doesn't work; it's right there in the DKMS manpage. It's there anyway because, well, I don't know. This is the most user-hostile decision I think I've ever seen Fedora make.

    but in fact the issue was fixed within a week of reporting it.

    Firefox, in particular, uses the not-so-secret escape switch to unlock Rust nightly features on Rust stable. A bunch of folks on the Rust team are pretty unhappy about this (see e.g. https://github.com/rust-lang/cargo/issues/6627), but it is the current situation. So "Firefox broke after I ran rustup" is a very different complaint from "My code, on Rust stable, without the secret escape switch broke after I ran rustup," and the blame (if there is any blame at all, which is unclear without the actual error report) is on the Firefox developers, not the Rust developers.

    In the general case, the Rust folks care a lot about backwards compatibility, but in turn they do that with an eye towards never having a Rust 2.0. They've taken a lot of innovative steps towards making Rust 1.x usable indefinitely, including the nightly/unstable system, the epoch system, crater, etc. A consequence of staying on Rust 1.x indefinitely is that you cannot possibly be bug-for-bug compatible with Rust 1.0 and Cargo 1.0 for all theoretically possible code (see Hyrum's Law: https://www.hyrumslaw.com/). However, if something breaks in the real world, report it, and I expect the Rust developers will be sympathetic and try to fix it. Without any indication of what broke, nobody can do anything with this post except get unactionably mad at other people, and that's pretty useless for actually getting things done.

    The author is, of course, free to blog whatever he likes. But I think the HN community should stop upvoting his clickbait-titled posts.

  • gecko-dev

    Read-only Git mirror of the Mercurial gecko repositories at https://hg.mozilla.org. How to contribute: https://firefox-source-docs.mozilla.org/contributing/contribution_quickref.html

  • Wow, what a confusing codebase. https://github.com/mozilla/gecko-dev/tree/d36cf98aa85f24ceef... This package documents a "minimum supported rust version" then goes on to set RUSTC_BOOTSTRAP (cirumventing, enabling experimental features). Very mixed signals - I'm pretty disappointed to see documentation say one thing and then the code do another.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • svntogit-packages

    Discontinued Automatic import of svn 'packages' repo (read-only mirror)

  • Oh, I see. I only vaguely remembered some changeset regarding it. I must have been mistaken, then, and it's still in use.

    In any case, sneakily using nightly features can make using a different Rust version problematic, since these features are free of any stability guarantees.

    Arch Linux carries a rather large patch updating some vendored dependency in order to make Firefox 78 compile with a newer Rust. https://github.com/archlinux/svntogit-packages/tree/packages...

  • semver

    Semantic Versioning Specification

  • Semantic versioning is nice. Shouldn't it be adhered to?

    https://semver.org/

  • rust

    Empowering everyone to build reliable and efficient software.

  • However targeted, it is a risk to Firefox.

    That crate in question uses slice_strip https://github.com/rust-lang/rust/issues/73413 which is entirely frivolous - just an ergonomics feature that can be reimplemented easily. Now the feature in question has been stabilized, but the crate still needs to be updated for that.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts