5 ms·
tl;dr - No garbage collector - Fearless concurrency (thanks Rust compiler) - Performance - Error handling - Crates - they thought they were gonna use C++
by techn00 3y ago
tl;dr
- No garbage collector
- Fearless concurrency (thanks Rust compiler)
- Performance
- Error handling
- Crates
- they thought they were gonna use C++ and wanted interop (ended up not using C++?)
- ecosystem: Apache Arrow DataFusion
- "I thought that if we're going to rewrite most of the database anyway, we might as well do it in the best language choice in 2020"
But the real reason might be: "Rust good, Go bad" /s
- tsak 3y agoRust gets you on the frontpage!
- valenterry 3y agoGo does too. Those two feel like the most hyped languages currently on HN.
- CharlieDigital 3y agoNo love for C#
- leosanchez 3y agoI love C# :)
- e-master 3y agoC# is lovely, and with eventual first class AOT support I believe it will become more widespread
- demi56 3y agoNo F# ?
- adamors 3y agoGo isn’t really hyped these days, Zig maybe. But Go is old reliable now (which is good).
- petee 3y agoYeah, I'm sure they spent 3 years working on it to get on the front page for only a few hours. I'd get this argument maybe if you're talking about a pet project...
- pauldix 3y agoI still love Go, but I think Rust is a better fit for very performance sensitive systems software like a database.
- jerf 3y agoYou can write a database in Go, sure, but if you want to compete at the very top end, you need all the control. Go is nice in the way that Go is nice (if you even agree with that statement) precisely because it doesn't have that control. Unless it is a terminal goal for a database to be in Go simply to be in Go (BoltDB seems to fit into this category) or you don't care to compete at the very top end, I think it's a mistake to even start in Go. To be honest, most of the "we started in Go and switched to Rust" stories read to me as "you should have always known that you should have started in Rust" (or C++ or something, though I'd choose Rust out of the viable set of languages here too). It's IMHO always been obvious that Go was not really viable, I mean, sure, you can get farther than you could with starting with Python, but, it's not something Go was even trying to solve.
- ssd532 3y agoWhat problem, according you, is Go "trying" to solve?
- hu3 3y agoNot sure I follow since there are very competitive tools written in Go such as https://victoriametrics.com https://victoriametrics.com for an example in this space.
- zozbot234 3y agoMost "we started in Go" projects are a lot older than Rust itself. Rust 1.0 was only released in 2015, and the language only really became usable with the 2018 edition. C++ is not really a comparable language, it's not even memory safe.
- lelanthran 3y agoIf you're scaling horizontally it's doubtful that language choice of rust Vs Go is going to make a difference. Not enough, anyway, to make a complete rewrite more profitable over adding features. After all, it's not as easy if influx was plagued by concurrency bugs, was it? A move to a safer language than go just doesn't seem worth it, and there's little to no performance gain when you can just throw more hardware for that tiny performance difference.
- howinteresting 3y agoWhile one can bring a lot of nuance to the conversation, most imperative languages do not have the &/&mut separation that Rust does and are therefore bad. &/&mut is basically essential to writing correct code in an imperative language.