Linux
Welcome to c/linux!
Welcome to our thriving Linux community! Whether you're a seasoned Linux enthusiast or just starting your journey, we're excited to have you here. Explore, learn, and collaborate with like-minded individuals who share a passion for open-source software and the endless possibilities it offers. Together, let's dive into the world of Linux and embrace the power of freedom, customization, and innovation. Enjoy your stay and feel free to join the vibrant discussions that await you!
Rules:
-
Stay on topic: Posts and discussions should be related to Linux, open source software, and related technologies.
-
Be respectful: Treat fellow community members with respect and courtesy.
-
Quality over quantity: Share informative and thought-provoking content.
-
No spam or self-promotion: Avoid excessive self-promotion or spamming.
-
No NSFW adult content
-
Follow general lemmy guidelines.
view the rest of the comments
No, that is not the only thing. Here are a few more differences:
These differences are critically important today, since exploits and supply chain attacks have become common.
(Aside: The author conveniently picked for comparison a program written in C++, and not only that, but one described as "a 3d visualization environment for robots using ROS." In other words, one of the most complicated languages out there, and an application guaranteed to need things beyond the standard and platform libraries. This is what cherry picking looks like.)
If we as software developers are going to be "real" about dependencies, we must acknowledge that they are liabilities that we impose upon users. The responsible thing to do is to minimize them, and be very cautious about the few that we use. Languages (or more accurately, dependency managers) that encourage high dependency counts, including indirect dependencies, are a very real security problem.
Since the article focuses on Rust, it's worth pointing out that Rust (through Cargo) is among the worst in this department, undermining its own value proposition as a security improvement vs. other languages. I hope it will be better some day.
The other, IMHO, bigger difference is that is any one of those dependencies breaks or develops a security issue, many things on your system break.
I much prefer statically linked programs with as few extremal runtime dependencies as possible. Many times when a program stops working, it takes forever to trace it to a dynamic dependency. Interpreted languages exacerbate this to ridiculous levels. But my statically linked programs - once they work, they work practically forever; it requires a major core library change - libc, or libm - to break them, and that almost never happens.
I hard disagree with you: build time dependencies are both more secure and more reliable than runtime dependencies.