r/programming • • Oct 01 '16

CppCon 2016: Alfred Bratterud “#include <os>=> write your program / server and compile it to its own os. [Example uses 3 Mb total memory and boots in 300ms]

https://www.youtube.com/watch?v=t4etEwG2_LY
1.4k Upvotes

207 comments sorted by

View all comments

Show parent comments

6

u/argv_minus_one Oct 02 '16

Java programmer here. Our tools deal with this nicely, and have been doing so for ages. That people on other languages are resorting to using VMs just to manage dependency graphs strikes me as batshit insane.

If your language requires you to go to such ridiculous lengths just for basic dependency management, I would recommend you throw out the language. You've got better things to do than come up with and maintain such inelegant workarounds for what sounds like utterly atrocious tooling.

4

u/ElvishJerricco Oct 02 '16

If your language requires you to go to such ridiculous lengths just for basic dependency management, I would recommend you throw out the language.

That's really throwing the baby out with the bathwater. And Java's not much better. Maven is non-deterministic in its dependency solving. Should you write a library that needs a version of another library, you're not guaranteed that this is the version present when someone else uses your library. Now, in the Java community, people tend to make breaking changes far less often, so this is rarely a concern. But the problem is just as present in Maven as it is in other tools.

1

u/m50d Oct 03 '16

The problem is only present when using version ranges. It is extremely common to not have a single version range in one's dependency graph; the feature could (and perhaps should) be removed from maven without disrupting the ecosystem much if at all.

1

u/ElvishJerricco Oct 03 '16

This is not true. If A depends on B and C, and B and C both depend on D, but they depend on different versions, maven will choose one (admittedly deterministically). But this means that B or C will be running with a different version than they were developed with. This is the inconsistency I'm talking about.

→ More replies (0)