Just wanted to give my thoughts some space and maybe some of you in the rust community can change my mind or give me some other thought I haven’t considered yet.
I just recently “discovered” Rust and also Go which got me thinking which language to learn first and I have to say at first sight Rust seemed more promising. Apart from its syntax which I regard as sometimes ugly but I think one gets used to that as well.
Then I started looking into the std library and recognized that a lot of features there are missing which I expect a modern systems programming language to have built in. For example: UNIX sockets. I get that Rust wants to be compatible on all platforms, namely Windows and *NIX systems. But why not let the user of the language decide what he wants to use? With some googling I discovered https://github.com/rust-lang-nursery/unix-socket which seems to implement UNIX sockets, fair enough. BUT: as far as I can see, it actually interfaces with libc. Same case for a library I found which handles UNIX signals: it interfaces with C. But why interface with C instead of doing a pure Rust implementation which does not rely on C? After all I want to work with a self-dependent systems programming language. Go on the other hand has a very large std library and in most cases seems to not use the C library for that which I have to say seems more tempting and promising to me. I don’t want to be badmouthing Rust, I actually like it. But this was my train of thought when I looked at both, Go and Rust. And I still haven’t figured out which I should learn because there are a lot language concepts in Rust I really like which Go does not have.
Maybe someone of you can shed some light on the why of the std library’s lacking features and if it is actually necessary to interface that much with C? I mean, I would say anything if you would give me a library with C bindings for GTK, since GTK is written in C, there is no other way. But why resorting to C for such low level things like UNIX sockets? Or signal handling?
All the best, David