News for hackers. Stuff that matters.
Re:Cargo-style dependency management for C, C++ and other la... by vlovich123 on Wednesday October 21, 2020 @02:12AM (#24845194)
Cargo in terms of ease-of-use but not in terms of scale. You only get the packages that Meson (or the community?) has written build scripts for. By my count that's ~144 packages [1]. That's nowhere near as pervasive as Cargo given that basically any Rust project published will use Cargo vs C/C++ that has a mix of CMake & autoconf (largely standard for OSS) & BUCK/Bazel for Facebook/Google-influenced (potentially multi-language) codebases. That's also not including all the IDE-specific or platform-specific workspaces (Visual Studio, Xcode, gradle NDK builds, etc).

It's a nice thought but you have to be confident every 3rd party project you use is one whose parallel build you'll maintain as it updates. That's the strength of Cargo - it's the way to write Rust code & the maintenance is done by upstream for everyone.

Additionally Cargo's strength isn't just it's packaging & publishing system. Having a single Rust compiler that everyone uses on all platforms is powerful. C++ might get there eventually with clang but the ecosystem of libraries will need to support that as a baseline. Currently there's too many compiler or platform-specific hacks that are done to regularize the environment a bit whereas Rust generally does all of that under the hood for you (i.e. try writing any cross-platform BSD socket code - it's a total shitshow that basically results in Winsock & all other POSIX OSes basically different net stacks). Rust also comes with a very deep standard library for I/O, path manipulation etc whereas the C++ equivalents for all of this are still surprisingly lacking even in C++20 (especially on the network side).

[1] Based on manually counting the packages listed here https://wrapdb.mesonbuild.com/

Re:Cargo-style dependency management for C, C++ and other la... by papaf on Wednesday October 21, 2020 @03:16AM (#24845478)
Rust also comes with a very deep standard library for I/O, path manipulation etc whereas the C++ equivalents for all of this are still surprisingly lacking even in C++20 (especially on the network side).

I agree with this point and cross-platform development is painful in C and C++. However, one of the reasons people use C and C++ is because of platform specific development. It turns out the platforms themselves are written in C.

For example, the "very deep standard library" for Rust can't do DNS TXT queries. On Linux, I run 'man res_query' [1] and get the documentation. Notice the Synopsis, that's C/C++ and the Linux specific code I write can use that.

Rust can also call these functions but there is an impedance mismatch between the safe world of standard rust and the unsafe calls to the system -- I imagine that a crate is a available to ease the pain of the 'unsigned char *answer'.

I am not making this comment to belittle Rust, I actually think it is a good and safe alternative to C++. However, there is decades of system development behind the C/C++ ecosystem and coming onto a C/C++ thread (about a package manager) and calling things a "shitshow" is not going to win people over.

[1] https://man7.org/linux/man-pages/man3/res_query.3.html

Re:Cargo-style dependency management for C, C++ and other la... by bschwindHN on Wednesday October 21, 2020 @04:18AM (#24845793)
One of the great things about Rust is you can write platform-specific code for each platform and then package it all up into one interface so anyone can trivially use it. They get the simplicity of one interface and the performance of platform-specific code.

Though I haven't used it personally, it seems like the trust-dns project is one such example:

https://github.com/bluejekyll/trust-dns

Re:Cargo-style dependency management for C, C++ and other la... by platinumrad on Wednesday October 21, 2020 @05:56AM (#24846248)
You can do that in literally any language.
Re:Cargo-style dependency management for C, C++ and other la... by bschwindHN on Wednesday October 21, 2020 @06:06AM (#24846286)
Yep, but Rust makes it very easy to package and distribute libraries with Cargo, while maintaining performance on the level of C.

I was mostly replying to this:

> However, one of the reasons people use C and C++ is because of platform specific development. It turns out the platforms themselves are written in C.

Re:Cargo-style dependency management for C, C++ and other la... by pjmlp on Thursday October 22, 2020 @12:46AM (#24854979)
Most languages that offer AOT toolchains can do the same.
Re:Cargo-style dependency management for C, C++ and other la... by thechao on Wednesday October 21, 2020 @10:11AM (#24848044)
I think I know what you're trying to say: Cargo's existence means that each of the platform-specific variations can be packaged up into a single library, and that library becomes the de facto standard.

It's a higher bar than "just about any language supports abstraction". It fits more into a Pythonic world-view where there's a one-size-fits-all standard library mentality.

Re:Cargo-style dependency management for C, C++ and other la... by dpc_pw on Wednesday October 21, 2020 @01:51PM (#24850296)
> here is decades of system development behind the C/C++ ecosystem and coming onto a C/C++ thread (about a package manager) and calling things a "shitshow" is not going to win people over.

But it is as shitshow. Pretty much everything in system programming is a shitshow. From the moment you boot up a computer, it's just continous stream of bad ideas, lack of foresight, incidental architectures, hacks, bugs and workarounds all glued together with a duct-tape. That's what system development really is.

Everything we do in mainstream system computing is a shitshow. The fact that people are afraid to put any computer to handle public Internet traffic is a shitshow. It's a shitshow, everybody knows it's a shitshow and we even have whole mature industries sucking out a lot of money out of economy to deal with that shitshow.

Anyone that can't see it's a shitshow can't really be "won over". They will happily live their lives being quite skilled at navigating this shitshow, and repeating stuff like "UB is not a problem", "security bugs are only problem of bad developers", "modern C++ is mostly-safe", and so on.

The biggest shitshow... the meta-shitshow here, is how many people in systems development can't see it's a shitshow. They never ventured to investigate ideas from outside of the Unix/C/C++ bubble and tried to incorporate it into systems programming.

And just to be clear... Rust is not completely shitshow-free, and is just a small pocket of almost-shitshow-free environment in a vast shitshow ocean.

Re:Cargo-style dependency management for C, C++ and other la... by einpoklum on Wednesday October 21, 2020 @04:32AM (#24845889)
> Having a single Rust compiler that everyone uses on all platforms is powerful.

It's also quite problematic, in that this tends to create a lot of reliance on non-standardized compiler behavior and quirks.

> C++ might get there eventually with clang

I sure hope not! (and I appreciate clang). It's important and useful for there to be several compilers. Plus, if any compiler becomes the single standard one, then it definitely needs to be strongly "copyleft"ed, e.g. with a GNU GPL license.

Otherwise agree with the problems you identified.

Re:Cargo-style dependency management for C, C++ and other la... by ansible on Wednesday October 21, 2020 @10:15AM (#24848071)
> It's also quite problematic, in that this tends to create a lot of reliance on non-standardized compiler behavior and quirks.

While that may be a problem in other communities, with Rust there is a general aversion to undefined behavior. It is my belief that there will be more community pressure to fix quirks and such, and not depend upon them in general.

Re:Cargo-style dependency management for C, C++ and other la... by einpoklum on Wednesday October 21, 2020 @05:05PM (#24852166)
> with Rust there is a general aversion to undefined behavior.

Ah, but it will be defined behavior - just implicitly defined.

Re:Cargo-style dependency management for C, C++ and other la... by otabdeveloper4 on Wednesday October 21, 2020 @02:27AM (#24845255)
Having multiple compiler implementations is a strength, not a weakness. As long as Rust is not standardized and documented only by the implementation's code it will never be a serious language.
Re:Cargo-style dependency management for C, C++ and other la... by jnxx on Wednesday October 21, 2020 @08:53AM (#24847315)
I am sure that a GCC implementation will happen, as there are already discussions to allow Rust modules in the Linux kernel.

But wait, are you saying that Go and Python are not serious languages?

Re:Cargo-style dependency management for C, C++ and other la... by throwaway894345 on Wednesday October 21, 2020 @09:06AM (#24847440)
Go has a second compiler—gccgo. Python also has other implementations, but because there is no Python standard, the compatibility of those implementations with the broader ecosystem varies enormously and CPython is the de facto standard (the extent to which an implementation wants to be compatible is the extent to which it must be slow, because it means adhering more closely to the design mistakes that CPython has committed itself to).
Re:Cargo-style dependency management for C, C++ and other la... by correct_horse on Wednesday October 21, 2020 @09:09AM (#24847475)
Python is a bad example. Cython and pypy are very widely used. IronPython, Jython, etc. also exist. Go is a better example, but even Go has a gcc backend, although it is rarely used in production as I understand.
Re:Cargo-style dependency management for C, C++ and other la... by higerordermap on Wednesday October 21, 2020 @12:03PM (#24849108)
Go has a spec. Rust doesn't even have a spec at the moment.
Re:Cargo-style dependency management for C, C++ and other la... by aprdm on Wednesday October 21, 2020 @02:42AM (#24845316)
What is a serious language? Is being used in companies like Amazon to deliver runtimes used by a considerable % of the internet not serious?
Re:Cargo-style dependency management for C, C++ and other la... by papaf on Wednesday October 21, 2020 @03:25AM (#24845531)
What is a serious language?

I would call C a serious language. Its running your laptop, your phone, your car, the airplane you took on holiday, the fighter planes that protect your airspace, your washing machine, and if you are unfortunate enough to get seriously ill it will probably be running on the medical equipment that keeps you alive.

One of the reasons it is serious is because it is standardized and multiple implementations exist.

Re:Cargo-style dependency management for C, C++ and other la... by Xylakant on Wednesday October 21, 2020 @04:41AM (#24845926)
Brainfuck has a language specification (it's nice and short) https://esolangs.org/wiki/Brainfuck and a long list of implementations, some even hardware backed. https://esolangs.org/wiki/Brainfuck_implementations

So if that's the criteria, then brainfuck is a serious language.

Re:Cargo-style dependency management for C, C++ and other la... by blub on Wednesday October 21, 2020 @06:55AM (#24846544)
It seems implausible that you don't know the difference between an international standard and a specification document written (of all places) in a wiki, which means you're being purposefully obtuse and don't really have any counter-arguments.

If one wants to use a tool in a life-critical system, a system that might be in use for decades they're going to reach for one of the said "serious languages": C, C++, Ada, etc. That list's very short and it includes neither Brainfuck nor Rust for that matter.

Re:Cargo-style dependency management for C, C++ and other la... by Xylakant on Wednesday October 21, 2020 @08:45AM (#24847254)
Ok, I picked brainfuck as an - obviously extreme - example of how a language can tick both those boxes and still be not a serious language. I can pick a number of examples of languages that have no international standard and a single implementation and are used in systems that might be in use for decades. Let's take go. A single implementation, it does have a spec, but I'm not aware of an ISO standard. ADA, while having an ISO standard, isn't exactly blessed with many implementations either. Java, while having multiple implementations, is not an ISO standard.

The point is: neither of those two datapoints is a particularly useful metric on how "serious" a programming language is and much less even a useful metric on how well it is suited to any given task. Even how mainstream programming languages are is not a useful signal for that. Javascript is very much mainstream, but I hope no one ever will want to program a cars ECU in a JS dialect. Specialized applications are almost by definition the realm of specialized languages.

Re:Cargo-style dependency management for C, C++ and other la... by jschwartzi on Wednesday October 21, 2020 @12:10PM (#24849176)
They have, in the past, reached for LISP and various other languages. What matters for life-critical systems isn't the presence or absence of a formal specification. It's more important to foster a culture of design verification and validation of tooling. You can use Brainfuck in a medical device provided you can create the right organizational architecture to ensure the quality of your Brainfuck code. It's more about creating a rational engineering organization and having a process of searching for problems and solving them proactively rather than waiting for your customers to test your code.

Of course most rational engineering organizations wouldn't choose Brainfuck because it's harder to write code that other people can evaluate. But it's not automatically out of the question if you have a good reason for its use.

Re:Cargo-style dependency management for C, C++ and other la... by int_19h on Wednesday October 21, 2020 @08:49AM (#24847286)
It doesn't include JavaScript, either - and yet it's one of the most popular and successful PLs today. Very few people write code for a "life-critical system".
Re:Cargo-style dependency management for C, C++ and other la... by aprdm on Wednesday October 21, 2020 @03:39AM (#24845608)
I do wonder what other languages you consider serious apart from C. You could use similar examples for a lot of other languages, C isn't the only language used to keep our civilization alive.

I did a fair bit of development in C, and developed hard real time systems in VHDL that did involve life & death, but, wouldn't call any language used in the industry generating value as a non serious language...

Re:Cargo-style dependency management for C, C++ and other la... by papaf on Wednesday October 21, 2020 @07:35AM (#24846757)
I do wonder what other languages you consider serious apart from C.

Off the top of my head I thought C++ and Ada. However, you mention VHDL which I agree with and somebody else pointed out Javascript which is also a good point. The Javascript example (along with C++) make the point that serious computer languages are not necessarily great languages.

I would argue that Rust is not a serious language (at the moment [1]) because its still young, there is no specification and if anything happens to the one implementation it would be a disaster.

Despite C being a null pointer minefield, if someone was to sue a developer the argument could be made that it is an industry standard. In the less likely event that a Rust program hurt somebody what are you going to say?

[1] https://users.rust-lang.org/t/is-there-a-plan-to-get-a-forma...

Re:Cargo-style dependency management for C, C++ and other la... by afiori on Wednesday October 21, 2020 @03:40AM (#24845615)
So also javascript? :)
Re:Cargo-style dependency management for C, C++ and other la... by mmm_grayons on Wednesday October 21, 2020 @08:51AM (#24847297)
Spacex did launch a rocket with an electron interface...

In practice, though, V8 is the serious impementation. The interesting thing about C and C++ is that I don't know if any given dev is using Clang, GCC, or MSVC until I ask him. I know a JS dev is using V8.

Re:Cargo-style dependency management for C, C++ and other la... by terafo on Wednesday October 21, 2020 @05:32AM (#24846146)
Critical software for planes is written in Ada. C is not safe enough.
Re:Cargo-style dependency management for C, C++ and other la... by coldtea on Wednesday October 21, 2020 @06:09AM (#24846306)
That was the idea back in the 80s. Didn't turn out that way, planes, rockets, NASA, still use C just fine, and Ada was not that widely adopted in the end.
Re:Cargo-style dependency management for C, C++ and other la... by platinumrad on Wednesday October 21, 2020 @05:57AM (#24846254)
And yet C++ was (in)famously used in the JSF... A less notorious example is Airbus's use of Frama-C.
Re:Cargo-style dependency management for C, C++ and other la... by throwaway894345 on Wednesday October 21, 2020 @09:08AM (#24847469)
I’m not sure (but could be wrong) that lambda and Fargate (the services which use firecracker) service “a considerable percent of the Internet”, but CloudFlare’s network does and it has some routing components in rust IIRC.
Re:Cargo-style dependency management for C, C++ and other la... by otabdeveloper4 on Wednesday October 21, 2020 @04:00AM (#24845700)
No, "used for pet project by mismanaged megacorp" is not a sign of seriousness. (I'm sure there's some team inside FAANG that's using Brainfuck in production right now.)

"The Rust development team isn't interested in supporting your obscure embedded architecture" or "sorry, this platform was phased out due to technical debt" is what I mean by not serious.

Look at Python and how any attempts to make alternative interpreter implementations ultimately failed. (And they at least have PEPs.)

Re:Cargo-style dependency management for C, C++ and other la... by Xylakant on Wednesday October 21, 2020 @04:23AM (#24845828)
I'd hardly call for example firecracker a "pet project by mismanaged megacorp". It's running production workloads - and at AWS scale, I'm fairly certain it's running more work than most of us here ever touched in their career total. https://github.com/firecracker-microvm/firecracker

> And they at least have PEPs.

Rusts language development has been guided by RFCs since like the beginning. There's no comprehensive standard as in "somebody went and wrote down the current state", but it's also not the case that there's no written spec of how things should behave. You could base a new compiler on that and there's actually developments to have different backends to rustc. Cranelift for example https://github.com/bytecodealliance/wasmtime/blob/main/crane...

> "The Rust development team isn't interested in supporting your obscure embedded architecture" or "sorry, this platform was phased out due to technical debt" is what I mean by not serious.

So any compiler team that stops supporting some sort of architecture because it's either rare or no longer worth the effort is not serious in your opinion? Like GCC, that has a decision making matrix for that? https://gcc.gnu.org/backends.html And dropped various architectures along the way?

Re:Cargo-style dependency management for C, C++ and other la... by blub on Wednesday October 21, 2020 @07:06AM (#24846598)
Until Rust becomes at least a mainstream language (and if it becomes one), criticism addressing its lack of mainstream adoption and novelty are perfectly legitimate and these arguments are worth considering when deciding what to base a project on.

The fact that a specific corporation has implemented a specific project by using a specific tool is completely meaningless as to the appropriateness of using that tool in another context.

Re:Cargo-style dependency management for C, C++ and other la... by Xylakant on Wednesday October 21, 2020 @08:30AM (#24847113)
You're moving goalpost by quite a bit. Mainstream adoption and seriousness - whatever that might be exactly - are certainly not the same metric. For example, in your sibling comment, you mention ADA as serious language. ADA certainly is not mainstream.

> The fact that a specific corporation has implemented a specific project by using a specific tool is completely meaningless as to the appropriateness of using that tool in another context.

You're entirely correct. That's another goalpost move - nobody proclaimed that being used for business critical projects makes rust in any way magically fit for any and all other conceivable projects.

Re:Cargo-style dependency management for C, C++ and other la... by blub on Wednesday October 21, 2020 @11:42AM (#24848917)
I'm not moving any goalposts because I'm not the original person you were talking to. I was merely saying two simple things:

a) the fact that a corporation uses a language is meaningless and can't be used as an argument for anything - except maybe what to learn if you want to get a job there.

b) that all arguments based on Rust's novelty, call it "serious language" "mainstream language" or whatever - have merit. Rust is obviously not mature enough for many potential users and you can't convince them by talking about RFCs.

Re:Cargo-style dependency management for C, C++ and other la... by Xylakant on Wednesday October 21, 2020 @12:13PM (#24849217)
> a) the fact that a corporation uses a language is meaningless and can't be used as an argument for anything - except maybe what to learn if you want to get a job there.

I disagree with you here. This is a low level production grade application in a domain that requires secure and stable operation. The fact that a team picked a specific language for this application demonstrates a certain level of stability and suitability for various problem domains. There are more examples of large scale rust codebases. That does not imply that rust is magically suited to all problems or that you should pick rust for your project at all cost and without further consideration, but it does mean that rust is used in “serious” projects that have significant monetary value attached to it.

> b) that all arguments based on Rust's novelty, call it "serious language" "mainstream language" or whatever - have merit. Rust is obviously not mature enough for many potential users and you can't convince them by talking about RFCs.

You’re again arguing against points I never made. Rust has no ISO standard - true. But the point I was responding to was “the implementation is the spec” and that’s plain false. The RFC is written first and the implementation is tested against the RFC. There is a written document that specified expected behavior. Sometimes you need to follow the chain if RFCs modify existing behavior and there’s certainly cases where the implementation doesn’t follow the RFCs, but it not like all c compilers are 100% spec compliant all of the time.

Re:Cargo-style dependency management for C, C++ and other la... by baq on Wednesday October 21, 2020 @02:51AM (#24845357)
it isn't a serious language because it doesn't have a standard? is python somehow a joke? i agree with the docs part but there's plenty of de facto standards in the industry and in the civilization at large and they're pretty serious things.
Re:Cargo-style dependency management for C, C++ and other la... by afiori on Wednesday October 21, 2020 @03:55AM (#24845673)
Taking the strongest version of the argument Python is partly standardized in multiple implementations.

My understanding is that mostly CPython does whatever it wants and the other follows, but it is still better than a single implementation where the boundary between bug and spec would be nebulous.

Re:Cargo-style dependency management for C, C++ and other la... by int_19h on Wednesday October 21, 2020 @08:52AM (#24847306)
Not quite - CPython docs specifically say that some things are implementation-specific, and that other implementations are free to do them differently. For example, there's no guarantee of refcounting, and portable Python code has to assume that implicit cleanup is non-deterministic (which is observable with __del__).

The problem, rather, is that coders tend to ignore this, and write code that only works on CPython.

Re:Cargo-style dependency management for C, C++ and other la... by afiori on Wednesday October 21, 2020 @11:22AM (#24848708)
This is what I meant as the advantage of multiple implementations, by "CPython does whatever it wants" I meant that the power dynamics are almost exclusively in favour of CPython
Re:Cargo-style dependency management for C, C++ and other la... by otabdeveloper4 on Wednesday October 21, 2020 @04:04AM (#24845721)
Yeah, but Python is competing with Perl and Ruby, not C.
Re:Cargo-style dependency management for C, C++ and other la... by oblio on Wednesday October 21, 2020 @06:19AM (#24846359)
In practice you're just fighting different compiler bugs.

Except for C, for all intents and purposes every other major language basically has one authoritative compiler implementation.

Re:Cargo-style dependency management for C, C++ and other la... by somedude11 on Wednesday October 21, 2020 @08:41AM (#24847213)
C++ has GCC, CLANG, MSVC, all of them being major, and a dozen of less popular ones used in specific places like Intel C++ Compiler.
Re:Cargo-style dependency management for C, C++ and other la... by _vbdg on Wednesday October 21, 2020 @08:52AM (#24847311)
And the funny thing is, C++ is so complex it's the last language I'd expect to have multiple optimizing compilers (though rust is probably similar, I imagine.)
Re:Cargo-style dependency management for C, C++ and other la... by oblio on Wednesday October 21, 2020 @09:37AM (#24847730)
I'm lumping them together, as most people do. Even though I guess both groups hate it (C devs vs C++ devs).
Re:Cargo-style dependency management for C, C++ and other la... by rapsey on Wednesday October 21, 2020 @02:20AM (#24845229)
When using Rust libs you also have some faith that the lib will not have some sort of memory corruption and introduce instability to your app. This is why C/C++ can never have the Rust crate system, no matter how user friendly the package manager.
Re:Cargo-style dependency management for C, C++ and other la... by simias on Wednesday October 21, 2020 @08:51AM (#24847304)
If anything this argument would make more sense the other way around: Rust cares about memory safety a whole lot more than C++, so it should be more concerned about having insecure interfaces leaking through dependencies.

C and C++ don't have bespoke build and module systems because it wasn't really a thing back when they were conceived, that's it. And bolting that stuff as an afterthought on top of existing, widely popular languages is extremely difficult.

Re:Cargo-style dependency management for C, C++ and other la... by identity0 on Wednesday October 21, 2020 @02:29AM (#24845260)
?? You're telling me C++ devs don't use libraries?
Re:Cargo-style dependency management for C, C++ and other la... by rapsey on Wednesday October 21, 2020 @02:44AM (#24845326)
To the degree of Rust no.
Re:Cargo-style dependency management for C, C++ and other la... by self_awareness on Wednesday October 21, 2020 @02:54AM (#24845369)
It's probably because of the complication of adding a library dependency in C++. If the ecosystem would use a Cargo-like management, I think C++ would have as much libraries, eagerly used, as Rust.
Re:Cargo-style dependency management for C, C++ and other la... by Cloudef on Wednesday October 21, 2020 @03:51AM (#24845654)
One could leverage something like Arch PKGBUILDs or nix recipes to create C/C++ "package manager". C/C++ libraries aren't really hard, all you need is "root directory" with the common {/include,/lib} layout. For C you could even have binary libraries, but for C++ binary libraries are gonna be quite a problem, because there's no ABI compatiblity and even different compiler flags can cause ABI incompatibility.
Re:Cargo-style dependency management for C, C++ and other la... by self_awareness on Thursday October 22, 2020 @07:34AM (#24856938)
It's easy to do on the beginning until you want to add a library that has a set of custom perl scripts to do the actual build.

Then you want to add a library that compiles fine on Fedora, but fails on ArchLinux, because they've moved some header file from `/usr/include` to `/usr/include/subdir`.

Then you want to add another library, but you want to statically link it, only to find out that the package manager installs a version of the library that allows only dynamic linkage.

Then you want to add Windows support, and the whole thing detonates because Visual Studio uses completely different compilation switches than what you'd expect from a compiler in a unix world.

Next there are 1000 other problems, including people who insist on using raw Makefiles because they think they know better.

By the way, the fact that C doesn't use rich signatures is a problem, not a feature. C ABI can also be changed by using different compilation options, but the user won't even know it until the app explodes (crashes). At least C++ will emit a linker error in such case (sometimes, other times it will explode as well).

Re:Cargo-style dependency management for C, C++ and other la... by Cloudef on Thursday October 22, 2020 @10:55AM (#24858667)
>Then you want to add a library that compiles fine on Fedora, but fails on ArchLinux, because they've moved some header file from `/usr/include` to `/usr/include/subdir`.

This is why pkg-config exists.

>Then you want to add another library, but you want to statically link it, only to find out that the package manager installs a version of the library that allows only dynamic linkage.

This sounds like a problem in such "package manager" or problem in the upstream build system.

>Then you want to add Windows support, and the whole thing detonates because Visual Studio uses completely different compilation switches than what you'd expect from a compiler in a unix world

This is a valid point. Visual studio already has its own solution however. I personally avoid visual studio anyways, because it sucks for C.

>Next there are 1000 other problems, including people who insist on using raw Makefiles because they think they know better.

These aren't really problems unless you rely only on the upstream build system. PKGBUILDs, nix recipes they can do their own thing.

Re:Cargo-style dependency management for C, C++ and other la... by oblio on Wednesday October 21, 2020 @06:20AM (#24846366)
> One could

One could, but no one has. That's the whole discussion, there are multiple partial implementations with limited adoption.

Re:Cargo-style dependency management for C, C++ and other la... by Cloudef on Wednesday October 21, 2020 @06:40AM (#24846472)
MSYS2 actually has one based on pacman and PKGBUILDs. I remember unofficial vita SDK going similar route as well. Probably there's tons of similar solutions but not marketed well enough.
Re:Cargo-style dependency management for C, C++ and other la... by oblio on Wednesday October 21, 2020 @06:42AM (#24846479)
The marketing part is the hard part, ideas are a dime a dozen, unfortunately.

These solutions need to be almost ubiquitous to be truly useful.