I'm not sure I like the "better C" label. After all, Zig allows you to easily do stuff that's virtually impossible in C, and only possible in C++ with templates and constexprs and concepts. It also doesn't have pointer arithmetic and pervasive wild casts, so it's not a "syntax-sugared Assembly". Its only similarity to C is that it is a low-level language and that, unlike other low-level languages that aren't C -- like C++, Rust, and Ada -- not only is it not among the most complex languages in the history of software (all three of those have probably secured their places in the top-five), but it is probably among the simplest.
> I'm not aware of any features that would amount to a "radical breakthrough". As far as I am aware, it is a modernized C, with nice compile time evaluation, async, and some runtime-provided safety guarantees. But nothing that is novel from a type system / language design point of view.
AFAIK, general partial evaluation with introspection as a single mechanism to do the work of generics, typeclasses/traits/concepts, value templates, macros, and conditional compilation -- combined with a general error reporting mechanism that is shared between runtime and compile-time -- has never been attempted before. It is revolutionary.
Have you seen http://terralang.org/
It's worse than you thought. You just got the new Fenix browser they've been working on for some time, it's currently on staged rollout to stable channel. Old stable was Fennec and it's getting killed off. I know this because I've sat in their Matrix dev channel until today. I'm not sure what their priorities are, but it seems to not be focused on user.
While this submission was posted I spent the time filing a report to Mozilla because I brought up 3 specific concerns about this browser and wasn't sure where to file them (Bugzilla, Github issues, or now Jira?). Their Fenix Matrix channel responded by censoring my two messages in full and banning me for 'conspiracy theories'. So much for openness and inclusion. I was gonna save it up for a blog post but screw it, lets do HN, it's in your interest sphere:
First issue: I've been having occasional crashes with Fenix, this was why I was in their channel as I was hoping to get to the bottom of it. I installed it as Firefox Preview and they quietly updated to Nightly. This is sorta expected and fine I guess for beta quality software. The issue is I had all the data reporting stuff turned off. Browser starts crashing, sends a report to Mozilla (shows up briefly in android status bar, disappears). I don't know what it contains and this was highly concerning to me, so I listed this as a first issue as I don't want to be bitten for leaking client data every time the browser crashes. Where, why, and how are these being sent. Was it because I was now on Nightly channel and not Preview? I don't know how else to classify this other than user hostile behavior, in the same range of hostility as installing sponsored experiments without notification.
Second issue: One of the crashes happened while downloading. Every time I reopened the browser it'd re-initiate the download and crash again. Fenix doesn't have a working download manager other than to tell it to initially download. Sucks for you if you need to pause or view what was downloaded, there's no controls implemented. I expressed that this is likely to be a denial-of-service vector as I had to wipe the app's data to even use it again. It's also risky to users on metered service if it's continually pulling data attempting to re-initiate.
Third issue: for between 5 years (for Fenix) and 7 years (for Fennic) users have open bugs requesting pdfjs integration with mobile. Ability to inline pdf's in the browser has been a safari mobile feature since at least iOS 4 and possibly before, to the best of my knowledge it's always been a feature of Chrome. Desktop's pdfjs just got a promotion to first-class citizen last release. Someone wrote an extension to make the mobile browsers use it. Can't do that on Fenix anymore though, not because of a compatibility issue but rather because Mozilla won't allow outside addons anymore in Fenix without their blessing even if it's to use a product they've developed. Only way to override is build the browser yourself. Again, user hostile. If they don't want to add their own product, let us use an extension that adds it for us.
Finally regarding culture: I've been a part of IRC communities for a better part of a quarter century. I've also done HN for a few years now. I've gotten heated a few times in different communities, and been kicked or asked to leave. Forums I've had to remove content that was maybe a bit hotheaded. My interaction with Mozilla was literally the first time I've ever been censored and removed without a single word given in rebuttal. One of the things I love about HN is moderation knows when to step in and mods like Dan treat you like a human when those times occur. I can casually gripe some times about HN's preferences on topics, but the site works overall pretty well. The message I got from Mozilla is 'bot removed'. Here's their guidelines, they don't follow them (but I do, to be transparent I have this issue in their pipeline): https://www.mozilla.org/en-US/about/governance/policies/part...
To contrast, I've had to issue bugs to Chromium for browser issues and got nothing but decent things to say about their dev community there: You go to crbug.com and file an issue. I've had brief convos with some of their devs in Freenode IRC over some of the more buggy roll-outs (Aura was pretty crashy in the early days) and I guess the only thing you could say is they aren't very chatty. I'm concerned of course about Chrome eating the world but that's how it is. At least I understand Google's motivations. I don't understand Mozilla's anymore, they survive on Google money and are facing a continual bleed of users. Stuff like my first issue above is pretty major from user trust/legal liability standpoint and I don't appreciate being labeled a conspiracy theorist and censored for bringing up the behavior.
It can be quite a good exercise to try and produce your own hex opcodes from the tables using something like CyberCheff [2].
[1] https://www.intel.com/content/dam/www/public/us/en/documents...
[2] https://gchq.github.io/CyberChef/#recipe=Disassemble_x86('32...
[1] https://www.intel.com/content/dam/www/public/us/en/documents...
You have technical knowledge applicable to the problem, and you share it. I love that.
You miss an important feature of the solution shown in (I presume) your rush to demonstrate your bash knowledge: the ability to edit a filename shown, in place. Brace expansion doesn't do that, doesn't show you the new filename before you commit the name change and isn't even close to interactive. This part is less great.
> Something like this isn't really necessary.
It may very well be necessary for someone else.
Once you track the remote bookmark, `jj git fetch` will update your local one to match the remote.