Does Rust have any design mistakes?

This page summarizes the projects mentioned and recommended in the original post on /r/rust

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

    Empowering everyone to build reliable and efficient software.

  • Hashing isn't only used with hashsets and hashtables. It's also used to provide identifiers, in which case you want the collision probability to stay low. With 10 000 elements the probability of a collision in a u32 is over 50%. With u64 it's at least fairly unlikely. This is actually the source of a soundness issue that might never get fixed.

  • TablaM

    The practical relational programing language for data-oriented applications

  • I have someone that wanna contribute to my open source project that can't even code because the compiler freezes the computer and now we are trying to run it on the cloud instead, in other words, Rust is unusable for who knows how many people without recent tech (btw: It paper it must run, but the computer is like 7 years old).

  • 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
  • lang-team

    Home of the Rust lang team

  • This accepted RFC is one way to deal with it.

  • 708

    Parameter passing and initialization

  • Another design mistake, imho, is that Rust does not have Herb Sutter’s parameter passing style from his 708 paper. For example, out parameters instantly remove almost all use-cases for MaybeUninit, adding strong compiler guarantees and requiring zero unsafe code.

  • rfcs

    RFCs for changes to Rust

  • Thank you for this! I didn’t know that String used to be StrBuf.The RFC is amusingly short compared to modern RFCs and pre-RFCs.

  • STC

    A modern, user friendly, generic, type-safe and fast C99 container library: String, Vector, Sorted and Unordered Map and Set, Deque, Forward List, Smart Pointers, Bitset and Random numbers. (by stclib)

  • It seems like people here are trying hard to defend a poor decision. Having implemented two string types in C with equal API, one traditional and one with SSO, the code bloat is minimal in the latter. You normally only need one branch for each high-level operation on a string. And the speed is faster for short strings, i.e < 24 bytes, which are by far more common than longer strings. The longer strings are also only marginally slower in the SSO implementation. Btw., SSO in C is similar to Rust: C has move semantics so cloning is done explicitly.

  • glibc

    Unofficial mirror of sourceware glibc repository. Updated daily. (by bminor)

  • Not even. Absolutely not. Never-never-never. exec is just a wrapper that takes current value of environ and calls actual execve.

  • 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
  • linux

    Linux kernel source tree

  • Not even. Absolutely not. Never-never-never. exec is just a wrapper that takes current value of environ and calls actual execve.

  • rfcs

    RFCs for changes to Rust (by varkor)

  • Ok, there seems to be an existing RFC for this. It might be a good addition which doesn't seem to cause much change to the language and type system.

  • semver-trick

    How to avoid complicated coordinated upgrades

  • I mean for all the parts of the standard library that do not change, one could presumably use the semver-trick.

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