“every rust project has a billion dependencies”
oh no they made code composable oh nooooooo should we call someone??
“every rust project has a billion dependencies”
oh no they made code composable oh nooooooo should we call someone??
rust has a lot of problems, but let me tell you: “micro libraries” isn’t one
splitting packages per concern is good for build performance, it’s good for review, it’s good for API evolution.
the problems are technical (compiler perf), financial (funding OSS), human etc.
words mean things!!! I’m not happy about the situation either but you have to be precise!!
you have to complain about the right problem!! how the fuck else is anything going to improve????
do your research or be quiet
@ddr @fasterthanlime The main issues I've seen with JS microlibraries are:
1. things that should be in the standard library
2. things where the implementation everyone ends up using is pretty shoddy
3. bad governance leading to disasters due to a commonly-used dependency disappearing or becoming a malware source
and yeah none of those are problems with microlibraries themselves.
I've also seen JS devs be very hesitant to update their dependencies leading to a miasma of security issues.
@kirtai @ddr @fasterthanlime it's part of the primitive type number. Let me quote MDN:
NaN ("Not a Number") is a special kind of number value [...]Names often don't fully convey the full complexity leading to wrong assumptions. is-number doesn't just check for type number but also for numeric strings and NaN is part of type number despite it's name.Programming languages all have built-in data structures, but these often differ from one language to another. This article attempts to list the built-in data structures available in JavaScript and what properties they have. These can be used to build other data structures.
@mort @fasterthanlime
good thing then that <https://crates.io/crates/leftpad-rs> is already v1.2.0.
What does a 1.0 mean if anyone can give their library any version number they want?
@Kijewski @fasterthanlime The serious answer to the question in your second paragraph is: version numbers are communication. When I want to signal that my software isn't really ready for general use, I use version 0.x. Just like how I increment the major version to communicate a backwards incompatible change.
Conversely, my assumption is that people who version their libraries as 0.x are trying to communicate, "this library is not ready for general use".
@fasterthanlime I broadly agree, but have gotten feedback on two points: "supply chains" make it hard to understand who you're trusting, and discoverability is hard for people who aren't as well-versed in the ecosystem.
https://www.memorysafety.org/blog/reducing-dependencies-in-sudo/
The sudo utility represents a critical privilege boundary, so it should be memory safe. We rewrote it in Rust with partners at Tweede golf and Ferrous Systems. Ruben Nijveld from the Tweede golf team offers his perspective here on one of the greatest challenges we faced when developing software that can be widely adopted: Rust crate dependencies. Josh Aas, Head of ISRG's Prossimo project When sudo-rs development started, we added several dependencies using Rust's crates ecosystem to quickly ramp up development.
@fasterthanlime
> human
do you mean that a lot of people have the ability to push potentially malicious updates to popular libraries?
@fasterthanlime > splitting packages per concern is good for build performance, it’s good for review, it’s good for API evolution
I do agree with this in the abstract, but there are certain corner cases where many small crates don't work super well.
In Android, we vendor all dependencies and each crate import requires its own approval: someone checks the license, someone else check the unsafe code, etc... We are working on improving the process, but right now, importing 20 crates takes weeks.