For gc. The was no attempt to benchmark under gccgo, tinygo, etc. so we don’t really know how Go fares. Go is, by explicit design, multi-implementation.
Do you have numbers for any of these on hand? I'm not holding my breath (after all, there's still issue of this being Go itself, which is inadequate at systems programming) but it's interesting to see how alternative implementations fare nonetheless.
(this does not make the point any less valid as the solution this is applied to discussed in the blog post uses "vanilla" runtime flavour)
If 19ns is critical to my existence, I'm certainly not going to spend hours of it finding out if a handful of ns might be shaved off by using another implementation.
There are plenty of good languages which offer better expressiveness and performance in systems programming domain: C#, Swift, Rust, Zig, D, Nim.
The biggest lie is Go looks like a low-level-ish language whilst it's anything but, so you end up with the worst of both worlds. It's tooling starts fast, which gives you a false belief that it will continue perform fast, and time and time again people learn the hard way that it's just not the case.
It's ironic the story with C# is the opposite, that people expect it to underperform, and avoid it on the premise of criticism based on their imagination, only to be repeatedly proven wrong that it's much faster and extremely capable at systems programming tasks.
> There are plenty of good languages which offer better expressiveness and performance: C#, Swift, Rust, Zig, D, Nim.
If we're sharing random tangents, I hear a lot of people like ice cream.
> The biggest lie is Go looks like a low-level-ish language
In what way does it look low level? I don't see it. Its closest language analog is Python, which I don't think anyone would see as being low level. Also, I assume this is meant to be in response to the "systems" bit. Systems are not defined by how "low level" they are. You most definitely could create a "low level" scripting language. You probably wouldn't, for various reasons, but you could.
You're responding to something that isn't in my comments. Neither I said it's a scripting language, nor you are being honest in pretending that the industry does not associate whether a language is perceptibly low-level with its applicability in systems programming tasks.
You said systems, which implies a converse of scripts. There is nothing else in the category. If something is not a systems language, it is necessarily a scripting language.
The vast majority of low level tasks are systems in nature (obviously; hence why a low level scripting language would be mostly pointless), so you're not wrong, but you're not telling the whole story.
Defining systems languages and scripting languages as mutually exclusive duals is a pretty bizarre way to look at the space. I mean, you do you, but I doubt you'll find many people who will agree with this framing.
What is low level about Go's pointers? You can't assign an arbitrary memory location. You can't do arithmetic. You can't do much of anything with them other than reference a value. I can't think of any language considered high level that doesn't have the ability to reference a value.
Like I said I think it tries to masquerade it’s low level by including them when they’re not really pointers. I see no reason why they didn’t go the route of other GC’d languages which don’t include faux-pointers.
Yes, you've repeated yourself twice now, but haven't explained yourself. What is low level about Go's pointers that would suggest that might suggest it is a low level language? There is nothing low level about them.
I’ve repeated myself because you don’t seem to be reading the words: masquerades, faux-pointers. I never claimed they were low level. I said they were pretending to be because pointers are completely unnecessary in a garbage collected language.
You've repeated yourself for a third time, but have yet to explain yourself. Pointers are unnecessary in every language, but there is nothing to suggest that a language with them is low level. Clearly there is nothing about pointers that make them low level.
I'd ask again, but it is apparent you don't even know what you meant by it.