Git is written in C also. But all three of these are very old and very mature. By definition any LN implementation can't be more than 5 years old. C is just an ancient, literally 40 year old language.
Part of the reason why LND is so much further ahead is because, Go, having been designed by the guys who also created C (Ken Thompson, and Pike did some of the documentation on it, in addition to UNIX), have designed the language to be easy to scale, secure by default, and simple to learn, from literally 40 years of experience... including with C++, the epic compilation times being the main prompt that started the Go project.
Anything written in Go is almost inevitably going to be more advanced than anything written in any other language in relation to the amount of time it has been in development. When you are working on Go, there is just so much less things interfering with your workflow.
It's sad that so many stupid following morons think that Rust is a better language because it's marginally faster and slightly more memory efficient than Go. Rust is as complicated as C++, and even harder to learn. Doesn't really seem like a sensible trade-off if you ask me. Still waiting for Mozilla to finish Servo. Meanwhile at the same amount of time Chrome was already in full release. Servo is still a hobby project that isn't being seriously used by many projects yet, let alone the company that spawned it (and who sponsors the language it's built in). Rust basically, in my opinion, is just C++ with an arcane memory management syntax and Go's build system anyway. Anyone who thinks Rust is better than Go simply has no real knowledge of the science of language programming. It's better than C++ in terms of usability and readability maybe, that's about it, otherwise, it's practically C++ for cool kids.
And as regards to multiprocess architecture, LND uses goroutines, which are capable of scaling up rapidly with minimal memory cost to sharp increases in workload, and they are pruned off when they stall or are no longer needed.
Truly, I cannot comprehend the logic of starting a new software project in this day and age in C.
It's sad that so many stupid following morons think that Rust is a better language because it's marginally faster and slightly more memory efficient than Go.
marginally = 2x slightly more = 2x
Rust and Go have different goals so they aren't really comparable. If you're OK with 2x more resource usage, use Go. Not that it's a particularly well-designed language with nils everywhere and weird semi-nil interface values.
reply
You are exaggerating. I've seen numerous comparisons and Rust gets in around the same, maybe slightly better than C++, and in around the 10-20% area.
I'll concede that Go's memory utilisation can be a bit higher, but it takes a lot less time to write that code and easily 4x easier to eliminate bugs in it.
But while this may all be true, at the same time, the response latency of Go programs runs rings around most other languages even in relatively naive implementations.
Writing high parallel throughput in languages like Rust and C++ is more easy to do, but shaving the nanoseconds is something that is just easier to do when you have coroutines. Though there can be issues with scheduling when the system is at constant high load.
For me, the lack of first class coroutines is a deal breaker. I can't imagine writing programs without goroutines and channels. Not only does it enable far lower latency response and fast scaling for intermittent loads, it makes it really easy to write network programs where you start with a channel based simulation and get everything ironed out before it actually touches a network interface.
reply