I wouldn’t expect someone to replicate a full compiler as an internal editor plugin ever again only to highlight mistakes. Language servers and their support is one of the best things that happened to editors recently. Everyone moved on from ad-hoc plugins. LSP is what you’re looking for, imo. A regular LSP for semantic errors and a linter LSP[-like] for style, bad practice, unused entity, deprecation, etc warnings.
For requirement 2 and 3 I think VSCode can do that. Some themes tint every possible class of token, so casting will look different from multiplication. Afaik, it definitely differentiates functions, locals, globals and members, while they are all identifiers.
You are not supposed to change anything on your Fil-C program to have it compiled by a regular C compiler.
FUGC is not a feature your code uses, just something that runs in the background to catch possible use-after-free cases, but triggering them is still an error and you won't want to ship any product with such bugs.
> On windows, I type the name of an app, and right before I hit enter, the search changes and launches something else.
This shouldn't happen. If KeePass, for example, is the best guess for an app beginning with k, ke, or kee, it must also be for keep, keepa, etc. I've never experienced what you report. Except if I misspell the app name; then it's plausible that the reaction to my last (wrong) keypress happens while my hand is in flight towards the Enter key.
I have the same problem on Windows 11. Every added keystroke seems to start a new search, and the order of the results is not stable.
It's not that terrible if there are only a few results, but if you leave the "search the web" feature enabled, Windows will complete your "keepa" to "keepass" and put a "search Bing for keepass" result right at the very top.
How often this happens seems to depend on system load and the quality of your internet connection. It's infuriating either way.
> Roc's compiler has always been written in Rust, and we do not plan to self-host. We have a FAQ entry explaining why, and none of our reasoning has changed on that subject.
It's worth noting that the original FizzBuzz problem is not "given a number n, print..." but rather "for the first 100 natural numbers, print...". In this formulation, you don't need the modulo operator: you just initialize two counters at 3 and 5, respectively, decrement them each time, and react when either or both reach 0.
No idea what prices you're referring. In Europe, the most popular car repairs franchise offers tire swap at less than 2 euro (per wheel) more than wheel swap. What steel wheel can you buy for 6 euro?
From a cursory read of the readme and design documents, it looks to me the key point about Evo is a different use of existing concepts, like branches, merges, etc. rather than new concepts. I guess if you want ephemeral branches, nobody stops you from using git in that way, too. A wrapper around git would solve the remaining propositions, that is a better command syntax.
I struggled to understand git until I tried "gitless"[1], a wrapper around git that lets you focus on your workflow ignoring git's own weirdness. For example, switching to another branch automatically checks out the active commit of that branch. This is what you want most of the time: you don't switch branch and then don't even look at the code in that branch, do you?
I was intrigued but... What does this even mean? "switching to another branch" is the same thing as "checking out the active commit of that branch" in git.
> For example, switching to another branch automatically checks out the active commit of that branch. This is what you want most of the time: you don't switch branch and then don't even look at the code in that branch, do you?
You are right. What gitless does differently is it saves (git stash) the uncommitted files before switching: branches are well isolated, it doesn't let uncommited files be "copied over", if you understand what I mean.