And the error handling is way better than catching stuff because it’s so explicit
type
weekdays = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday);
DailyActivity = array weekdays of string;
Instead of the ridiculous iota/const workaround.You mention generics, but actually they still are quite constrained on capabilities.
Robust typing misses out on the famous gotcha with nil interfaces.
The error boilerplate, but granted that isn't a typesystem issue, rather grammar and semantics.
Package names tied to SCM domains, with a workaround using HTML Meta redirections when they change, and behind our back file rewrites remapping imports.
I've been bitten/misled by that so many times. How hard is it to just $(find -exec sed) to patch up the imports if you fork a project, versus later finding out oh, so that's why line 50 of some random dep doesn't at all do what it says in the repo
If I was Go Dictator For Life I'd make the compiler issue a warning for any replace statement in go.mod
I’m not really sold on why Go would be a particularly good fit for the task, compared to other languages. Seems to be mostly “interfaces are useful for interpreters, and GC means I don’t have to care about memory management” - both of which are true but hardly specific to Go. There’s some form of interface in almost every mainstream language, I think the implementation would be pretty much the same in any GCd language
Also the way the port was sold is a bit misleading, because as described on BUILD 2025 session, they had anyway to redo the whole datastructures due to the more basic Go's type system.
Meanwhile Azure is rewriting C++ into Rust with AI tooling, see Microsoft talks at Rust Nation UK 2025.
Also, it's discourteous to the individual in question to keep incorrectly stating that they were fired. The distinction between being fired and being laid off is an important one (especially if the person in question is applying for jobs).
If you were ever given the option to collect unemployment insurance, this includes taking a severance package where you stipulate to not pursue unemployment insurance, then you were fired.
It's also important to always note that these companies do not care about their workers, they will extract you dry and throw you out.
Again, what you think about Microsoft, or big tech companies in general, is completely irrelevant here. You’re spreading false information about someone. It would cost you nothing simply to stop doing it.
One hack I'm not super proud of is I implemented return and break with panic / recover. Were I to do it all over, I'd probably use continuations to model that instead.
(Side-note on Lua specifically: among the reasons I like Lua is that it's very simple and its reference interpreter implementation is some very understandable code. I did some truly horrible things to it back in the day for a game engine, and it was very amenable to getting beat up like that).
Can't every language rock for building a Lua interpreter? It isn't a competition.
How so? It is clearly just a story of someone's experience, not a technical evaluation of various languages. The only other language (aside from Lua) mentioned is C, and the C implementation was considered so good that it was to be the direct model for the implementation in the story, so we can assume that writing a Lua interpreter in C also rocks.
> Otherwise it’s like saying “why orange cats are fluffy”
Sure. That seems like a reasonably fair title for a story about your fluffy orange cat, even if other cats (and other animals, not to mention other things that aren't animals) are also fluffy. You could call it "Fluffy" instead, I suppose, but then someone would complain about the lack of details. You can never please everyone.
But, regardless of how you want to interpret the title, it remains that there isn't a competition. There never has been, never will be. A poorly written title wouldn't magically create a competition. Where does the bizarre idea that there is one stemming from?
As far as I can tell, most people who find a band that "rocks" also enjoy other bands as well, often even more, and are not looking for some kind of a battle of the bands to find the one true band that they will only ever listen to again. It is quite possible, and typical, for (rock) music fans to enjoy many bands.
You are right that words mean only what the speaker/author intends for them to mean, but in common usage there is nothing to suggest that "rocks" implies something is better than something else. It only suggests something in the vein of "I enjoy this". Besides, we know what the author meant as he has told us.
Even we were to agree that the title is poorly written, we know from other context that there isn't a programming language competition. This single title wouldn't suddenly make us think that there is one. So where has the idea that there is one coming from?
False.
>> we know from other context that there isn't a programming language competition.
I would have expected at least one comparison to another programming language. Like "COBOL" was a real pain for this, but "Go rocks".
>> ... other stuff ...
Yeah, I don't really care one way or the other. If people want say that everything in space and time are completely undifferentiated and therefore "rock" equally, I don't really care. Rock on.
Nobody does. Why would they? It isn't like there is a competition or something.
> If people want say that everything in space and time are completely undifferentiated and therefore "rock" equally, I don't really care.
Many things having the potential to "rock" does not imply that everything "rocks" equally, or at all. I strongly suspect his attempt to write a Lua interpreter in Brainfuck would not "rock".
>> Many things having the potential to "rock" does not imply that everything "rocks" equally, or at all
That isn't what I am suggesting. I am saying that I do not care if people use the word "rocks" to describe an impossibly spherical marble rolling on an impossibly flat surface - equal across all space and time. Or, to describe, something that is uniquely better than all others. Use the term as you see fit. Use it to describe the value 4.532341 +/- 0.00001345 if you like.
Obviously. But you already suggested that in your first comment. For someone who claims to not care...
In particular, because Go is memory-safe, you don’t have the control over memory layout you need to do tricks like NaN-boxing. Anything that requires a union with a pointer (which will be every value in a dynamically typed language) must be represented as a value of interface type, and interface values are quite fat - 16 bytes on a 64-bit machine.
Interpreters are atypical programs to optimize. Few other programs use unions so much in their inner loop.
Most stuff people use in C for writing interpreters with optimal performance, isn't ISO C, rather C compiler specific extensions, or inline Assembly.
All things being equal, same rules apply.
Just sticking to the old ways is why we don't get progress in some industry corners.
For example, Go’s garbage collector isn’t going to do as well at JavaScript as V8’s garbage collector, because the only unions it understands are Go interfaces. Also, the garbage collectors for other languages mostly don’t support some features of the Go language, such as taking pointers into the middle of objects.
You can still write an interpreter in any language, but there will be an efficiency cost when the languages are too different.
Not everything has to try to replicate C in language XYZ.
But I do agree, among all languages I would rather reach out for D, C#, any of the MLs or Haskell, Lisp or Scheme variants, instead of Go.
Also if ultimate performance is the goal, then nothing beats handwriten Assembly, so that places both C and GC languages out of the game, as Android has been doing since Android 7, in case there is no PGO data available for the JIT.
And then since you’ve disabled the system GC, you need to write your own GC that understands NaN boxing to find out when memory can really be freed.
I see it as so awkward that it’s not worth doing.
ufo•7mo ago
Lyngbakr•7mo ago
Scaevolus•7mo ago
mdaniel•7mo ago
and the beta announcement was also recently submitted, but without commentary https://news.ycombinator.com/item?id=44290692
shhsshs•7mo ago
wavemode•7mo ago
zombiezen•7mo ago
(Also, my pronouns are she/her.)