EDIT: I got it, I got it. Go has multiple implementations. Bad example.
EDIT: I got it, I got it. Go has multiple implementations. Bad example.
Rust - pretty fast growing open-source community despite only one implementation... but yeah I'm sort of worried that Rust is a "hard to implement" kind of language with maybe a not high enough bus factor... similar worries for Julia too
But tbh I'm not drawn much to either Go and Rust for other reasons - Go is too verbose for my taste, no way to write denser code that highlights the logic instead of the plumbing, and it has a "dumb" type system, Rust seems a really bad choice for rapid prototyping and iteration which is what I care about now.
EDIT+: glad to know that Go has multiple implementations in fact, pardon my ignorance!
I'm assuming you don't mean the traditional bus factor, but one of alternative implementations? Rust (and from what I can tell after short research Julia at least partially too) has quite a big development team that is supported by many different companies with no benevolent dictator, so I don't see a big bus factor risk.
Which is fair, but they seem like the kind of language where the compiler or run time is the really important part of the language, so it might make sense to have multiple implementations. Rust without the lifetimes implementation, and Julia without the highly dynamic but high performance run time, aren't worth much.
gccgo: https://golang.org/doc/install/gccgo
gopherjs: https://github.com/gopherjs/gopherjs
tinygo: https://github.com/tinygo-org/tinygo
gollvm (aka Gollum): https://go.googlesource.com/gollvm/
llvm-go: https://llvm.org/svn/llvm-project/llgo/trunk/README.TXT
On a more serious note, in my personal experience, the GCC and the LLVM back-ends are generally much better at math- and computation-heavy workloads and worse at… everything else, basically. But that was a long time ago, when gccgo still used to spawn a thread for every goroutine, so my experiences are probably outdated. Also, back in the day the LLVM back-ends used to be the only way to get link-time optimisation with Go. The GCC back-end probably can do it by now.
To answer your question directly, I don't know any large projects that use them, but they exist. Which means that there is an alternative. Unless Google goes full Oracle, that is.
Yeah, it was kind of clumsily worded. I get why people use the ones that are the only options for their respective target platforms (browsers, microcomputers, etc). I don't understand the advantage to using compilers besides gc, although your comment provides some clarification.
> To answer your question directly, I don't know any large projects that use them, but they exist. Which means that there is an alternative. Unless Google goes full Oracle, that is.
My question wasn't whether or not there is an alternative, it was simply "who uses the alternatives and why?".
Last I checked, it was capable of compiling releases of rustc well past 1.0.