Rust came first, so people who didn't like Rust flocked to Zig as an alternative, and were keen to promote it as an alternative to Rust by criticising Rust, as wider usage would provide them more of an ecosystem to use in their own Zig programs.
People who were happy with Rust didn't have same need to criticise Zig in online spaces as Rust is the established player in the C alternatives space. (Though Rust is on the other side when compared to C once you expand the space to "all low level programming languages").
Also for people who don't care about the space at all, Rust has had years of exposure to promote fatigue, while Zig hasn't (yet).
This will be anecdotal. However both in the academia and in the semi-professional space, I encountered certain type of programmer who is a bit more "religiously minded" (both in the technical space and quite often in their personal beliefs too). Unix, although being a quite commercial project, its academic origins attracted a kind of followers, who believe there is a certain purity we can reach with computers or software that's not bound to the practical and economic use-cases. This forms an identity and they tend to regard programmers who are in this ecosystem as gods or prophets. The origins of Unix is also mixed with the free software movement due to both academic origins and regarded as a one continuous movement.
C language is strongly tied to Unix ecosystem. C language and current compilers give this illusion of "ultimate control" to the programmers (although C has been interpreted quite freely for the sake of optimizations). With GNU C compiler finding a niche (i.e. being a free as in beer C compiler and a userland that's not bounded by the original Unix or BSD licensing / patents) and taking off in many servers the beliefs were kind of validated.
Rust attacks those beliefs in multiple fronts:
First and foremost, Rust comes from an inherent distrust to the programmer's abilities to write secure software. Rust creates strong obstacles against writing "magic" programs that freely interpret memory. Programmers are not treated as gods but fallible mortals who needed to be guided. Many C programmers interpret this as an insult to their abilities to manually check and verify a program. Rust is no less capable than C, it has all sorts of escape hatches that can be used in performance critical parts.
Rust compiler itself and the most of the programs written in Rust are permissively licensed. This is to avoid possible issues with copyleft licenses combined with statically linked binaries. Without having a stable ABI or ability to incorporate third party libraries post-build, GPL and LGPL create hurdles that doesn't exist in the mostly dynamically compiled world of C.
Rust has a more equal regard of the operating systems, including non-POSIX ones like Windows. Despite most people in the world interact with non-POSIX APIs the most, accepting it as another step.
Rust community tries its best to create a safe space for marginalized parts of the society. Go to any Rust conference and you'll see an over-representation of LGBTQ people. This probably rubs majorly white male subset of strongly identifying C programmers up wrong way.
The community also welcomes a bunch of different ways of thinking and questioning the basics of every single decision we made when we were building the systems of today.
Zig, on the other hand doesn't attack any of those "base principles". It fixes the most annoying parts of C programming: fluid integer types, really weak type system, hostile dependency management. It still trusts the programmer 100%. The default behavior is still unsafe.
People who choose Rust are also particularly worried about the security of the programs and they would like to prove and validate the language's existence and goals. They do that by reimplementing very popular and very senior projects in Rust and compare its performance and safety against existing C projects too. Many such projects have enjoyed a long time of no competition and now there is one.
It isn't all of the objection, but there is a non-neglible amount of anti-woke people who find some weak technical reason to hate rust. It's silly but you'll be amazed in how often you see it line up when checking a random sampling of people who show up in rust threads just to make off topic complaints about rust.
EDIT: I hadn't fully gone through the comment section on this one yet and yikes it's worse about it than normal.
Non-negligible from what perspective? Is this group of people somehow holding back unbridled adoption and enthusiasm for Rust? Is it possible for tech people to drum up excitement for a newer language without it being political just because you insist that it is?
1. tl;dr and full of low-information and cringe vocabulary such as „excited“, „thrilled“, „challenge“, … Why are they wasting the readers time with this?
2. I would support because I like and use Rust but only if I have guarantees that the money will be spend only on developers who are selected merely by technical contributions and not based on political beliefs, gender, race, etc. And unfortunately from what I’ve heard the Rust community is one of the snowflakiest communities on the internet. I don’t want to fund that.
I would actually support the Rust Foundation (and the Rust programming language itself) if the language had respected the promises it made in early 2012 / 2013 (the year I adopted the Rust programming language for my software):
* A programming language simpler than C++...
* That does not change so much accross time (maybe the biggest lie here)...
* With great design changes and adoption (it was before async/await, obviously)...
* Abstracted from big companies (again a lie, as Amazon hires most of the heads of the Rust programming language now)...
* With a great non-political community (actually, this is the biggest lie of all).
Where were these things promised to you? I was there then too, and maybe one or two of these things were relevant if you squint, but also many of them were actively not promised.
> * With a great non-political community (actually, this is the biggest lie of all).
I recall the opposite, that the rust language (before the foundation) position was that being apolitical was a political stance. This is not the exact message I remember https://x.com/rustlang/status/1267519582505512960 and also can't realistically cover the entire community at large, as if that even has a single political stance.
The group that insists on keeping a community or software project 'non-political' often fails to recognize that this stance is itself a political position. They claim to want a neutral space, but what they really mean is that the existing political view does not align with their own. By dismissing other perspectives as 'political' while treating their own as neutral, they end up being both hypocritical and unwilling (or unable) to acknowledge that their opinions are political too.
I agree that those were not actually "promises" but "directions", and I apologise for that. Those directions were mainly cited in different conferences by some Rust-head-members at that time (Alex Crichton, Niko Matsakis, Ashley Williams, or even you), and during conversations I had with severals during Rust Fest or RustCon.
For example, I remember talking that with you at the Rust Fest 2017, in Zurich actually, especially about the *very early version* of Async/Await.
It is ok for the community to move on different directions than the first one, and I don't blame any of you for that.
Niko and Alex were the only ones in leadership in 2013, I didn't until 2014, and Ashley later. Rust Fest and Rust Con didn't come along until much later.
> It is ok for the community to move on different directions than the first one
I agree, I just disagree with your characterization of "the first one." There were differences between the original Rust and what shipped, but almost none of it has to do with what you've said. In 2012-2013, Rust very explicitly changed a lot across time, and now it certainly does not. Async/await drove a lot of that adoption. Rust was always "political", even before 2012.
Non-political almost always means "accept the social status quo I am used to".
I think there is a reasonable argument that the default for a community with technical goals should be to accept social status quo conventions unless they conflict with the communities technical goals. But if the social default is "girls don't code and queers should hide" there is a reasonable counterargument that these conflict with the goal of making the technology (and community) available to everyone.
> But if the social default is "girls don't code and queers should hide"
Queers should hide definitely isn't any social default unless the code is exclusively developed in Gaza. "Do what you like but please stick to technical considerations" isn't "you need to hide".
I'm an LGBT person with a trans partner and I find many codes of conduct to be chastising and purposefully finger pointing to conservative people.
A lot of them are basically, "your religious teachings or cultural upbringing aren't welcome here"
I don't agree with religious texts, but that's what you're wagging in their face with some of the CoCs.
Leave it at "don't be an asshole". It's that simple.
The current political climate, I feel, is a direct reaction to this.
A politically neutral space wouldn't permit religious people to harass trans or LGBT people, but it also wouldn't give anyone latitude to throw stones the other way either.
CoCs are "you're not welcome here at all".
Another thing: you always see language and project logos modified to bear the rainbow, trans, and BLM colors. You never see anything supporting Asians, white people, men, or Christians. If you did this, you would be called out as a racist. Which is so ironic.
Let's just get along and work together. Maybe we'll find more agreements amongst ourselves that way instead of trying to divide everyone into camps.
Some progressives are going to get very pissed off at this comment, but I grew up and live in the South. You can (and often must) work with people you don't agree with. It's not impossible to be friends either. You might wind up changing their mind, and they might wind up making you more tolerant as well.
I agree with you, although of course "don't be an asshole" is only simple to enforce in practice. In the current climate, I expect that people considered "conservative" will still be highly hostile to good faith (let alone not) enforcements.
No matter the person, it's really disappointing that we're still entrenched in the mentalities of tribalism, anti-intellectualism, "if you're not with us, you're against us", "an eye for an eye", "someone hurt me, so I'm going to hurt someone", and so on. And by "person", that includes me.
The Earth politics patch really can't come soon enough. How much do we pay the devs, again?
> You can (and often must) work with people you don't agree with.
Life's for too short to force people to do this, and ideally we should make it as feasible as possible for as many people as possible to never have to do this.
This is a crazy notion. If I have to like everybody to work with them, we can't have a civilization because I don't like most people.
I like some people. Everybody else I work with if they're willing to work with me. Saying that we all have to agree with each other is basically giving up on the political project entirely, and going back to strongman rulers who organize by demanding conformity. Very relevant in these times.
> we should make it as feasible as possible for as many people as possible to never have to do this.
No, we should make it impossible to avoid so people can't sneak into adulthood without being properly socialized.
Imagine the flip side. We could easily wind up in that world too.
The best defense against polarization is a strong and cohesive middle ground.
If you pull to far in the other way, all the bonds break. And it's a race for each interest group to seize power, rather than having some intermediating force that serves as a buffer.
Again: look at the political climate. It's a reaction. The pendulum is swinging harder and harder because we've given up on the middle ground.
Most of the people you hate (and you do seem to dislike them at least a little bit) have honestly never had an LGBT friend. Imagine if they did how that might change them.
Instead they hear voices from the LGBT community that want to outlaw them and their way of life. That's pretty hostile. And definitely is going to be met with the same attitude you're giving them.
I'm LGBT and I have many conservative friends. They're more apt to come around to it than you believe. You're shutting down any conversation before it can even happen.
> Instead they hear voices from the LGBT community
Oftentimes, the voices are outside.
I think you're somewhat optimistic, and "the middle ground" is not a magical place. It's easy to fall into a false sense of security that comes from making (likely valid) criticisms of caricatured groups. Middle ground should not be sought for its own sake, or else it becomes useless (akin to Goodhart's law; roughly "when a measure becomes a target, it ceases to be a good measure"). People should embrace a diversity of values, but the burden is to stay true to a set of values and push for the truth.
Amazon fired every Rust project team member except Niko and weihanglo over the last year. Which is a major contributor to why the foundation started looking into funding maintainers
I don't agree with some points, but I share the feeling in terms of "failed promises".
The fact that most well-known Rust crates are becoming huge bloat are becoming a problem to me, which is something that has been critized years again by the community itself.
As an example, I still do not understand why simple HTTP crates require more than 50 to 70 dependencies to execute a simple GET call...
So let me get this straight. You want the benefit of being able to re-use other peoples' codebase by using an HTTP crate you didn't write. But you don't want those people to also use that benefit of depending on other crates.
Insisting that you should depend on code which itself has no dependencies is a bit hypocritical if you ask me. If you want a simple HTTP crate that doesn't have dependencies, you should follow your own philosophy of not using other crates and write it yourself.
> As an example, I still do not understand why simple HTTP crates require more than 50 to 70 dependencies to execute a simple GET call...
Looking at ureq [0], for example, its direct non-build/non-dev dependencies are (counting duplicates):
- base64
- flate2 (4 transitive dependencies)
- log
- percent-encoding
- rustls (26 transitive dependencies)
- rustls-pki-types (1 transitive dependency)
- ureq-proto (7 transitive dependencies)
- utf-8
- webpki-roots (2 transitive dependencies)
The vast majority of the raw dependency count comes from Rustls and related crates, and I'd imagine reimplementing a TLS stack would be somewhat out of scope for an HTTP crate. I'm not sure there's much room for substantial reductions in dependency count otherwise.
No, I think the idea of blessing a set of crates (with versions!) is better. The stdlib has a high burden of maintenance, and ideally should only be added to if changes are always backwards compatible. A blessed set is more flexible but still provides a high degree of reliability, unlike the present situation.
Time functions are a prefect example of somewhere there should be expanded support for in the STD. I'm also of the opinion that there should be a generic and reasonable async runtime in STD, since having `async` in the language, but to direct way to use it without a crate or writing your own executor is awkward.
Then there are things like serialization and logging, which I like the idea of having promoted crates which are essentially just better advertised for newcomers. (Maybe included in the distribution already in some way).
But what if we did that 5 years ago? Oops. And even Java's API has problems too. Why not let it be provide by the ecosystem where it can qctually evolve?
This whole idea of an "x replacement" doesn't make any sense in the first place. Language boundaries are not that strict. People say "Zig is a C replacement, Rust is a C++ replacement" but even Andrew Kelley himself says that Zig is a replacement for the C++ he was writing at the time. I work with a lot of C folks who never liked C++ who liked Rust.
I haven't dabbled in rust since 2018, but if rust has managed to be as complicated as C++ while being a fraction of the age then I would think that would be some kind of macabre achievement in its own right.
I don't give a damn about politics so I don't care what politics the language I use likes or not. If someone believes people should not exists because of their political or religious stance, sexuality or origin. We don't have a political problem we have one of morality and I don't compromise in that regard.
Edit: come on don't downvote explain your reasoning.
People who were happy with Rust didn't have same need to criticise Zig in online spaces as Rust is the established player in the C alternatives space. (Though Rust is on the other side when compared to C once you expand the space to "all low level programming languages").
Also for people who don't care about the space at all, Rust has had years of exposure to promote fatigue, while Zig hasn't (yet).
C language is strongly tied to Unix ecosystem. C language and current compilers give this illusion of "ultimate control" to the programmers (although C has been interpreted quite freely for the sake of optimizations). With GNU C compiler finding a niche (i.e. being a free as in beer C compiler and a userland that's not bounded by the original Unix or BSD licensing / patents) and taking off in many servers the beliefs were kind of validated.
Rust attacks those beliefs in multiple fronts:
First and foremost, Rust comes from an inherent distrust to the programmer's abilities to write secure software. Rust creates strong obstacles against writing "magic" programs that freely interpret memory. Programmers are not treated as gods but fallible mortals who needed to be guided. Many C programmers interpret this as an insult to their abilities to manually check and verify a program. Rust is no less capable than C, it has all sorts of escape hatches that can be used in performance critical parts.
Rust compiler itself and the most of the programs written in Rust are permissively licensed. This is to avoid possible issues with copyleft licenses combined with statically linked binaries. Without having a stable ABI or ability to incorporate third party libraries post-build, GPL and LGPL create hurdles that doesn't exist in the mostly dynamically compiled world of C.
Rust has a more equal regard of the operating systems, including non-POSIX ones like Windows. Despite most people in the world interact with non-POSIX APIs the most, accepting it as another step.
Rust community tries its best to create a safe space for marginalized parts of the society. Go to any Rust conference and you'll see an over-representation of LGBTQ people. This probably rubs majorly white male subset of strongly identifying C programmers up wrong way.
The community also welcomes a bunch of different ways of thinking and questioning the basics of every single decision we made when we were building the systems of today.
Zig, on the other hand doesn't attack any of those "base principles". It fixes the most annoying parts of C programming: fluid integer types, really weak type system, hostile dependency management. It still trusts the programmer 100%. The default behavior is still unsafe.
People who choose Rust are also particularly worried about the security of the programs and they would like to prove and validate the language's existence and goals. They do that by reimplementing very popular and very senior projects in Rust and compare its performance and safety against existing C projects too. Many such projects have enjoyed a long time of no competition and now there is one.
EDIT: I hadn't fully gone through the comment section on this one yet and yikes it's worse about it than normal.
2. I would support because I like and use Rust but only if I have guarantees that the money will be spend only on developers who are selected merely by technical contributions and not based on political beliefs, gender, race, etc. And unfortunately from what I’ve heard the Rust community is one of the snowflakiest communities on the internet. I don’t want to fund that.
* A programming language simpler than C++...
* That does not change so much accross time (maybe the biggest lie here)...
* With great design changes and adoption (it was before async/await, obviously)...
* Abstracted from big companies (again a lie, as Amazon hires most of the heads of the Rust programming language now)...
* With a great non-political community (actually, this is the biggest lie of all).
To me, it is a mess.
I recall the opposite, that the rust language (before the foundation) position was that being apolitical was a political stance. This is not the exact message I remember https://x.com/rustlang/status/1267519582505512960 and also can't realistically cover the entire community at large, as if that even has a single political stance.
For example, I remember talking that with you at the Rust Fest 2017, in Zurich actually, especially about the *very early version* of Async/Await.
It is ok for the community to move on different directions than the first one, and I don't blame any of you for that.
> It is ok for the community to move on different directions than the first one
I agree, I just disagree with your characterization of "the first one." There were differences between the original Rust and what shipped, but almost none of it has to do with what you've said. In 2012-2013, Rust very explicitly changed a lot across time, and now it certainly does not. Async/await drove a lot of that adoption. Rust was always "political", even before 2012.
"Non-political community" is an oxymoron, like "non-aquatic lake". Politics is the verb that communities do.
I think there is a reasonable argument that the default for a community with technical goals should be to accept social status quo conventions unless they conflict with the communities technical goals. But if the social default is "girls don't code and queers should hide" there is a reasonable counterargument that these conflict with the goal of making the technology (and community) available to everyone.
Queers should hide definitely isn't any social default unless the code is exclusively developed in Gaza. "Do what you like but please stick to technical considerations" isn't "you need to hide".
No it's not.
I'm an LGBT person with a trans partner and I find many codes of conduct to be chastising and purposefully finger pointing to conservative people.
A lot of them are basically, "your religious teachings or cultural upbringing aren't welcome here"
I don't agree with religious texts, but that's what you're wagging in their face with some of the CoCs.
Leave it at "don't be an asshole". It's that simple.
The current political climate, I feel, is a direct reaction to this.
A politically neutral space wouldn't permit religious people to harass trans or LGBT people, but it also wouldn't give anyone latitude to throw stones the other way either.
CoCs are "you're not welcome here at all".
Another thing: you always see language and project logos modified to bear the rainbow, trans, and BLM colors. You never see anything supporting Asians, white people, men, or Christians. If you did this, you would be called out as a racist. Which is so ironic.
Let's just get along and work together. Maybe we'll find more agreements amongst ourselves that way instead of trying to divide everyone into camps.
Some progressives are going to get very pissed off at this comment, but I grew up and live in the South. You can (and often must) work with people you don't agree with. It's not impossible to be friends either. You might wind up changing their mind, and they might wind up making you more tolerant as well.
No matter the person, it's really disappointing that we're still entrenched in the mentalities of tribalism, anti-intellectualism, "if you're not with us, you're against us", "an eye for an eye", "someone hurt me, so I'm going to hurt someone", and so on. And by "person", that includes me.
The Earth politics patch really can't come soon enough. How much do we pay the devs, again?
Life's for too short to force people to do this, and ideally we should make it as feasible as possible for as many people as possible to never have to do this.
I like some people. Everybody else I work with if they're willing to work with me. Saying that we all have to agree with each other is basically giving up on the political project entirely, and going back to strongman rulers who organize by demanding conformity. Very relevant in these times.
> we should make it as feasible as possible for as many people as possible to never have to do this.
No, we should make it impossible to avoid so people can't sneak into adulthood without being properly socialized.
What does this mean? Are you talking about people who openly support actual murder? Almost everyone is opposed to that, of course.
The best defense against polarization is a strong and cohesive middle ground.
If you pull to far in the other way, all the bonds break. And it's a race for each interest group to seize power, rather than having some intermediating force that serves as a buffer.
Again: look at the political climate. It's a reaction. The pendulum is swinging harder and harder because we've given up on the middle ground.
Most of the people you hate (and you do seem to dislike them at least a little bit) have honestly never had an LGBT friend. Imagine if they did how that might change them.
Instead they hear voices from the LGBT community that want to outlaw them and their way of life. That's pretty hostile. And definitely is going to be met with the same attitude you're giving them.
I'm LGBT and I have many conservative friends. They're more apt to come around to it than you believe. You're shutting down any conversation before it can even happen.
Oftentimes, the voices are outside.
I think you're somewhat optimistic, and "the middle ground" is not a magical place. It's easy to fall into a false sense of security that comes from making (likely valid) criticisms of caricatured groups. Middle ground should not be sought for its own sake, or else it becomes useless (akin to Goodhart's law; roughly "when a measure becomes a target, it ceases to be a good measure"). People should embrace a diversity of values, but the burden is to stay true to a set of values and push for the truth.
Could you point out a code of conduct -- preferably from a large, well known project -- that reads this way in your opinion?
The fact that most well-known Rust crates are becoming huge bloat are becoming a problem to me, which is something that has been critized years again by the community itself.
As an example, I still do not understand why simple HTTP crates require more than 50 to 70 dependencies to execute a simple GET call...
Insisting that you should depend on code which itself has no dependencies is a bit hypocritical if you ask me. If you want a simple HTTP crate that doesn't have dependencies, you should follow your own philosophy of not using other crates and write it yourself.
Looking at ureq [0], for example, its direct non-build/non-dev dependencies are (counting duplicates):
- base64
- flate2 (4 transitive dependencies)
- log
- percent-encoding
- rustls (26 transitive dependencies)
- rustls-pki-types (1 transitive dependency)
- ureq-proto (7 transitive dependencies)
- utf-8
- webpki-roots (2 transitive dependencies)
The vast majority of the raw dependency count comes from Rustls and related crates, and I'd imagine reimplementing a TLS stack would be somewhat out of scope for an HTTP crate. I'm not sure there's much room for substantial reductions in dependency count otherwise.
[0]: https://github.com/algesten/ureq
This is what you get with package managers.
It's just it's not frequent.
There is very few things that need to be in the standard library. I only ever miss chrono or equivalent not being in std.
Then there are things like serialization and logging, which I like the idea of having promoted crates which are essentially just better advertised for newcomers. (Maybe included in the distribution already in some way).
That made me chuckle because both are quite the behemoths, as I have previously said. If they promised this, it was a lie indeed.
Edit: come on don't downvote explain your reasoning.