Earlier quoted context omitted.
Yes, for much the same reasons. Pretty much any ML-family language has the same effect; just having proper sum types, polymorphism and first class functions (and not having null) goes a long way to preventing huge classes of bugs.
The critical feature enabling fearless concurrrency is Rust's borrow checker though, something that the other ML languages don't have.
The Safety Boat: Kubernetes and Rust
81–90 of 102 posts
Re: The Safety Boat: Kubernetes and Rust
#82Earlier quoted context omitted.
Go appears to have a shorter time, because you don't realize how much higher-level stuff you're just expected to do The Right Way, with no support from the language or libraries. So you're free to think you've finished learning Go, but then the actual learning begins.
Agreed. Worked with a senior who "learned go in a week" then faffed around for months (to prod! because he had the implicit trust of management because he was "a genius") deploying broken software with tons of concurrency bugs because he didn't know how to manage shared state.
Re: The Safety Boat: Kubernetes and Rust
#83Earlier quoted context omitted.
Depends on your definition of average: I found that to be the case with significant programming experience with traditional languages (notably not something like Haskell) so I think it’s plausible since the compiler, editor, and documentation are rather above average for newcomers. In particular, Cargo providing a lot of easy tools and the compiler providing really helpful error messages seemed to be useful for the t…
And your definition of “proficient”!
Re: The Safety Boat: Kubernetes and Rust
#84I don't believe for one second that it takes just a couple of weeks to an average SE to be proficient in Rust.
It really depends on so many factors it’s extremely hard to tell. We’ve brought folks at Cloudflare up to speed roughly that fast. “average” and “proficient” are both very variable in that statement, imho.
Re: The Safety Boat: Kubernetes and Rust
#85Re: The Safety Boat: Kubernetes and Rust
#86> One of the biggest ones to point out is that async runtimes are still a bit unclear. There are currently two different options to choose from, each of them with their own tradeoffs and problems. Also, many of the implementation details are tied to specific runtimes, meaning that if you have a dependency that uses one runtime over another, you’ll often be locked into that runtime choice. My understanding of how asyn…
That is the case, but it's super awkward to use. Basically, you cannot await a tokio future on an async-std runtime, or an async-std future on a tokio runtime. You can, however, have both runtimes running at the same time, and use some form of message-passing to bridge them. It's definitely easier to only deal with one runtime. Ideally, we should have some kind of abstraction to allow crates to support both runtimes…
Re: The Safety Boat: Kubernetes and Rust
#87Earlier quoted context omitted.
They started with >1 Klabnik units and every person you bring up, it creates a larger pool of folks to lean on for support.
I can’t take credit here, while I am around to answer questions, getting folks going is not my job. It is true that we have a chat room with a bunch of folks, of which I’m part.
Even just by being availabletto answer questions or help with code review. Doing some pair programming sessions would probably be useful too.
Re: The Safety Boat: Kubernetes and Rust
#88It's a bit weird to see "several weeks" of effort being described as a problematic learning curve. At least the blogpost makes it clear that the effort pays out hugely but still, "several weeks" is not rocket surgery. It's not learning Haskell or category theory! ISTM that they're just running with an assumption that most devs wouldn't be professional and committed to this, which strikes me as an unwitting gatekeepin…
I think learning Rust will be harder than Haskell for a lot of people.
Going from something like Java or Python to Rust, one would have a lot to learn.
Re: The Safety Boat: Kubernetes and Rust
#89I looked into WASM / WASI last week but couldn't find an answer to this anywhere: can I write a network service in Rust and compile it to WASM / WASI? I know that wasmtime can execute a WASM module and give it access to a file system. Can that filesystem contain a socket that the WASM module can interact with?
Re: The Safety Boat: Kubernetes and Rust
#90Earlier quoted context omitted.
Data races are a kind of race condition, no?
I wasn't sure. After a bit of research, this seems to be a debate [1]. Using the common definitions, it's possible to have a data race that doesn't cause a race condition. [2] It's also possible to have a race condition without a data race. [1] https://en.wikipedia.org/wiki/Race_condition#Data_race [2] https://blog.regehr.org/archives/490
But you're right, this is just choice of terminology. :)