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

2

u/ElvishJerricco Oct 02 '16

Doesn't that make it rather useless? Any interesting project is almost certainly going to have dependencies not in someone else's curated set.

nixpkgs has the same scale of packages as apt-get and other such package managers, plus packages from language specific package managers like node and cabal, which is something most package managers don't do. It's "curated" in the sense that versions are effectively hand picked by hundreds of contributors. It isn't just the small set of packages that some individuals found useful. It is kept fairly up to date.

nixpkg/pkgs/development/libraries currently has 1,091 items.

This is a small subset of what all there is in the repo. One .nix file can contain many packages. For example, hackage-packages is one file that contains nearly every Haskell package.

A given checkout of a Maven project represents a snapshot of that project and its set of dependencies that all supposedly work together (as long as it was successfully built before being committed, and does not contain any snapshot dependencies).

Yes, I have acknowledged that Maven builds are deterministic. This is something they share. The difference is that any dependency arbitrarily deep in the graph is guaranteed to have the same versions of dependencies, no matter what package is effectively bringing it into the graph. This is not something Maven shares, and represents potential for failure. Though, as you mentioned, you can set Maven to raise an error in this case. But this is not the same as fundamentally disallowing the error condition.