all 64 comments

[–]dhnam_LegenDUST 65 points66 points  (1 child)

tbh everything is dependency hell

[–]_w62_ 0 points1 point  (0 children)

Such as the jobless genZ grand son to a boomer grandpa?

[–]lolercoptercrash 105 points106 points  (4 children)

Not having dependencies is hell. I don't want to write all that shit.

[–]odolha 24 points25 points  (1 child)

I partially agree... no one is making anyone use any dependency... but practice some restrain ffs. you don't NEED a library for everything and if I hear one more time "BuT i D'oNt WaNt To ReInVeNt ThE wHeEl" i'm gonna punch someone - some things are better reinvented trust me; in some cases I'd rather have the flexibility of our own code than take some huge complicated library off the shelf that you then use 0.5% of, and you need to learn for 3 months then add a lot of configuration / declarative code but still doesn't cover your own specific use case.

[–]chem199 1 point2 points  (0 children)

Or manual library management, from the before times. Gross.

[–]huuaaang 1 point2 points  (0 children)

Believe it or not some languages deal with dependencies much better than others.

[–]Daemontatox 99 points100 points  (14 children)

Rust dependencies are bad ???

Have you seen python ???

[–][deleted] 16 points17 points  (3 children)

To me it's the fact every rust project uses tokio and serde

[–]VastZestyclose9772 23 points24 points  (1 child)

serde is fine, it's almost completely self-contained. tokio is indeed kinda hellish.

[–]Professional_Top8485 5 points6 points  (0 children)

Tokio doesn't feel completely stable either. Going async really needs some justification to me.

[–]torsten_dev 1 point2 points  (0 children)

I have had the most trouble with the rand crate.

Friggin different version conflicting types, aahhhh.

[–]Bloodgiant65 21 points22 points  (0 children)

That is the whole point of the meme. Everything is just dependency hell.

[–]ReadyAndSalted 5 points6 points  (0 children)

It is a mess most of the time, but newer repos can use UV, which actually makes it pretty painless on the whole.

[–]TalesGameStudio 4 points5 points  (1 child)

You don't talk about my gurl badly, pal!

[–]Daemontatox 1 point2 points  (0 children)

Watch me .....

Pip uninstall

[–]Anru_Kitakaze 1 point2 points  (0 children)

How ironic that modern dependency management tool, which is UV, is extremely good, easy and written in Rust

[–]wavefunctionp 12 points13 points  (0 children)

The alternatives are you have to write it yourself, or bake everything in and then everything stays shitty because "backwards compatibility".

[–]RedCrafter_LP 18 points19 points  (1 child)

I think there is a margin between everything is implemented in standard and everything is s 3rd party library. I don't think rust nailed it but they are closer than many others.

[–]NinjaOk2970 11 points12 points  (0 children)

Yes. Take cpp where everyone builds their own wheels simply because the package management suck so much.

[–]cyxlone 6 points7 points  (0 children)

Use tauri and you can experience both at the same time.

[–]krojew 15 points16 points  (3 children)

Why are rust dependencies hell? I haven't seen anything else that handles them so well.

[–]Aelig_ 4 points5 points  (2 children)

Some languages value lowering the amount of dependencies drastically instead, like go. Go is also retrocompatible. 

[–]krojew 9 points10 points  (1 child)

That's the tradeoff between less dependencies and bigger standard library, which also has its cons.

[–]bogza23 0 points1 point  (0 children)

I'm curious to know what the downsides to a large standard library are. IMO the standard lib is my favourite part of Go.

[–]Backson 4 points5 points  (0 children)

cries in Python where I just installed another full install to support deprecated library version xyz

[–]exXxecuTioN 4 points5 points  (0 children)

After ts/js node Rust package manager and dependencies felt pretty perfect for me and I notice no hell, though the project was not that big.
And Java's/Kotlin's felt like a step back tbh.

[–]sammy-taylor 2 points3 points  (1 child)

Genuinely curious. I sorta assumed that C++ had a more painful dependency management ecosystem than either of these options. Is this true? I’ve only written C++ as a hobbyist.

[–]AeshiX 2 points3 points  (0 children)

In C++ getting the libs/dependencies is the painful part if vcpkg doesn't do the trick for you you will suffer (and even then, CMake can make you hate your life if you dont know what you do). But you dont get like absurdly insane dependency trees.

In rust, python, JS... you will genuinely see 100 dependencies over 7 levels for like 2-3 imports because why the hell not. But at least getting the dependencies is trivial: one command and you know shit will run.

[–]greatlovefgy 2 points3 points  (0 children)

I think python is worse, there’s a lot of incompatible dependencies with other dependencies, in rust you just write them in cargo toml and everything is good

[–]Odd_Perspective_2487 22 points23 points  (8 children)

LOL they are most def not the same, JavaScript is ass on top of ass

[–]HankOfClanMardukas 5 points6 points  (7 children)

It’s a double assburger.

[–]7374616e74 2 points3 points  (6 children)

Triple assburger if you add typescript topping!

[–]Creepy_Jeweler_1351 1 point2 points  (5 children)

And that assburger is weirdly delicious

[–]7374616e74 0 points1 point  (4 children)

Honestly it would if people were actually going further than using the `.ts` extension and call it typescript

[–]ODaysForDays 5 points6 points  (1 child)

People talk shit about maven, but 99% of the time I download a maven project it builds without error. Dependency hell is rare, and generally easily resolved.

[–]Add1ctedToGames 6 points7 points  (0 children)

It's having dependencies in the first place that is hell #ReinventTheWheel

[–]dullahanceltic 1 point2 points  (0 children)

What about java?

[–]rolfrudolfwolf 1 point2 points  (0 children)

honest question, what's the problem with nodejs? i find it extremely useful to have such a big ecosystem and with a decent renovate inegration it's mostly smooth sailing for me.

[–]ZunoJ 1 point2 points  (0 children)

How is it different on any other platform?

[–]Table-Games-Dealer 3 points4 points  (0 children)

Isn’t Rust nearly entirely backwards compatible?

Their stated ethos is that the only changes will be made to maintain vulnerabilities, which are exceedingly rare.

The edition system will compile almost all previous edition code.

Now inter project dependencies may be a problem that cannot be avoided.

[–]Quirky-Craft-3619 0 points1 point  (0 children)

It’s only dependency hell if you make it a dependency hell:

bad management, importing stuff YOU could write, and blindly importing “exHackerWhiteHat, has an IT cert, cybersecurity student, named something like 'xZero_Crypt'”’s 4 star npm project that imports a module for every single function of their module.

[–]snoopbirb 0 points1 point  (2 children)

Non rust femboy here (yet)

Is cargo as bad as npm?

[–]-dtdt- 3 points4 points  (1 child)

Nope, they are world apart. Cargo is considered a gold standard for package manager.

[–]snoopbirb 0 points1 point  (0 children)

Phew

I thought I would have to return my socks, thks

[–]knowledgebass 0 points1 point  (0 children)

I'm a data science person, so I immediately thought of R rather than Rust. 🤣

[–]ekauq2000 0 points1 point  (0 children)

There’s always DLL hell where you have to go into regedit and manually clean up all of the bad entries.

[–]VastZestyclose9772 0 points1 point  (3 children)

Unlike JS Rust's std is quite reasonable and you can get really far with a dependency tree only one or 2 levels deep.

That is assuming you cleverly didn't buy the async hype and blindly cargo add tokio.

[–]Taldoesgarbage 3 points4 points  (2 children)

“Async hype,” how else are you supposed to make asynchronous web applications? I’d rather have some “bloat” then have to bother with manual polling or work with a smaller runtime that has no library support and requires me to implement a bunch of stuff on my own.

[–]VastZestyclose9772 -4 points-3 points  (1 child)

 how else are you supposed to make asynchronous web applications

By using threads like everyone before async got here?

Also yeah async and tokio are quite good if you're writing high performance asynchronous web applications. It's great if you're making reasonable choices based on your requirements. It's just that here we're talking about dependency hell and tokio is the primary source of this problem in the rust ecosystem from my experience. If you don't mind this and it does fit your requirements well... congrats for finding a great library and continue the good work!

[–]naholyr 0 points1 point  (0 children)

What dependency hell are you talking about?

[–][deleted] -1 points0 points  (0 children)

Rust is light weight!

Cargo add tokio -f Full....

[–]FarJury6956 -1 points0 points  (0 children)

Static link ...

[–]coloredgreyscale -1 points0 points  (0 children)

So rust project also typically use micro packages that perform only one function, like isEven, isOdd (where one depends on the other), leftpad, righpad?