3 ms·
I don't believe that's accurate in general. Let's say you open up a new C codebase: What are its dependencies? You'll have to hunt through its README (hopefull
by dagenix 6y ago
I don't believe that's accurate in general.
Let's say you open up a new C codebase: What are its dependencies? You'll have to hunt through its README (hopefully it's up to date!), other build instructions, maybe CMake, maybe some custom build system, etc.
What version of dependencies does it use? If the code has been vendored, you at least know what code its using - but where do you look for updates to that code? Do you manually go out to wherever it was copied from now and then and look for updates? If the code isn't vendored, then how was it installed? From the package manager? If so, what operating system and version was used during development? If its not from a package, its might have been downloaded and installed manually? Again, where was it downloaded from? Where was it installed? What options did it use when it was compiled?
How do you handle transitive dependencies? Probably by hand. How well documented are they?
C suffers plenty of dependency issues.
- jdright 6y agoThis. Take even CURL as an example, try to list its dependencies and you'll see how harder it is.
- tick_tock_tick 6y agolibc that's it. Every other dependency for curl is optional.....
- jdright 6y agoTry it. If you do not use any "optional" dependency it becomes pretty limited, almost useless for anything serious (eg. zlib, ssl)
- asveikau 6y agoZlib is pretty small. TLS implementions are often giant hairballs but one that many things depend on. You can think of it as a somewhat "system level" dependency.
- jdright 6y agoBeing small is not in the question. Being there is. Otherwise we wouldn't be here discussing all hyper dependencies in detail as some of these are a lot smaller than zlib.
- asveikau 6y agoI am late to reply. What I mean to say is zlib is a small self contained dependency, suitable for static linking, and no major dependency of its own, just math. A lot of more modern libraries and languages tend to have their small dependencies pull in a massive hydra of dependencies.
- asveikau 6y agoBut each one of these dependencies is pretty consciously and manually added, most of the time. In new code, to introduce a new one usually requires thought, and that creates a culture of caution. Also if you are dynamic linking, ldd(1) can give you a pretty good picture.
- pixel_fcker 6y agoAnd a simple ‘cargo tree‘ will show you the tree of dependencies for a crate, nicely formatted.