Some links:
https://c3-lang.org - main site
https://github.com/c3lang/c3c - github repo
https://learn-c3.org - tutorial
https://c3-lang.org/standard-library/docs.html - standard library docs
1,424 karma · joined April 1, 2014
Some links:
https://c3-lang.org - main site
https://github.com/c3lang/c3c - github repo
https://learn-c3.org - tutorial
https://c3-lang.org/standard-library/docs.html - standard library docs
Some short examples: `foo<1> * a` – is this `(foo < 1) > (a)` or `(foo<1>) a`? What about `foo<1>>2>a`? Is that `(foo<1> > 2) > a` or `foo<(1>>2)> a`?
Just horrid.
But I think C3 shows it can be taken further.
Odin and C3 has at least a magnitude fewer people knowing about them. More modest claims, less marketing potential.
So for D, it was to my memory never sold as a silver bullet either. A better C++ certainly, but with enough humility to not market itself as some game changer.
Compare Zig, V and Rust marketing with D’s and you’ll see what I mean.
From what I can see the example started from C++, and then comparing how each language would look building it in userland instead.
So the goal for C3 is to also be used where you'd use C/C++/Swift/ObjC today.
Just some incremental improvements.
If you haven't tried C3, feel free to jump to https://learn-c3.org and try it in the browser.
Yes there are ways around it if you have patience, but what the heck!!
Which led to the rather odd result that the interpretation of an article's message by a Wikipedia editor was favoured over the explicit statement by the article's author.
Here I would have thought that it would have been prudent to simply leave out that part of speculation, but they adamantly insisted it should stay.
I must add that this happened on Swedish wikipedia, not the main English Wikipedia – which I actually found much more balanced. But the problem is that this mechanism exists in the first place.
It was at the time (5-10 years ago?) well known that the Wikipedia of some language – I don't recall which one – was at the time pretty much hijacked by a group. Oh, wait I found it - the Croatian Wikipedia.
This is unlikely to happen to the main Wikipedia, but it does demonstrate a certain brittleness and risk of bias in the system.
Its biggest advantage over traditional encyclopedias was its breadth and how quickly it could be updated. The trade-off was that articles could vary greatly in quality and could be edited by anyone, making accuracy less consistent than in traditionally edited reference works. So the effort to reduce breadth and say it shouldn't be updated quick... that's just strikes me (as someone fairly old) as kind of funny.
This has boths pros and cons. The good thing about it, is that these people are deeply invested in Wikipedia and therefore have a lot of incitament to do what (they believe at least) is the best for Wikipedia.
The downsides are: (1) that just because you invested a lot of time into Wikipedia you don't have biases (2) you are not immediately qualified to determine whether some article/source is bad or not from a factual point of view.
Also, it's very HARD to become a regular contributor, because you'll have to invest an insane amount of time initially to build up goodwill and reputation, when at the same time anything you do might just get reverted because someone thought it was too much detail or bad in some other way.
So it's a very punishing environment which makes sure that the actual group of Wikipedia editors is a fraction of what one could expect. (Also, the Wikipedia markup... it's really the worst dialect of Wiki syntax)
Anyway, all of this is probably not good for Wikipedia in the long run. LLM's will be much better than humans at creating "beginner" articles, and it will be increasingly hard to know what's LLM-authored. So I expect Wikipedia to go the way of Stack Overflow in the long run.
C3 just has everything C compatible so not just calling into C but also C calling to C3 is just completely normal with no special compatibility types/functions, unlike Zig.
So which one has the most compelling feature kind of boils down to what one focuses on.
You can find Odin users that praise Odin for finding their sweet spot. Similarly for C3 users, just like Zig users.
And in each of those, they will say that the others didn’t quite match what they wanted (not in all cases though: the relatively high visibility of Zig means a lot of its users is unaware of the languages with less visibility, and just pick it by default)
One thing that’s sometimes overlooked though is that all donations are something that we’re grateful for, regardless of amount. If you have little to spend then even $1 a month is an investment that rivals $10000 by someone rich.
Also worth remembering is that the vast majority of language projects aren’t operating at Zig’s scale. For smaller projects such as C3, even modest recurring support can have a meaningful impact on long-term sustainability.
It doesn’t need to be $100000s a month to make a huge difference.
If you instead look at the over 500 kloc of the Zig source compared to the 70 kloc of the Odin one, it’s a bit clearer why the delay happened: the goals of Zig kept expanding.
But not only that: ”juicy main” and Io is something that could have been in Zig from the early days and yet it isn’t. In the Io case it’s Zig pivoting from ”we have colorless async!” to no async, to Io.
In other words, Andrew is still experimenting with the language (and more is to come, like ranged integers). This is not the signs of a maturing language, it a language still very much in flux, trying to find its form.
The contrast to Odin is that for the last 2-3 years it has had minimal syntax tweaks, and is essentially in release candidate mode for the language.
Even if Zig didn’t need more changes, it would still need that stabilization period.
This tells us Zig is still rather far from 1.0.
I wonder what Andrew is thinking about all this.
Just being ambitious isn’t necessarily good. Look at Perl6.
This version focuses on tightening semantics, improving type inference, and cleaning up edge cases rather than adding new features. Some parts of the standard library (like matrices) have also been reworked.
The goal is to stabilize behavior and reduce inconsistencies before starting the 0.8 cycle.
C3 is aiming to stay close to C in terms of control and predictability, while reducing complexity in everyday use.