▲ 73 points
back
14 comments
On index benchmark results:
>Still not quite as fast as Go, but it's close. Honestly, I don't know why the memchr-based implementation is still slower than Go's assembly here, but I decided not to pursue it any further.
Libc call overhead. Your version is using an already-fast memchr, but it still has to cross a general libc boundary and then do the pointer/index around it.
Index with a 1-byte needle collapses to IndexByte, and on arm64 that goes into Go asm.
Refreshing seeing someone coding without AI in 2026.
Interestingly enough, the initial Go implementation was indeed just a transpiler to C, and generally Go and C are semantically very similar. So the fact that you can even (successfully and relatively easily) do Go->C transpiling isn't entirely surprising. Of course you can't port `go` keyword and GC, but the language that the author is developing (called So) doesn't support these features anyway :).
Early Go was the first time I ever saw the Plan 9 compiler/linker used in action:
I could be wrong, but I don't think the initial Go implementation was a C transpiler. It was written in C, but it did its own compilation.
Alef is the missing link between C and Go.
Nope, Limbo is the missing link, plus a bit of Oberon-2 on top.
Additionally Limbo also carries the lessons learnt out of Alef failure in Plan 9.
Limbo compiles to bytecode and comes with an os; it feels more like a branch than a link.
With a JIT compiler, and actually shipped, unlike Alef which was aborted and they pivoted back to C.
Sure, but that makes my point for me.
Nope, because it is
C => Alef (abandoned) => Limbo => Go
^
Oberon => Oberon-2 /
Anyone schooled in compilers and language design knows how to differentiate language, semantics and implementations.No transpilation was taking place, they replaced the frontend to understand Go.